From 26548f2f08a9decba01b756a117a5a80b653dfbb Mon Sep 17 00:00:00 2001 From: phongnv Date: Wed, 25 Oct 2017 22:43:15 +0700 Subject: [PATCH] add notice to Home screen --- LifeLog/LifeLog.xcodeproj/project.pbxproj | 28 +- LifeLog/LifeLog/Entities.h | 2 +- LifeLog/LifeLog/HomeObject.h | 16 + LifeLog/LifeLog/HomeObject.m | 13 + LifeLog/LifeLog/HomeViewConb troller.m | 476 ++++++++++++++++++++++++++++++ LifeLog/LifeLog/HomeViewController.m | 440 --------------------------- LifeLog/LifeLog/HomeViewController.xib | 19 +- LifeLog/LifeLog/Info.plist | 2 +- LifeLog/LifeLog/NoticeInfor.h | 15 + LifeLog/LifeLog/NoticeInfor.m | 21 ++ LifeLog/LifeLog/ServerAPI.h | 1 + LifeLog/LifeLog/ServerAPI.m | 57 ++++ 12 files changed, 639 insertions(+), 451 deletions(-) create mode 100644 LifeLog/LifeLog/HomeObject.h create mode 100644 LifeLog/LifeLog/HomeObject.m create mode 100644 LifeLog/LifeLog/HomeViewConb troller.m delete mode 100644 LifeLog/LifeLog/HomeViewController.m create mode 100644 LifeLog/LifeLog/NoticeInfor.h create mode 100644 LifeLog/LifeLog/NoticeInfor.m diff --git a/LifeLog/LifeLog.xcodeproj/project.pbxproj b/LifeLog/LifeLog.xcodeproj/project.pbxproj index 744d1f0..3b0f0db 100644 --- a/LifeLog/LifeLog.xcodeproj/project.pbxproj +++ b/LifeLog/LifeLog.xcodeproj/project.pbxproj @@ -12,6 +12,8 @@ 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; }; 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; + 6E27A74A1F9E41B400C390B3 /* HomeObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E27A7491F9E41B400C390B3 /* HomeObject.m */; }; + 6E27A74D1F9E432900C390B3 /* NoticeInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E27A74C1F9E432900C390B3 /* NoticeInfor.m */; }; 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; @@ -23,7 +25,7 @@ 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; - 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; + 6E84E3B01F27A975001EB88E /* HomeViewConb troller.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewConb troller.m */; }; 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; @@ -107,6 +109,10 @@ 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = ""; }; 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = ""; }; 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = ""; }; + 6E27A7481F9E41B300C390B3 /* HomeObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeObject.h; sourceTree = ""; }; + 6E27A7491F9E41B400C390B3 /* HomeObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeObject.m; sourceTree = ""; }; + 6E27A74B1F9E432900C390B3 /* NoticeInfor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NoticeInfor.h; sourceTree = ""; }; + 6E27A74C1F9E432900C390B3 /* NoticeInfor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NoticeInfor.m; sourceTree = ""; }; 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = ""; }; 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = ""; }; 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = ""; }; @@ -131,7 +137,7 @@ 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = ""; }; 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = ""; }; - 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = ""; }; + 6E84E3AE1F27A975001EB88E /* HomeViewConb troller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "HomeViewConb troller.m"; sourceTree = ""; }; 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = ""; }; 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; }; 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = ""; }; @@ -296,6 +302,10 @@ E9497FD41F46EC1100E6AF8D /* MemberObject.m */, E97588FA1F513BAD00782484 /* RankingObject.h */, E97588FB1F513BAD00782484 /* RankingObject.m */, + 6E27A7481F9E41B300C390B3 /* HomeObject.h */, + 6E27A7491F9E41B400C390B3 /* HomeObject.m */, + 6E27A74B1F9E432900C390B3 /* NoticeInfor.h */, + 6E27A74C1F9E432900C390B3 /* NoticeInfor.m */, ); name = Model; sourceTree = ""; @@ -411,7 +421,7 @@ children = ( 6E8DA0F31F2BAC0800CCE941 /* Today */, 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, - 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, + 6E84E3AE1F27A975001EB88E /* HomeViewConb troller.m */, 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, ); name = Home; @@ -845,6 +855,7 @@ E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */, 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */, E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */, + 6E27A74D1F9E432900C390B3 /* NoticeInfor.m in Sources */, 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, @@ -852,8 +863,9 @@ E9D909211F3D559D004CF99F /* TweetObject.m in Sources */, 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, - 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, + 6E84E3B01F27A975001EB88E /* HomeViewConb troller.m in Sources */, E9373E471F3596940059355A /* AutoTransLabel.m in Sources */, + 6E27A74A1F9E41B400C390B3 /* HomeObject.m in Sources */, 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, @@ -1025,8 +1037,10 @@ baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = UXU4V3VUN4; INFOPLIST_FILE = LifeLog/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1049,8 +1063,10 @@ baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = ""; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = UXU4V3VUN4; INFOPLIST_FILE = LifeLog/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; diff --git a/LifeLog/LifeLog/Entities.h b/LifeLog/LifeLog/Entities.h index 1893a0f..0a391a6 100644 --- a/LifeLog/LifeLog/Entities.h +++ b/LifeLog/LifeLog/Entities.h @@ -16,7 +16,7 @@ #import "TweetObject.h" #import "HistoryObject.h" #import "User.h" -#import "TopObject.h" #import "RankingObject.h" +#import "HomeObject.h" #endif /* Entities_h */ diff --git a/LifeLog/LifeLog/HomeObject.h b/LifeLog/LifeLog/HomeObject.h new file mode 100644 index 0000000..46921b3 --- /dev/null +++ b/LifeLog/LifeLog/HomeObject.h @@ -0,0 +1,16 @@ +// +// HomeObject.h +// LifeLog +// +// Created by Nguyen Van Phong on 10/23/17. +// Copyright © 2017 PhongNV. All rights reserved. +// + +#import +#import "TopObject.h" +#import "NoticeInfor.h" + +@interface HomeObject : NSObject +@property (nonatomic, strong) TargetInfor *targetInfor; +@property (nonatomic, strong) NSMutableArray *listNotice; +@end diff --git a/LifeLog/LifeLog/HomeObject.m b/LifeLog/LifeLog/HomeObject.m new file mode 100644 index 0000000..cd1cd70 --- /dev/null +++ b/LifeLog/LifeLog/HomeObject.m @@ -0,0 +1,13 @@ +// +// HomeObject.m +// LifeLog +// +// Created by Nguyen Van Phong on 10/23/17. +// Copyright © 2017 PhongNV. All rights reserved. +// + +#import "HomeObject.h" + +@implementation HomeObject + +@end diff --git a/LifeLog/LifeLog/HomeViewConb troller.m b/LifeLog/LifeLog/HomeViewConb troller.m new file mode 100644 index 0000000..9951e27 --- /dev/null +++ b/LifeLog/LifeLog/HomeViewConb troller.m @@ -0,0 +1,476 @@ +// +// HomeViewController.m +// LifeLog +// +// Created by Nguyen Van Phong on 7/25/17. +// Copyright © 2017 PhongNV. All rights reserved. +// + +#import "HomeViewController.h" +#import "NSDate+helper.h" +#import +#import "CMMotionActivityExtra.h" +#import "TodayViewController.h" +#import "Utilities.h" +#import +#import "ServerAPI.h" + +static NSInteger maxRequest = 20; +static NSInteger numberTotal = 10000; + +@interface HomeViewController () +{ + MBProgressHUD *progressHud; + NSInteger targetStep; +} +@property (nonatomic, weak) IBOutlet UILabel *lblTitle; +@property (nonatomic, weak) IBOutlet UIImageView *avatar; +@property (nonatomic, weak) IBOutlet UILabel *lblDateCurrent; +@property (nonatomic, weak) IBOutlet UILabel *lblValueStep; +@property (nonatomic, weak) IBOutlet UILabel *lblUnitStep; +@property (nonatomic, weak) IBOutlet UILabel *lblValueStepOther; +@property (nonatomic, weak) IBOutlet UILabel *lblPercent; +@property (nonatomic, weak) IBOutlet UILabel *lblNotice; +@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentHome; +@property (weak, nonatomic) IBOutlet UITextView *tvNotice; + +@property (nonatomic, strong) CMPedometer *pedometer; +@property (nonatomic, strong) CMMotionActivityManager *motionActivityManager; +@property (nonatomic, strong) NSOperationQueue *operationQueue; +@property (nonatomic, strong) NSTimer *timer; +@property (nonatomic, assign) NSInteger bike; +@property (nonatomic, assign) NSInteger walking; +@property (nonatomic, assign) NSInteger running; +@property (nonatomic, strong) NSDate *dateCurrent; + +@property (nonatomic, assign) int totalRequest; +@property (nonatomic, assign) int countComplete; +@property (nonatomic, assign) int currentIndex; + +@end + +@implementation HomeViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.lblTitle.text = NSLocalizedString(@"lifelog.home.title", nil); + + [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.lblTitle attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; + + self.avatar.backgroundColor = [UIColor whiteColor]; + self.avatar.layer.borderWidth = 2.0f; + self.avatar.layer.borderColor = [[UIColor whiteColor] CGColor]; + self.avatar.layer.cornerRadius = self.avatar.frame.size.width/2.0f; + self.avatar.layer.masksToBounds = YES; + NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; + User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; + if (user != nil) { + NSString *linkImage = [NSString stringWithFormat:@"%@%@", kServerAddress, user.profile_image]; + NSURL *urlImage = [NSURL URLWithString:linkImage]; + NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; + sessionConfig.timeoutIntervalForRequest = 30.0; + sessionConfig.timeoutIntervalForResource = 60.0; + sessionConfig.HTTPMaximumConnectionsPerHost = 20; + sessionConfig.allowsCellularAccess = YES; + HomeViewController __weak *weakSelf = self; + NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig]; + NSURLSessionDataTask *downloadPhotoTask = [session + dataTaskWithURL:urlImage completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { + if (weakSelf == nil) + { + return; + } + if (error == nil) { + UIImage *image = [[UIImage alloc] initWithData:data]; + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + weakSelf.avatar.image = image; + }]; + } + }]; + [downloadPhotoTask resume]; + } + + self.lblNotice.text = NSLocalizedString(@"lifelog.home.notice", nil); + + _dateCurrent = [NSDate date]; + self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; + + self.lblUnitStep.text = NSLocalizedString(@"lifelog.home.unit.step", nil); + + if ([CMPedometer isStepCountingAvailable]) { + _pedometer = [[CMPedometer alloc] init]; + } + if ([CMMotionActivityManager isActivityAvailable]) { + _motionActivityManager = [[CMMotionActivityManager alloc] init]; + } + _operationQueue = [[NSOperationQueue alloc] init]; + _bike = 0; + _walking = 0; + _running = 0; + _segmentHome.selectedSegmentIndex = 1; + _totalRequest = 0; + _countComplete = 0; + + progressHud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; + progressHud.mode = MBProgressHUDModeIndeterminate; + progressHud.detailsLabel.text = NSLocalizedString(@"lifelog.home.progressHud.title", nil); + // [self saveDataStep7LastDay]; + targetStep = numberTotal; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + NSDate *dateNow = [NSDate date]; + [self saveStepForDay:dateNow]; +} + +- (void)requestTopByDate:(NSDate *)date { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd"]; + NSString *dateString = [dateFormatter stringFromDate:date]; + [progressHud showAnimated:YES]; + [progressHud setHidden:NO]; + HomeViewController __weak *weakSelf = self; + int mode = 1; + switch (_segmentHome.selectedSegmentIndex) { + case 0: + mode = 3; + break; + + case 1: + mode = 1; + break; + + case 2: + mode = 2; + break; + + default: + break; + } + [[ServerAPI server] requestTopWithMode:mode andDate:dateString CompletionHandler:^(TopObject *topObject, NSError *error) { + if(weakSelf == nil) { + return ; + } + if (error == nil) { + NSLog(@"TopObject: %@", topObject); + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf updateStepUI:topObject.targetInfor]; + }); + } + else { + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *message = [error.userInfo objectForKey:@"message"]; + [Utilities showErrorMessage:message withViewController:weakSelf]; + }); + } + dispatch_async(dispatch_get_main_queue(), ^{ + [progressHud setHidden:YES]; + }); + }]; + [[ServerAPI server] requestHomeWithMode:mode andDate:dateString CompletionHandler:^(HomeObject *homeObject, NSError *error) { + if(weakSelf == nil) { + return ; + } + if (error == nil) { + NSLog(@"List Notices: %@", homeObject.listNotice); + for (NoticeInfor *noticeInfor in homeObject.listNotice) { + NSLog(@"noticeInfor: %@", noticeInfor.notice_content); + } + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf updateNoticeUI:homeObject]; + }); + } + else { + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *message = [error.userInfo objectForKey:@"message"]; + [Utilities showErrorMessage:message withViewController:weakSelf]; + }); + } + dispatch_async(dispatch_get_main_queue(), ^{ + [progressHud setHidden:YES]; + }); + }]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - IBAction +- (IBAction)menuButtonTouchUpInside:(id)sender +{ + +} + +- (IBAction)todayButtonTouchUpInside:(id)sender +{ + TodayViewController *todayVC = [[TodayViewController alloc] initWithNibName:@"TodayViewController" bundle:nil]; + todayVC.targetStep = targetStep; + [self.navigationController pushViewController:todayVC animated:YES]; +} + +- (IBAction)leftButtonTouchUpInside:(id)sender +{ + self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:-(24*60*60)]; + self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; + [self resetStepUI]; + [self saveStepForDay:self.dateCurrent]; +} + +- (IBAction)rightButtonTouchUpInside:(id)sender +{ + self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:24*60*60]; + self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; + [self resetStepUI]; + //[self saveStepForDay:self.dateCurrent]; + [self requestTopByDate:self.dateCurrent]; +} + +- (IBAction)segmentValueChange:(id)sender { + [self resetStepUI]; + [self requestTopByDate:self.dateCurrent]; +} + +#pragma mark - Functions Private +- (void)saveStepForDay:(NSDate *)date +{ + if ([CMMotionActivityManager isActivityAvailable]) { + [progressHud showAnimated:YES]; + [progressHud setHidden:NO]; + self.bike = 0; + self.walking = 0; + self.running = 0; + NSDate *startDate = [date beginningAtMidnightOfDay]; + NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; + + HomeViewController __weak *weakSelf = self; + dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.forDay", NULL); + dispatch_async(myQueue, ^{ + if (weakSelf == nil) { + return ; + } + + [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray * _Nullable activities, NSError * _Nullable error) { + if (error || activities.count <= 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf updateStepUI]; + }); + return ; + } + // set EndDate + NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; + for (int i = 0; i < activities.count; i++) { + CMMotionActivity *activity = [activities objectAtIndex:i]; + CMMotionActivityExtra *activityExtra = [[CMMotionActivityExtra alloc] init]; + activityExtra.activity = activity; + if (i == activities.count - 1) { + activityExtra.endDate = endDate; + } + else { + CMMotionActivity *activityNext = [activities objectAtIndex:i+1]; + // activityExtra.endDate = [activityNext.startDate dateByAddingTimeInterval:-1]; + activityExtra.endDate = activityNext.startDate; + } + [arrayActivities addObject:activityExtra]; + } + // PhongNV + weakSelf.currentIndex = 0; + [weakSelf save20objectOfActivityExtras:arrayActivities]; + }]; + }); + } +} + +- (void)complete20Request:(NSArray *)activities { + if (self.totalRequest == self.countComplete) { + self.totalRequest = 0; + self.countComplete = 0; + self.currentIndex++; + [self save20objectOfActivityExtras:activities]; + } +} +- (void)save20objectOfActivityExtras:(NSArray *)activities +{ + int result = floor(activities.count / maxRequest); + if (activities.count <= 0 || self.currentIndex > result) { + self.totalRequest = 0; + self.countComplete = 0; + self.currentIndex = 0; + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateStepUI]; + }); + return; + } + + HomeViewController __weak *weakSelf = self; + for (NSInteger index = self.currentIndex*maxRequest; index < self.currentIndex*maxRequest + maxRequest; index++) { + if ((self.currentIndex*maxRequest + maxRequest) >= activities.count) { + self.totalRequest = (int)(activities.count - self.currentIndex*maxRequest); + if (self.totalRequest <= 0) { + [weakSelf complete20Request:activities]; + } + } + else { + self.totalRequest = (int)maxRequest; + } + if (index < activities.count) { + CMMotionActivityExtra *activityExtra = [activities objectAtIndex:index]; + [self.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { + if (weakSelf == nil) { + return ; + } + NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; + int mode = 1; + if (activityExtra.activity.cycling) { + mode = 3; + } + else if (activityExtra.activity.walking) { + mode = 1; + } + else if (activityExtra.activity.running) { + mode = 2; + } + else { + // unknown + } + // save step to server + if (numberStep > 0) { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; + NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; + NSLog(@"dateBegin: %@ | dateEnd: %@ | numberStep: %li", dateBegin, dateEnd, numberStep); + [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } + weakSelf.countComplete++; + [weakSelf complete20Request:activities]; + }]; + } + else { + weakSelf.countComplete++; + [weakSelf complete20Request:activities]; + } + }]; + } + } +} + +- (void)updateStepUI +{ + [self requestTopByDate:self.dateCurrent]; +} + +- (void)saveDataStep7LastDay +{ + NSDate *dateNow = [NSDate date]; + for (int index = 0; index < 7; index++) { + dateNow = [dateNow dateByAddingTimeInterval:-(24*60*60)]; + [self saveStepByDate:dateNow]; + } +} + +- (void)saveStepByDate:(NSDate *)date +{ + if ([CMMotionActivityManager isActivityAvailable]) { + NSDate *startDate = [date beginningAtMidnightOfDay]; + NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; + + HomeViewController __weak *weakSelf = self; + dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.7lastday", NULL); + dispatch_async(myQueue, ^{ + if (weakSelf == nil) { + return ; + } + + [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray * _Nullable activities, NSError * _Nullable error) { + if (error || activities.count <= 0) { + return ; + } + // set EndDate + NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; + for (int i = 0; i < activities.count; i++) { + CMMotionActivity *activity = [activities objectAtIndex:i]; + CMMotionActivityExtra *activityExtra = [[CMMotionActivityExtra alloc] init]; + activityExtra.activity = activity; + if (i == activities.count - 1) { + activityExtra.endDate = endDate; + } + else { + CMMotionActivity *activityNext = [activities objectAtIndex:i+1]; + activityExtra.endDate = [activityNext.startDate dateByAddingTimeInterval:-1]; + } + [arrayActivities addObject:activityExtra]; + } + + for (CMMotionActivityExtra *activityExtra in arrayActivities) { + [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { + NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; + int mode = 1; + if (activityExtra.activity.cycling) { + mode = 3; + } + else if (activityExtra.activity.walking) { + mode = 1; + } + else if (activityExtra.activity.running) { + mode = 2; + } + else { + // unknown + } + + // save step to server + if (numberStep > 0) { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; + NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; + [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } + }]; + } + }]; + } + }]; + }); + } +} + +- (void)updateStepUI:(TargetInfor *)targetInfor +{ + NSString *stringTargetStep = [targetInfor.target_step stringByReplacingOccurrencesOfString:@"," withString:@""]; + targetStep = [stringTargetStep integerValue]; + self.lblValueStep.text = targetInfor.num_step; + self.lblValueStepOther.text = [NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"lifelog.today.remaining.other", nil), targetInfor.remaining_step]; + self.lblPercent.text = [NSString stringWithFormat:@"%@ %i%@", NSLocalizedString(@"lifelog.today.text.percent", nil), [targetInfor.complete_percent intValue], NSLocalizedString(@"lifelog.today.percent", nil)]; +} + +- (void)updateNoticeUI:(HomeObject *)homeObject +{ + NSString *stringNotice = @""; + for (NoticeInfor *notice in homeObject.listNotice) { + NSString *noticeString = [NSString stringWithFormat:@"%@\n", notice.notice_content]; + stringNotice = [stringNotice stringByAppendingString:noticeString]; + } + _tvNotice.text = stringNotice; +} + +- (void)resetStepUI +{ + self.lblValueStep.text = @""; + self.lblValueStepOther.text = @""; + self.lblPercent.text = @""; +} + +@end diff --git a/LifeLog/LifeLog/HomeViewController.m b/LifeLog/LifeLog/HomeViewController.m deleted file mode 100644 index eead6a7..0000000 --- a/LifeLog/LifeLog/HomeViewController.m +++ /dev/null @@ -1,440 +0,0 @@ -// -// HomeViewController.m -// LifeLog -// -// Created by Nguyen Van Phong on 7/25/17. -// Copyright © 2017 PhongNV. All rights reserved. -// - -#import "HomeViewController.h" -#import "NSDate+helper.h" -#import -#import "CMMotionActivityExtra.h" -#import "TodayViewController.h" -#import "Utilities.h" -#import -#import "ServerAPI.h" - -static NSInteger maxRequest = 20; -static NSInteger numberTotal = 10000; - -@interface HomeViewController () -{ - MBProgressHUD *progressHud; - NSInteger targetStep; -} -@property (nonatomic, weak) IBOutlet UILabel *lblTitle; -@property (nonatomic, weak) IBOutlet UIImageView *avatar; -@property (nonatomic, weak) IBOutlet UILabel *lblDateCurrent; -@property (nonatomic, weak) IBOutlet UILabel *lblValueStep; -@property (nonatomic, weak) IBOutlet UILabel *lblUnitStep; -@property (nonatomic, weak) IBOutlet UILabel *lblValueStepOther; -@property (nonatomic, weak) IBOutlet UILabel *lblPercent; -@property (nonatomic, weak) IBOutlet UILabel *lblNotice; -@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentHome; - -@property (nonatomic, strong) CMPedometer *pedometer; -@property (nonatomic, strong) CMMotionActivityManager *motionActivityManager; -@property (nonatomic, strong) NSOperationQueue *operationQueue; -@property (nonatomic, strong) NSTimer *timer; -@property (nonatomic, assign) NSInteger bike; -@property (nonatomic, assign) NSInteger walking; -@property (nonatomic, assign) NSInteger running; -@property (nonatomic, strong) NSDate *dateCurrent; - -@property (nonatomic, assign) int totalRequest; -@property (nonatomic, assign) int countComplete; -@property (nonatomic, assign) int currentIndex; - -@end - -@implementation HomeViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - - self.lblTitle.text = NSLocalizedString(@"lifelog.home.title", nil); - - [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.lblTitle attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; - - self.avatar.backgroundColor = [UIColor whiteColor]; - self.avatar.layer.borderWidth = 2.0f; - self.avatar.layer.borderColor = [[UIColor whiteColor] CGColor]; - self.avatar.layer.cornerRadius = self.avatar.frame.size.width/2.0f; - self.avatar.layer.masksToBounds = YES; - NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; - User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; - if (user != nil) { - NSString *linkImage = [NSString stringWithFormat:@"%@%@", kServerAddress, user.profile_image]; - NSURL *urlImage = [NSURL URLWithString:linkImage]; - NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; - sessionConfig.timeoutIntervalForRequest = 30.0; - sessionConfig.timeoutIntervalForResource = 60.0; - sessionConfig.HTTPMaximumConnectionsPerHost = 20; - sessionConfig.allowsCellularAccess = YES; - HomeViewController __weak *weakSelf = self; - NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig]; - NSURLSessionDataTask *downloadPhotoTask = [session - dataTaskWithURL:urlImage completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { - if (weakSelf == nil) - { - return; - } - if (error == nil) { - UIImage *image = [[UIImage alloc] initWithData:data]; - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - weakSelf.avatar.image = image; - }]; - } - }]; - [downloadPhotoTask resume]; - } - - self.lblNotice.text = NSLocalizedString(@"lifelog.home.notice", nil); - - _dateCurrent = [NSDate date]; - self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; - - self.lblUnitStep.text = NSLocalizedString(@"lifelog.home.unit.step", nil); - - if ([CMPedometer isStepCountingAvailable]) { - _pedometer = [[CMPedometer alloc] init]; - } - if ([CMMotionActivityManager isActivityAvailable]) { - _motionActivityManager = [[CMMotionActivityManager alloc] init]; - } - _operationQueue = [[NSOperationQueue alloc] init]; - _bike = 0; - _walking = 0; - _running = 0; - _segmentHome.selectedSegmentIndex = 1; - _totalRequest = 0; - _countComplete = 0; - - progressHud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; - progressHud.mode = MBProgressHUDModeIndeterminate; - progressHud.detailsLabel.text = NSLocalizedString(@"lifelog.home.progressHud.title", nil); - // [self saveDataStep7LastDay]; - targetStep = numberTotal; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - NSDate *dateNow = [NSDate date]; - [self saveStepForDay:dateNow]; -} - -- (void)requestTopByDate:(NSDate *)date { - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setDateFormat:@"yyyy-MM-dd"]; - NSString *dateString = [dateFormatter stringFromDate:date]; - [progressHud showAnimated:YES]; - [progressHud setHidden:NO]; - HomeViewController __weak *weakSelf = self; - int mode = 1; - switch (_segmentHome.selectedSegmentIndex) { - case 0: - mode = 3; - break; - - case 1: - mode = 1; - break; - - case 2: - mode = 2; - break; - - default: - break; - } - [[ServerAPI server] requestTopWithMode:mode andDate:dateString CompletionHandler:^(TopObject *topObject, NSError *error) { - if(weakSelf == nil) { - return ; - } - if (error == nil) { - NSLog(@"TopObject: %@", topObject); - dispatch_async(dispatch_get_main_queue(), ^{ - [weakSelf updateStepUI:topObject.targetInfor]; - }); - } - else { - dispatch_async(dispatch_get_main_queue(), ^{ - NSString *message = [error.userInfo objectForKey:@"message"]; - [Utilities showErrorMessage:message withViewController:weakSelf]; - }); - } - dispatch_async(dispatch_get_main_queue(), ^{ - [progressHud setHidden:YES]; - }); - }]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -#pragma mark - IBAction -- (IBAction)menuButtonTouchUpInside:(id)sender -{ - -} - -- (IBAction)todayButtonTouchUpInside:(id)sender -{ - TodayViewController *todayVC = [[TodayViewController alloc] initWithNibName:@"TodayViewController" bundle:nil]; - todayVC.targetStep = targetStep; - [self.navigationController pushViewController:todayVC animated:YES]; -} - -- (IBAction)leftButtonTouchUpInside:(id)sender -{ - self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:-(24*60*60)]; - self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; - [self resetStepUI]; - [self saveStepForDay:self.dateCurrent]; -} - -- (IBAction)rightButtonTouchUpInside:(id)sender -{ - self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:24*60*60]; - self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; - [self resetStepUI]; - //[self saveStepForDay:self.dateCurrent]; - [self requestTopByDate:self.dateCurrent]; -} - -- (IBAction)segmentValueChange:(id)sender { - [self resetStepUI]; - [self requestTopByDate:self.dateCurrent]; -} - -#pragma mark - Functions Private -- (void)saveStepForDay:(NSDate *)date -{ - if ([CMMotionActivityManager isActivityAvailable]) { - [progressHud showAnimated:YES]; - [progressHud setHidden:NO]; - self.bike = 0; - self.walking = 0; - self.running = 0; - NSDate *startDate = [date beginningAtMidnightOfDay]; - NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; - - HomeViewController __weak *weakSelf = self; - dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.forDay", NULL); - dispatch_async(myQueue, ^{ - if (weakSelf == nil) { - return ; - } - - [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray * _Nullable activities, NSError * _Nullable error) { - if (error || activities.count <= 0) { - dispatch_async(dispatch_get_main_queue(), ^{ - [weakSelf updateStepUI]; - }); - return ; - } - // set EndDate - NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; - for (int i = 0; i < activities.count; i++) { - CMMotionActivity *activity = [activities objectAtIndex:i]; - CMMotionActivityExtra *activityExtra = [[CMMotionActivityExtra alloc] init]; - activityExtra.activity = activity; - if (i == activities.count - 1) { - activityExtra.endDate = endDate; - } - else { - CMMotionActivity *activityNext = [activities objectAtIndex:i+1]; - activityExtra.endDate = activityNext.startDate; - } - [arrayActivities addObject:activityExtra]; - } - // PhongNV - weakSelf.currentIndex = 0; - [weakSelf save20objectOfActivityExtras:arrayActivities]; - }]; - }); - } -} - -- (void)complete20Request:(NSArray *)activities { - if (self.totalRequest == self.countComplete) { - self.totalRequest = 0; - self.countComplete = 0; - self.currentIndex++; - [self save20objectOfActivityExtras:activities]; - } -} -- (void)save20objectOfActivityExtras:(NSArray *)activities -{ - int result = floor(activities.count / maxRequest); - if (activities.count <= 0 || self.currentIndex > result) { - self.totalRequest = 0; - self.countComplete = 0; - self.currentIndex = 0; - dispatch_async(dispatch_get_main_queue(), ^{ - [self updateStepUI]; - }); - return; - } - - HomeViewController __weak *weakSelf = self; - for (NSInteger index = self.currentIndex*maxRequest; index < self.currentIndex*maxRequest + maxRequest; index++) { - if ((self.currentIndex*maxRequest + maxRequest) >= activities.count) { - self.totalRequest = (int)(activities.count - self.currentIndex*maxRequest); - if (self.totalRequest <= 0) { - [weakSelf complete20Request:activities]; - } - } - else { - self.totalRequest = (int)maxRequest; - } - if (index < activities.count) { - CMMotionActivityExtra *activityExtra = [activities objectAtIndex:index]; - [self.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { - if (weakSelf == nil) { - return ; - } - NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; - int mode = 1; - if (activityExtra.activity.cycling) { - mode = 3; - } - else if (activityExtra.activity.walking) { - mode = 1; - } - else if (activityExtra.activity.running) { - mode = 2; - } - else { - // unknown - } - // save step to server - if (numberStep > 0) { - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; - NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; - NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; - [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { - if (error) { - NSLog(@"Error: %@", error); - } - weakSelf.countComplete++; - [weakSelf complete20Request:activities]; - }]; - } - else { - weakSelf.countComplete++; - [weakSelf complete20Request:activities]; - } - }]; - } - } -} - -- (void)updateStepUI -{ - [self requestTopByDate:self.dateCurrent]; -} - -- (void)saveDataStep7LastDay -{ - NSDate *dateNow = [NSDate date]; - for (int index = 0; index < 7; index++) { - dateNow = [dateNow dateByAddingTimeInterval:-(24*60*60)]; - [self saveStepByDate:dateNow]; - } -} - -- (void)saveStepByDate:(NSDate *)date -{ - if ([CMMotionActivityManager isActivityAvailable]) { - NSDate *startDate = [date beginningAtMidnightOfDay]; - NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; - - HomeViewController __weak *weakSelf = self; - dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.7lastday", NULL); - dispatch_async(myQueue, ^{ - if (weakSelf == nil) { - return ; - } - - [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray * _Nullable activities, NSError * _Nullable error) { - if (error || activities.count <= 0) { - return ; - } - // set EndDate - NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; - for (int i = 0; i < activities.count; i++) { - CMMotionActivity *activity = [activities objectAtIndex:i]; - CMMotionActivityExtra *activityExtra = [[CMMotionActivityExtra alloc] init]; - activityExtra.activity = activity; - if (i == activities.count - 1) { - activityExtra.endDate = endDate; - } - else { - CMMotionActivity *activityNext = [activities objectAtIndex:i+1]; - activityExtra.endDate = activityNext.startDate; - } - [arrayActivities addObject:activityExtra]; - } - - for (CMMotionActivityExtra *activityExtra in arrayActivities) { - [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { - NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; - int mode = 1; - if (activityExtra.activity.cycling) { - mode = 3; - } - else if (activityExtra.activity.walking) { - mode = 1; - } - else if (activityExtra.activity.running) { - mode = 2; - } - else { - // unknown - } - - // save step to server - if (numberStep > 0) { - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; - NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; - NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; - [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { - if (error) { - NSLog(@"Error: %@", error); - } - }]; - } - }]; - } - }]; - }); - } -} - -- (void)updateStepUI:(TargetInfor *)targetInfor -{ - NSString *stringTargetStep = [targetInfor.target_step stringByReplacingOccurrencesOfString:@"," withString:@""]; - targetStep = [stringTargetStep integerValue]; - self.lblValueStep.text = targetInfor.num_step; - self.lblValueStepOther.text = [NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"lifelog.today.remaining.other", nil), targetInfor.remaining_step]; - self.lblPercent.text = [NSString stringWithFormat:@"%@ %i%@", NSLocalizedString(@"lifelog.today.text.percent", nil), [targetInfor.complete_percent intValue], NSLocalizedString(@"lifelog.today.percent", nil)]; -} - -- (void)resetStepUI -{ - self.lblValueStep.text = @""; - self.lblValueStepOther.text = @""; - self.lblPercent.text = @""; -} - -@end diff --git a/LifeLog/LifeLog/HomeViewController.xib b/LifeLog/LifeLog/HomeViewController.xib index 2ad2e13..e2bf460 100644 --- a/LifeLog/LifeLog/HomeViewController.xib +++ b/LifeLog/LifeLog/HomeViewController.xib @@ -1,10 +1,11 @@ - + - + + @@ -20,6 +21,7 @@ + @@ -151,7 +153,7 @@ -