summaryrefslogtreecommitdiff
path: root/Volta/Views/StatsViewController.m
diff options
context:
space:
mode:
authorRonny Fenrich <Fenrich@Gmail.com>2013-06-14 15:28:26 -0600
committerRonny Fenrich <Fenrich@Gmail.com>2013-06-14 15:28:26 -0600
commitb1c3dda1ca1160c136c64e5bdbe0ab52367d3d4f (patch)
treebf14db99121e8ce96512b4e5b35c4b92532ceb23 /Volta/Views/StatsViewController.m
parentc721c485f56cc2034f499a61c02117f31cc73da4 (diff)
Finished StartDate/EndDate range selection logic
Diffstat (limited to 'Volta/Views/StatsViewController.m')
-rw-r--r--Volta/Views/StatsViewController.m125
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