Commit c4525f8715e07da1592b4c4d3b74f68869d8c367

Authored by nvtu11790@gmail.com
1 parent b94abc619f

Add API for request history in today with selected type and mode

Showing 19 changed files with 376 additions and 33 deletions Inline Diff

LifeLog/LifeLog.xcodeproj/project.pbxproj
1 // !$*UTF8*$! 1 // !$*UTF8*$!
2 { 2 {
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 objectVersion = 46; 6 objectVersion = 46;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; }; 10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; };
11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; }; 11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; };
12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; }; 12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; };
13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; 13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; };
14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; 14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; };
15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; 15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; };
16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; 16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; };
17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; 17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; };
18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; }; 18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; };
19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; }; 19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; };
20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; 20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; };
21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; 21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; };
22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; 22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; };
23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; };
24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; };
25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; 25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; };
26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; 26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; };
27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; };
28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; };
29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; 29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; };
30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; }; 30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; };
31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; }; 31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; };
32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; }; 32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; };
33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; }; 33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; };
34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; }; 34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; };
35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; }; 35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; };
36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; }; 36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; };
37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; }; 37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; };
38 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; }; 38 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; };
39 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; 39 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; };
40 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; 40 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; };
41 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; 41 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; };
42 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; }; 42 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; };
43 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; }; 43 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; };
44 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; 44 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; };
45 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; 45 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; };
46 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; 46 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; };
47 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; };
48 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; };
47 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; }; 49 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; };
48 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; }; 50 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; };
49 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; }; 51 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; };
50 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; }; 52 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; };
51 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; }; 53 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; };
52 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; }; 54 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; };
53 /* End PBXBuildFile section */ 55 /* End PBXBuildFile section */
54 56
55 /* Begin PBXContainerItemProxy section */ 57 /* Begin PBXContainerItemProxy section */
56 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 58 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
57 isa = PBXContainerItemProxy; 59 isa = PBXContainerItemProxy;
58 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 60 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
59 proxyType = 1; 61 proxyType = 1;
60 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 62 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
61 remoteInfo = LifeLog; 63 remoteInfo = LifeLog;
62 }; 64 };
63 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 65 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
64 isa = PBXContainerItemProxy; 66 isa = PBXContainerItemProxy;
65 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 67 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
66 proxyType = 1; 68 proxyType = 1;
67 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 69 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
68 remoteInfo = LifeLog; 70 remoteInfo = LifeLog;
69 }; 71 };
70 /* End PBXContainerItemProxy section */ 72 /* End PBXContainerItemProxy section */
71 73
72 /* Begin PBXFileReference section */ 74 /* Begin PBXFileReference section */
73 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; }; 75 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; };
74 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 76 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; };
75 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; }; 77 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; };
76 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; 78 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
77 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 79 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
78 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; }; 80 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
79 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; }; 81 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; };
80 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; }; 82 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; };
81 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; }; 83 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
82 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; }; 84 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
83 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; 85 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; };
84 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; 86 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
85 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; 87 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
86 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; }; 88 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; };
87 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; }; 89 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; };
88 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; }; 90 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; };
89 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; }; 91 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; };
90 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; }; 92 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; };
91 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; }; 93 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; };
92 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; }; 94 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; };
93 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; }; 95 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; };
94 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; 96 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; };
95 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 97 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
96 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 98 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
97 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 99 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
98 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 100 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
99 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 101 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
100 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 102 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
101 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 103 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
102 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; }; 104 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; };
103 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 105 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
104 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 106 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
105 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; }; 107 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; };
106 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 108 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
107 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 109 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
108 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 110 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
109 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; }; 111 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
110 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; }; 112 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
111 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; }; 113 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; };
112 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; }; 114 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; };
113 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; }; 115 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; };
114 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; }; 116 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; };
115 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; }; 117 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; };
116 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; }; 118 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; };
117 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; }; 119 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; };
118 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; }; 120 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; };
119 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; }; 121 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; };
120 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; }; 122 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; };
121 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; 123 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; };
122 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; }; 124 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; };
123 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; }; 125 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; };
124 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; }; 126 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; };
125 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; }; 127 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; };
126 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; }; 128 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; };
127 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 129 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
128 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; }; 130 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
129 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; 131 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; };
130 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; 132 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; };
131 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; 133 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
132 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; }; 134 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; };
133 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; }; 135 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; };
134 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; }; 136 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; };
135 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; 137 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; };
136 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; 138 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; };
137 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; 139 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; };
138 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; }; 140 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; };
139 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; }; 141 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; };
142 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; };
143 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; };
144 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; };
145 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; };
140 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; }; 146 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; };
141 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; }; 147 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; };
142 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; }; 148 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; };
143 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; }; 149 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; };
144 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; }; 150 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; };
145 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; }; 151 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; };
146 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; }; 152 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; };
147 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; }; 153 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; };
148 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; }; 154 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; };
149 /* End PBXFileReference section */ 155 /* End PBXFileReference section */
150 156
151 /* Begin PBXFrameworksBuildPhase section */ 157 /* Begin PBXFrameworksBuildPhase section */
152 6E84E36E1F27A700001EB88E /* Frameworks */ = { 158 6E84E36E1F27A700001EB88E /* Frameworks */ = {
153 isa = PBXFrameworksBuildPhase; 159 isa = PBXFrameworksBuildPhase;
154 buildActionMask = 2147483647; 160 buildActionMask = 2147483647;
155 files = ( 161 files = (
156 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 162 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
157 ); 163 );
158 runOnlyForDeploymentPostprocessing = 0; 164 runOnlyForDeploymentPostprocessing = 0;
159 }; 165 };
160 6E84E3871F27A703001EB88E /* Frameworks */ = { 166 6E84E3871F27A703001EB88E /* Frameworks */ = {
161 isa = PBXFrameworksBuildPhase; 167 isa = PBXFrameworksBuildPhase;
162 buildActionMask = 2147483647; 168 buildActionMask = 2147483647;
163 files = ( 169 files = (
164 ); 170 );
165 runOnlyForDeploymentPostprocessing = 0; 171 runOnlyForDeploymentPostprocessing = 0;
166 }; 172 };
167 6E84E3921F27A703001EB88E /* Frameworks */ = { 173 6E84E3921F27A703001EB88E /* Frameworks */ = {
168 isa = PBXFrameworksBuildPhase; 174 isa = PBXFrameworksBuildPhase;
169 buildActionMask = 2147483647; 175 buildActionMask = 2147483647;
170 files = ( 176 files = (
171 ); 177 );
172 runOnlyForDeploymentPostprocessing = 0; 178 runOnlyForDeploymentPostprocessing = 0;
173 }; 179 };
174 /* End PBXFrameworksBuildPhase section */ 180 /* End PBXFrameworksBuildPhase section */
175 181
176 /* Begin PBXGroup section */ 182 /* Begin PBXGroup section */
177 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 183 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
178 isa = PBXGroup; 184 isa = PBXGroup;
179 children = ( 185 children = (
180 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 186 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
181 ); 187 );
182 name = Frameworks; 188 name = Frameworks;
183 sourceTree = "<group>"; 189 sourceTree = "<group>";
184 }; 190 };
185 6E18CECF1F2E398C0029891F /* Login */ = { 191 6E18CECF1F2E398C0029891F /* Login */ = {
186 isa = PBXGroup; 192 isa = PBXGroup;
187 children = ( 193 children = (
188 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, 194 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
189 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 195 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
190 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 196 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
191 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 197 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
192 ); 198 );
193 name = Login; 199 name = Login;
194 sourceTree = "<group>"; 200 sourceTree = "<group>";
195 }; 201 };
196 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 202 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
197 isa = PBXGroup; 203 isa = PBXGroup;
198 children = ( 204 children = (
199 6E18CED61F2E3C840029891F /* ServerAPI.h */, 205 6E18CED61F2E3C840029891F /* ServerAPI.h */,
200 6E18CED71F2E3C840029891F /* ServerAPI.m */, 206 6E18CED71F2E3C840029891F /* ServerAPI.m */,
201 ); 207 );
202 name = ServerAPI; 208 name = ServerAPI;
203 sourceTree = "<group>"; 209 sourceTree = "<group>";
204 }; 210 };
205 6E18CED91F2E40AE0029891F /* Model */ = { 211 6E18CED91F2E40AE0029891F /* Model */ = {
206 isa = PBXGroup; 212 isa = PBXGroup;
207 children = ( 213 children = (
208 6E18CEDA1F2E40F50029891F /* User.h */, 214 6E18CEDA1F2E40F50029891F /* User.h */,
209 6E18CEDB1F2E40F50029891F /* User.m */, 215 6E18CEDB1F2E40F50029891F /* User.m */,
210 6E18CEDD1F2E46570029891F /* Entities.h */, 216 6E18CEDD1F2E46570029891F /* Entities.h */,
217 E9373E481F35AA180059355A /* HistoryObject.h */,
218 E9373E491F35AA180059355A /* HistoryObject.m */,
211 ); 219 );
212 name = Model; 220 name = Model;
213 sourceTree = "<group>"; 221 sourceTree = "<group>";
214 }; 222 };
215 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { 223 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = {
216 isa = PBXGroup; 224 isa = PBXGroup;
217 children = ( 225 children = (
218 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, 226 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */,
219 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, 227 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */,
220 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, 228 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */,
221 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, 229 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */,
222 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, 230 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */,
223 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, 231 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */,
224 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, 232 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */,
225 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, 233 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */,
226 ); 234 );
227 name = TPKeyboardAvoiding; 235 name = TPKeyboardAvoiding;
228 sourceTree = "<group>"; 236 sourceTree = "<group>";
229 }; 237 };
230 6E84E3681F27A700001EB88E = { 238 6E84E3681F27A700001EB88E = {
231 isa = PBXGroup; 239 isa = PBXGroup;
232 children = ( 240 children = (
233 6E84E3731F27A700001EB88E /* LifeLog */, 241 6E84E3731F27A700001EB88E /* LifeLog */,
234 6E84E38D1F27A703001EB88E /* LifeLogTests */, 242 6E84E38D1F27A703001EB88E /* LifeLogTests */,
235 6E84E3981F27A703001EB88E /* LifeLogUITests */, 243 6E84E3981F27A703001EB88E /* LifeLogUITests */,
236 6E84E3721F27A700001EB88E /* Products */, 244 6E84E3721F27A700001EB88E /* Products */,
237 DE8269E957EA47CD771BAB33 /* Pods */, 245 DE8269E957EA47CD771BAB33 /* Pods */,
238 020C1721B642EF36F31E1BB4 /* Frameworks */, 246 020C1721B642EF36F31E1BB4 /* Frameworks */,
239 ); 247 );
240 sourceTree = "<group>"; 248 sourceTree = "<group>";
241 }; 249 };
242 6E84E3721F27A700001EB88E /* Products */ = { 250 6E84E3721F27A700001EB88E /* Products */ = {
243 isa = PBXGroup; 251 isa = PBXGroup;
244 children = ( 252 children = (
245 6E84E3711F27A700001EB88E /* LifeLog.app */, 253 6E84E3711F27A700001EB88E /* LifeLog.app */,
246 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 254 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
247 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 255 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
248 ); 256 );
249 name = Products; 257 name = Products;
250 sourceTree = "<group>"; 258 sourceTree = "<group>";
251 }; 259 };
252 6E84E3731F27A700001EB88E /* LifeLog */ = { 260 6E84E3731F27A700001EB88E /* LifeLog */ = {
253 isa = PBXGroup; 261 isa = PBXGroup;
254 children = ( 262 children = (
255 6E18CED91F2E40AE0029891F /* Model */, 263 6E18CED91F2E40AE0029891F /* Model */,
256 6E18CED51F2E3C0E0029891F /* ServerAPI */, 264 6E18CED51F2E3C0E0029891F /* ServerAPI */,
257 6EDC8BEB1F2C2F3300765ACC /* Common */, 265 6EDC8BEB1F2C2F3300765ACC /* Common */,
258 6ECC406D1F2A5FA500AAEB97 /* Library */, 266 6ECC406D1F2A5FA500AAEB97 /* Library */,
259 E99E13A71F336F0C00C78787 /* CustomView */, 267 E99E13A71F336F0C00C78787 /* CustomView */,
260 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 268 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
261 6E84E3A71F27A887001EB88E /* AppDelegate */, 269 6E84E3A71F27A887001EB88E /* AppDelegate */,
262 6E84E3801F27A701001EB88E /* Assets.xcassets */, 270 6E84E3801F27A701001EB88E /* Assets.xcassets */,
263 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 271 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
264 6E84E3851F27A701001EB88E /* Info.plist */, 272 6E84E3851F27A701001EB88E /* Info.plist */,
265 6E84E3741F27A701001EB88E /* Supporting Files */, 273 6E84E3741F27A701001EB88E /* Supporting Files */,
266 ); 274 );
267 path = LifeLog; 275 path = LifeLog;
268 sourceTree = "<group>"; 276 sourceTree = "<group>";
269 }; 277 };
270 6E84E3741F27A701001EB88E /* Supporting Files */ = { 278 6E84E3741F27A701001EB88E /* Supporting Files */ = {
271 isa = PBXGroup; 279 isa = PBXGroup;
272 children = ( 280 children = (
273 6E84E3751F27A701001EB88E /* main.m */, 281 6E84E3751F27A701001EB88E /* main.m */,
274 6EF163091F29069300DA306C /* Localizable.strings */, 282 6EF163091F29069300DA306C /* Localizable.strings */,
275 ); 283 );
276 name = "Supporting Files"; 284 name = "Supporting Files";
277 sourceTree = "<group>"; 285 sourceTree = "<group>";
278 }; 286 };
279 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 287 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
280 isa = PBXGroup; 288 isa = PBXGroup;
281 children = ( 289 children = (
282 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 290 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
283 6E84E3901F27A703001EB88E /* Info.plist */, 291 6E84E3901F27A703001EB88E /* Info.plist */,
284 ); 292 );
285 path = LifeLogTests; 293 path = LifeLogTests;
286 sourceTree = "<group>"; 294 sourceTree = "<group>";
287 }; 295 };
288 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 296 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
289 isa = PBXGroup; 297 isa = PBXGroup;
290 children = ( 298 children = (
291 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 299 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
292 6E84E39B1F27A703001EB88E /* Info.plist */, 300 6E84E39B1F27A703001EB88E /* Info.plist */,
293 ); 301 );
294 path = LifeLogUITests; 302 path = LifeLogUITests;
295 sourceTree = "<group>"; 303 sourceTree = "<group>";
296 }; 304 };
297 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 305 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
298 isa = PBXGroup; 306 isa = PBXGroup;
299 children = ( 307 children = (
300 6E84E3771F27A701001EB88E /* AppDelegate.h */, 308 6E84E3771F27A701001EB88E /* AppDelegate.h */,
301 6E84E3781F27A701001EB88E /* AppDelegate.m */, 309 6E84E3781F27A701001EB88E /* AppDelegate.m */,
302 ); 310 );
303 name = AppDelegate; 311 name = AppDelegate;
304 sourceTree = "<group>"; 312 sourceTree = "<group>";
305 }; 313 };
306 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 314 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
307 isa = PBXGroup; 315 isa = PBXGroup;
308 children = ( 316 children = (
309 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 317 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
310 9CBDA0FB1F2F03490055DED1 /* Register */, 318 9CBDA0FB1F2F03490055DED1 /* Register */,
311 6E18CECF1F2E398C0029891F /* Login */, 319 6E18CECF1F2E398C0029891F /* Login */,
312 6E84E3AC1F27A954001EB88E /* SNS */, 320 6E84E3AC1F27A954001EB88E /* SNS */,
313 6E84E3C11F27AC89001EB88E /* Map */, 321 6E84E3C11F27AC89001EB88E /* Map */,
314 6E84E3AB1F27A946001EB88E /* Ranking */, 322 6E84E3AB1F27A946001EB88E /* Ranking */,
315 6E84E3AA1F27A924001EB88E /* History */, 323 6E84E3AA1F27A924001EB88E /* History */,
316 6E84E3A91F27A915001EB88E /* Home */, 324 6E84E3A91F27A915001EB88E /* Home */,
317 ); 325 );
318 name = ViewControllers; 326 name = ViewControllers;
319 sourceTree = "<group>"; 327 sourceTree = "<group>";
320 }; 328 };
321 6E84E3A91F27A915001EB88E /* Home */ = { 329 6E84E3A91F27A915001EB88E /* Home */ = {
322 isa = PBXGroup; 330 isa = PBXGroup;
323 children = ( 331 children = (
324 6E8DA0F31F2BAC0800CCE941 /* Today */, 332 6E8DA0F31F2BAC0800CCE941 /* Today */,
325 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 333 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
326 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 334 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
327 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 335 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
328 ); 336 );
329 name = Home; 337 name = Home;
330 sourceTree = "<group>"; 338 sourceTree = "<group>";
331 }; 339 };
332 6E84E3AA1F27A924001EB88E /* History */ = { 340 6E84E3AA1F27A924001EB88E /* History */ = {
333 isa = PBXGroup; 341 isa = PBXGroup;
334 children = ( 342 children = (
335 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 343 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
336 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 344 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
337 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 345 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
338 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */, 346 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */,
339 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */, 347 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */,
340 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */, 348 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */,
341 ); 349 );
342 name = History; 350 name = History;
343 sourceTree = "<group>"; 351 sourceTree = "<group>";
344 }; 352 };
345 6E84E3AB1F27A946001EB88E /* Ranking */ = { 353 6E84E3AB1F27A946001EB88E /* Ranking */ = {
346 isa = PBXGroup; 354 isa = PBXGroup;
347 children = ( 355 children = (
348 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 356 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
349 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 357 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
350 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 358 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
351 ); 359 );
352 name = Ranking; 360 name = Ranking;
353 sourceTree = "<group>"; 361 sourceTree = "<group>";
354 }; 362 };
355 6E84E3AC1F27A954001EB88E /* SNS */ = { 363 6E84E3AC1F27A954001EB88E /* SNS */ = {
356 isa = PBXGroup; 364 isa = PBXGroup;
357 children = ( 365 children = (
358 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 366 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
359 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 367 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
360 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 368 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
361 ); 369 );
362 name = SNS; 370 name = SNS;
363 sourceTree = "<group>"; 371 sourceTree = "<group>";
364 }; 372 };
365 6E84E3C11F27AC89001EB88E /* Map */ = { 373 6E84E3C11F27AC89001EB88E /* Map */ = {
366 isa = PBXGroup; 374 isa = PBXGroup;
367 children = ( 375 children = (
368 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 376 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
369 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 377 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
370 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 378 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
371 ); 379 );
372 name = Map; 380 name = Map;
373 sourceTree = "<group>"; 381 sourceTree = "<group>";
374 }; 382 };
375 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 383 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
376 isa = PBXGroup; 384 isa = PBXGroup;
377 children = ( 385 children = (
378 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 386 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
379 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 387 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
380 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 388 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
381 ); 389 );
382 name = Today; 390 name = Today;
383 sourceTree = "<group>"; 391 sourceTree = "<group>";
384 }; 392 };
385 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 393 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
386 isa = PBXGroup; 394 isa = PBXGroup;
387 children = ( 395 children = (
388 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, 396 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */,
389 6ECC406E1F2A5FB200AAEB97 /* Category */, 397 6ECC406E1F2A5FB200AAEB97 /* Category */,
390 ); 398 );
391 name = Library; 399 name = Library;
392 sourceTree = "<group>"; 400 sourceTree = "<group>";
393 }; 401 };
394 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 402 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
395 isa = PBXGroup; 403 isa = PBXGroup;
396 children = ( 404 children = (
397 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 405 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
398 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 406 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
399 ); 407 );
400 name = Category; 408 name = Category;
401 sourceTree = "<group>"; 409 sourceTree = "<group>";
402 }; 410 };
403 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 411 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
404 isa = PBXGroup; 412 isa = PBXGroup;
405 children = ( 413 children = (
406 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 414 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
407 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 415 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
408 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 416 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
409 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 417 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
410 ); 418 );
411 name = Common; 419 name = Common;
412 sourceTree = "<group>"; 420 sourceTree = "<group>";
413 }; 421 };
414 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { 422 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
415 isa = PBXGroup; 423 isa = PBXGroup;
416 children = ( 424 children = (
417 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, 425 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
418 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, 426 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
419 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, 427 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
420 ); 428 );
421 name = ConfirmForgetPass; 429 name = ConfirmForgetPass;
422 sourceTree = "<group>"; 430 sourceTree = "<group>";
423 }; 431 };
424 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 432 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
425 isa = PBXGroup; 433 isa = PBXGroup;
426 children = ( 434 children = (
427 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 435 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
428 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 436 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
429 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 437 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
430 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 438 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
431 ); 439 );
432 name = BaseViewController; 440 name = BaseViewController;
433 sourceTree = "<group>"; 441 sourceTree = "<group>";
434 }; 442 };
435 9CBDA0FB1F2F03490055DED1 /* Register */ = { 443 9CBDA0FB1F2F03490055DED1 /* Register */ = {
436 isa = PBXGroup; 444 isa = PBXGroup;
437 children = ( 445 children = (
438 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 446 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
439 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 447 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
440 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 448 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
441 ); 449 );
442 name = Register; 450 name = Register;
443 sourceTree = "<group>"; 451 sourceTree = "<group>";
444 }; 452 };
445 DE8269E957EA47CD771BAB33 /* Pods */ = { 453 DE8269E957EA47CD771BAB33 /* Pods */ = {
446 isa = PBXGroup; 454 isa = PBXGroup;
447 children = ( 455 children = (
448 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 456 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
449 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 457 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
450 ); 458 );
451 name = Pods; 459 name = Pods;
452 sourceTree = "<group>"; 460 sourceTree = "<group>";
453 }; 461 };
462 E9373E441F35966D0059355A /* AutoTranslateView */ = {
463 isa = PBXGroup;
464 children = (
465 E9373E451F3596940059355A /* AutoTransLabel.h */,
466 E9373E461F3596940059355A /* AutoTransLabel.m */,
467 );
468 name = AutoTranslateView;
469 sourceTree = "<group>";
470 };
454 E99E13A71F336F0C00C78787 /* CustomView */ = { 471 E99E13A71F336F0C00C78787 /* CustomView */ = {
455 isa = PBXGroup; 472 isa = PBXGroup;
456 children = ( 473 children = (
474 E9373E441F35966D0059355A /* AutoTranslateView */,
457 E99E13A81F336F1700C78787 /* CollectionView */, 475 E99E13A81F336F1700C78787 /* CollectionView */,
458 ); 476 );
459 name = CustomView; 477 name = CustomView;
460 sourceTree = "<group>"; 478 sourceTree = "<group>";
461 }; 479 };
462 E99E13A81F336F1700C78787 /* CollectionView */ = { 480 E99E13A81F336F1700C78787 /* CollectionView */ = {
463 isa = PBXGroup; 481 isa = PBXGroup;
464 children = ( 482 children = (
465 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */, 483 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */,
466 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */, 484 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */,
467 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */, 485 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */,
468 E99E13A91F336F3600C78787 /* CollectionView.h */, 486 E99E13A91F336F3600C78787 /* CollectionView.h */,
469 E99E13AA1F336F3600C78787 /* CollectionView.m */, 487 E99E13AA1F336F3600C78787 /* CollectionView.m */,
470 E99E13AC1F336F4500C78787 /* CollectionView.xib */, 488 E99E13AC1F336F4500C78787 /* CollectionView.xib */,
471 ); 489 );
472 name = CollectionView; 490 name = CollectionView;
473 sourceTree = "<group>"; 491 sourceTree = "<group>";
474 }; 492 };
475 /* End PBXGroup section */ 493 /* End PBXGroup section */
476 494
477 /* Begin PBXNativeTarget section */ 495 /* Begin PBXNativeTarget section */
478 6E84E3701F27A700001EB88E /* LifeLog */ = { 496 6E84E3701F27A700001EB88E /* LifeLog */ = {
479 isa = PBXNativeTarget; 497 isa = PBXNativeTarget;
480 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 498 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
481 buildPhases = ( 499 buildPhases = (
482 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 500 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
483 6E84E36D1F27A700001EB88E /* Sources */, 501 6E84E36D1F27A700001EB88E /* Sources */,
484 6E84E36E1F27A700001EB88E /* Frameworks */, 502 6E84E36E1F27A700001EB88E /* Frameworks */,
485 6E84E36F1F27A700001EB88E /* Resources */, 503 6E84E36F1F27A700001EB88E /* Resources */,
486 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 504 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
487 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 505 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
488 ); 506 );
489 buildRules = ( 507 buildRules = (
490 ); 508 );
491 dependencies = ( 509 dependencies = (
492 ); 510 );
493 name = LifeLog; 511 name = LifeLog;
494 productName = LifeLog; 512 productName = LifeLog;
495 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 513 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
496 productType = "com.apple.product-type.application"; 514 productType = "com.apple.product-type.application";
497 }; 515 };
498 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 516 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
499 isa = PBXNativeTarget; 517 isa = PBXNativeTarget;
500 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 518 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
501 buildPhases = ( 519 buildPhases = (
502 6E84E3861F27A703001EB88E /* Sources */, 520 6E84E3861F27A703001EB88E /* Sources */,
503 6E84E3871F27A703001EB88E /* Frameworks */, 521 6E84E3871F27A703001EB88E /* Frameworks */,
504 6E84E3881F27A703001EB88E /* Resources */, 522 6E84E3881F27A703001EB88E /* Resources */,
505 ); 523 );
506 buildRules = ( 524 buildRules = (
507 ); 525 );
508 dependencies = ( 526 dependencies = (
509 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 527 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
510 ); 528 );
511 name = LifeLogTests; 529 name = LifeLogTests;
512 productName = LifeLogTests; 530 productName = LifeLogTests;
513 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 531 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
514 productType = "com.apple.product-type.bundle.unit-test"; 532 productType = "com.apple.product-type.bundle.unit-test";
515 }; 533 };
516 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 534 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
517 isa = PBXNativeTarget; 535 isa = PBXNativeTarget;
518 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 536 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
519 buildPhases = ( 537 buildPhases = (
520 6E84E3911F27A703001EB88E /* Sources */, 538 6E84E3911F27A703001EB88E /* Sources */,
521 6E84E3921F27A703001EB88E /* Frameworks */, 539 6E84E3921F27A703001EB88E /* Frameworks */,
522 6E84E3931F27A703001EB88E /* Resources */, 540 6E84E3931F27A703001EB88E /* Resources */,
523 ); 541 );
524 buildRules = ( 542 buildRules = (
525 ); 543 );
526 dependencies = ( 544 dependencies = (
527 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 545 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
528 ); 546 );
529 name = LifeLogUITests; 547 name = LifeLogUITests;
530 productName = LifeLogUITests; 548 productName = LifeLogUITests;
531 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 549 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
532 productType = "com.apple.product-type.bundle.ui-testing"; 550 productType = "com.apple.product-type.bundle.ui-testing";
533 }; 551 };
534 /* End PBXNativeTarget section */ 552 /* End PBXNativeTarget section */
535 553
536 /* Begin PBXProject section */ 554 /* Begin PBXProject section */
537 6E84E3691F27A700001EB88E /* Project object */ = { 555 6E84E3691F27A700001EB88E /* Project object */ = {
538 isa = PBXProject; 556 isa = PBXProject;
539 attributes = { 557 attributes = {
540 LastUpgradeCheck = 0830; 558 LastUpgradeCheck = 0830;
541 ORGANIZATIONNAME = PhongNV; 559 ORGANIZATIONNAME = PhongNV;
542 TargetAttributes = { 560 TargetAttributes = {
543 6E84E3701F27A700001EB88E = { 561 6E84E3701F27A700001EB88E = {
544 CreatedOnToolsVersion = 8.3.3; 562 CreatedOnToolsVersion = 8.3.3;
545 DevelopmentTeam = UXU4V3VUN4; 563 DevelopmentTeam = UXU4V3VUN4;
546 ProvisioningStyle = Manual; 564 ProvisioningStyle = Manual;
547 }; 565 };
548 6E84E3891F27A703001EB88E = { 566 6E84E3891F27A703001EB88E = {
549 CreatedOnToolsVersion = 8.3.3; 567 CreatedOnToolsVersion = 8.3.3;
550 ProvisioningStyle = Automatic; 568 ProvisioningStyle = Automatic;
551 TestTargetID = 6E84E3701F27A700001EB88E; 569 TestTargetID = 6E84E3701F27A700001EB88E;
552 }; 570 };
553 6E84E3941F27A703001EB88E = { 571 6E84E3941F27A703001EB88E = {
554 CreatedOnToolsVersion = 8.3.3; 572 CreatedOnToolsVersion = 8.3.3;
555 ProvisioningStyle = Automatic; 573 ProvisioningStyle = Automatic;
556 TestTargetID = 6E84E3701F27A700001EB88E; 574 TestTargetID = 6E84E3701F27A700001EB88E;
557 }; 575 };
558 }; 576 };
559 }; 577 };
560 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 578 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
561 compatibilityVersion = "Xcode 3.2"; 579 compatibilityVersion = "Xcode 3.2";
562 developmentRegion = English; 580 developmentRegion = English;
563 hasScannedForEncodings = 0; 581 hasScannedForEncodings = 0;
564 knownRegions = ( 582 knownRegions = (
565 en, 583 en,
566 Base, 584 Base,
567 ); 585 );
568 mainGroup = 6E84E3681F27A700001EB88E; 586 mainGroup = 6E84E3681F27A700001EB88E;
569 productRefGroup = 6E84E3721F27A700001EB88E /* Products */; 587 productRefGroup = 6E84E3721F27A700001EB88E /* Products */;
570 projectDirPath = ""; 588 projectDirPath = "";
571 projectRoot = ""; 589 projectRoot = "";
572 targets = ( 590 targets = (
573 6E84E3701F27A700001EB88E /* LifeLog */, 591 6E84E3701F27A700001EB88E /* LifeLog */,
574 6E84E3891F27A703001EB88E /* LifeLogTests */, 592 6E84E3891F27A703001EB88E /* LifeLogTests */,
575 6E84E3941F27A703001EB88E /* LifeLogUITests */, 593 6E84E3941F27A703001EB88E /* LifeLogUITests */,
576 ); 594 );
577 }; 595 };
578 /* End PBXProject section */ 596 /* End PBXProject section */
579 597
580 /* Begin PBXResourcesBuildPhase section */ 598 /* Begin PBXResourcesBuildPhase section */
581 6E84E36F1F27A700001EB88E /* Resources */ = { 599 6E84E36F1F27A700001EB88E /* Resources */ = {
582 isa = PBXResourcesBuildPhase; 600 isa = PBXResourcesBuildPhase;
583 buildActionMask = 2147483647; 601 buildActionMask = 2147483647;
584 files = ( 602 files = (
585 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 603 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
586 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 604 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
587 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */, 605 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */,
588 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 606 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
589 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, 607 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
590 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 608 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
591 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 609 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
592 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 610 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
593 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 611 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
594 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 612 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
595 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 613 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
596 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 614 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
597 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 615 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
598 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */, 616 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */,
599 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */, 617 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */,
600 ); 618 );
601 runOnlyForDeploymentPostprocessing = 0; 619 runOnlyForDeploymentPostprocessing = 0;
602 }; 620 };
603 6E84E3881F27A703001EB88E /* Resources */ = { 621 6E84E3881F27A703001EB88E /* Resources */ = {
604 isa = PBXResourcesBuildPhase; 622 isa = PBXResourcesBuildPhase;
605 buildActionMask = 2147483647; 623 buildActionMask = 2147483647;
606 files = ( 624 files = (
607 ); 625 );
608 runOnlyForDeploymentPostprocessing = 0; 626 runOnlyForDeploymentPostprocessing = 0;
609 }; 627 };
610 6E84E3931F27A703001EB88E /* Resources */ = { 628 6E84E3931F27A703001EB88E /* Resources */ = {
611 isa = PBXResourcesBuildPhase; 629 isa = PBXResourcesBuildPhase;
612 buildActionMask = 2147483647; 630 buildActionMask = 2147483647;
613 files = ( 631 files = (
614 ); 632 );
615 runOnlyForDeploymentPostprocessing = 0; 633 runOnlyForDeploymentPostprocessing = 0;
616 }; 634 };
617 /* End PBXResourcesBuildPhase section */ 635 /* End PBXResourcesBuildPhase section */
618 636
619 /* Begin PBXShellScriptBuildPhase section */ 637 /* Begin PBXShellScriptBuildPhase section */
620 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 638 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
621 isa = PBXShellScriptBuildPhase; 639 isa = PBXShellScriptBuildPhase;
622 buildActionMask = 2147483647; 640 buildActionMask = 2147483647;
623 files = ( 641 files = (
624 ); 642 );
625 inputPaths = ( 643 inputPaths = (
626 ); 644 );
627 name = "[CP] Embed Pods Frameworks"; 645 name = "[CP] Embed Pods Frameworks";
628 outputPaths = ( 646 outputPaths = (
629 ); 647 );
630 runOnlyForDeploymentPostprocessing = 0; 648 runOnlyForDeploymentPostprocessing = 0;
631 shellPath = /bin/sh; 649 shellPath = /bin/sh;
632 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n"; 650 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n";
633 showEnvVarsInLog = 0; 651 showEnvVarsInLog = 0;
634 }; 652 };
635 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 653 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
636 isa = PBXShellScriptBuildPhase; 654 isa = PBXShellScriptBuildPhase;
637 buildActionMask = 2147483647; 655 buildActionMask = 2147483647;
638 files = ( 656 files = (
639 ); 657 );
640 inputPaths = ( 658 inputPaths = (
641 ); 659 );
642 name = "[CP] Check Pods Manifest.lock"; 660 name = "[CP] Check Pods Manifest.lock";
643 outputPaths = ( 661 outputPaths = (
644 ); 662 );
645 runOnlyForDeploymentPostprocessing = 0; 663 runOnlyForDeploymentPostprocessing = 0;
646 shellPath = /bin/sh; 664 shellPath = /bin/sh;
647 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 665 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
648 showEnvVarsInLog = 0; 666 showEnvVarsInLog = 0;
649 }; 667 };
650 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 668 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
651 isa = PBXShellScriptBuildPhase; 669 isa = PBXShellScriptBuildPhase;
652 buildActionMask = 2147483647; 670 buildActionMask = 2147483647;
653 files = ( 671 files = (
654 ); 672 );
655 inputPaths = ( 673 inputPaths = (
656 ); 674 );
657 name = "[CP] Copy Pods Resources"; 675 name = "[CP] Copy Pods Resources";
658 outputPaths = ( 676 outputPaths = (
659 ); 677 );
660 runOnlyForDeploymentPostprocessing = 0; 678 runOnlyForDeploymentPostprocessing = 0;
661 shellPath = /bin/sh; 679 shellPath = /bin/sh;
662 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n"; 680 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n";
663 showEnvVarsInLog = 0; 681 showEnvVarsInLog = 0;
664 }; 682 };
665 /* End PBXShellScriptBuildPhase section */ 683 /* End PBXShellScriptBuildPhase section */
666 684
667 /* Begin PBXSourcesBuildPhase section */ 685 /* Begin PBXSourcesBuildPhase section */
668 6E84E36D1F27A700001EB88E /* Sources */ = { 686 6E84E36D1F27A700001EB88E /* Sources */ = {
669 isa = PBXSourcesBuildPhase; 687 isa = PBXSourcesBuildPhase;
670 buildActionMask = 2147483647; 688 buildActionMask = 2147483647;
671 files = ( 689 files = (
672 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 690 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
673 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, 691 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */,
674 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, 692 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */,
675 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 693 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
676 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 694 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
677 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, 695 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */,
678 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 696 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
679 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, 697 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */,
680 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 698 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
699 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */,
681 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 700 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
682 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 701 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
683 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, 702 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */,
684 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */, 703 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */,
685 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 704 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
686 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 705 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
706 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */,
687 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, 707 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
688 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */, 708 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */,
689 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 709 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
690 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 710 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
691 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 711 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
692 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 712 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
693 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 713 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
694 6E84E3761F27A701001EB88E /* main.m in Sources */, 714 6E84E3761F27A701001EB88E /* main.m in Sources */,
695 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 715 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
696 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 716 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
697 ); 717 );
698 runOnlyForDeploymentPostprocessing = 0; 718 runOnlyForDeploymentPostprocessing = 0;
699 }; 719 };
700 6E84E3861F27A703001EB88E /* Sources */ = { 720 6E84E3861F27A703001EB88E /* Sources */ = {
701 isa = PBXSourcesBuildPhase; 721 isa = PBXSourcesBuildPhase;
702 buildActionMask = 2147483647; 722 buildActionMask = 2147483647;
703 files = ( 723 files = (
704 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 724 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
705 ); 725 );
706 runOnlyForDeploymentPostprocessing = 0; 726 runOnlyForDeploymentPostprocessing = 0;
707 }; 727 };
708 6E84E3911F27A703001EB88E /* Sources */ = { 728 6E84E3911F27A703001EB88E /* Sources */ = {
709 isa = PBXSourcesBuildPhase; 729 isa = PBXSourcesBuildPhase;
710 buildActionMask = 2147483647; 730 buildActionMask = 2147483647;
711 files = ( 731 files = (
712 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 732 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
713 ); 733 );
714 runOnlyForDeploymentPostprocessing = 0; 734 runOnlyForDeploymentPostprocessing = 0;
715 }; 735 };
716 /* End PBXSourcesBuildPhase section */ 736 /* End PBXSourcesBuildPhase section */
717 737
718 /* Begin PBXTargetDependency section */ 738 /* Begin PBXTargetDependency section */
719 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 739 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
720 isa = PBXTargetDependency; 740 isa = PBXTargetDependency;
721 target = 6E84E3701F27A700001EB88E /* LifeLog */; 741 target = 6E84E3701F27A700001EB88E /* LifeLog */;
722 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 742 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
723 }; 743 };
724 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 744 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
725 isa = PBXTargetDependency; 745 isa = PBXTargetDependency;
726 target = 6E84E3701F27A700001EB88E /* LifeLog */; 746 target = 6E84E3701F27A700001EB88E /* LifeLog */;
727 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 747 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
728 }; 748 };
729 /* End PBXTargetDependency section */ 749 /* End PBXTargetDependency section */
730 750
731 /* Begin PBXVariantGroup section */ 751 /* Begin PBXVariantGroup section */
732 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 752 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
733 isa = PBXVariantGroup; 753 isa = PBXVariantGroup;
734 children = ( 754 children = (
735 6E84E3831F27A701001EB88E /* Base */, 755 6E84E3831F27A701001EB88E /* Base */,
736 ); 756 );
737 name = LaunchScreen.storyboard; 757 name = LaunchScreen.storyboard;
738 sourceTree = "<group>"; 758 sourceTree = "<group>";
739 }; 759 };
740 /* End PBXVariantGroup section */ 760 /* End PBXVariantGroup section */
741 761
742 /* Begin XCBuildConfiguration section */ 762 /* Begin XCBuildConfiguration section */
743 6E84E39C1F27A703001EB88E /* Debug */ = { 763 6E84E39C1F27A703001EB88E /* Debug */ = {
744 isa = XCBuildConfiguration; 764 isa = XCBuildConfiguration;
745 buildSettings = { 765 buildSettings = {
746 ALWAYS_SEARCH_USER_PATHS = NO; 766 ALWAYS_SEARCH_USER_PATHS = NO;
747 CLANG_ANALYZER_NONNULL = YES; 767 CLANG_ANALYZER_NONNULL = YES;
748 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 768 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
749 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 769 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
750 CLANG_CXX_LIBRARY = "libc++"; 770 CLANG_CXX_LIBRARY = "libc++";
751 CLANG_ENABLE_MODULES = YES; 771 CLANG_ENABLE_MODULES = YES;
752 CLANG_ENABLE_OBJC_ARC = YES; 772 CLANG_ENABLE_OBJC_ARC = YES;
753 CLANG_WARN_BOOL_CONVERSION = YES; 773 CLANG_WARN_BOOL_CONVERSION = YES;
754 CLANG_WARN_CONSTANT_CONVERSION = YES; 774 CLANG_WARN_CONSTANT_CONVERSION = YES;
755 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 775 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
756 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 776 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
757 CLANG_WARN_EMPTY_BODY = YES; 777 CLANG_WARN_EMPTY_BODY = YES;
758 CLANG_WARN_ENUM_CONVERSION = YES; 778 CLANG_WARN_ENUM_CONVERSION = YES;
759 CLANG_WARN_INFINITE_RECURSION = YES; 779 CLANG_WARN_INFINITE_RECURSION = YES;
760 CLANG_WARN_INT_CONVERSION = YES; 780 CLANG_WARN_INT_CONVERSION = YES;
761 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 781 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
762 CLANG_WARN_SUSPICIOUS_MOVE = YES; 782 CLANG_WARN_SUSPICIOUS_MOVE = YES;
763 CLANG_WARN_UNREACHABLE_CODE = YES; 783 CLANG_WARN_UNREACHABLE_CODE = YES;
764 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 784 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
765 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 785 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
766 COPY_PHASE_STRIP = NO; 786 COPY_PHASE_STRIP = NO;
767 DEBUG_INFORMATION_FORMAT = dwarf; 787 DEBUG_INFORMATION_FORMAT = dwarf;
768 ENABLE_STRICT_OBJC_MSGSEND = YES; 788 ENABLE_STRICT_OBJC_MSGSEND = YES;
769 ENABLE_TESTABILITY = YES; 789 ENABLE_TESTABILITY = YES;
770 GCC_C_LANGUAGE_STANDARD = gnu99; 790 GCC_C_LANGUAGE_STANDARD = gnu99;
771 GCC_DYNAMIC_NO_PIC = NO; 791 GCC_DYNAMIC_NO_PIC = NO;
772 GCC_NO_COMMON_BLOCKS = YES; 792 GCC_NO_COMMON_BLOCKS = YES;
773 GCC_OPTIMIZATION_LEVEL = 0; 793 GCC_OPTIMIZATION_LEVEL = 0;
774 GCC_PREPROCESSOR_DEFINITIONS = ( 794 GCC_PREPROCESSOR_DEFINITIONS = (
775 "DEBUG=1", 795 "DEBUG=1",
776 "$(inherited)", 796 "$(inherited)",
777 ); 797 );
778 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 798 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
779 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 799 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
780 GCC_WARN_UNDECLARED_SELECTOR = YES; 800 GCC_WARN_UNDECLARED_SELECTOR = YES;
781 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 801 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
782 GCC_WARN_UNUSED_FUNCTION = YES; 802 GCC_WARN_UNUSED_FUNCTION = YES;
783 GCC_WARN_UNUSED_VARIABLE = YES; 803 GCC_WARN_UNUSED_VARIABLE = YES;
784 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 804 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
785 MTL_ENABLE_DEBUG_INFO = YES; 805 MTL_ENABLE_DEBUG_INFO = YES;
786 ONLY_ACTIVE_ARCH = YES; 806 ONLY_ACTIVE_ARCH = YES;
787 SDKROOT = iphoneos; 807 SDKROOT = iphoneos;
788 TARGETED_DEVICE_FAMILY = "1,2"; 808 TARGETED_DEVICE_FAMILY = "1,2";
789 }; 809 };
790 name = Debug; 810 name = Debug;
791 }; 811 };
792 6E84E39D1F27A703001EB88E /* Release */ = { 812 6E84E39D1F27A703001EB88E /* Release */ = {
793 isa = XCBuildConfiguration; 813 isa = XCBuildConfiguration;
794 buildSettings = { 814 buildSettings = {
795 ALWAYS_SEARCH_USER_PATHS = NO; 815 ALWAYS_SEARCH_USER_PATHS = NO;
796 CLANG_ANALYZER_NONNULL = YES; 816 CLANG_ANALYZER_NONNULL = YES;
797 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 817 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
798 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 818 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
799 CLANG_CXX_LIBRARY = "libc++"; 819 CLANG_CXX_LIBRARY = "libc++";
800 CLANG_ENABLE_MODULES = YES; 820 CLANG_ENABLE_MODULES = YES;
801 CLANG_ENABLE_OBJC_ARC = YES; 821 CLANG_ENABLE_OBJC_ARC = YES;
802 CLANG_WARN_BOOL_CONVERSION = YES; 822 CLANG_WARN_BOOL_CONVERSION = YES;
803 CLANG_WARN_CONSTANT_CONVERSION = YES; 823 CLANG_WARN_CONSTANT_CONVERSION = YES;
804 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 824 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
805 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 825 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
806 CLANG_WARN_EMPTY_BODY = YES; 826 CLANG_WARN_EMPTY_BODY = YES;
807 CLANG_WARN_ENUM_CONVERSION = YES; 827 CLANG_WARN_ENUM_CONVERSION = YES;
808 CLANG_WARN_INFINITE_RECURSION = YES; 828 CLANG_WARN_INFINITE_RECURSION = YES;
809 CLANG_WARN_INT_CONVERSION = YES; 829 CLANG_WARN_INT_CONVERSION = YES;
810 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 830 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
811 CLANG_WARN_SUSPICIOUS_MOVE = YES; 831 CLANG_WARN_SUSPICIOUS_MOVE = YES;
812 CLANG_WARN_UNREACHABLE_CODE = YES; 832 CLANG_WARN_UNREACHABLE_CODE = YES;
813 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 833 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
814 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 834 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
815 COPY_PHASE_STRIP = NO; 835 COPY_PHASE_STRIP = NO;
816 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 836 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
817 ENABLE_NS_ASSERTIONS = NO; 837 ENABLE_NS_ASSERTIONS = NO;
818 ENABLE_STRICT_OBJC_MSGSEND = YES; 838 ENABLE_STRICT_OBJC_MSGSEND = YES;
819 GCC_C_LANGUAGE_STANDARD = gnu99; 839 GCC_C_LANGUAGE_STANDARD = gnu99;
820 GCC_NO_COMMON_BLOCKS = YES; 840 GCC_NO_COMMON_BLOCKS = YES;
821 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 841 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
822 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 842 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
823 GCC_WARN_UNDECLARED_SELECTOR = YES; 843 GCC_WARN_UNDECLARED_SELECTOR = YES;
824 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 844 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
825 GCC_WARN_UNUSED_FUNCTION = YES; 845 GCC_WARN_UNUSED_FUNCTION = YES;
826 GCC_WARN_UNUSED_VARIABLE = YES; 846 GCC_WARN_UNUSED_VARIABLE = YES;
827 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 847 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
828 MTL_ENABLE_DEBUG_INFO = NO; 848 MTL_ENABLE_DEBUG_INFO = NO;
829 SDKROOT = iphoneos; 849 SDKROOT = iphoneos;
830 TARGETED_DEVICE_FAMILY = "1,2"; 850 TARGETED_DEVICE_FAMILY = "1,2";
831 VALIDATE_PRODUCT = YES; 851 VALIDATE_PRODUCT = YES;
832 }; 852 };
833 name = Release; 853 name = Release;
834 }; 854 };
835 6E84E39F1F27A703001EB88E /* Debug */ = { 855 6E84E39F1F27A703001EB88E /* Debug */ = {
836 isa = XCBuildConfiguration; 856 isa = XCBuildConfiguration;
837 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 857 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
838 buildSettings = { 858 buildSettings = {
839 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 859 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
840 DEVELOPMENT_TEAM = UXU4V3VUN4; 860 DEVELOPMENT_TEAM = UXU4V3VUN4;
841 INFOPLIST_FILE = LifeLog/Info.plist; 861 INFOPLIST_FILE = LifeLog/Info.plist;
842 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 862 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
843 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 863 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
844 OTHER_LDFLAGS = ( 864 OTHER_LDFLAGS = (
845 "$(inherited)", 865 "$(inherited)",
846 "-framework", 866 "-framework",
847 "\"CircleProgressBar\"", 867 "\"CircleProgressBar\"",
848 "-all_load", 868 "-all_load",
849 "-ObjC", 869 "-ObjC",
850 ); 870 );
851 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 871 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
852 PRODUCT_NAME = "$(TARGET_NAME)"; 872 PRODUCT_NAME = "$(TARGET_NAME)";
853 PROVISIONING_PROFILE = "556082e4-d9c1-4ce1-bab1-13515289a7fd"; 873 PROVISIONING_PROFILE = "556082e4-d9c1-4ce1-bab1-13515289a7fd";
854 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Development; 874 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Development;
855 }; 875 };
856 name = Debug; 876 name = Debug;
857 }; 877 };
858 6E84E3A01F27A703001EB88E /* Release */ = { 878 6E84E3A01F27A703001EB88E /* Release */ = {
859 isa = XCBuildConfiguration; 879 isa = XCBuildConfiguration;
860 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 880 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
861 buildSettings = { 881 buildSettings = {
862 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 882 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
863 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; 883 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
864 DEVELOPMENT_TEAM = UXU4V3VUN4; 884 DEVELOPMENT_TEAM = UXU4V3VUN4;
865 INFOPLIST_FILE = LifeLog/Info.plist; 885 INFOPLIST_FILE = LifeLog/Info.plist;
866 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 886 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
867 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 887 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
868 OTHER_LDFLAGS = ( 888 OTHER_LDFLAGS = (
869 "$(inherited)", 889 "$(inherited)",
870 "-framework", 890 "-framework",
871 "\"CircleProgressBar\"", 891 "\"CircleProgressBar\"",
872 "-all_load", 892 "-all_load",
873 "-ObjC", 893 "-ObjC",
874 ); 894 );
875 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 895 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
876 PRODUCT_NAME = "$(TARGET_NAME)"; 896 PRODUCT_NAME = "$(TARGET_NAME)";
877 PROVISIONING_PROFILE = "ffe70c33-5b08-4c2e-b96d-4e1bcb971ccb"; 897 PROVISIONING_PROFILE = "ffe70c33-5b08-4c2e-b96d-4e1bcb971ccb";
878 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Distribution; 898 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Distribution;
879 }; 899 };
880 name = Release; 900 name = Release;
881 }; 901 };
882 6E84E3A21F27A703001EB88E /* Debug */ = { 902 6E84E3A21F27A703001EB88E /* Debug */ = {
883 isa = XCBuildConfiguration; 903 isa = XCBuildConfiguration;
884 buildSettings = { 904 buildSettings = {
885 BUNDLE_LOADER = "$(TEST_HOST)"; 905 BUNDLE_LOADER = "$(TEST_HOST)";
886 INFOPLIST_FILE = LifeLogTests/Info.plist; 906 INFOPLIST_FILE = LifeLogTests/Info.plist;
887 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 907 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
888 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 908 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
889 PRODUCT_NAME = "$(TARGET_NAME)"; 909 PRODUCT_NAME = "$(TARGET_NAME)";
890 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 910 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
891 }; 911 };
892 name = Debug; 912 name = Debug;
893 }; 913 };
894 6E84E3A31F27A703001EB88E /* Release */ = { 914 6E84E3A31F27A703001EB88E /* Release */ = {
895 isa = XCBuildConfiguration; 915 isa = XCBuildConfiguration;
896 buildSettings = { 916 buildSettings = {
897 BUNDLE_LOADER = "$(TEST_HOST)"; 917 BUNDLE_LOADER = "$(TEST_HOST)";
898 INFOPLIST_FILE = LifeLogTests/Info.plist; 918 INFOPLIST_FILE = LifeLogTests/Info.plist;
899 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 919 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
900 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 920 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
901 PRODUCT_NAME = "$(TARGET_NAME)"; 921 PRODUCT_NAME = "$(TARGET_NAME)";
902 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 922 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
903 }; 923 };
904 name = Release; 924 name = Release;
905 }; 925 };
906 6E84E3A51F27A703001EB88E /* Debug */ = { 926 6E84E3A51F27A703001EB88E /* Debug */ = {
907 isa = XCBuildConfiguration; 927 isa = XCBuildConfiguration;
908 buildSettings = { 928 buildSettings = {
909 INFOPLIST_FILE = LifeLogUITests/Info.plist; 929 INFOPLIST_FILE = LifeLogUITests/Info.plist;
910 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 930 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
911 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 931 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
912 PRODUCT_NAME = "$(TARGET_NAME)"; 932 PRODUCT_NAME = "$(TARGET_NAME)";
913 TEST_TARGET_NAME = LifeLog; 933 TEST_TARGET_NAME = LifeLog;
914 }; 934 };
915 name = Debug; 935 name = Debug;
916 }; 936 };
917 6E84E3A61F27A703001EB88E /* Release */ = { 937 6E84E3A61F27A703001EB88E /* Release */ = {
918 isa = XCBuildConfiguration; 938 isa = XCBuildConfiguration;
919 buildSettings = { 939 buildSettings = {
920 INFOPLIST_FILE = LifeLogUITests/Info.plist; 940 INFOPLIST_FILE = LifeLogUITests/Info.plist;
921 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 941 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
922 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 942 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
923 PRODUCT_NAME = "$(TARGET_NAME)"; 943 PRODUCT_NAME = "$(TARGET_NAME)";
924 TEST_TARGET_NAME = LifeLog; 944 TEST_TARGET_NAME = LifeLog;
925 }; 945 };
926 name = Release; 946 name = Release;
927 }; 947 };
928 /* End XCBuildConfiguration section */ 948 /* End XCBuildConfiguration section */
929 949
930 /* Begin XCConfigurationList section */ 950 /* Begin XCConfigurationList section */
931 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 951 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
932 isa = XCConfigurationList; 952 isa = XCConfigurationList;
933 buildConfigurations = ( 953 buildConfigurations = (
934 6E84E39C1F27A703001EB88E /* Debug */, 954 6E84E39C1F27A703001EB88E /* Debug */,
935 6E84E39D1F27A703001EB88E /* Release */, 955 6E84E39D1F27A703001EB88E /* Release */,
936 ); 956 );
937 defaultConfigurationIsVisible = 0; 957 defaultConfigurationIsVisible = 0;
938 defaultConfigurationName = Release; 958 defaultConfigurationName = Release;
939 }; 959 };
940 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 960 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
941 isa = XCConfigurationList; 961 isa = XCConfigurationList;
942 buildConfigurations = ( 962 buildConfigurations = (
943 6E84E39F1F27A703001EB88E /* Debug */, 963 6E84E39F1F27A703001EB88E /* Debug */,
944 6E84E3A01F27A703001EB88E /* Release */, 964 6E84E3A01F27A703001EB88E /* Release */,
945 ); 965 );
946 defaultConfigurationIsVisible = 0; 966 defaultConfigurationIsVisible = 0;
947 defaultConfigurationName = Release; 967 defaultConfigurationName = Release;
948 }; 968 };
949 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 969 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
950 isa = XCConfigurationList; 970 isa = XCConfigurationList;
951 buildConfigurations = ( 971 buildConfigurations = (
952 6E84E3A21F27A703001EB88E /* Debug */, 972 6E84E3A21F27A703001EB88E /* Debug */,
953 6E84E3A31F27A703001EB88E /* Release */, 973 6E84E3A31F27A703001EB88E /* Release */,
954 ); 974 );
955 defaultConfigurationIsVisible = 0; 975 defaultConfigurationIsVisible = 0;
956 defaultConfigurationName = Release; 976 defaultConfigurationName = Release;
957 }; 977 };
958 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = { 978 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
959 isa = XCConfigurationList; 979 isa = XCConfigurationList;
960 buildConfigurations = ( 980 buildConfigurations = (
961 6E84E3A51F27A703001EB88E /* Debug */, 981 6E84E3A51F27A703001EB88E /* Debug */,
962 6E84E3A61F27A703001EB88E /* Release */, 982 6E84E3A61F27A703001EB88E /* Release */,
963 ); 983 );
964 defaultConfigurationIsVisible = 0; 984 defaultConfigurationIsVisible = 0;
965 defaultConfigurationName = Release; 985 defaultConfigurationName = Release;
966 }; 986 };
967 /* End XCConfigurationList section */ 987 /* End XCConfigurationList section */
968 }; 988 };
969 rootObject = 6E84E3691F27A700001EB88E /* Project object */; 989 rootObject = 6E84E3691F27A700001EB88E /* Project object */;
970 } 990 }
971 991
LifeLog/LifeLog/Assets.xcassets/History/Contents.json
File was created 1 {
2 "info" : {
3 "version" : 1,
4 "author" : "xcode"
5 }
6 }
LifeLog/LifeLog/Assets.xcassets/History/arrow_back.imageset/Contents.json
File was created 1 {
2 "images" : [
3 {
4 "idiom" : "universal",
5 "scale" : "1x"
6 },
7 {
8 "idiom" : "universal",
9 "filename" : "arrow_back.png",
10 "scale" : "2x"
11 },
12 {
13 "idiom" : "universal",
14 "scale" : "3x"
15 }
16 ],
17 "info" : {
18 "version" : 1,
19 "author" : "xcode"
20 }
21 }
LifeLog/LifeLog/Assets.xcassets/History/arrow_back.imageset/arrow_back.png

319 Bytes

LifeLog/LifeLog/Assets.xcassets/History/arrow_next.imageset/Contents.json
File was created 1 {
2 "images" : [
3 {
4 "idiom" : "universal",
5 "scale" : "1x"
6 },
7 {
8 "idiom" : "universal",
9 "filename" : "arrow_next.png",
10 "scale" : "2x"
11 },
12 {
13 "idiom" : "universal",
14 "scale" : "3x"
15 }
16 ],
17 "info" : {
18 "version" : 1,
19 "author" : "xcode"
20 }
21 }
LifeLog/LifeLog/Assets.xcassets/History/arrow_next.imageset/arrow_next.png

332 Bytes

LifeLog/LifeLog/AutoTransLabel.h
File was created 1 //
2 // AutoTransLabel.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10
11 IB_DESIGNABLE
12
13 @interface AutoTransLabel : UILabel
14
15 @property (nonatomic) IBInspectable NSString *localizeKey;
16
17 @end
18
LifeLog/LifeLog/AutoTransLabel.m
File was created 1 //
2 // AutoTransLabel.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "AutoTransLabel.h"
10
11 @implementation AutoTransLabel
12
13 -(void) awakeFromNib {
14 [super awakeFromNib];
15 if(![self.localizeKey isEqual: @""]) {
16 self.text = NSLocalizedString(self.localizeKey, nil);
17 }
18 }
19 @end
20
LifeLog/LifeLog/CollectionView.h
1 // 1 //
2 // CollectionView.h 2 // CollectionView.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/3/17. 5 // Created by nvtu on 8/3/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 10
11 @interface CollectionView : UIView <UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout> { 11 @interface CollectionView : UIView <UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout> {
12 int _number; 12 NSInteger _number;
13 int _selectedIndex; 13 int _selectedIndex;
14 14
15 float _spacing; 15 float _spacing;
16 float _cornerRadius; 16 float _cornerRadius;
17 17
18 UIColor * _highlightColor; 18 UIColor * _highlightColor;
19 UIColor * _normalColor; 19 UIColor * _normalColor;
20 UIColor * _textColor; 20 UIColor * _textColor;
21 21
22 NSArray * _arrayTitle; 22 NSArray * _arrayTitle;
23 } 23 }
24 24
25 @property (copy) void (^changeCurrentIndex)(int index);
26
25 @property (weak, nonatomic) IBOutlet UIView *view; 27 @property (weak, nonatomic) IBOutlet UIView *view;
26 @property (weak, nonatomic) IBOutlet UICollectionView *collectionView; 28 @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
27 29
28 -(void) setButtonNumber: (int) number; 30 -(void) setButtonNumber: (NSInteger) number;
29 -(void) setSpacing: (float) spacing; 31 -(void) setSpacing: (float) spacing;
30 -(void) setCornerRadius: (float) radius; 32 -(void) setCornerRadius: (float) radius;
31 -(void) setSelectedIndex: (int) index; 33 -(void) setSelectedIndex: (int) index;
32 -(void) setNormalColor: (UIColor *) normal highlightColor: (UIColor *) highlight textColor: (UIColor *) text; 34 -(void) setNormalColor: (UIColor *) normal highlightColor: (UIColor *) highlight textColor: (UIColor *) text;
33 -(void) setArrayTitle: (NSArray *) title; 35 -(void) setArrayTitle: (NSArray *) title;
34 36
35 -(int) getCurrentIndex; 37 -(int) getCurrentIndex;
38
36 @end 39 @end
37 40
LifeLog/LifeLog/CollectionView.m
1 // 1 //
2 // CollectionView.m 2 // CollectionView.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/3/17. 5 // Created by nvtu on 8/3/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "CollectionView.h" 9 #import "CollectionView.h"
10 #import "LabelCollectionViewCell.h" 10 #import "LabelCollectionViewCell.h"
11 #import "Utilities.h" 11 #import "Utilities.h"
12 12
13 @implementation CollectionView 13 @implementation CollectionView
14 14
15 -(id) initWithCoder:(NSCoder *)aDecoder { 15 -(id) initWithCoder:(NSCoder *)aDecoder {
16 self = [super initWithCoder:aDecoder]; 16 self = [super initWithCoder:aDecoder];
17 if(self) { 17 if(self) {
18 [[UINib nibWithNibName:@"CollectionView" bundle:nil] instantiateWithOwner:self options:nil]; 18 [[UINib nibWithNibName:@"CollectionView" bundle:nil] instantiateWithOwner:self options:nil];
19 [self addSubview:self.view]; 19 [self addSubview:self.view];
20 self.view.frame = self.bounds; 20 self.view.frame = self.bounds;
21 _number = 0; 21 _number = 0;
22 _spacing = 1; 22 _spacing = 1;
23 _cornerRadius = 5.0; 23 _cornerRadius = 5.0;
24 _highlightColor = [Utilities convertHecToColor:0x999999]; 24 _highlightColor = [Utilities convertHecToColor:0x999999];
25 _normalColor = [UIColor whiteColor]; 25 _normalColor = [UIColor whiteColor];
26 _textColor = [UIColor blackColor]; 26 _textColor = [UIColor blackColor];
27 } 27 }
28 return self; 28 return self;
29 } 29 }
30 30
31 -(void) awakeFromNib { 31 -(void) awakeFromNib {
32 [super awakeFromNib]; 32 [super awakeFromNib];
33 [self.collectionView registerNib:[UINib nibWithNibName:@"LabelCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"LabelCell"]; 33 [self.collectionView registerNib:[UINib nibWithNibName:@"LabelCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"LabelCell"];
34 } 34 }
35 35
36 -(void) setButtonNumber: (int) number { 36 -(void) setButtonNumber: (NSInteger) number {
37 _number = number; 37 _number = number;
38 } 38 }
39 39
40 -(void) setSpacing: (float) spacing { 40 -(void) setSpacing: (float) spacing {
41 _spacing = spacing; 41 _spacing = spacing;
42 } 42 }
43 43
44 -(void) setCornerRadius: (float) radius { 44 -(void) setCornerRadius: (float) radius {
45 _cornerRadius = radius; 45 _cornerRadius = radius;
46 } 46 }
47 47
48 -(void) setSelectedIndex: (int) index { 48 -(void) setSelectedIndex: (int) index {
49 _selectedIndex = index; 49 _selectedIndex = index;
50 [_collectionView reloadData]; 50 [_collectionView reloadData];
51 } 51 }
52 52
53 -(void) setNormalColor: (UIColor *) normal highlightColor: (UIColor *) highlight textColor: (UIColor *) text { 53 -(void) setNormalColor: (UIColor *) normal highlightColor: (UIColor *) highlight textColor: (UIColor *) text {
54 _normalColor = normal; 54 _normalColor = normal;
55 _highlightColor = highlight; 55 _highlightColor = highlight;
56 _textColor = text; 56 _textColor = text;
57 } 57 }
58 58
59 -(void) setArrayTitle: (NSArray *) title { 59 -(void) setArrayTitle: (NSArray *) title {
60 _arrayTitle = title; 60 _arrayTitle = title;
61 } 61 }
62 62
63 -(int) getCurrentIndex { 63 -(int) getCurrentIndex {
64 return _selectedIndex; 64 return _selectedIndex;
65 } 65 }
66 66
67 #pragma mark - UICollectionView Delegate 67 #pragma mark - UICollectionView Delegate
68 - (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 68 - (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
69 return 1; 69 return 1;
70 } 70 }
71 71
72 - (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 72 - (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
73 return _number; 73 return _number;
74 } 74 }
75 75
76 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 76 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
77 LabelCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LabelCell" forIndexPath:indexPath]; 77 LabelCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LabelCell" forIndexPath:indexPath];
78 cell.lblTitle.text = [_arrayTitle objectAtIndex:indexPath.row]; 78 cell.lblTitle.text = [_arrayTitle objectAtIndex:indexPath.row];
79 cell.lblTitle.textColor = _textColor; 79 cell.lblTitle.textColor = _textColor;
80 cell.lblTitle.layer.cornerRadius = _cornerRadius; 80 cell.lblTitle.layer.cornerRadius = _cornerRadius;
81 cell.lblTitle.backgroundColor = (indexPath.row == _selectedIndex) ? _highlightColor : _normalColor; 81 cell.lblTitle.backgroundColor = (indexPath.row == _selectedIndex) ? _highlightColor : _normalColor;
82 return cell; 82 return cell;
83 } 83 }
84 84
85 - (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 85 - (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
86 return CGSizeMake((self.frame.size.width - (_spacing * _number)) / _number, collectionView.frame.size.height); 86 return CGSizeMake((self.frame.size.width - (_spacing * _number)) / _number, collectionView.frame.size.height);
87 } 87 }
88 88
89 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { 89 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
90 return _spacing; 90 return _spacing;
91 } 91 }
92 92
93 -(void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 93 -(void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
94 _selectedIndex = indexPath.row; 94 _selectedIndex = indexPath.row;
95 [collectionView reloadData]; 95 [collectionView reloadData];
96 self.changeCurrentIndex(_selectedIndex);
96 } 97 }
97 @end 98 @end
98 99
LifeLog/LifeLog/Entities.h
1 // 1 //
2 // Entities.h 2 // Entities.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #ifndef Entities_h 9 #ifndef Entities_h
10 #define Entities_h 10 #define Entities_h
11 11
12 #import "HistoryObject.h"
12 #import "User.h" 13 #import "User.h"
13 14
14 #endif /* Entities_h */ 15 #endif /* Entities_h */
15 16
LifeLog/LifeLog/HistoryObject.h
File was created 1 //
2 // HistoryObject.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <Foundation/Foundation.h>
10
11 @interface HistoryObject : NSObject
12
13 @property (nonatomic) int step;
14 @property (nonatomic) int missing;
15 @property (nonatomic) int target;
16 @property (nonatomic) float percent;
17 @property (nonatomic) float distance;
18 @property (nonatomic) float calories;
19 @property (nonatomic, strong) NSString * time;
20 @property (nonatomic, strong) NSDate *date;
21
22 -(id) initWithData : (NSDictionary *) dict;
23
24 @end
25
LifeLog/LifeLog/HistoryObject.m
File was created 1 //
2 // HistoryObject.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "HistoryObject.h"
10
11 @implementation HistoryObject
12
13 -(id) initWithData : (NSDictionary *) dict {
14 if([dict objectForKey:@"step"] != nil) {
15 self.step = [dict[@"step"] intValue];
16 }
17 if([dict objectForKey:@"target"] != nil) {
18 self.target = [dict[@"target"] intValue];
19 }
20 if([dict objectForKey:@"missing"] != nil) {
21 self.missing = [dict[@"missing"] intValue];
22 }
23 if([dict objectForKey:@"percent"] != nil) {
24 self.percent = [dict[@"percent"] floatValue];
25 }
26 if([dict objectForKey:@"distance"] != nil) {
27 self.distance = [dict[@"distance"] floatValue];
28 }
29 if([dict objectForKey:@"kcal"] != nil) {
30 self.calories = [dict[@"kcal"] floatValue];
31 }
32 if([dict objectForKey:@"time"] != nil) {
33 self.time = dict[@"time"];
34 }
35 if([dict objectForKey:@"date"] != nil) {
36 NSString *dateString = dict[@"time"];
37 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
38 [dateFormat setDateFormat:@"yyyy-MM-dd"];
39 self.date = [dateFormat dateFromString:dateString];
40 }
41 else {
42 self.date = [NSDate date];
43 }
44 return self;
45 }
46 @end
47
LifeLog/LifeLog/HistoryViewController.h
1 // 1 //
2 // HistoryViewController.h 2 // HistoryViewController.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/25/17. 5 // Created by Nguyen Van Phong on 7/25/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 #import <Charts/Charts-Swift.h> 10 #import <Charts/Charts-Swift.h>
11 11
12 #import "CollectionView.h" 12 #import "CollectionView.h"
13 13
14 @interface HistoryViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate> 14 #import "Entities.h"
15 15
16 @interface HistoryViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate> {
17 NSDate * _currentDate;
18 HistoryObject * _currentHistoryObject;
19 }
20
16 @property (weak, nonatomic) IBOutlet UILabel *lblHeader; 21 @property (weak, nonatomic) IBOutlet UILabel *lblHeader;
17 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionTime; 22 @property (weak, nonatomic) IBOutlet UILabel *lblCircleStep;
23 @property (weak, nonatomic) IBOutlet UILabel *lblCircleRemain;
24
25 @property (weak, nonatomic) IBOutlet UILabel *lblStep;
26 @property (weak, nonatomic) IBOutlet UILabel *lblRemaining;
27 @property (weak, nonatomic) IBOutlet UILabel *lblPercent;
28 @property (weak, nonatomic) IBOutlet UILabel *lblCalories;
29 @property (weak, nonatomic) IBOutlet UILabel *lblDistance;
30 @property (weak, nonatomic) IBOutlet UILabel *lblTime;
31
18 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType; 32 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType;
33 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionMode;
19 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionShare; 34 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionShare;
20 35
21 @property (weak, nonatomic) IBOutlet BarChartView *viewBarChart; 36 @property (weak, nonatomic) IBOutlet BarChartView *viewBarChart;
22 37
23 @property (weak, nonatomic) IBOutlet UITableView *tableListHistory; 38 @property (weak, nonatomic) IBOutlet UITableView *tableListHistory;
24 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; 39 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
25 40
26 - (IBAction)swipeAction:(UISwipeGestureRecognizer *)sender; 41 - (IBAction)swipeAction:(UISwipeGestureRecognizer *)sender;
27 42
28 @end 43 @end
29 44
LifeLog/LifeLog/HistoryViewController.m
1 // 1 //
2 // HistoryViewController.m 2 // HistoryViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/25/17. 5 // Created by Nguyen Van Phong on 7/25/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "HistoryViewController.h" 9 #import "HistoryViewController.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 #import "ServerAPI.h"
11 12
12 #import "HistoryListTableViewCell.h" 13 #import "HistoryListTableViewCell.h"
13 14
14 @interface HistoryViewController () 15 @interface HistoryViewController ()
15 16
16 @end 17 @end
17 18
18 @implementation HistoryViewController 19 @implementation HistoryViewController
19 20
20 - (void)viewDidLoad { 21 - (void)viewDidLoad {
21 [super viewDidLoad]; 22 [super viewDidLoad];
22 // Do any additional setup after loading the view from its nib. 23 // Do any additional setup after loading the view from its nib.
23 self.title = NSLocalizedString(@"lifelog.tapbar.history", nil); 24 self.title = NSLocalizedString(@"lifelog.history.title", nil);
24 self.lblHeader.text = NSLocalizedString(@"lifelog.tapbar.history", nil); 25 self.lblHeader.text = NSLocalizedString(@"lifelog.history.title", nil);
25 26
26 [self setupView]; 27 [self setupView];
27 [self setupChartView]; 28 [self setupChartView];
29
30 _currentDate = [NSDate date];
31
32 [self callRequestToUpdateData];
33
28 //register nib for table view 34 //register nib for table view
29 [self.tableListHistory registerNib:[UINib nibWithNibName:@"HistoryListTableViewCell" bundle:nil] forCellReuseIdentifier:@"HistoryListCell"]; 35 [self.tableListHistory registerNib:[UINib nibWithNibName:@"HistoryListTableViewCell" bundle:nil] forCellReuseIdentifier:@"HistoryListCell"];
30 } 36 }
31 37
32 - (void)viewDidAppear:(BOOL) animated 38 - (void)viewDidAppear:(BOOL) animated
33 { 39 {
34 [super viewDidAppear:animated]; 40 [super viewDidAppear:animated];
35 self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 400); 41 self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 400);
36 [self.scrollView setNeedsLayout]; 42 [self.scrollView setNeedsLayout];
37 [self.scrollView setNeedsUpdateConstraints]; 43 [self.scrollView setNeedsUpdateConstraints];
38 44
39 } 45 }
40 46
41 - (void)didReceiveMemoryWarning { 47 - (void)didReceiveMemoryWarning {
42 [super didReceiveMemoryWarning]; 48 [super didReceiveMemoryWarning];
43 // Dispose of any resources that can be recreated. 49 // Dispose of any resources that can be recreated.
44 } 50 }
45 51
46 - (void)setupView { 52 - (void)setupView {
47 [self.viewCollectionTime setButtonNumber:5]; 53 NSArray *typeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.type.1", nil), NSLocalizedString(@"lifelog.history.type.2", nil), NSLocalizedString(@"lifelog.history.type.3", nil), NSLocalizedString(@"lifelog.history.type.4", nil), NSLocalizedString(@"lifelog.history.type.5", nil), nil];
48 [self.viewCollectionTime setSpacing:2]; 54 [self.viewCollectionType setButtonNumber:typeTitle.count];
49 [self.viewCollectionTime setArrayTitle:[NSArray arrayWithObjects:@"1ๆ—ฅ", @"1้€ฑ้–“", @"1ใƒถๆœˆ", @"3ใƒถๆœˆ", @"6ใƒถๆœˆ", nil]]; 55 [self.viewCollectionType setSpacing:2];
56 [self.viewCollectionType setArrayTitle:typeTitle];
57 self.viewCollectionType.changeCurrentIndex = ^(int index){
58 [self callRequestToUpdateData];
59 };
50 60
51 [self.viewCollectionType setButtonNumber:3]; 61 NSArray *modeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.mode.1", nil), NSLocalizedString(@"lifelog.history.mode.2", nil), NSLocalizedString(@"lifelog.history.mode.3", nil), nil];
52 [self.viewCollectionType setSpacing:0]; 62 [self.viewCollectionMode setButtonNumber:modeTitle.count];
53 [self.viewCollectionType setCornerRadius:0]; 63 [self.viewCollectionMode setSpacing:0];
54 [self.viewCollectionType setNormalColor:[Utilities convertHecToColor:0x191919] highlightColor:[Utilities convertHecToColor:0x474747] textColor:[UIColor whiteColor]]; 64 [self.viewCollectionMode setCornerRadius:0];
55 [self.viewCollectionType setArrayTitle:[NSArray arrayWithObjects:@"BIKE", @"WALKING", @"RUNNING", nil]]; 65 [self.viewCollectionMode setNormalColor:[Utilities convertHecToColor:0x191919] highlightColor:[Utilities convertHecToColor:0x474747] textColor:[UIColor whiteColor]];
66 [self.viewCollectionMode setArrayTitle:modeTitle];
67 self.viewCollectionMode.changeCurrentIndex = ^(int index){
68 [self callRequestToUpdateData];
69 };
56 70
57 [self.viewCollectionShare setButtonNumber:5]; 71 NSArray *shareTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.share.1", nil), NSLocalizedString(@"lifelog.history.share.2", nil), NSLocalizedString(@"lifelog.history.share.3", nil), NSLocalizedString(@"lifelog.history.share.4", nil), NSLocalizedString(@"lifelog.history.share.5", nil), nil];
72 [self.viewCollectionShare setButtonNumber:typeTitle.count];
58 [self.viewCollectionShare setSpacing:3]; 73 [self.viewCollectionShare setSpacing:3];
59 [self.viewCollectionShare setSelectedIndex:-1]; 74 [self.viewCollectionShare setSelectedIndex:-1];
60 [self.viewCollectionShare setArrayTitle:[NSArray arrayWithObjects:@"facebook", @"twitter", @"line", @"ใƒกใƒผใƒซ", @"ใใฎไป–", nil]]; 75 [self.viewCollectionShare setArrayTitle:shareTitle];
61 } 76 }
62 77
78 -(void) updateView {
79 self.lblStep.text = [NSString stringWithFormat:@"%d", _currentHistoryObject.step];
80 self.lblRemaining.text = [NSString stringWithFormat:@"%d", _currentHistoryObject.missing];
81 self.lblPercent.text = [NSString stringWithFormat:@"%0.2f", _currentHistoryObject.percent * 100];
82 self.lblCalories.text = [NSString stringWithFormat:@"%1.0f", _currentHistoryObject.calories];
83 self.lblDistance.text = [NSString stringWithFormat:@"%0.1f", _currentHistoryObject.distance];
84 self.lblTime.text = _currentHistoryObject.time;
85 }
86
63 - (void)setupChartView { 87 - (void)setupChartView {
64 self.viewBarChart.chartDescription.enabled = NO; 88 self.viewBarChart.chartDescription.enabled = NO;
65 self.viewBarChart.leftAxis.drawGridLinesEnabled = NO; 89 self.viewBarChart.leftAxis.drawGridLinesEnabled = NO;
66 self.viewBarChart.rightAxis.drawGridLinesEnabled = NO; 90 self.viewBarChart.rightAxis.drawGridLinesEnabled = NO;
67 self.viewBarChart.legend.enabled = NO; 91 self.viewBarChart.legend.enabled = NO;
68 92
69 ChartXAxis *xAxis = self.viewBarChart.xAxis; 93 ChartXAxis *xAxis = self.viewBarChart.xAxis;
70 xAxis.labelPosition = XAxisLabelPositionBottom; 94 xAxis.labelPosition = XAxisLabelPositionBottom;
71 xAxis.drawGridLinesEnabled = NO; 95 xAxis.drawGridLinesEnabled = NO;
72 xAxis.drawAxisLineEnabled = NO; 96 xAxis.drawAxisLineEnabled = NO;
73 xAxis.drawLabelsEnabled = YES; 97 xAxis.drawLabelsEnabled = YES;
74 xAxis.labelPosition = XAxisLabelPositionBottom; 98 xAxis.labelPosition = XAxisLabelPositionBottom;
75 xAxis.labelFont = [UIFont systemFontOfSize:10.f]; 99 xAxis.labelFont = [UIFont systemFontOfSize:10.f];
76 xAxis.labelTextColor = [UIColor whiteColor]; 100 xAxis.labelTextColor = [UIColor whiteColor];
77 xAxis.granularity = 1.0; // only intervals of 1 day 101 xAxis.granularity = 1.0; // only intervals of 1 day
78 xAxis.labelCount = 8; 102 xAxis.labelCount = 8;
79 103
80 self.viewBarChart.leftAxis.drawAxisLineEnabled = NO; 104 self.viewBarChart.leftAxis.drawAxisLineEnabled = NO;
81 self.viewBarChart.rightAxis.drawAxisLineEnabled = NO; 105 self.viewBarChart.rightAxis.drawAxisLineEnabled = NO;
82 106
83 /*fake data for test*/ 107 /*fake data for test*/
84 NSMutableArray *yVals = [[NSMutableArray alloc] init]; 108 NSMutableArray *yVals = [[NSMutableArray alloc] init];
85 109
86 for (int i = 0; i < 24; i++) 110 for (int i = 0; i < 24; i++)
87 { 111 {
88 double val = (double) (arc4random_uniform(100)); 112 double val = (double) (arc4random_uniform(100));
89 [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:val]]; 113 [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:val]];
90 } 114 }
91 115
92 BarChartDataSet *set1 = nil; 116 BarChartDataSet *set1 = nil;
93 if (self.viewBarChart.data.dataSetCount > 0) 117 if (self.viewBarChart.data.dataSetCount > 0)
94 { 118 {
95 set1 = (BarChartDataSet *)self.viewBarChart.data.dataSets[0]; 119 set1 = (BarChartDataSet *)self.viewBarChart.data.dataSets[0];
96 set1.values = yVals; 120 set1.values = yVals;
97 [self.viewBarChart.data notifyDataChanged]; 121 [self.viewBarChart.data notifyDataChanged];
98 [self.viewBarChart notifyDataSetChanged]; 122 [self.viewBarChart notifyDataSetChanged];
99 } 123 }
100 else 124 else
101 { 125 {
102 set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@""]; 126 set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@""];
103 [set1 setColor:[UIColor whiteColor]]; 127 [set1 setColor:[UIColor whiteColor]];
104 128
105 NSMutableArray *dataSets = [[NSMutableArray alloc] init]; 129 NSMutableArray *dataSets = [[NSMutableArray alloc] init];
106 [dataSets addObject:set1]; 130 [dataSets addObject:set1];
107 131
108 BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets]; 132 BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
109 data.barWidth = 0.5f; 133 data.barWidth = 0.5f;
110 134
111 self.viewBarChart.data = data; 135 self.viewBarChart.data = data;
112 } 136 }
137 }
138
139 -(void) callRequestToUpdateData {
140 [[ServerAPI server] requestHistory:[[NSUserDefaults standardUserDefaults] stringForKey:kToken] atDate:_currentDate withType:self.viewCollectionType.getCurrentIndex andMode:self.viewCollectionMode.getCurrentIndex + 1 CompletionHandler:^(HistoryObject *object, NSError *error) {
141 HistoryViewController __weak *weakSelf = self;
142 if(error == nil) {
143 _currentHistoryObject = object;
144 dispatch_async(dispatch_get_main_queue(), ^{
145 [self updateView];
146 });
147 }
148 else {
149 dispatch_async(dispatch_get_main_queue(), ^{
150 NSString *message = [error.userInfo objectForKey:@"message"];
151 [Utilities showErrorMessage:message withViewController:weakSelf];
152 });
153 }
154 }];
113 } 155 }
114 156
115 #pragma mark IBAction 157 #pragma mark IBAction
116 -(void) swipeAction:(UISwipeGestureRecognizer *)sender { 158 -(void) swipeAction:(UISwipeGestureRecognizer *)sender {
117 bool alphaValue = self.scrollView.alpha == 1.0 ? 1.0 : 0.0; 159 bool alphaValue = self.scrollView.alpha == 1.0 ? 1.0 : 0.0;
118 [UIView animateWithDuration:0.5 animations:^{ 160 [UIView animateWithDuration:0.5 animations:^{
119 self.tableListHistory.alpha = alphaValue; 161 self.tableListHistory.alpha = alphaValue;
120 self.scrollView.alpha = 1.0 - alphaValue; 162 self.scrollView.alpha = 1.0 - alphaValue;
121 } completion:^(bool completed) { 163 } completion:^(bool completed) {
122 }]; 164 }];
123 } 165 }
124 166
125 #pragma mark UITableView Delegate 167 #pragma mark UITableView Delegate
126 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 168 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
127 return 4; 169 return 4;
128 } 170 }
129 171
130 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 172 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
131 HistoryListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"HistoryListCell"]; 173 HistoryListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"HistoryListCell"];
132 return cell; 174 return cell;
133 } 175 }
134 176
135 @end 177 @end
136 178
LifeLog/LifeLog/HistoryViewController.xib
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12118" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> 2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12118" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 <device id="retina4_7" orientation="portrait"> 3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/> 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> 8 <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 </dependencies> 10 </dependencies>
11 <objects> 11 <objects>
12 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HistoryViewController"> 12 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HistoryViewController">
13 <connections> 13 <connections>
14 <outlet property="lblCalories" destination="dAE-C8-QLr" id="WaS-S3-Qxh"/>
15 <outlet property="lblCircleRemain" destination="Kr7-S0-Fpl" id="UQe-Bt-i0X"/>
16 <outlet property="lblCircleStep" destination="oWg-A8-aCr" id="Q9g-UY-hyv"/>
17 <outlet property="lblDistance" destination="1tR-JC-pyw" id="q4s-Ru-vLO"/>
14 <outlet property="lblHeader" destination="Ht6-rd-JXF" id="SSk-xp-GLP"/> 18 <outlet property="lblHeader" destination="Ht6-rd-JXF" id="SSk-xp-GLP"/>
19 <outlet property="lblPercent" destination="8Ru-Jc-Ouv" id="ZHn-Kt-0Qk"/>
20 <outlet property="lblRemaining" destination="1NH-b3-ST8" id="hFc-q9-b0h"/>
21 <outlet property="lblStep" destination="0pf-fX-QXT" id="jK4-9Y-89Q"/>
22 <outlet property="lblTime" destination="PfZ-7x-LAR" id="NQv-fs-rl7"/>
15 <outlet property="scrollView" destination="rey-N3-l8b" id="s3w-fi-n5l"/> 23 <outlet property="scrollView" destination="rey-N3-l8b" id="s3w-fi-n5l"/>
16 <outlet property="tableListHistory" destination="FXQ-4O-sRc" id="VNN-sx-9xu"/> 24 <outlet property="tableListHistory" destination="FXQ-4O-sRc" id="VNN-sx-9xu"/>
17 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 25 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
18 <outlet property="viewBarChart" destination="VqD-Y3-cYQ" id="RdJ-G5-pPy"/> 26 <outlet property="viewBarChart" destination="VqD-Y3-cYQ" id="RdJ-G5-pPy"/>
27 <outlet property="viewCollectionMode" destination="BVv-qD-EHM" id="A6n-32-oxg"/>
19 <outlet property="viewCollectionShare" destination="Iw2-nW-e7g" id="LW3-j0-yEY"/> 28 <outlet property="viewCollectionShare" destination="Iw2-nW-e7g" id="LW3-j0-yEY"/>
20 <outlet property="viewCollectionTime" destination="yxY-4d-tB6" id="jp8-TP-N5g"/> 29 <outlet property="viewCollectionType" destination="yxY-4d-tB6" id="K1D-Gc-kWV"/>
21 <outlet property="viewCollectionType" destination="BVv-qD-EHM" id="0MR-m4-P1Y"/>
22 </connections> 30 </connections>
23 </placeholder> 31 </placeholder>
24 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 32 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
25 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 33 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
26 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 34 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
27 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 35 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
28 <subviews> 36 <subviews>
29 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="clL-JG-rbd" userLabel="ViewHeader"> 37 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="clL-JG-rbd" userLabel="ViewHeader">
30 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 38 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
31 <subviews> 39 <subviews>
32 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="TODAY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ht6-rd-JXF"> 40 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="TODAY" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ht6-rd-JXF">
33 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 41 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
34 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 42 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
35 <fontDescription key="fontDescription" type="system" pointSize="17"/> 43 <fontDescription key="fontDescription" type="system" pointSize="17"/>
36 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 44 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
37 <nil key="highlightedColor"/> 45 <nil key="highlightedColor"/>
38 </label> 46 </label>
39 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ytc-zM-ZGC"> 47 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ytc-zM-ZGC">
40 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 48 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
41 <constraints> 49 <constraints>
42 <constraint firstAttribute="width" constant="70" id="xAE-oP-WEf"/> 50 <constraint firstAttribute="width" constant="70" id="xAE-oP-WEf"/>
43 </constraints> 51 </constraints>
44 <state key="normal" image="today_back_button"/> 52 <state key="normal" image="today_back_button"/>
45 </button> 53 </button>
46 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CFx-sO-MAH"> 54 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CFx-sO-MAH">
47 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 55 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
48 <constraints> 56 <constraints>
49 <constraint firstAttribute="width" constant="45" id="V0g-Ii-pNQ"/> 57 <constraint firstAttribute="width" constant="45" id="V0g-Ii-pNQ"/>
50 </constraints> 58 </constraints>
51 <state key="normal" image="icon_menu"/> 59 <state key="normal" image="icon_menu"/>
52 </button> 60 </button>
53 </subviews> 61 </subviews>
54 <color key="backgroundColor" red="0.098039215686274508" green="0.098039215686274508" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 62 <color key="backgroundColor" red="0.098039215686274508" green="0.098039215686274508" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
55 <constraints> 63 <constraints>
56 <constraint firstItem="ytc-zM-ZGC" firstAttribute="leading" secondItem="clL-JG-rbd" secondAttribute="leading" id="LDb-Pq-Z5k"/> 64 <constraint firstItem="ytc-zM-ZGC" firstAttribute="leading" secondItem="clL-JG-rbd" secondAttribute="leading" id="LDb-Pq-Z5k"/>
57 <constraint firstAttribute="trailing" secondItem="CFx-sO-MAH" secondAttribute="trailing" id="PTh-vI-2DI"/> 65 <constraint firstAttribute="trailing" secondItem="CFx-sO-MAH" secondAttribute="trailing" id="PTh-vI-2DI"/>
58 <constraint firstItem="CFx-sO-MAH" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="top" id="Uxg-Wl-DlF"/> 66 <constraint firstItem="CFx-sO-MAH" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="top" id="Uxg-Wl-DlF"/>
59 <constraint firstAttribute="bottom" secondItem="CFx-sO-MAH" secondAttribute="bottom" id="X9D-m3-QXF"/> 67 <constraint firstAttribute="bottom" secondItem="CFx-sO-MAH" secondAttribute="bottom" id="X9D-m3-QXF"/>
60 <constraint firstAttribute="bottom" secondItem="ytc-zM-ZGC" secondAttribute="bottom" constant="5" id="hWb-ga-1wm"/> 68 <constraint firstAttribute="bottom" secondItem="ytc-zM-ZGC" secondAttribute="bottom" constant="5" id="hWb-ga-1wm"/>
61 <constraint firstItem="ytc-zM-ZGC" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="top" constant="5" id="vFt-FE-klC"/> 69 <constraint firstItem="ytc-zM-ZGC" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="top" constant="5" id="vFt-FE-klC"/>
62 <constraint firstAttribute="height" constant="46" id="xGd-BD-bgs"/> 70 <constraint firstAttribute="height" constant="46" id="xGd-BD-bgs"/>
63 </constraints> 71 </constraints>
64 </view> 72 </view>
65 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cf1-lP-zbB" userLabel="ViewTime"> 73 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cf1-lP-zbB" userLabel="ViewTime">
66 <rect key="frame" x="10" y="46" width="355" height="35"/> 74 <rect key="frame" x="10" y="46" width="355" height="35"/>
67 <subviews> 75 <subviews>
68 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6T2-M9-9wV"> 76 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6T2-M9-9wV">
69 <rect key="frame" x="0.0" y="0.0" width="35" height="35"/> 77 <rect key="frame" x="0.0" y="0.0" width="35" height="35"/>
70 <constraints> 78 <constraints>
71 <constraint firstAttribute="width" secondItem="6T2-M9-9wV" secondAttribute="height" multiplier="1:1" id="RlM-6u-eer"/> 79 <constraint firstAttribute="width" secondItem="6T2-M9-9wV" secondAttribute="height" multiplier="1:1" id="RlM-6u-eer"/>
72 </constraints> 80 </constraints>
73 <state key="normal" backgroundImage="arrow_back"/> 81 <state key="normal" backgroundImage="arrow_back"/>
74 </button> 82 </button>
75 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Cwb-8M-pDi"> 83 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Cwb-8M-pDi">
76 <rect key="frame" x="320" y="0.0" width="35" height="35"/> 84 <rect key="frame" x="320" y="0.0" width="35" height="35"/>
77 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 85 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
78 <state key="normal" backgroundImage="arrow_next"/> 86 <state key="normal" backgroundImage="arrow_next"/>
79 </button> 87 </button>
80 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2017ๅนด1ๆœˆ1ๆ—ฅใ€€ๆ—ฅๆ›œๆ—ฅ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EM7-vA-s1e"> 88 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2017ๅนด1ๆœˆ1ๆ—ฅใ€€ๆ—ฅๆ›œๆ—ฅ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EM7-vA-s1e">
81 <rect key="frame" x="40" y="2" width="275" height="31"/> 89 <rect key="frame" x="40" y="2" width="275" height="31"/>
82 <fontDescription key="fontDescription" type="system" pointSize="17"/> 90 <fontDescription key="fontDescription" type="system" pointSize="17"/>
83 <nil key="textColor"/> 91 <nil key="textColor"/>
84 <nil key="highlightedColor"/> 92 <nil key="highlightedColor"/>
85 </label> 93 </label>
86 </subviews> 94 </subviews>
87 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 95 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
88 <constraints> 96 <constraints>
89 <constraint firstItem="Cwb-8M-pDi" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" id="4Jr-r7-y6d"/> 97 <constraint firstItem="Cwb-8M-pDi" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" id="4Jr-r7-y6d"/>
90 <constraint firstAttribute="bottom" secondItem="6T2-M9-9wV" secondAttribute="bottom" id="8bU-NI-m32"/> 98 <constraint firstAttribute="bottom" secondItem="6T2-M9-9wV" secondAttribute="bottom" id="8bU-NI-m32"/>
91 <constraint firstItem="EM7-vA-s1e" firstAttribute="leading" secondItem="6T2-M9-9wV" secondAttribute="trailing" constant="5" id="9G1-I6-nSV"/> 99 <constraint firstItem="EM7-vA-s1e" firstAttribute="leading" secondItem="6T2-M9-9wV" secondAttribute="trailing" constant="5" id="9G1-I6-nSV"/>
92 <constraint firstItem="EM7-vA-s1e" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" constant="2" id="9Yk-sv-gkx"/> 100 <constraint firstItem="EM7-vA-s1e" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" constant="2" id="9Yk-sv-gkx"/>
93 <constraint firstItem="Cwb-8M-pDi" firstAttribute="leading" secondItem="EM7-vA-s1e" secondAttribute="trailing" constant="5" id="JQI-18-cWP"/> 101 <constraint firstItem="Cwb-8M-pDi" firstAttribute="leading" secondItem="EM7-vA-s1e" secondAttribute="trailing" constant="5" id="JQI-18-cWP"/>
94 <constraint firstAttribute="height" constant="35" id="Pdg-IR-g8y"/> 102 <constraint firstAttribute="height" constant="35" id="Pdg-IR-g8y"/>
95 <constraint firstItem="6T2-M9-9wV" firstAttribute="leading" secondItem="Cf1-lP-zbB" secondAttribute="leading" id="Pgh-zZ-vrG"/> 103 <constraint firstItem="6T2-M9-9wV" firstAttribute="leading" secondItem="Cf1-lP-zbB" secondAttribute="leading" id="Pgh-zZ-vrG"/>
96 <constraint firstAttribute="bottom" secondItem="Cwb-8M-pDi" secondAttribute="bottom" id="WWs-Ey-osm"/> 104 <constraint firstAttribute="bottom" secondItem="Cwb-8M-pDi" secondAttribute="bottom" id="WWs-Ey-osm"/>
97 <constraint firstItem="Cwb-8M-pDi" firstAttribute="width" secondItem="Cwb-8M-pDi" secondAttribute="height" multiplier="1:1" id="YHa-MU-GKi"/> 105 <constraint firstItem="Cwb-8M-pDi" firstAttribute="width" secondItem="Cwb-8M-pDi" secondAttribute="height" multiplier="1:1" id="YHa-MU-GKi"/>
98 <constraint firstItem="6T2-M9-9wV" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" id="fiM-o3-Us0"/> 106 <constraint firstItem="6T2-M9-9wV" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="top" id="fiM-o3-Us0"/>
99 <constraint firstAttribute="trailing" secondItem="Cwb-8M-pDi" secondAttribute="trailing" id="oCE-RP-EmX"/> 107 <constraint firstAttribute="trailing" secondItem="Cwb-8M-pDi" secondAttribute="trailing" id="oCE-RP-EmX"/>
100 <constraint firstAttribute="bottom" secondItem="EM7-vA-s1e" secondAttribute="bottom" constant="2" id="oOd-ip-MZy"/> 108 <constraint firstAttribute="bottom" secondItem="EM7-vA-s1e" secondAttribute="bottom" constant="2" id="oOd-ip-MZy"/>
101 </constraints> 109 </constraints>
102 </view> 110 </view>
103 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yxY-4d-tB6" customClass="CollectionView"> 111 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yxY-4d-tB6" customClass="CollectionView">
104 <rect key="frame" x="2" y="96" width="371" height="40"/> 112 <rect key="frame" x="2" y="96" width="371" height="40"/>
105 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 113 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
106 <constraints> 114 <constraints>
107 <constraint firstAttribute="height" constant="40" id="U7Q-wa-CDi"/> 115 <constraint firstAttribute="height" constant="40" id="U7Q-wa-CDi"/>
108 </constraints> 116 </constraints>
109 </view> 117 </view>
110 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BVv-qD-EHM" customClass="CollectionView"> 118 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BVv-qD-EHM" customClass="CollectionView">
111 <rect key="frame" x="0.0" y="567" width="375" height="40"/> 119 <rect key="frame" x="0.0" y="567" width="375" height="40"/>
112 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 120 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
113 <constraints> 121 <constraints>
114 <constraint firstAttribute="height" constant="40" id="6wc-NQ-UAH"/> 122 <constraint firstAttribute="height" constant="40" id="6wc-NQ-UAH"/>
115 </constraints> 123 </constraints>
116 </view> 124 </view>
117 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FLa-rV-Aas" userLabel="ViewContent"> 125 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FLa-rV-Aas" userLabel="ViewContent">
118 <rect key="frame" x="0.0" y="151" width="375" height="411"/> 126 <rect key="frame" x="0.0" y="151" width="375" height="411"/>
119 <subviews> 127 <subviews>
120 <tableView clipsSubviews="YES" alpha="0.0" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="FXQ-4O-sRc"> 128 <tableView clipsSubviews="YES" alpha="0.0" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="FXQ-4O-sRc">
121 <rect key="frame" x="5" y="0.0" width="365" height="411"/> 129 <rect key="frame" x="5" y="0.0" width="365" height="411"/>
122 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 130 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
123 <connections> 131 <connections>
124 <outlet property="dataSource" destination="-1" id="GQy-lg-1Af"/> 132 <outlet property="dataSource" destination="-1" id="GQy-lg-1Af"/>
125 <outlet property="delegate" destination="-1" id="Jka-Ij-zNq"/> 133 <outlet property="delegate" destination="-1" id="Jka-Ij-zNq"/>
126 </connections> 134 </connections>
127 </tableView> 135 </tableView>
128 <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rey-N3-l8b"> 136 <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rey-N3-l8b">
129 <rect key="frame" x="0.0" y="0.0" width="375" height="411"/> 137 <rect key="frame" x="0.0" y="0.0" width="375" height="411"/>
130 <subviews> 138 <subviews>
131 <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Cam-ML-IEO"> 139 <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Cam-ML-IEO">
132 <rect key="frame" x="0.0" y="0.0" width="375" height="411"/> 140 <rect key="frame" x="0.0" y="0.0" width="375" height="411"/>
133 <subviews> 141 <subviews>
134 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kzk-mN-AOf"> 142 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kzk-mN-AOf">
135 <rect key="frame" x="20" y="30" width="120" height="120"/> 143 <rect key="frame" x="20" y="30" width="120" height="120"/>
136 <subviews> 144 <subviews>
137 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oWg-A8-aCr"> 145 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oWg-A8-aCr">
138 <rect key="frame" x="18" y="35" width="82" height="21"/> 146 <rect key="frame" x="18" y="35" width="82" height="21"/>
139 <constraints> 147 <constraints>
140 <constraint firstAttribute="height" constant="21" id="zOX-0d-IVv"/> 148 <constraint firstAttribute="height" constant="21" id="zOX-0d-IVv"/>
141 </constraints> 149 </constraints>
142 <fontDescription key="fontDescription" type="system" pointSize="17"/> 150 <fontDescription key="fontDescription" type="system" pointSize="17"/>
143 <nil key="textColor"/> 151 <nil key="textColor"/>
144 <nil key="highlightedColor"/> 152 <nil key="highlightedColor"/>
145 </label> 153 </label>
146 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kr7-S0-Fpl"> 154 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kr7-S0-Fpl">
147 <rect key="frame" x="20.5" y="61" width="80" height="42"/> 155 <rect key="frame" x="20.5" y="61" width="80" height="42"/>
148 <constraints> 156 <constraints>
149 <constraint firstAttribute="width" constant="80" id="IOc-sB-dA2"/> 157 <constraint firstAttribute="width" constant="80" id="IOc-sB-dA2"/>
150 <constraint firstAttribute="height" constant="42" id="zRP-Fu-qZ9"/> 158 <constraint firstAttribute="height" constant="42" id="zRP-Fu-qZ9"/>
151 </constraints> 159 </constraints>
152 <string key="text">็›ฎๆจ™ใพใงใ‚ใจ 160 <string key="text">็›ฎๆจ™ใพใงใ‚ใจ
153 500 stepใงใ™</string> 161 500 stepใงใ™</string>
154 <fontDescription key="fontDescription" type="system" pointSize="11"/> 162 <fontDescription key="fontDescription" type="system" pointSize="11"/>
155 <nil key="textColor"/> 163 <nil key="textColor"/>
156 <nil key="highlightedColor"/> 164 <nil key="highlightedColor"/>
157 </label> 165 </label>
158 </subviews> 166 </subviews>
159 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 167 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
160 <constraints> 168 <constraints>
161 <constraint firstItem="Kr7-S0-Fpl" firstAttribute="top" secondItem="oWg-A8-aCr" secondAttribute="bottom" constant="5" id="2KK-Lm-h74"/> 169 <constraint firstItem="Kr7-S0-Fpl" firstAttribute="top" secondItem="oWg-A8-aCr" secondAttribute="bottom" constant="5" id="2KK-Lm-h74"/>
162 <constraint firstItem="oWg-A8-aCr" firstAttribute="leading" secondItem="Kzk-mN-AOf" secondAttribute="leading" constant="18" id="CdG-qa-ud5"/> 170 <constraint firstItem="oWg-A8-aCr" firstAttribute="leading" secondItem="Kzk-mN-AOf" secondAttribute="leading" constant="18" id="CdG-qa-ud5"/>
163 <constraint firstAttribute="width" constant="120" id="E48-cC-dsc"/> 171 <constraint firstAttribute="width" constant="120" id="E48-cC-dsc"/>
164 <constraint firstAttribute="height" constant="120" id="SlY-sr-tR9"/> 172 <constraint firstAttribute="height" constant="120" id="SlY-sr-tR9"/>
165 <constraint firstItem="Kr7-S0-Fpl" firstAttribute="centerX" secondItem="Kzk-mN-AOf" secondAttribute="centerX" id="jJV-RH-pk1"/> 173 <constraint firstItem="Kr7-S0-Fpl" firstAttribute="centerX" secondItem="Kzk-mN-AOf" secondAttribute="centerX" id="jJV-RH-pk1"/>
166 <constraint firstItem="oWg-A8-aCr" firstAttribute="top" secondItem="Kzk-mN-AOf" secondAttribute="top" constant="35" id="oBl-zo-td5"/> 174 <constraint firstItem="oWg-A8-aCr" firstAttribute="top" secondItem="Kzk-mN-AOf" secondAttribute="top" constant="35" id="oBl-zo-td5"/>
167 <constraint firstAttribute="trailing" secondItem="oWg-A8-aCr" secondAttribute="trailing" constant="20" id="xgh-d4-jOF"/> 175 <constraint firstAttribute="trailing" secondItem="oWg-A8-aCr" secondAttribute="trailing" constant="20" id="xgh-d4-jOF"/>
168 </constraints> 176 </constraints>
169 <userDefinedRuntimeAttributes> 177 <userDefinedRuntimeAttributes>
170 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 178 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
171 <integer key="value" value="60"/> 179 <integer key="value" value="60"/>
172 </userDefinedRuntimeAttribute> 180 </userDefinedRuntimeAttribute>
173 </userDefinedRuntimeAttributes> 181 </userDefinedRuntimeAttributes>
174 </view> 182 </view>
175 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ix-HE-d9T"> 183 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ix-HE-d9T">
176 <rect key="frame" x="148" y="30" width="219" height="120"/> 184 <rect key="frame" x="148" y="30" width="219" height="120"/>
177 <subviews> 185 <subviews>
178 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="็›ฎๆจ™" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YE6-wh-77T"> 186 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="็›ฎๆจ™" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YE6-wh-77T" customClass="AutoTransLabel">
179 <rect key="frame" x="10" y="37.5" width="45" height="15"/> 187 <rect key="frame" x="10" y="37.5" width="45" height="15"/>
180 <constraints> 188 <constraints>
181 <constraint firstAttribute="width" constant="45" id="6Ce-YE-wbx"/> 189 <constraint firstAttribute="width" constant="45" id="6Ce-YE-wbx"/>
182 <constraint firstAttribute="height" constant="15" id="eFR-Ao-75U"/> 190 <constraint firstAttribute="height" constant="15" id="eFR-Ao-75U"/>
183 </constraints> 191 </constraints>
184 <fontDescription key="fontDescription" type="system" pointSize="12"/> 192 <fontDescription key="fontDescription" type="system" pointSize="12"/>
185 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 193 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
186 <nil key="highlightedColor"/> 194 <nil key="highlightedColor"/>
195 <userDefinedRuntimeAttributes>
196 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.total"/>
197 </userDefinedRuntimeAttributes>
187 </label> 198 </label>
188 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆฎ‹ๆญฉๆ•ฐ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HOl-Tj-xiT"> 199 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆฎ‹ๆญฉๆ•ฐ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HOl-Tj-xiT" customClass="AutoTransLabel">
189 <rect key="frame" x="10" y="52.5" width="45" height="15"/> 200 <rect key="frame" x="10" y="52.5" width="45" height="15"/>
190 <fontDescription key="fontDescription" type="system" pointSize="12"/> 201 <fontDescription key="fontDescription" type="system" pointSize="12"/>
191 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 202 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
192 <nil key="highlightedColor"/> 203 <nil key="highlightedColor"/>
204 <userDefinedRuntimeAttributes>
205 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.remaining"/>
206 </userDefinedRuntimeAttributes>
193 </label> 207 </label>
194 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="้”ๆˆ็އ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l0h-qA-2Ai"> 208 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="้”ๆˆ็އ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l0h-qA-2Ai" customClass="AutoTransLabel">
195 <rect key="frame" x="10" y="67.5" width="45" height="15"/> 209 <rect key="frame" x="10" y="67.5" width="45" height="15"/>
196 <fontDescription key="fontDescription" type="system" pointSize="12"/> 210 <fontDescription key="fontDescription" type="system" pointSize="12"/>
197 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 211 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
198 <nil key="highlightedColor"/> 212 <nil key="highlightedColor"/>
213 <userDefinedRuntimeAttributes>
214 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.percent"/>
215 </userDefinedRuntimeAttributes>
199 </label> 216 </label>
200 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0pf-fX-QXT"> 217 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0pf-fX-QXT">
201 <rect key="frame" x="63" y="37.5" width="118" height="15"/> 218 <rect key="frame" x="63" y="37.5" width="118" height="15"/>
202 <constraints> 219 <constraints>
203 <constraint firstAttribute="height" constant="15" id="Z6o-LI-Eu9"/> 220 <constraint firstAttribute="height" constant="15" id="Z6o-LI-Eu9"/>
204 </constraints> 221 </constraints>
205 <fontDescription key="fontDescription" type="system" pointSize="12"/> 222 <fontDescription key="fontDescription" type="system" pointSize="12"/>
206 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 223 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
207 <nil key="highlightedColor"/> 224 <nil key="highlightedColor"/>
208 </label> 225 </label>
209 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1NH-b3-ST8"> 226 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="500 step" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1NH-b3-ST8">
210 <rect key="frame" x="63" y="52.5" width="118" height="15"/> 227 <rect key="frame" x="63" y="52.5" width="118" height="15"/>
211 <fontDescription key="fontDescription" type="system" pointSize="12"/> 228 <fontDescription key="fontDescription" type="system" pointSize="12"/>
212 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 229 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
213 <nil key="highlightedColor"/> 230 <nil key="highlightedColor"/>
214 </label> 231 </label>
215 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="50 %" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Ru-Jc-Ouv"> 232 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="50 %" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8Ru-Jc-Ouv">
216 <rect key="frame" x="63" y="67.5" width="118" height="15"/> 233 <rect key="frame" x="63" y="67.5" width="118" height="15"/>
217 <fontDescription key="fontDescription" type="system" pointSize="12"/> 234 <fontDescription key="fontDescription" type="system" pointSize="12"/>
218 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 235 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
219 <nil key="highlightedColor"/> 236 <nil key="highlightedColor"/>
220 </label> 237 </label>
221 </subviews> 238 </subviews>
222 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 239 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
223 <constraints> 240 <constraints>
224 <constraint firstItem="l0h-qA-2Ai" firstAttribute="top" secondItem="HOl-Tj-xiT" secondAttribute="bottom" id="0dv-3h-eHs"/> 241 <constraint firstItem="l0h-qA-2Ai" firstAttribute="top" secondItem="HOl-Tj-xiT" secondAttribute="bottom" id="0dv-3h-eHs"/>
225 <constraint firstItem="l0h-qA-2Ai" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="leading" id="7z3-ph-BM4"/> 242 <constraint firstItem="l0h-qA-2Ai" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="leading" id="7z3-ph-BM4"/>
226 <constraint firstItem="1NH-b3-ST8" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="ACu-BV-ieg"/> 243 <constraint firstItem="1NH-b3-ST8" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="ACu-BV-ieg"/>
227 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="top" secondItem="1NH-b3-ST8" secondAttribute="bottom" id="Abh-FK-4X7"/> 244 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="top" secondItem="1NH-b3-ST8" secondAttribute="bottom" id="Abh-FK-4X7"/>
228 <constraint firstItem="1NH-b3-ST8" firstAttribute="top" secondItem="0pf-fX-QXT" secondAttribute="bottom" id="B3I-n2-Oks"/> 245 <constraint firstItem="1NH-b3-ST8" firstAttribute="top" secondItem="0pf-fX-QXT" secondAttribute="bottom" id="B3I-n2-Oks"/>
229 <constraint firstItem="1NH-b3-ST8" firstAttribute="height" secondItem="0pf-fX-QXT" secondAttribute="height" id="BAn-7O-jBX"/> 246 <constraint firstItem="1NH-b3-ST8" firstAttribute="height" secondItem="0pf-fX-QXT" secondAttribute="height" id="BAn-7O-jBX"/>
230 <constraint firstItem="0pf-fX-QXT" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="trailing" constant="8" id="G20-xx-HEH"/> 247 <constraint firstItem="0pf-fX-QXT" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="trailing" constant="8" id="G20-xx-HEH"/>
231 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="NIm-Zw-fnf"/> 248 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="NIm-Zw-fnf"/>
232 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="height" secondItem="0pf-fX-QXT" secondAttribute="height" id="PdQ-qd-Sqc"/> 249 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="height" secondItem="0pf-fX-QXT" secondAttribute="height" id="PdQ-qd-Sqc"/>
233 <constraint firstItem="HOl-Tj-xiT" firstAttribute="width" secondItem="YE6-wh-77T" secondAttribute="width" id="WpC-o9-bDa"/> 250 <constraint firstItem="HOl-Tj-xiT" firstAttribute="width" secondItem="YE6-wh-77T" secondAttribute="width" id="WpC-o9-bDa"/>
234 <constraint firstItem="l0h-qA-2Ai" firstAttribute="height" secondItem="YE6-wh-77T" secondAttribute="height" id="bR8-Ki-lS1"/> 251 <constraint firstItem="l0h-qA-2Ai" firstAttribute="height" secondItem="YE6-wh-77T" secondAttribute="height" id="bR8-Ki-lS1"/>
235 <constraint firstItem="HOl-Tj-xiT" firstAttribute="height" secondItem="YE6-wh-77T" secondAttribute="height" id="c0u-hz-5O9"/> 252 <constraint firstItem="HOl-Tj-xiT" firstAttribute="height" secondItem="YE6-wh-77T" secondAttribute="height" id="c0u-hz-5O9"/>
236 <constraint firstItem="1NH-b3-ST8" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="chf-kb-ClX"/> 253 <constraint firstItem="1NH-b3-ST8" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="chf-kb-ClX"/>
237 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="din-4T-V5w"/> 254 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="leading" secondItem="0pf-fX-QXT" secondAttribute="leading" id="din-4T-V5w"/>
238 <constraint firstItem="l0h-qA-2Ai" firstAttribute="width" secondItem="YE6-wh-77T" secondAttribute="width" id="eo0-xw-d1f"/> 255 <constraint firstItem="l0h-qA-2Ai" firstAttribute="width" secondItem="YE6-wh-77T" secondAttribute="width" id="eo0-xw-d1f"/>
239 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="width" secondItem="0pf-fX-QXT" secondAttribute="width" id="gjt-3e-Pkx"/> 256 <constraint firstItem="8Ru-Jc-Ouv" firstAttribute="width" secondItem="0pf-fX-QXT" secondAttribute="width" id="gjt-3e-Pkx"/>
240 <constraint firstItem="1NH-b3-ST8" firstAttribute="width" secondItem="0pf-fX-QXT" secondAttribute="width" id="kOM-6S-Amv"/> 257 <constraint firstItem="1NH-b3-ST8" firstAttribute="width" secondItem="0pf-fX-QXT" secondAttribute="width" id="kOM-6S-Amv"/>
241 <constraint firstItem="HOl-Tj-xiT" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="leading" id="oOc-TB-k4j"/> 258 <constraint firstItem="HOl-Tj-xiT" firstAttribute="leading" secondItem="YE6-wh-77T" secondAttribute="leading" id="oOc-TB-k4j"/>
242 <constraint firstItem="1NH-b3-ST8" firstAttribute="centerY" secondItem="HOl-Tj-xiT" secondAttribute="centerY" id="pGW-dw-56G"/> 259 <constraint firstItem="1NH-b3-ST8" firstAttribute="centerY" secondItem="HOl-Tj-xiT" secondAttribute="centerY" id="pGW-dw-56G"/>
243 <constraint firstItem="HOl-Tj-xiT" firstAttribute="top" secondItem="YE6-wh-77T" secondAttribute="bottom" id="s6n-mU-Sp6"/> 260 <constraint firstItem="HOl-Tj-xiT" firstAttribute="top" secondItem="YE6-wh-77T" secondAttribute="bottom" id="s6n-mU-Sp6"/>
244 <constraint firstItem="HOl-Tj-xiT" firstAttribute="centerY" secondItem="4ix-HE-d9T" secondAttribute="centerY" id="vB9-RR-pao"/> 261 <constraint firstItem="HOl-Tj-xiT" firstAttribute="centerY" secondItem="4ix-HE-d9T" secondAttribute="centerY" id="vB9-RR-pao"/>
245 <constraint firstAttribute="trailing" secondItem="0pf-fX-QXT" secondAttribute="trailing" constant="38" id="xiP-fg-Ozi"/> 262 <constraint firstAttribute="trailing" secondItem="0pf-fX-QXT" secondAttribute="trailing" constant="38" id="xiP-fg-Ozi"/>
246 <constraint firstItem="YE6-wh-77T" firstAttribute="leading" secondItem="4ix-HE-d9T" secondAttribute="leading" constant="10" id="xj6-In-ihz"/> 263 <constraint firstItem="YE6-wh-77T" firstAttribute="leading" secondItem="4ix-HE-d9T" secondAttribute="leading" constant="10" id="xj6-In-ihz"/>
247 </constraints> 264 </constraints>
248 </view> 265 </view>
249 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iEh-Ze-suq"> 266 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iEh-Ze-suq">
250 <rect key="frame" x="20" y="158" width="335" height="35"/> 267 <rect key="frame" x="20" y="158" width="335" height="35"/>
251 <subviews> 268 <subviews>
252 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UwA-5Q-gdv"> 269 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UwA-5Q-gdv">
253 <rect key="frame" x="0.0" y="0.0" width="111.5" height="35"/> 270 <rect key="frame" x="0.0" y="0.0" width="111.5" height="35"/>
254 <subviews> 271 <subviews>
255 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆถˆ่ฒปใ‚ซใƒญใƒชใƒผ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zRU-L6-Ed4"> 272 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆถˆ่ฒปใ‚ซใƒญใƒชใƒผ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zRU-L6-Ed4" customClass="AutoTransLabel">
256 <rect key="frame" x="0.0" y="0.0" width="111.5" height="18"/> 273 <rect key="frame" x="0.0" y="0.0" width="111.5" height="18"/>
257 <constraints> 274 <constraints>
258 <constraint firstAttribute="height" constant="18" id="Ywp-RA-6am"/> 275 <constraint firstAttribute="height" constant="18" id="Ywp-RA-6am"/>
259 </constraints> 276 </constraints>
260 <fontDescription key="fontDescription" type="system" pointSize="12"/> 277 <fontDescription key="fontDescription" type="system" pointSize="12"/>
261 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 278 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
262 <nil key="highlightedColor"/> 279 <nil key="highlightedColor"/>
280 <userDefinedRuntimeAttributes>
281 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.calories"/>
282 </userDefinedRuntimeAttributes>
263 </label> 283 </label>
264 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 kcal" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dAE-C8-QLr"> 284 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1000 kcal" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dAE-C8-QLr">
265 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/> 285 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/>
266 <constraints> 286 <constraints>
267 <constraint firstAttribute="height" constant="18" id="r0d-xi-3u7"/> 287 <constraint firstAttribute="height" constant="18" id="r0d-xi-3u7"/>
268 </constraints> 288 </constraints>
269 <fontDescription key="fontDescription" type="system" pointSize="12"/> 289 <fontDescription key="fontDescription" type="system" pointSize="12"/>
270 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 290 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
271 <nil key="highlightedColor"/> 291 <nil key="highlightedColor"/>
272 </label> 292 </label>
273 </subviews> 293 </subviews>
274 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 294 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
275 <constraints> 295 <constraints>
276 <constraint firstItem="zRU-L6-Ed4" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="leading" id="Zbe-7f-cuR"/> 296 <constraint firstItem="zRU-L6-Ed4" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="leading" id="Zbe-7f-cuR"/>
277 <constraint firstAttribute="bottom" secondItem="dAE-C8-QLr" secondAttribute="bottom" id="aZH-zh-M1V"/> 297 <constraint firstAttribute="bottom" secondItem="dAE-C8-QLr" secondAttribute="bottom" id="aZH-zh-M1V"/>
278 <constraint firstItem="zRU-L6-Ed4" firstAttribute="top" secondItem="UwA-5Q-gdv" secondAttribute="top" id="bsw-KU-Tcu"/> 298 <constraint firstItem="zRU-L6-Ed4" firstAttribute="top" secondItem="UwA-5Q-gdv" secondAttribute="top" id="bsw-KU-Tcu"/>
279 <constraint firstAttribute="trailing" secondItem="zRU-L6-Ed4" secondAttribute="trailing" id="iMB-ch-u4B"/> 299 <constraint firstAttribute="trailing" secondItem="zRU-L6-Ed4" secondAttribute="trailing" id="iMB-ch-u4B"/>
280 <constraint firstItem="dAE-C8-QLr" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="leading" id="qNu-WH-Jjj"/> 300 <constraint firstItem="dAE-C8-QLr" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="leading" id="qNu-WH-Jjj"/>
281 <constraint firstAttribute="trailing" secondItem="dAE-C8-QLr" secondAttribute="trailing" id="wRF-1x-XC1"/> 301 <constraint firstAttribute="trailing" secondItem="dAE-C8-QLr" secondAttribute="trailing" id="wRF-1x-XC1"/>
282 </constraints> 302 </constraints>
283 </view> 303 </view>
284 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BVs-KG-fDF"> 304 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BVs-KG-fDF">
285 <rect key="frame" x="111.5" y="0.0" width="112" height="35"/> 305 <rect key="frame" x="111.5" y="0.0" width="112" height="35"/>
286 <subviews> 306 <subviews>
287 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="่ท้›ข" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XGt-pc-sd7"> 307 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="่ท้›ข" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XGt-pc-sd7" customClass="AutoTransLabel">
288 <rect key="frame" x="0.0" y="0.0" width="112" height="18"/> 308 <rect key="frame" x="0.0" y="0.0" width="112" height="18"/>
289 <constraints> 309 <constraints>
290 <constraint firstAttribute="height" constant="18" id="tct-pY-7wo"/> 310 <constraint firstAttribute="height" constant="18" id="tct-pY-7wo"/>
291 </constraints> 311 </constraints>
292 <fontDescription key="fontDescription" type="system" pointSize="12"/> 312 <fontDescription key="fontDescription" type="system" pointSize="12"/>
293 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 313 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
294 <nil key="highlightedColor"/> 314 <nil key="highlightedColor"/>
315 <userDefinedRuntimeAttributes>
316 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.distance"/>
317 </userDefinedRuntimeAttributes>
295 </label> 318 </label>
296 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4.0 KM" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1tR-JC-pyw"> 319 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4.0 KM" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1tR-JC-pyw">
297 <rect key="frame" x="0.0" y="17" width="112" height="18"/> 320 <rect key="frame" x="0.0" y="17" width="112" height="18"/>
298 <constraints> 321 <constraints>
299 <constraint firstAttribute="height" constant="18" id="sNT-xl-BKH"/> 322 <constraint firstAttribute="height" constant="18" id="sNT-xl-BKH"/>
300 </constraints> 323 </constraints>
301 <fontDescription key="fontDescription" type="system" pointSize="12"/> 324 <fontDescription key="fontDescription" type="system" pointSize="12"/>
302 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 325 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
303 <nil key="highlightedColor"/> 326 <nil key="highlightedColor"/>
304 </label> 327 </label>
305 </subviews> 328 </subviews>
306 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 329 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
307 <constraints> 330 <constraints>
308 <constraint firstItem="XGt-pc-sd7" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="leading" id="Bd8-ZX-shc"/> 331 <constraint firstItem="XGt-pc-sd7" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="leading" id="Bd8-ZX-shc"/>
309 <constraint firstAttribute="trailing" secondItem="1tR-JC-pyw" secondAttribute="trailing" id="Mrw-gb-r3n"/> 332 <constraint firstAttribute="trailing" secondItem="1tR-JC-pyw" secondAttribute="trailing" id="Mrw-gb-r3n"/>
310 <constraint firstAttribute="trailing" secondItem="XGt-pc-sd7" secondAttribute="trailing" id="cTc-te-Pc1"/> 333 <constraint firstAttribute="trailing" secondItem="XGt-pc-sd7" secondAttribute="trailing" id="cTc-te-Pc1"/>
311 <constraint firstItem="XGt-pc-sd7" firstAttribute="top" secondItem="BVs-KG-fDF" secondAttribute="top" id="cs1-A7-e5C"/> 334 <constraint firstItem="XGt-pc-sd7" firstAttribute="top" secondItem="BVs-KG-fDF" secondAttribute="top" id="cs1-A7-e5C"/>
312 <constraint firstAttribute="bottom" secondItem="1tR-JC-pyw" secondAttribute="bottom" id="vsZ-FE-X5m"/> 335 <constraint firstAttribute="bottom" secondItem="1tR-JC-pyw" secondAttribute="bottom" id="vsZ-FE-X5m"/>
313 <constraint firstItem="1tR-JC-pyw" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="leading" id="xOd-ZK-rZn"/> 336 <constraint firstItem="1tR-JC-pyw" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="leading" id="xOd-ZK-rZn"/>
314 </constraints> 337 </constraints>
315 </view> 338 </view>
316 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j5h-QD-Igf"> 339 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j5h-QD-Igf">
317 <rect key="frame" x="223.5" y="0.0" width="111.5" height="35"/> 340 <rect key="frame" x="223.5" y="0.0" width="111.5" height="35"/>
318 <subviews> 341 <subviews>
319 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆ™‚้–“" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OEO-l8-Ibg"> 342 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๆ™‚้–“" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OEO-l8-Ibg" customClass="AutoTransLabel">
320 <rect key="frame" x="0.0" y="0.0" width="111.5" height="18"/> 343 <rect key="frame" x="0.0" y="0.0" width="111.5" height="18"/>
321 <constraints> 344 <constraints>
322 <constraint firstAttribute="height" constant="18" id="EVe-qW-qqp"/> 345 <constraint firstAttribute="height" constant="18" id="EVe-qW-qqp"/>
323 </constraints> 346 </constraints>
324 <fontDescription key="fontDescription" type="system" pointSize="12"/> 347 <fontDescription key="fontDescription" type="system" pointSize="12"/>
325 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 348 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
326 <nil key="highlightedColor"/> 349 <nil key="highlightedColor"/>
350 <userDefinedRuntimeAttributes>
351 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.history.title.time"/>
352 </userDefinedRuntimeAttributes>
327 </label> 353 </label>
328 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1:00 ๆ™‚้–“" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PfZ-7x-LAR"> 354 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1:00 ๆ™‚้–“" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PfZ-7x-LAR">
329 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/> 355 <rect key="frame" x="0.0" y="17" width="111.5" height="18"/>
330 <constraints> 356 <constraints>
331 <constraint firstAttribute="height" constant="18" id="lno-Dx-ZNm"/> 357 <constraint firstAttribute="height" constant="18" id="lno-Dx-ZNm"/>
332 </constraints> 358 </constraints>
333 <fontDescription key="fontDescription" type="system" pointSize="12"/> 359 <fontDescription key="fontDescription" type="system" pointSize="12"/>
334 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 360 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
335 <nil key="highlightedColor"/> 361 <nil key="highlightedColor"/>
336 </label> 362 </label>
337 </subviews> 363 </subviews>
338 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 364 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
339 <constraints> 365 <constraints>
340 <constraint firstAttribute="trailing" secondItem="PfZ-7x-LAR" secondAttribute="trailing" id="3Ir-mZ-xmI"/> 366 <constraint firstAttribute="trailing" secondItem="PfZ-7x-LAR" secondAttribute="trailing" id="3Ir-mZ-xmI"/>
341 <constraint firstItem="OEO-l8-Ibg" firstAttribute="leading" secondItem="j5h-QD-Igf" secondAttribute="leading" id="5oW-CQ-vWi"/> 367 <constraint firstItem="OEO-l8-Ibg" firstAttribute="leading" secondItem="j5h-QD-Igf" secondAttribute="leading" id="5oW-CQ-vWi"/>
342 <constraint firstItem="PfZ-7x-LAR" firstAttribute="leading" secondItem="j5h-QD-Igf" secondAttribute="leading" id="Qur-SO-10d"/> 368 <constraint firstItem="PfZ-7x-LAR" firstAttribute="leading" secondItem="j5h-QD-Igf" secondAttribute="leading" id="Qur-SO-10d"/>
343 <constraint firstAttribute="trailing" secondItem="OEO-l8-Ibg" secondAttribute="trailing" id="WQn-Gv-plQ"/> 369 <constraint firstAttribute="trailing" secondItem="OEO-l8-Ibg" secondAttribute="trailing" id="WQn-Gv-plQ"/>
344 <constraint firstItem="OEO-l8-Ibg" firstAttribute="top" secondItem="j5h-QD-Igf" secondAttribute="top" id="lt7-Qt-rBM"/> 370 <constraint firstItem="OEO-l8-Ibg" firstAttribute="top" secondItem="j5h-QD-Igf" secondAttribute="top" id="lt7-Qt-rBM"/>
345 <constraint firstAttribute="bottom" secondItem="PfZ-7x-LAR" secondAttribute="bottom" id="qcA-M9-NYS"/> 371 <constraint firstAttribute="bottom" secondItem="PfZ-7x-LAR" secondAttribute="bottom" id="qcA-M9-NYS"/>
346 </constraints> 372 </constraints>
347 </view> 373 </view>
348 </subviews> 374 </subviews>
349 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 375 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
350 <constraints> 376 <constraints>
351 <constraint firstAttribute="bottom" secondItem="j5h-QD-Igf" secondAttribute="bottom" id="IsO-UX-w9t"/> 377 <constraint firstAttribute="bottom" secondItem="j5h-QD-Igf" secondAttribute="bottom" id="IsO-UX-w9t"/>
352 <constraint firstItem="j5h-QD-Igf" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Msr-oS-nFH"/> 378 <constraint firstItem="j5h-QD-Igf" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Msr-oS-nFH"/>
353 <constraint firstItem="BVs-KG-fDF" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Ohk-mJ-oCK"/> 379 <constraint firstItem="BVs-KG-fDF" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Ohk-mJ-oCK"/>
354 <constraint firstItem="UwA-5Q-gdv" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Pue-sC-wfB"/> 380 <constraint firstItem="UwA-5Q-gdv" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="top" id="Pue-sC-wfB"/>
355 <constraint firstAttribute="height" constant="35" id="WDe-uC-4Qb"/> 381 <constraint firstAttribute="height" constant="35" id="WDe-uC-4Qb"/>
356 <constraint firstItem="BVs-KG-fDF" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="trailing" id="f8Q-F0-hjc"/> 382 <constraint firstItem="BVs-KG-fDF" firstAttribute="leading" secondItem="UwA-5Q-gdv" secondAttribute="trailing" id="f8Q-F0-hjc"/>
357 <constraint firstItem="BVs-KG-fDF" firstAttribute="width" secondItem="UwA-5Q-gdv" secondAttribute="width" id="fdz-YH-1kJ"/> 383 <constraint firstItem="BVs-KG-fDF" firstAttribute="width" secondItem="UwA-5Q-gdv" secondAttribute="width" id="fdz-YH-1kJ"/>
358 <constraint firstAttribute="bottom" secondItem="UwA-5Q-gdv" secondAttribute="bottom" id="gxD-wy-TgL"/> 384 <constraint firstAttribute="bottom" secondItem="UwA-5Q-gdv" secondAttribute="bottom" id="gxD-wy-TgL"/>
359 <constraint firstItem="j5h-QD-Igf" firstAttribute="width" secondItem="UwA-5Q-gdv" secondAttribute="width" id="i3o-n4-fZN"/> 385 <constraint firstItem="j5h-QD-Igf" firstAttribute="width" secondItem="UwA-5Q-gdv" secondAttribute="width" id="i3o-n4-fZN"/>
360 <constraint firstAttribute="trailing" secondItem="j5h-QD-Igf" secondAttribute="trailing" id="nT6-nS-H9z"/> 386 <constraint firstAttribute="trailing" secondItem="j5h-QD-Igf" secondAttribute="trailing" id="nT6-nS-H9z"/>
361 <constraint firstAttribute="bottom" secondItem="BVs-KG-fDF" secondAttribute="bottom" id="nqB-N3-F3F"/> 387 <constraint firstAttribute="bottom" secondItem="BVs-KG-fDF" secondAttribute="bottom" id="nqB-N3-F3F"/>
362 <constraint firstItem="UwA-5Q-gdv" firstAttribute="leading" secondItem="iEh-Ze-suq" secondAttribute="leading" id="oV9-IH-tYC"/> 388 <constraint firstItem="UwA-5Q-gdv" firstAttribute="leading" secondItem="iEh-Ze-suq" secondAttribute="leading" id="oV9-IH-tYC"/>
363 <constraint firstItem="j5h-QD-Igf" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="trailing" id="zOb-WE-3CI"/> 389 <constraint firstItem="j5h-QD-Igf" firstAttribute="leading" secondItem="BVs-KG-fDF" secondAttribute="trailing" id="zOb-WE-3CI"/>
364 </constraints> 390 </constraints>
365 </view> 391 </view>
366 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VqD-Y3-cYQ" customClass="BarChartView" customModule="Charts"> 392 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VqD-Y3-cYQ" customClass="BarChartView" customModule="Charts">
367 <rect key="frame" x="0.0" y="201" width="375" height="100"/> 393 <rect key="frame" x="0.0" y="201" width="375" height="100"/>
368 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 394 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
369 <constraints> 395 <constraints>
370 <constraint firstAttribute="height" constant="100" id="aQR-hf-MhR"/> 396 <constraint firstAttribute="height" constant="100" id="aQR-hf-MhR"/>
371 </constraints> 397 </constraints>
372 </view> 398 </view>
373 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Iw2-nW-e7g" customClass="CollectionView"> 399 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Iw2-nW-e7g" customClass="CollectionView">
374 <rect key="frame" x="20" y="316" width="335" height="50"/> 400 <rect key="frame" x="20" y="316" width="335" height="50"/>
375 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 401 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
376 <constraints> 402 <constraints>
377 <constraint firstAttribute="height" constant="50" id="Yzh-hD-r0n"/> 403 <constraint firstAttribute="height" constant="50" id="Yzh-hD-r0n"/>
378 </constraints> 404 </constraints>
379 </view> 405 </view>
380 </subviews> 406 </subviews>
381 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 407 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
382 <constraints> 408 <constraints>
383 <constraint firstItem="VqD-Y3-cYQ" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="bottom" constant="8" id="0BA-6p-JLT"/> 409 <constraint firstItem="VqD-Y3-cYQ" firstAttribute="top" secondItem="iEh-Ze-suq" secondAttribute="bottom" constant="8" id="0BA-6p-JLT"/>
384 <constraint firstItem="Iw2-nW-e7g" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="2lH-sF-Mp0"/> 410 <constraint firstItem="Iw2-nW-e7g" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="2lH-sF-Mp0"/>
385 <constraint firstItem="iEh-Ze-suq" firstAttribute="top" secondItem="4ix-HE-d9T" secondAttribute="bottom" constant="8" id="9Sm-IQ-feL"/> 411 <constraint firstItem="iEh-Ze-suq" firstAttribute="top" secondItem="4ix-HE-d9T" secondAttribute="bottom" constant="8" id="9Sm-IQ-feL"/>
386 <constraint firstItem="VqD-Y3-cYQ" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" id="Gbd-bD-rFf"/> 412 <constraint firstItem="VqD-Y3-cYQ" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" id="Gbd-bD-rFf"/>
387 <constraint firstItem="4ix-HE-d9T" firstAttribute="top" secondItem="Cam-ML-IEO" secondAttribute="top" constant="30" id="JyQ-KD-MhR"/> 413 <constraint firstItem="4ix-HE-d9T" firstAttribute="top" secondItem="Cam-ML-IEO" secondAttribute="top" constant="30" id="JyQ-KD-MhR"/>
388 <constraint firstAttribute="trailing" secondItem="iEh-Ze-suq" secondAttribute="trailing" constant="20" id="RcZ-yN-56e"/> 414 <constraint firstAttribute="trailing" secondItem="iEh-Ze-suq" secondAttribute="trailing" constant="20" id="RcZ-yN-56e"/>
389 <constraint firstAttribute="trailing" secondItem="Iw2-nW-e7g" secondAttribute="trailing" constant="20" id="Xso-Or-Fgf"/> 415 <constraint firstAttribute="trailing" secondItem="Iw2-nW-e7g" secondAttribute="trailing" constant="20" id="Xso-Or-Fgf"/>
390 <constraint firstItem="Kzk-mN-AOf" firstAttribute="top" secondItem="Cam-ML-IEO" secondAttribute="top" constant="30" id="YzU-Mb-veC"/> 416 <constraint firstItem="Kzk-mN-AOf" firstAttribute="top" secondItem="Cam-ML-IEO" secondAttribute="top" constant="30" id="YzU-Mb-veC"/>
391 <constraint firstAttribute="trailing" secondItem="4ix-HE-d9T" secondAttribute="trailing" constant="8" id="del-xz-Tos"/> 417 <constraint firstAttribute="trailing" secondItem="4ix-HE-d9T" secondAttribute="trailing" constant="8" id="del-xz-Tos"/>
392 <constraint firstItem="4ix-HE-d9T" firstAttribute="height" secondItem="Kzk-mN-AOf" secondAttribute="height" id="duV-wT-9wp"/> 418 <constraint firstItem="4ix-HE-d9T" firstAttribute="height" secondItem="Kzk-mN-AOf" secondAttribute="height" id="duV-wT-9wp"/>
393 <constraint firstItem="Iw2-nW-e7g" firstAttribute="top" secondItem="VqD-Y3-cYQ" secondAttribute="bottom" constant="15" id="ekR-kS-L5v"/> 419 <constraint firstItem="Iw2-nW-e7g" firstAttribute="top" secondItem="VqD-Y3-cYQ" secondAttribute="bottom" constant="15" id="ekR-kS-L5v"/>
394 <constraint firstItem="Kzk-mN-AOf" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="hFq-WM-gLq"/> 420 <constraint firstItem="Kzk-mN-AOf" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="hFq-WM-gLq"/>
395 <constraint firstItem="4ix-HE-d9T" firstAttribute="leading" secondItem="Kzk-mN-AOf" secondAttribute="trailing" constant="8" id="hzO-hA-cNG"/> 421 <constraint firstItem="4ix-HE-d9T" firstAttribute="leading" secondItem="Kzk-mN-AOf" secondAttribute="trailing" constant="8" id="hzO-hA-cNG"/>
396 <constraint firstAttribute="trailing" secondItem="VqD-Y3-cYQ" secondAttribute="trailing" id="ptF-2O-CNR"/> 422 <constraint firstAttribute="trailing" secondItem="VqD-Y3-cYQ" secondAttribute="trailing" id="ptF-2O-CNR"/>
397 <constraint firstItem="iEh-Ze-suq" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="u5o-P4-qkL"/> 423 <constraint firstItem="iEh-Ze-suq" firstAttribute="leading" secondItem="Cam-ML-IEO" secondAttribute="leading" constant="20" id="u5o-P4-qkL"/>
398 </constraints> 424 </constraints>
399 </view> 425 </view>
400 </subviews> 426 </subviews>
401 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 427 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
402 <constraints> 428 <constraints>
403 <constraint firstItem="Cam-ML-IEO" firstAttribute="width" secondItem="rey-N3-l8b" secondAttribute="width" id="LbF-3h-cxa"/> 429 <constraint firstItem="Cam-ML-IEO" firstAttribute="width" secondItem="rey-N3-l8b" secondAttribute="width" id="LbF-3h-cxa"/>
404 <constraint firstAttribute="trailing" secondItem="Cam-ML-IEO" secondAttribute="trailing" id="UHb-6d-wF8"/> 430 <constraint firstAttribute="trailing" secondItem="Cam-ML-IEO" secondAttribute="trailing" id="UHb-6d-wF8"/>
405 <constraint firstItem="Cam-ML-IEO" firstAttribute="leading" secondItem="rey-N3-l8b" secondAttribute="leading" id="Y4U-kD-V28"/> 431 <constraint firstItem="Cam-ML-IEO" firstAttribute="leading" secondItem="rey-N3-l8b" secondAttribute="leading" id="Y4U-kD-V28"/>
406 <constraint firstItem="Cam-ML-IEO" firstAttribute="top" secondItem="rey-N3-l8b" secondAttribute="top" id="ohS-iH-IIM"/> 432 <constraint firstItem="Cam-ML-IEO" firstAttribute="top" secondItem="rey-N3-l8b" secondAttribute="top" id="ohS-iH-IIM"/>
407 <constraint firstAttribute="bottom" secondItem="Cam-ML-IEO" secondAttribute="bottom" id="th8-dH-zv1"/> 433 <constraint firstAttribute="bottom" secondItem="Cam-ML-IEO" secondAttribute="bottom" id="th8-dH-zv1"/>
408 </constraints> 434 </constraints>
409 <connections> 435 <connections>
410 <outlet property="delegate" destination="-1" id="3Fl-Qy-gjm"/> 436 <outlet property="delegate" destination="-1" id="3Fl-Qy-gjm"/>
411 </connections> 437 </connections>
412 </scrollView> 438 </scrollView>
413 </subviews> 439 </subviews>
414 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 440 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
415 <constraints> 441 <constraints>
416 <constraint firstAttribute="trailing" secondItem="FXQ-4O-sRc" secondAttribute="trailing" constant="5" id="5y0-NC-rHp"/> 442 <constraint firstAttribute="trailing" secondItem="FXQ-4O-sRc" secondAttribute="trailing" constant="5" id="5y0-NC-rHp"/>
417 <constraint firstItem="FXQ-4O-sRc" firstAttribute="leading" secondItem="FLa-rV-Aas" secondAttribute="leading" constant="5" id="C0U-21-SKl"/> 443 <constraint firstItem="FXQ-4O-sRc" firstAttribute="leading" secondItem="FLa-rV-Aas" secondAttribute="leading" constant="5" id="C0U-21-SKl"/>
418 <constraint firstItem="FXQ-4O-sRc" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="top" id="CB0-VD-h5m"/> 444 <constraint firstItem="FXQ-4O-sRc" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="top" id="CB0-VD-h5m"/>
419 <constraint firstAttribute="bottom" secondItem="FXQ-4O-sRc" secondAttribute="bottom" id="FbP-FY-h1E"/> 445 <constraint firstAttribute="bottom" secondItem="FXQ-4O-sRc" secondAttribute="bottom" id="FbP-FY-h1E"/>
420 <constraint firstAttribute="trailing" secondItem="rey-N3-l8b" secondAttribute="trailing" id="KFD-f5-xci"/> 446 <constraint firstAttribute="trailing" secondItem="rey-N3-l8b" secondAttribute="trailing" id="KFD-f5-xci"/>
421 <constraint firstItem="rey-N3-l8b" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="top" id="SpB-31-H3a"/> 447 <constraint firstItem="rey-N3-l8b" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="top" id="SpB-31-H3a"/>
422 <constraint firstItem="rey-N3-l8b" firstAttribute="leading" secondItem="FLa-rV-Aas" secondAttribute="leading" id="YvS-I2-8Dg"/> 448 <constraint firstItem="rey-N3-l8b" firstAttribute="leading" secondItem="FLa-rV-Aas" secondAttribute="leading" id="YvS-I2-8Dg"/>
423 <constraint firstAttribute="bottom" secondItem="rey-N3-l8b" secondAttribute="bottom" id="enX-7g-Eib"/> 449 <constraint firstAttribute="bottom" secondItem="rey-N3-l8b" secondAttribute="bottom" id="enX-7g-Eib"/>
424 </constraints> 450 </constraints>
425 <connections> 451 <connections>
426 <outletCollection property="gestureRecognizers" destination="Qjg-St-rCc" appends="YES" id="egt-sX-aBC"/> 452 <outletCollection property="gestureRecognizers" destination="Qjg-St-rCc" appends="YES" id="egt-sX-aBC"/>
427 <outletCollection property="gestureRecognizers" destination="VSZ-i0-Jhb" appends="YES" id="UKr-c3-9pp"/> 453 <outletCollection property="gestureRecognizers" destination="VSZ-i0-Jhb" appends="YES" id="UKr-c3-9pp"/>
428 </connections> 454 </connections>
429 </view> 455 </view>
430 </subviews> 456 </subviews>
431 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 457 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
432 <gestureRecognizers/> 458 <gestureRecognizers/>
433 <constraints> 459 <constraints>
434 <constraint firstAttribute="trailing" secondItem="Cf1-lP-zbB" secondAttribute="trailing" constant="10" id="20C-UL-MCu"/> 460 <constraint firstAttribute="trailing" secondItem="Cf1-lP-zbB" secondAttribute="trailing" constant="10" id="20C-UL-MCu"/>
435 <constraint firstItem="clL-JG-rbd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3tf-ab-v41"/> 461 <constraint firstItem="clL-JG-rbd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3tf-ab-v41"/>
436 <constraint firstItem="Cf1-lP-zbB" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="bottom" id="5vy-x5-G38"/> 462 <constraint firstItem="Cf1-lP-zbB" firstAttribute="top" secondItem="clL-JG-rbd" secondAttribute="bottom" id="5vy-x5-G38"/>
437 <constraint firstItem="Cf1-lP-zbB" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="10" id="974-wJ-aRb"/> 463 <constraint firstItem="Cf1-lP-zbB" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="10" id="974-wJ-aRb"/>
438 <constraint firstItem="yxY-4d-tB6" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="2" id="Jqg-nE-6dv"/> 464 <constraint firstItem="yxY-4d-tB6" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="2" id="Jqg-nE-6dv"/>
439 <constraint firstAttribute="trailing" secondItem="BVv-qD-EHM" secondAttribute="trailing" id="MCi-Tl-hSp"/> 465 <constraint firstAttribute="trailing" secondItem="BVv-qD-EHM" secondAttribute="trailing" id="MCi-Tl-hSp"/>
440 <constraint firstAttribute="trailing" secondItem="yxY-4d-tB6" secondAttribute="trailing" constant="2" id="Qs5-ky-nmB"/> 466 <constraint firstAttribute="trailing" secondItem="yxY-4d-tB6" secondAttribute="trailing" constant="2" id="Qs5-ky-nmB"/>
441 <constraint firstAttribute="bottom" secondItem="BVv-qD-EHM" secondAttribute="bottom" constant="60" id="SbT-PG-8MJ"/> 467 <constraint firstAttribute="bottom" secondItem="BVv-qD-EHM" secondAttribute="bottom" constant="60" id="SbT-PG-8MJ"/>
442 <constraint firstItem="BVv-qD-EHM" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="SqH-AA-Z2K"/> 468 <constraint firstItem="BVv-qD-EHM" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="SqH-AA-Z2K"/>
443 <constraint firstItem="FLa-rV-Aas" firstAttribute="top" secondItem="yxY-4d-tB6" secondAttribute="bottom" constant="15" id="cWw-RX-1Kp"/> 469 <constraint firstItem="FLa-rV-Aas" firstAttribute="top" secondItem="yxY-4d-tB6" secondAttribute="bottom" constant="15" id="cWw-RX-1Kp"/>
444 <constraint firstItem="yxY-4d-tB6" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="bottom" constant="15" id="dSN-ey-gQ7"/> 470 <constraint firstItem="yxY-4d-tB6" firstAttribute="top" secondItem="Cf1-lP-zbB" secondAttribute="bottom" constant="15" id="dSN-ey-gQ7"/>
445 <constraint firstItem="clL-JG-rbd" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="i5Z-XR-Msb"/> 471 <constraint firstItem="clL-JG-rbd" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="i5Z-XR-Msb"/>
446 <constraint firstItem="FLa-rV-Aas" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="iiN-Zj-1uu"/> 472 <constraint firstItem="FLa-rV-Aas" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="iiN-Zj-1uu"/>
447 <constraint firstAttribute="trailing" secondItem="FLa-rV-Aas" secondAttribute="trailing" id="jme-cz-cFt"/> 473 <constraint firstAttribute="trailing" secondItem="FLa-rV-Aas" secondAttribute="trailing" id="jme-cz-cFt"/>
448 <constraint firstItem="BVv-qD-EHM" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="bottom" constant="5" id="qbT-yT-phN"/> 474 <constraint firstItem="BVv-qD-EHM" firstAttribute="top" secondItem="FLa-rV-Aas" secondAttribute="bottom" constant="5" id="qbT-yT-phN"/>
449 <constraint firstAttribute="trailing" secondItem="clL-JG-rbd" secondAttribute="trailing" id="ri5-LG-xJH"/> 475 <constraint firstAttribute="trailing" secondItem="clL-JG-rbd" secondAttribute="trailing" id="ri5-LG-xJH"/>
450 </constraints> 476 </constraints>
451 <point key="canvasLocation" x="26.5" y="52.5"/> 477 <point key="canvasLocation" x="26.5" y="52.5"/>
452 </view> 478 </view>
453 <swipeGestureRecognizer direction="left" id="Qjg-St-rCc"> 479 <swipeGestureRecognizer direction="left" id="Qjg-St-rCc">
454 <connections> 480 <connections>
455 <action selector="swipeAction:" destination="-1" id="2Vl-bM-Ta7"/> 481 <action selector="swipeAction:" destination="-1" id="2Vl-bM-Ta7"/>
456 </connections> 482 </connections>
457 </swipeGestureRecognizer> 483 </swipeGestureRecognizer>
458 <swipeGestureRecognizer direction="right" id="VSZ-i0-Jhb"> 484 <swipeGestureRecognizer direction="right" id="VSZ-i0-Jhb">
459 <connections> 485 <connections>
460 <action selector="swipeAction:" destination="-1" id="hoY-6M-DoS"/> 486 <action selector="swipeAction:" destination="-1" id="hoY-6M-DoS"/>
461 </connections> 487 </connections>
462 </swipeGestureRecognizer> 488 </swipeGestureRecognizer>
463 </objects> 489 </objects>
464 <resources> 490 <resources>
465 <image name="arrow_back" width="22" height="22"/> 491 <image name="arrow_back" width="22" height="22"/>
466 <image name="arrow_next" width="22" height="22"/> 492 <image name="arrow_next" width="22" height="22"/>
467 <image name="icon_menu" width="30" height="30"/> 493 <image name="icon_menu" width="30" height="30"/>
468 <image name="today_back_button" width="73" height="37"/> 494 <image name="today_back_button" width="73" height="37"/>
469 </resources> 495 </resources>
470 </document> 496 </document>
LifeLog/LifeLog/Localizable.strings
1 /* 1 /*
2 Localizable.strings 2 Localizable.strings
3 LifeLog 3 LifeLog
4 4
5 Created by Nguyen Van Phong on 7/27/17. 5 Created by Nguyen Van Phong on 7/27/17.
6 Copyright ยฉ 2017 PhongNV. All rights reserved. 6 Copyright ยฉ 2017 PhongNV. All rights reserved.
7 */ 7 */
8 8
9 // Common 9 // Common
10 "lifelog.common.year" = "ๅนด"; 10 "lifelog.common.year" = "ๅนด";
11 "lifelog.common.month" = "ๆœˆ"; 11 "lifelog.common.month" = "ๆœˆ";
12 "lifelog.common.day" = "ๆ—ฅ"; 12 "lifelog.common.day" = "ๆ—ฅ";
13 "lifelog.common.email" = "ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น"; 13 "lifelog.common.email" = "ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น";
14 "lifelog.common.password" = "ใƒ‘ใ‚นใƒฏใƒผใƒ‰"; 14 "lifelog.common.password" = "ใƒ‘ใ‚นใƒฏใƒผใƒ‰";
15 "lifelog.common.back" = "ๆˆปใ‚‹"; 15 "lifelog.common.back" = "ๆˆปใ‚‹";
16 // Login 16 // Login
17 "lifelog.login.title" = "ใƒฉใ‚คใƒ•ใƒญใ‚ฐ"; 17 "lifelog.login.title" = "ใƒฉใ‚คใƒ•ใƒญใ‚ฐ";
18 "lifelog.login.button.login" = "ใƒญใ‚ฐใ‚คใƒณ"; 18 "lifelog.login.button.login" = "ใƒญใ‚ฐใ‚คใƒณ";
19 "lifelog.login.label.register" = "็™ป้ŒฒใŒใพใ ใฎๆ–น"; 19 "lifelog.login.label.register" = "็™ป้ŒฒใŒใพใ ใฎๆ–น";
20 "lifelog.login.button.register" = "ๆ–ฐ่ฆ็™ป้Œฒ"; 20 "lifelog.login.button.register" = "ๆ–ฐ่ฆ็™ป้Œฒ";
21 "lifelog.login.forget.password" = "ใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ใŠๅฟ˜ใ‚Œใฎๆ–น"; 21 "lifelog.login.forget.password" = "ใƒ‘ใ‚นใƒฏใƒผใƒ‰ใ‚’ใŠๅฟ˜ใ‚Œใฎๆ–น";
22 // Register 22 // Register
23 "lifelog.register.title" = "ไผšๅ“ก็™ป้Œฒ"; 23 "lifelog.register.title" = "ไผšๅ“ก็™ป้Œฒ";
24 "lifelog.register.username" = "ใƒฆใƒผใ‚ถใƒผๅ"; 24 "lifelog.register.username" = "ใƒฆใƒผใ‚ถใƒผๅ";
25 "lifelog.register.name" = "ๆฐๅ"; 25 "lifelog.register.name" = "ๆฐๅ";
26 "lifelog.register.nickname" = "ใƒ‹ใƒƒใ‚ฏใƒใƒผใƒ "; 26 "lifelog.register.nickname" = "ใƒ‹ใƒƒใ‚ฏใƒใƒผใƒ ";
27 "lifelog.register.confirmation.password" = "็ขบ่ช็”จใƒ‘ใ‚นใƒฏใƒผใƒ‰"; 27 "lifelog.register.confirmation.password" = "็ขบ่ช็”จใƒ‘ใ‚นใƒฏใƒผใƒ‰";
28 "lifelog.register.sex" = "ๆ€งๅˆฅ"; 28 "lifelog.register.sex" = "ๆ€งๅˆฅ";
29 "lifelog.register.birthday" = "็”Ÿๅนดๆœˆๆ—ฅ"; 29 "lifelog.register.birthday" = "็”Ÿๅนดๆœˆๆ—ฅ";
30 "lifelog.register.height" = "่บซ้•ท"; 30 "lifelog.register.height" = "่บซ้•ท";
31 "lifelog.register.height.unit" = "cm"; 31 "lifelog.register.height.unit" = "cm";
32 "lifelog.register.weight.unit" = "kg"; 32 "lifelog.register.weight.unit" = "kg";
33 "lifelog.register.weight" = "ไฝ“้‡"; 33 "lifelog.register.weight" = "ไฝ“้‡";
34 "lifelog.register.fat.percentage" = "ไฝ“่„‚่‚ช็އ"; 34 "lifelog.register.fat.percentage" = "ไฝ“่„‚่‚ช็އ";
35 "lifelog.register.fat.percentage.unit" = "%"; 35 "lifelog.register.fat.percentage.unit" = "%";
36 "lifelog.register.daily.physical.activity.level" = "1ๆ—ฅใฎ่บซไฝ“ๆดปๅ‹•ใƒฌใƒ™ใƒซ"; 36 "lifelog.register.daily.physical.activity.level" = "1ๆ—ฅใฎ่บซไฝ“ๆดปๅ‹•ใƒฌใƒ™ใƒซ";
37 "lifelog.register.low" = "ไฝŽใ„"; 37 "lifelog.register.low" = "ไฝŽใ„";
38 "lifelog.register.normal" = "ๆ™ฎ้€š"; 38 "lifelog.register.normal" = "ๆ™ฎ้€š";
39 "lifelog.register.high" = "้ซ˜ใ„"; 39 "lifelog.register.high" = "้ซ˜ใ„";
40 "lifelog.register.area" = "ใŠไฝใ„ใฎๅœฐๅŸŸ"; 40 "lifelog.register.area" = "ใŠไฝใ„ใฎๅœฐๅŸŸ";
41 "lifelog.register.area.hokkaido" = "ๅŒ—ๆตท้“"; 41 "lifelog.register.area.hokkaido" = "ๅŒ—ๆตท้“";
42 "lifelog.register.note" = "ใ‚ณใƒกใƒณใƒˆ"; 42 "lifelog.register.note" = "ใ‚ณใƒกใƒณใƒˆ";
43 // Tapbar 43 // Tapbar
44 "lifelog.tapbar.today" = "ไปŠๆ—ฅ"; 44 "lifelog.tapbar.today" = "ไปŠๆ—ฅ";
45 "lifelog.tapbar.history" = "ๅฑฅๆญด"; 45 "lifelog.tapbar.history" = "ๅฑฅๆญด";
46 "lifelog.tapbar.ranking" = "ใƒฉใƒณใ‚ญใƒณใ‚ฐ"; 46 "lifelog.tapbar.ranking" = "ใƒฉใƒณใ‚ญใƒณใ‚ฐ";
47 "lifelog.tapbar.map" = "MAP"; 47 "lifelog.tapbar.map" = "MAP";
48 "lifelog.tapbar.sns" = "SNS"; 48 "lifelog.tapbar.sns" = "SNS";
49 // Screen Home 49 // Screen Home
50 "lifelog.home.title" = "่‡ชๅฎ…"; 50 "lifelog.home.title" = "่‡ชๅฎ…";
51 "lifelog.home.unit.step" = "step"; 51 "lifelog.home.unit.step" = "step";
52 "lifelog.home.progressHud.title" = "Processing..."; 52 "lifelog.home.progressHud.title" = "Processing...";
53 "lifelog.home.notice" = "ใŠ็Ÿฅใ‚‰ใ›"; 53 "lifelog.home.notice" = "ใŠ็Ÿฅใ‚‰ใ›";
54 // Screen Today 54 // Screen Today
55 "lifelog.today.title" = "ไปŠๆ—ฅ"; 55 "lifelog.today.title" = "ไปŠๆ—ฅ";
56 "lifelog.today.remaining.step.1" = "็›ฎๆจกใพใงใ‚ใจ"; 56 "lifelog.today.remaining.step.1" = "็›ฎๆจกใพใงใ‚ใจ";
57 "lifelog.today.remaining.step.2" = "ๆญฉใงใ™"; 57 "lifelog.today.remaining.step.2" = "ๆญฉใงใ™";
58 "lifelog.today.total.other" = "็›ฎๆจ™"; 58 "lifelog.today.total.other" = "็›ฎๆจ™";
59 "lifelog.today.unit.step" = "ๆญฉ"; 59 "lifelog.today.unit.step" = "ๆญฉ";
60 "lifelog.today.remaining.other" = "ๆฎ‹ๆญฉๆ•ฐ"; 60 "lifelog.today.remaining.other" = "ๆฎ‹ๆญฉๆ•ฐ";
61 "lifelog.today.text.percent" = "้”ๆˆ็އ"; 61 "lifelog.today.text.percent" = "้”ๆˆ็އ";
62 "lifelog.today.percent" = "%"; 62 "lifelog.today.percent" = "%";
63 // Screen History
64 "lifelog.history.title" = "ๅฑฅๆญด";
65 "lifelog.history.type.1" = "1ๆ—ฅ";
66 "lifelog.history.type.2" = "1้€ฑ้–“";
67 "lifelog.history.type.3" = "1ใƒถๆœˆ";
68 "lifelog.history.type.4" = "3ใƒถๆœˆ";
69 "lifelog.history.type.5" = "6ใƒถๆœˆ";
70 "lifelog.history.mode.1" = "BIKE";
71 "lifelog.history.mode.2" = "WALKING";
72 "lifelog.history.mode.3" = "RUNNING";
73 "lifelog.history.share.1" = "facebook";
74 "lifelog.history.share.2" = "twitter";
75 "lifelog.history.share.3" = "line";
76 "lifelog.history.share.4" = "ใƒกใƒผใƒซ";
77 "lifelog.history.share.5" = "ใใฎไป–";
78 "lifelog.history.title.total" = "็›ฎๆจ™";
79 "lifelog.history.title.remaining" = "ๆฎ‹ๆญฉๆ•ฐ";
80 "lifelog.history.title.percent" = "้”ๆˆ็އ";
81 "lifelog.history.title.calories" = "ๆถˆ่ฒปใ‚ซใƒญใƒชใƒผ";
82 "lifelog.history.title.distance" = "่ท้›ข";
83 "lifelog.history.title.time" = "ๆ™‚้–“";
84 "lifelog.history.circle.remaining" = "็›ฎๆจ™ใพใงใ‚ใจ\n%d stepใงใ™";
63 85
LifeLog/LifeLog/ServerAPI.h
1 // 1 //
2 // ServerAPI.h 2 // ServerAPI.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 #import "Entities.h" 10 #import "Entities.h"
11
11 extern NSString *const kServerAddress; 12 extern NSString *const kServerAddress;
12 extern NSString *const kUser; 13 extern NSString *const kUser;
13 extern NSString *const kToken; 14 extern NSString *const kToken;
14 15
15 @interface ServerAPI : NSObject 16 @interface ServerAPI : NSObject
16 + (instancetype) server; 17 + (instancetype) server;
17 @property (nonatomic, assign) NSTimeInterval timeOutInterval; 18 @property (nonatomic, assign) NSTimeInterval timeOutInterval;
18 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 19 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
19 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 20 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
20 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion; 21 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion;
21 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion; 22 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion;
22 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion; 23 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion;
24
25 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion;
26
23 @end 27 @end
24 28
LifeLog/LifeLog/ServerAPI.m
1 // 1 //
2 // ServerAPI.m 2 // ServerAPI.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "ServerAPI.h" 9 #import "ServerAPI.h"
10 10
11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
12 NSString *const kUser = @"KEY_USER"; 12 NSString *const kUser = @"KEY_USER";
13 NSString *const kToken = @"KEY_TOKEN"; 13 NSString *const kToken = @"KEY_TOKEN";
14 14
15 @implementation NSString (NSString_Extended) 15 @implementation NSString (NSString_Extended)
16 - (NSString *)urlencode { 16 - (NSString *)urlencode {
17 NSMutableString *output = [NSMutableString string]; 17 NSMutableString *output = [NSMutableString string];
18 const unsigned char *source = (const unsigned char *)[self UTF8String]; 18 const unsigned char *source = (const unsigned char *)[self UTF8String];
19 int sourceLen = (int)strlen((const char *)source); 19 int sourceLen = (int)strlen((const char *)source);
20 for (int i = 0; i < sourceLen; ++i) { 20 for (int i = 0; i < sourceLen; ++i) {
21 const unsigned char thisChar = source[i]; 21 const unsigned char thisChar = source[i];
22 if (thisChar == ' '){ 22 if (thisChar == ' '){
23 [output appendString:@"+"]; 23 [output appendString:@"+"];
24 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 24 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
25 (thisChar >= 'a' && thisChar <= 'z') || 25 (thisChar >= 'a' && thisChar <= 'z') ||
26 (thisChar >= 'A' && thisChar <= 'Z') || 26 (thisChar >= 'A' && thisChar <= 'Z') ||
27 (thisChar >= '0' && thisChar <= '9')) { 27 (thisChar >= '0' && thisChar <= '9')) {
28 [output appendFormat:@"%c", thisChar]; 28 [output appendFormat:@"%c", thisChar];
29 } else { 29 } else {
30 [output appendFormat:@"%%%02X", thisChar]; 30 [output appendFormat:@"%%%02X", thisChar];
31 } 31 }
32 } 32 }
33 return output; 33 return output;
34 } 34 }
35 @end 35 @end
36 36
37 @implementation ServerAPI 37 @implementation ServerAPI
38 static ServerAPI *_server = nil; 38 static ServerAPI *_server = nil;
39 39
40 @synthesize timeOutInterval = _timeOutInterval; 40 @synthesize timeOutInterval = _timeOutInterval;
41 41
42 + (instancetype)server 42 + (instancetype)server
43 { 43 {
44 @synchronized(self) { 44 @synchronized(self) {
45 if (_server == nil) { 45 if (_server == nil) {
46 _server = [[ServerAPI alloc] init]; 46 _server = [[ServerAPI alloc] init];
47 } 47 }
48 } 48 }
49 return _server; 49 return _server;
50 } 50 }
51 51
52 - (instancetype)init 52 - (instancetype)init
53 { 53 {
54 self = [super init]; 54 self = [super init];
55 if (self != nil) { 55 if (self != nil) {
56 self.timeOutInterval = 150; 56 self.timeOutInterval = 150;
57 } 57 }
58 return self; 58 return self;
59 } 59 }
60 60
61 // Login 61 // Login
62 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 62 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
63 { 63 {
64 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 64 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
65 65
66 if (completion == NULL) { 66 if (completion == NULL) {
67 return ; 67 return ;
68 } 68 }
69 69
70 if (error == nil) 70 if (error == nil)
71 { 71 {
72 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 72 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
73 73
74 int status = [dataResult[@"status"] intValue]; 74 int status = [dataResult[@"status"] intValue];
75 if (status == 1) { // status = 1 success 75 if (status == 1) { // status = 1 success
76 NSString *token = dataResult[@"result"][@"token"]; 76 NSString *token = dataResult[@"result"][@"token"];
77 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 77 NSDictionary *dictUser = dataResult[@"result"][@"user"];
78 User *user = [[User alloc] init]; 78 User *user = [[User alloc] init];
79 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 79 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
80 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 80 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
81 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 81 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
82 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 82 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
83 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 83 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
84 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 84 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
85 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 85 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
86 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 86 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
87 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 87 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
88 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 88 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
89 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 89 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
90 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 90 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
91 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 91 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
92 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 92 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
93 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 93 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
94 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 94 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
95 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 95 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
96 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 96 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
97 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 97 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
98 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 98 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
99 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 99 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
100 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 100 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
101 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 101 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
102 completion(user, token, nil); 102 completion(user, token, nil);
103 } 103 }
104 else { // status = 0 error 104 else { // status = 0 error
105 NSString *message = dataResult[@"message"]; 105 NSString *message = dataResult[@"message"];
106 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 106 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
107 completion(nil, nil, loginFaild); 107 completion(nil, nil, loginFaild);
108 } 108 }
109 } 109 }
110 else 110 else
111 { 111 {
112 completion(nil, nil, error); 112 completion(nil, nil, error);
113 } 113 }
114 }]; 114 }];
115 } 115 }
116 116
117 // Register 117 // Register
118 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { 118 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
119 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" paras:params completion:^(NSData *data, NSError *error) { 119 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) {
120 120
121 if (completion == NULL) { 121 if (completion == NULL) {
122 return ; 122 return ;
123 } 123 }
124 124
125 if (error == nil) 125 if (error == nil)
126 { 126 {
127 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 127 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
128 128
129 int status = [dataResult[@"status"] intValue]; 129 int status = [dataResult[@"status"] intValue];
130 if (status == 1) { // status = 1 success 130 if (status == 1) { // status = 1 success
131 NSString *token = dataResult[@"result"][@"token"]; 131 NSString *token = dataResult[@"result"][@"token"];
132 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 132 NSDictionary *dictUser = dataResult[@"result"][@"user"];
133 User *user = [[User alloc] init]; 133 User *user = [[User alloc] init];
134 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 134 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
135 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 135 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
136 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 136 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
137 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 137 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
138 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 138 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
139 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 139 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
140 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 140 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
141 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 141 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
142 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 142 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
143 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 143 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
144 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 144 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
145 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 145 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
146 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 146 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
147 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 147 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
148 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 148 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
149 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 149 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
150 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 150 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
151 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 151 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
152 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 152 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
153 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 153 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
154 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 154 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
155 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 155 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
156 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 156 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
157 completion(user, token, nil); 157 completion(user, token, nil);
158 } 158 }
159 else { // status = 0 error 159 else { // status = 0 error
160 NSString *message = dataResult[@"message"]; 160 NSString *message = dataResult[@"message"];
161 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 161 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
162 completion(nil, nil, loginFaild); 162 completion(nil, nil, loginFaild);
163 } 163 }
164 } 164 }
165 else 165 else
166 { 166 {
167 completion(nil, nil, error); 167 completion(nil, nil, error);
168 } 168 }
169 }]; 169 }];
170 } 170 }
171 171
172 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { 172 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
173 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { 173 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
174 174
175 if (completion == NULL) { 175 if (completion == NULL) {
176 return ; 176 return ;
177 } 177 }
178 178
179 if (error == nil) 179 if (error == nil)
180 { 180 {
181 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 181 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
182 182
183 int status = [dataResult[@"status"] intValue]; 183 int status = [dataResult[@"status"] intValue];
184 if (status == 1) { // status = 1 success 184 if (status == 1) { // status = 1 success
185 completion(nil); 185 completion(nil);
186 } 186 }
187 else { // status = 0 error 187 else { // status = 0 error
188 NSString *message = dataResult[@"message"]; 188 NSString *message = dataResult[@"message"];
189 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 189 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
190 completion(forgetPass); 190 completion(forgetPass);
191 } 191 }
192 } 192 }
193 else 193 else
194 { 194 {
195 completion(error); 195 completion(error);
196 } 196 }
197 }]; 197 }];
198 } 198 }
199 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { 199 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
200 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { 200 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
201 201
202 if (completion == NULL) { 202 if (completion == NULL) {
203 return ; 203 return ;
204 } 204 }
205 205
206 if (error == nil) 206 if (error == nil)
207 { 207 {
208 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 208 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
209 209
210 int status = [dataResult[@"status"] intValue]; 210 int status = [dataResult[@"status"] intValue];
211 if (status == 1) { // status = 1 success 211 if (status == 1) { // status = 1 success
212 completion(nil); 212 completion(nil);
213 } 213 }
214 else { // status = 0 error 214 else { // status = 0 error
215 NSString *message = dataResult[@"message"]; 215 NSString *message = dataResult[@"message"];
216 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 216 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
217 completion(confirmForgetPass); 217 completion(confirmForgetPass);
218 } 218 }
219 } 219 }
220 else 220 else
221 { 221 {
222 completion(error); 222 completion(error);
223 } 223 }
224 }]; 224 }];
225 } 225 }
226 226
227 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 227 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
228 NSDictionary *dict = nil; 228 NSDictionary *dict = nil;
229 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 229 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
230 if (token != nil) { 230 if (token != nil) {
231 dict = @{@"token":token, @"img": base64Encoded}; 231 dict = @{@"token":token, @"img": base64Encoded};
232 } 232 }
233 else { 233 else {
234 dict = @{@"img": base64Encoded}; 234 dict = @{@"img": base64Encoded};
235 } 235 }
236 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" paras:dict completion:^(NSData *data, NSError *error) { 236 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
237 237
238 if (completion == NULL) { 238 if (completion == NULL) {
239 return ; 239 return ;
240 } 240 }
241 241
242 if (error == nil) 242 if (error == nil)
243 { 243 {
244 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 244 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
245 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 245 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
246 completion(image_profile, nil); 246 completion(image_profile, nil);
247 } 247 }
248 else 248 else
249 { 249 {
250 completion(nil, error); 250 completion(nil, error);
251 } 251 }
252 }]; 252 }];
253 } 253 }
254 254
255 -(NSString *) convertIntToString : (int) type {
256 switch (type) {
257 case 1:
258 return @"week";
259 break;
260 case 2:
261 return @"oneMonth";
262 break;
263 case 3:
264 return @"threeMonth";
265 break;
266 case 4:
267 return @"sixMonth";
268 break;
269 default:
270 return @"today";
271 break;
272 }
273 }
274
275 #pragma mark - History Screen Function
276 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion {
277 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%d", [self convertIntToString:type], mode];
278 NSLog(@"requestHistory link %@", url);
279 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
280
281 if (completion == NULL) {
282 return ;
283 }
284
285 if (error == nil)
286 {
287 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
288 NSLog(@"%@", dataResult);
289 int status = [dataResult[@"status"] intValue];
290 if (status == 1) { // status = 1 success
291 HistoryObject * object = [[HistoryObject alloc] initWithData:dataResult[@"result"]];
292 completion(object, nil);
293 }
294 else {
295 NSString *message = dataResult[@"message"];
296 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
297 completion(nil, errorObject);
298 }
299 }
300 else
301 {
302 completion(nil, error);
303 }
304 }];
305 }
306
255 #pragma mark - Private Function 307 #pragma mark - Private Function
256 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 308 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
257 { 309 {
258 NSMutableArray *parts = [[NSMutableArray alloc] init]; 310 NSMutableArray *parts = [[NSMutableArray alloc] init];
259 for (id key in dictionary) 311 for (id key in dictionary)
260 { 312 {
261 NSString *encodedValue = [[dictionary[key] description] urlencode]; 313 NSString *encodedValue = [[dictionary[key] description] urlencode];
262 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 314 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
263 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 315 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
264 [parts addObject:part]; 316 [parts addObject:part];
265 } 317 }
266 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 318 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
267 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 319 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
268 } 320 }
269 321
270 - (void) _request:(NSString *)address method:(NSString *)method paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 322 - (void) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
271 { 323 {
272 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 324 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
273 request.HTTPMethod = method; 325 request.HTTPMethod = method;
274 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 326 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
275 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 327 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
328 if(token != nil && ![token isEqual: @""]) {
329 [request setValue: token forHTTPHeaderField: @"token"];
330 }
276 [request setTimeoutInterval:self.timeOutInterval]; 331 [request setTimeoutInterval:self.timeOutInterval];
277 332
278 if (paras != nil) 333 if (paras != nil)
279 { 334 {
280 NSData *encodedData = [self _encodeDictionary: paras]; 335 NSData *encodedData = [self _encodeDictionary: paras];
281 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 336 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
282 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 337 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
283 [request setHTTPBody: encodedData]; 338 [request setHTTPBody: encodedData];
284 } 339 }
285 340
286 NSURLSession *session = [NSURLSession sharedSession]; 341 NSURLSession *session = [NSURLSession sharedSession];
287 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 342 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
288 completionHandler: 343 completionHandler:
289 ^(NSData *data, NSURLResponse *response, NSError *error) { 344 ^(NSData *data, NSURLResponse *response, NSError *error) {
290 if (completion == NULL) { 345 if (completion == NULL) {
291 return ; 346 return ;
292 } 347 }
293 if (error == nil) 348 if (error == nil)
294 { 349 {
295 completion(data, nil); 350 completion(data, nil);
296 } 351 }
297 else 352 else
298 { 353 {
299 completion(nil, error); 354 completion(nil, error);
300 } 355 }
301 }]; 356 }];
302 357
303 [task resume]; 358 [task resume];
304 } 359 }
305 360
306 @end 361 @end
307 362