diff options
Diffstat (limited to 'Volta/Views/StatsViewController.m')
| -rw-r--r-- | Volta/Views/StatsViewController.m | 125 |
1 files changed, 122 insertions, 3 deletions
diff --git a/Volta/Views/StatsViewController.m b/Volta/Views/StatsViewController.m index deb6a19..ed25ab9 100644 --- a/Volta/Views/StatsViewController.m +++ b/Volta/Views/StatsViewController.m @@ -7,6 +7,7 @@ // #import "StatsViewController.h" +#import "StatsTabBarController.h" @interface StatsViewController ()<UITextFieldDelegate> @@ -16,6 +17,10 @@ @property (strong, nonatomic) UIDatePicker *startDatePicker; @property (strong, nonatomic) UIDatePicker *endDatePicker; + +@property (strong, nonatomic) NSDate *currentStartDate; +@property (strong, nonatomic) NSDate *currentEndDate; + @end @implementation StatsViewController @@ -43,19 +48,24 @@ [self.startDatePicker setDatePickerMode:UIDatePickerModeDate]; [self.startDatePicker addTarget:self action:@selector(startDatePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; self.startDate.inputView = self.startDatePicker; + NSDate *startDateValue = [NSDate dateWithTimeIntervalSince1970:1325448000]; // 1.1.2012 + [self.startDatePicker setDate:startDateValue]; + [self startDatePickerValueChanged:nil]; self.endDatePicker = [[UIDatePicker alloc] init]; [self.endDatePicker setDatePickerMode:UIDatePickerModeDate]; [self.endDatePicker addTarget:self action:@selector(endDatePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; self.endDate.inputView = self.endDatePicker; - + NSDate *endDateValue = [NSDate date]; + [self.endDatePicker setDate:endDateValue]; + [self endDatePickerValueChanged:nil]; } - (void)startDatePickerValueChanged:(id)sender { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setDateStyle:NSDateFormatterShortStyle]; + [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; self.startDate.text = [dateFormatter stringFromDate:[self.startDatePicker date]]; } @@ -138,30 +148,139 @@ - (IBAction)statsCurrentMonth:(id)sender { - [self showStatsForStartDate:[NSDate date] endDate:[NSDate date]]; + NSDate *curDate = [NSDate date]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; + + // First of month + [comps setDay:1]; + NSDate *startDate = [calendar dateFromComponents:comps]; + + // Last of month + [comps setMonth:[comps month]+1]; + [comps setDay:0]; + [comps setHour:23]; + [comps setMinute:59]; + [comps setSecond:59]; + NSDate *endDate = [calendar dateFromComponents:comps]; + + [self showStatsForStartDate:startDate endDate:endDate]; } - (IBAction)statsLast30days:(id)sender { + NSDate *curDate = [NSDate date]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; + + // End of today + [comps setHour:23]; + [comps setMinute:59]; + [comps setSecond:59]; + NSDate *endDate = [calendar dateFromComponents:comps]; + + // today - 30 days + NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; + [offsetComponents setDay:-30]; + NSDate *startDate = [calendar dateByAddingComponents:offsetComponents toDate:curDate options:0]; + comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:startDate]; + [comps setHour:0]; + [comps setMinute:0]; + [comps setSecond:0]; + NSDate *newStartDate = [calendar dateFromComponents:comps]; + + [self showStatsForStartDate:newStartDate endDate:endDate]; } - (IBAction)statsLast60days:(id)sender { + NSDate *curDate = [NSDate date]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; + + // End of today + [comps setHour:23]; + [comps setMinute:59]; + [comps setSecond:59]; + NSDate *endDate = [calendar dateFromComponents:comps]; + + // today - 60 days + NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; + [offsetComponents setDay:-60]; + NSDate *startDate = [calendar dateByAddingComponents:offsetComponents toDate:curDate options:0]; + comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:startDate]; + [comps setHour:0]; + [comps setMinute:0]; + [comps setSecond:0]; + NSDate *newStartDate = [calendar dateFromComponents:comps]; + + [self showStatsForStartDate:newStartDate endDate:endDate]; } - (IBAction)statsCurrentYear:(id)sender { + NSDate *curDate = [NSDate date]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; + + // January 1st + [comps setDay:1]; + [comps setMonth:1]; + [comps setHour:0]; + [comps setMinute:0]; + [comps setSecond:0]; + NSDate *startDate = [calendar dateFromComponents:comps]; + + // Last of month + [comps setMonth:12]; + [comps setDay:31]; + [comps setHour:23]; + [comps setMinute:59]; + [comps setSecond:59]; + NSDate *endDate = [calendar dateFromComponents:comps]; + + [self showStatsForStartDate:startDate endDate:endDate]; } - (IBAction)statsStartdateEnddate:(id)sender { + [self dismissKeyboard]; + + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:self.startDatePicker.date]; + + [comps setHour:0]; + [comps setMinute:0]; + [comps setSecond:0]; + NSDate *startDate = [calendar dateFromComponents:comps]; + + comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:self.endDatePicker.date]; + [comps setHour:23]; + [comps setMinute:59]; + [comps setSecond:59]; + NSDate *endDate = [calendar dateFromComponents:comps]; + + [self showStatsForStartDate:startDate endDate:endDate]; } - (void)showStatsForStartDate:(NSDate *)startDate endDate:(NSDate *)endDate { + self.currentStartDate = startDate; + self.currentEndDate = endDate; [self performSegueWithIdentifier:@"ShowStatisticsSegue" sender:self]; } +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + if ([segue.identifier isEqualToString:@"ShowStatisticsSegue"]) + { + StatsTabBarController *destController = (StatsTabBarController *)segue.destinationViewController; + destController.startDate = self.currentStartDate; + destController.endDate = self.currentEndDate; + } +} + + @end |
