Commit f7449e66183391dde7b6478d94bbd36e6631b122
1 parent
b0579422a5
Exists in
master
and in
1 other branch
update save step of 7 day before date now
Showing 4 changed files with 161 additions and 34 deletions Side-by-side Diff
LifeLog/LifeLog/HomeViewController.m
... | ... | @@ -40,7 +40,6 @@ |
40 | 40 | @property (nonatomic, assign) NSInteger running; |
41 | 41 | @property (nonatomic, strong) NSDate *dateCurrent; |
42 | 42 | |
43 | -//@property (nonatomic, assign) BOOL isRequesting; | |
44 | 43 | @property (nonatomic, assign) int totalRequest; |
45 | 44 | @property (nonatomic, assign) int countComplete; |
46 | 45 | |
... | ... | @@ -50,7 +49,7 @@ |
50 | 49 | |
51 | 50 | - (void)viewDidLoad { |
52 | 51 | [super viewDidLoad]; |
53 | - // Do any additional setup after loading the view from its nib. | |
52 | + | |
54 | 53 | self.lblTitle.text = NSLocalizedString(@"lifelog.home.title", nil); |
55 | 54 | |
56 | 55 | [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.lblTitle attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; |
57 | 56 | |
58 | 57 | |
59 | 58 | |
60 | 59 | |
... | ... | @@ -106,27 +105,45 @@ |
106 | 105 | _walking = 0; |
107 | 106 | _running = 0; |
108 | 107 | _segmentHome.selectedSegmentIndex = 1; |
109 | -// _isRequesting = NO; | |
110 | 108 | _totalRequest = 0; |
111 | 109 | _countComplete = 0; |
112 | 110 | |
113 | 111 | progressHud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; |
114 | 112 | progressHud.mode = MBProgressHUDModeIndeterminate; |
115 | 113 | progressHud.detailsLabel.text = NSLocalizedString(@"lifelog.home.progressHud.title", nil); |
114 | + [self saveDataStep7LastDay]; | |
116 | 115 | } |
117 | 116 | |
118 | 117 | - (void)viewWillAppear:(BOOL)animated { |
119 | 118 | [super viewWillAppear:animated]; |
120 | -// _timer = [NSTimer scheduledTimerWithTimeInterval:1.5f target:self selector:@selector(countStep) userInfo:nil repeats:YES]; | |
121 | -// [_timer fire]; | |
122 | - [self countStep]; | |
123 | - | |
119 | + [self saveStepForDay:self.dateCurrent]; | |
120 | + [self requestTopByDate:_dateCurrent]; | |
121 | +} | |
122 | + | |
123 | +- (void)requestTopByDate:(NSDate *)date { | |
124 | 124 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; |
125 | 125 | [dateFormatter setDateFormat:@"yyyy-MM-dd"]; |
126 | - NSString *dateString = [dateFormatter stringFromDate:_dateCurrent]; | |
126 | + NSString *dateString = [dateFormatter stringFromDate:date]; | |
127 | 127 | |
128 | 128 | HomeViewController __weak *weakSelf = self; |
129 | - [[ServerAPI server] requestTopWithMode:(int)_segmentHome.selectedSegmentIndex andDate:dateString CompletionHandler:^(TopObject *topObject, NSError *error) { | |
129 | + int mode = 1; | |
130 | + switch (_segmentHome.selectedSegmentIndex) { | |
131 | + case 0: | |
132 | + mode = 3; | |
133 | + break; | |
134 | + | |
135 | + case 1: | |
136 | + mode = 1; | |
137 | + break; | |
138 | + | |
139 | + case 2: | |
140 | + mode = 2; | |
141 | + break; | |
142 | + | |
143 | + default: | |
144 | + break; | |
145 | + } | |
146 | + [[ServerAPI server] requestTopWithMode:mode andDate:dateString CompletionHandler:^(TopObject *topObject, NSError *error) { | |
130 | 147 | if(weakSelf == nil) { |
131 | 148 | return ; |
132 | 149 | } |
... | ... | @@ -144,7 +161,6 @@ |
144 | 161 | |
145 | 162 | - (void)viewWillDisappear:(BOOL)animated { |
146 | 163 | [super viewWillDisappear:animated]; |
147 | - //[_timer invalidate]; | |
148 | 164 | } |
149 | 165 | |
150 | 166 | - (void)didReceiveMemoryWarning { |
151 | 167 | |
... | ... | @@ -168,14 +184,14 @@ |
168 | 184 | { |
169 | 185 | self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:-(24*60*60)]; |
170 | 186 | self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; |
171 | - [self countStep]; | |
187 | + [self saveStepForDay:self.dateCurrent]; | |
172 | 188 | } |
173 | 189 | |
174 | 190 | - (IBAction)rightButtonTouchUpInside:(id)sender |
175 | 191 | { |
176 | 192 | self.dateCurrent = [self.dateCurrent dateByAddingTimeInterval:24*60*60]; |
177 | 193 | self.lblDateCurrent.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[_dateCurrent getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[_dateCurrent getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[_dateCurrent getDay], NSLocalizedString(@"lifelog.common.day", nil)]; |
178 | - [self countStep]; | |
194 | + [self saveStepForDay:self.dateCurrent]; | |
179 | 195 | } |
180 | 196 | |
181 | 197 | - (IBAction)segmentValueChange:(id)sender { |
182 | 198 | |
183 | 199 | |
184 | 200 | |
185 | 201 | |
... | ... | @@ -183,23 +199,19 @@ |
183 | 199 | } |
184 | 200 | |
185 | 201 | #pragma mark - Functions Private |
186 | -- (void)countStep | |
202 | +- (void)saveStepForDay:(NSDate *)date | |
187 | 203 | { |
188 | -// if (self.isRequesting == YES) { | |
189 | -// return; | |
190 | -// } | |
191 | 204 | if ([CMMotionActivityManager isActivityAvailable]) { |
192 | 205 | [progressHud showAnimated:YES]; |
193 | 206 | [progressHud setHidden:NO]; |
194 | - // self.isRequesting = YES; | |
195 | 207 | self.bike = 0; |
196 | 208 | self.walking = 0; |
197 | 209 | self.running = 0; |
198 | - NSDate *startDate = [self.dateCurrent beginningAtMidnightOfDay]; | |
210 | + NSDate *startDate = [date beginningAtMidnightOfDay]; | |
199 | 211 | NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; |
200 | 212 | |
201 | 213 | HomeViewController __weak *weakSelf = self; |
202 | - dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog", NULL); | |
214 | + dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.forDay", NULL); | |
203 | 215 | dispatch_async(myQueue, ^{ |
204 | 216 | if (weakSelf == nil) { |
205 | 217 | return ; |
206 | 218 | |
207 | 219 | |
208 | 220 | |
209 | 221 | |
210 | 222 | |
... | ... | @@ -232,32 +244,26 @@ |
232 | 244 | } |
233 | 245 | |
234 | 246 | for (CMMotionActivityExtra *activityExtra in arrayActivities) { |
235 | - // NSLog(@"%@", activityExtra.activity.startDate); | |
236 | 247 | [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { |
237 | 248 | NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; |
238 | 249 | int mode = 1; |
239 | 250 | if (activityExtra.activity.cycling) { |
240 | 251 | // self.bike |
241 | 252 | weakSelf.bike += numberStep; |
242 | - //NSLog(@"Step cycling"); | |
243 | 253 | mode = 3; |
244 | 254 | } |
245 | 255 | else if (activityExtra.activity.walking) { |
246 | 256 | // self.walking |
247 | 257 | weakSelf.walking += numberStep; |
248 | - //NSLog(@"Step walking"); | |
249 | 258 | mode = 1; |
250 | 259 | } |
251 | 260 | else if (activityExtra.activity.running) { |
252 | 261 | weakSelf.running += numberStep; |
253 | - //NSLog(@"Step running"); | |
254 | 262 | mode = 2; |
255 | 263 | } |
256 | 264 | else { |
257 | 265 | // unknown |
258 | - //NSLog(@"Step unknown"); | |
259 | 266 | } |
260 | - // NSLog(@"Number of step--> %ld", numberStep); | |
261 | 267 | weakSelf.countComplete += 1; |
262 | 268 | |
263 | 269 | // save step to server |
... | ... | @@ -277,7 +283,6 @@ |
277 | 283 | }); |
278 | 284 | }]; |
279 | 285 | } |
280 | - // NSLog(@"-----------------------------------------------------"); | |
281 | 286 | }]; |
282 | 287 | }); |
283 | 288 | } |
... | ... | @@ -286,7 +291,7 @@ |
286 | 291 | } |
287 | 292 | } |
288 | 293 | |
289 | -- (void)updateStepUI //:(NSInteger)numberStep | |
294 | +- (void)updateStepUI | |
290 | 295 | { |
291 | 296 | if (self.totalRequest == self.countComplete) { |
292 | 297 | switch (self.segmentHome.selectedSegmentIndex) { |
293 | 298 | |
... | ... | @@ -311,11 +316,87 @@ |
311 | 316 | default: |
312 | 317 | break; |
313 | 318 | } |
314 | - // NSLog(@"Walking: %ld || Running: %ld || Bike: %ld", self.walking, self.running, self.bike); | |
315 | - // self.isRequesting = NO; | |
316 | 319 | self.countComplete = 0; |
317 | 320 | self.totalRequest = 0; |
318 | 321 | [progressHud setHidden:YES]; |
322 | + } | |
323 | +} | |
324 | + | |
325 | +- (void)saveDataStep7LastDay | |
326 | +{ | |
327 | + NSDate *dateNow = [NSDate date]; | |
328 | + for (int index = 0; index < 7; index++) { | |
329 | + dateNow = [dateNow dateByAddingTimeInterval:-(24*60*60)]; | |
330 | + [self saveStepByDate:dateNow]; | |
331 | + } | |
332 | +} | |
333 | + | |
334 | +- (void)saveStepByDate:(NSDate *)date | |
335 | +{ | |
336 | + if ([CMMotionActivityManager isActivityAvailable]) { | |
337 | + NSDate *startDate = [date beginningAtMidnightOfDay]; | |
338 | + NSDate *endDate = [startDate dateByAddingTimeInterval:(24*60*60 - 1)]; | |
339 | + | |
340 | + HomeViewController __weak *weakSelf = self; | |
341 | + dispatch_queue_t myQueue = dispatch_queue_create("mobileworld.jp.lifelog.7lastday", NULL); | |
342 | + dispatch_async(myQueue, ^{ | |
343 | + if (weakSelf == nil) { | |
344 | + return ; | |
345 | + } | |
346 | + | |
347 | + [weakSelf.motionActivityManager queryActivityStartingFromDate:startDate toDate:endDate toQueue:_operationQueue withHandler:^(NSArray<CMMotionActivity *> * _Nullable activities, NSError * _Nullable error) { | |
348 | + if (error || activities.count <= 0) { | |
349 | + return ; | |
350 | + } | |
351 | + // set EndDate | |
352 | + NSMutableArray *arrayActivities = [[NSMutableArray alloc] init]; | |
353 | + for (int i = 0; i < activities.count; i++) { | |
354 | + CMMotionActivity *activity = [activities objectAtIndex:i]; | |
355 | + CMMotionActivityExtra *activityExtra = [[CMMotionActivityExtra alloc] init]; | |
356 | + activityExtra.activity = activity; | |
357 | + if (i == activities.count - 1) { | |
358 | + activityExtra.endDate = endDate; | |
359 | + } | |
360 | + else { | |
361 | + CMMotionActivity *activityNext = [activities objectAtIndex:i+1]; | |
362 | + activityExtra.endDate = activityNext.startDate; | |
363 | + } | |
364 | + [arrayActivities addObject:activityExtra]; | |
365 | + } | |
366 | + | |
367 | + for (CMMotionActivityExtra *activityExtra in arrayActivities) { | |
368 | + [weakSelf.pedometer queryPedometerDataFromDate:activityExtra.activity.startDate toDate:activityExtra.endDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { | |
369 | + NSInteger numberStep = [pedometerData.numberOfSteps integerValue]; | |
370 | + int mode = 1; | |
371 | + if (activityExtra.activity.cycling) { | |
372 | + mode = 3; | |
373 | + } | |
374 | + else if (activityExtra.activity.walking) { | |
375 | + mode = 1; | |
376 | + } | |
377 | + else if (activityExtra.activity.running) { | |
378 | + mode = 2; | |
379 | + } | |
380 | + else { | |
381 | + // unknown | |
382 | + } | |
383 | + | |
384 | + // save step to server | |
385 | + if (numberStep > 0) { | |
386 | + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; | |
387 | + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; | |
388 | + NSString *dateBegin = [dateFormatter stringFromDate:activityExtra.activity.startDate]; | |
389 | + NSString *dateEnd = [dateFormatter stringFromDate:activityExtra.endDate]; | |
390 | + [[ServerAPI server] requestCreateLog:mode withStep:(int)numberStep startDate:dateBegin endDate:dateEnd CompletionHandler:^(NSError *error) { | |
391 | + if (error) { | |
392 | + NSLog(@"Error: %@", error); | |
393 | + } | |
394 | + }]; | |
395 | + } | |
396 | + }]; | |
397 | + } | |
398 | + }]; | |
399 | + }); | |
319 | 400 | } |
320 | 401 | } |
321 | 402 |
LifeLog/LifeLog/MapViewController.m
... | ... | @@ -70,10 +70,10 @@ |
70 | 70 | [_timer fire]; |
71 | 71 | } |
72 | 72 | |
73 | -- (void)viewWillDisappear:(BOOL)animated { | |
74 | - [super viewWillDisappear:animated]; | |
75 | - [_timer invalidate]; | |
76 | -} | |
73 | +//- (void)viewWillDisappear:(BOOL)animated { | |
74 | +// [super viewWillDisappear:animated]; | |
75 | +// [_timer invalidate]; | |
76 | +//} | |
77 | 77 | |
78 | 78 | #pragma mark - CLLocationManagerDelegate |
79 | 79 | -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { |
LifeLog/LifeLog/TodayViewController.m
... | ... | @@ -77,6 +77,22 @@ |
77 | 77 | [self.navigationController popViewControllerAnimated:YES]; |
78 | 78 | } |
79 | 79 | |
80 | +- (IBAction)buttonShareTouchUpInside:(id)sender { | |
81 | + | |
82 | +} | |
83 | + | |
84 | +- (IBAction)buttonFacebookTouchUpInside:(id)sender { | |
85 | + NSString * content = @"Finish 500 steps"; | |
86 | + TodayViewController __weak *weakSelf = self; | |
87 | + [Utilities shareFacebook:content withViewController:weakSelf]; | |
88 | +} | |
89 | + | |
90 | +- (IBAction)buttonLineTouchUpInside:(id)sender { | |
91 | + NSString * content = @"Finish 500 steps"; | |
92 | + TodayViewController __weak *weakSelf = self; | |
93 | + [Utilities shareLine:content withViewController:weakSelf]; | |
94 | +} | |
95 | + | |
80 | 96 | #pragma mark - Functions Private |
81 | 97 | - (void)countStep |
82 | 98 | { |
LifeLog/LifeLog/TodayViewController.xib
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | |
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | |
3 | 3 | <device id="retina4_7" orientation="portrait"> |
4 | 4 | <adaptation id="fullscreen"/> |
5 | 5 | </device> |
... | ... | @@ -67,6 +67,12 @@ |
67 | 67 | <constraint firstAttribute="width" constant="42" id="abX-W4-Ho4"/> |
68 | 68 | </constraints> |
69 | 69 | </imageView> |
70 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1ak-Ne-wz9" userLabel="ButtonShare"> | |
71 | + <rect key="frame" x="8" y="137" width="42" height="57"/> | |
72 | + <connections> | |
73 | + <action selector="buttonShareTouchUpInside:" destination="-1" eventType="touchUpInside" id="dkw-ed-JhQ"/> | |
74 | + </connections> | |
75 | + </button> | |
70 | 76 | <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_facebook" translatesAutoresizingMaskIntoConstraints="NO" id="Jtx-be-zjg"> |
71 | 77 | <rect key="frame" x="8" y="202" width="40" height="40"/> |
72 | 78 | <constraints> |
... | ... | @@ -74,6 +80,12 @@ |
74 | 80 | <constraint firstAttribute="height" constant="40" id="5hP-gZ-Qrl"/> |
75 | 81 | </constraints> |
76 | 82 | </imageView> |
83 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HLr-Qj-bm4" userLabel="ButtonFacebook"> | |
84 | + <rect key="frame" x="8" y="202" width="40" height="40"/> | |
85 | + <connections> | |
86 | + <action selector="buttonFacebookTouchUpInside:" destination="-1" eventType="touchUpInside" id="MHi-pC-vsR"/> | |
87 | + </connections> | |
88 | + </button> | |
77 | 89 | <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_line" translatesAutoresizingMaskIntoConstraints="NO" id="wHy-xz-GJV"> |
78 | 90 | <rect key="frame" x="8" y="250" width="40" height="40"/> |
79 | 91 | <constraints> |
... | ... | @@ -81,6 +93,12 @@ |
81 | 93 | <constraint firstAttribute="height" constant="40" id="myc-Ev-aCy"/> |
82 | 94 | </constraints> |
83 | 95 | </imageView> |
96 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="equ-yC-hU1" userLabel="ButtonLine"> | |
97 | + <rect key="frame" x="8" y="250" width="40" height="40"/> | |
98 | + <connections> | |
99 | + <action selector="buttonLineTouchUpInside:" destination="-1" eventType="touchUpInside" id="9mi-bX-Uqp"/> | |
100 | + </connections> | |
101 | + </button> | |
84 | 102 | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oRx-7J-bma" customClass="CircleProgressBar"> |
85 | 103 | <rect key="frame" x="60" y="94" width="255" height="255"/> |
86 | 104 | <subviews> |
87 | 105 | |
88 | 106 | |
89 | 107 | |
90 | 108 | |
91 | 109 | |
92 | 110 | |
93 | 111 | |
94 | 112 | |
... | ... | @@ -195,25 +213,37 @@ |
195 | 213 | <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> |
196 | 214 | <constraints> |
197 | 215 | <constraint firstAttribute="trailing" secondItem="11m-je-qZ1" secondAttribute="trailing" id="5wQ-9t-fkx"/> |
216 | + <constraint firstItem="1ak-Ne-wz9" firstAttribute="top" secondItem="PW6-AR-UCs" secondAttribute="top" id="7Lu-Sw-8Vd"/> | |
198 | 217 | <constraint firstItem="V2B-wZ-Efk" firstAttribute="centerY" secondItem="oRx-7J-bma" secondAttribute="centerY" id="Bhj-5W-tqM"/> |
199 | 218 | <constraint firstItem="yOP-KX-J14" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="5" id="Bp4-Am-rzQ"/> |
200 | 219 | <constraint firstItem="Jtx-be-zjg" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="8" id="C4T-QJ-aV0"/> |
201 | 220 | <constraint firstItem="dQq-cp-R2A" firstAttribute="leading" secondItem="oRx-7J-bma" secondAttribute="trailing" id="CSy-Of-ifG"/> |
202 | 221 | <constraint firstAttribute="trailing" secondItem="dQq-cp-R2A" secondAttribute="trailing" id="Ct9-ZA-fqo"/> |
222 | + <constraint firstItem="HLr-Qj-bm4" firstAttribute="bottom" secondItem="Jtx-be-zjg" secondAttribute="bottom" id="DGk-ic-g00"/> | |
203 | 223 | <constraint firstItem="oRx-7J-bma" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="60" id="DKw-80-JuB"/> |
204 | 224 | <constraint firstItem="11m-je-qZ1" firstAttribute="leading" secondItem="oRx-7J-bma" secondAttribute="trailing" id="FOq-gH-CTf"/> |
225 | + <constraint firstItem="HLr-Qj-bm4" firstAttribute="leading" secondItem="Jtx-be-zjg" secondAttribute="leading" id="FhM-mA-AWq"/> | |
205 | 226 | <constraint firstItem="RSj-iV-Oaf" firstAttribute="centerY" secondItem="2SZ-sd-ADD" secondAttribute="centerY" id="JTA-NC-8qU"/> |
206 | 227 | <constraint firstItem="V2B-wZ-Efk" firstAttribute="top" secondItem="dQq-cp-R2A" secondAttribute="bottom" constant="8" id="KF9-QN-1Vc"/> |
207 | 228 | <constraint firstItem="wHy-xz-GJV" firstAttribute="top" secondItem="Jtx-be-zjg" secondAttribute="bottom" constant="8" id="LFj-zM-kIs"/> |
208 | 229 | <constraint firstAttribute="trailing" secondItem="RSj-iV-Oaf" secondAttribute="trailing" constant="10" id="Ldg-q1-Jsy"/> |
209 | 230 | <constraint firstItem="V2B-wZ-Efk" firstAttribute="leading" secondItem="oRx-7J-bma" secondAttribute="trailing" id="Ls8-7Q-gjM"/> |
210 | 231 | <constraint firstItem="Jtx-be-zjg" firstAttribute="top" secondItem="PW6-AR-UCs" secondAttribute="bottom" constant="8" id="MMi-Mg-qDV"/> |
232 | + <constraint firstItem="1ak-Ne-wz9" firstAttribute="leading" secondItem="PW6-AR-UCs" secondAttribute="leading" id="NK3-Gl-NZu"/> | |
211 | 233 | <constraint firstAttribute="trailing" secondItem="2SZ-sd-ADD" secondAttribute="trailing" id="O9f-yA-cZ5"/> |
234 | + <constraint firstItem="equ-yC-hU1" firstAttribute="leading" secondItem="wHy-xz-GJV" secondAttribute="leading" id="Oe7-aI-2zb"/> | |
212 | 235 | <constraint firstItem="Jtx-be-zjg" firstAttribute="centerY" secondItem="oRx-7J-bma" secondAttribute="centerY" id="U3o-rO-Gcb"/> |
213 | 236 | <constraint firstItem="oRx-7J-bma" firstAttribute="top" secondItem="2SZ-sd-ADD" secondAttribute="bottom" constant="50" id="WGj-Jf-jSz"/> |
237 | + <constraint firstItem="equ-yC-hU1" firstAttribute="bottom" secondItem="wHy-xz-GJV" secondAttribute="bottom" id="ad4-KH-cYo"/> | |
238 | + <constraint firstItem="equ-yC-hU1" firstAttribute="top" secondItem="wHy-xz-GJV" secondAttribute="top" id="adt-MK-oHP"/> | |
214 | 239 | <constraint firstItem="PW6-AR-UCs" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="8" id="bsc-pa-ApI"/> |
240 | + <constraint firstItem="HLr-Qj-bm4" firstAttribute="trailing" secondItem="Jtx-be-zjg" secondAttribute="trailing" id="h5E-wF-FZV"/> | |
241 | + <constraint firstItem="1ak-Ne-wz9" firstAttribute="trailing" secondItem="PW6-AR-UCs" secondAttribute="trailing" id="jXm-mH-e3x"/> | |
215 | 242 | <constraint firstAttribute="trailing" secondItem="V2B-wZ-Efk" secondAttribute="trailing" id="kQV-FL-4Zq"/> |
243 | + <constraint firstItem="HLr-Qj-bm4" firstAttribute="top" secondItem="Jtx-be-zjg" secondAttribute="top" id="lE9-vw-sw6"/> | |
216 | 244 | <constraint firstItem="2SZ-sd-ADD" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="q0L-8m-E0D"/> |
245 | + <constraint firstItem="equ-yC-hU1" firstAttribute="trailing" secondItem="wHy-xz-GJV" secondAttribute="trailing" id="vDi-q7-eov"/> | |
246 | + <constraint firstItem="1ak-Ne-wz9" firstAttribute="bottom" secondItem="PW6-AR-UCs" secondAttribute="bottom" id="vlQ-WK-pY4"/> | |
217 | 247 | <constraint firstItem="11m-je-qZ1" firstAttribute="top" secondItem="V2B-wZ-Efk" secondAttribute="bottom" constant="8" id="vrX-sS-hWJ"/> |
218 | 248 | <constraint firstItem="2SZ-sd-ADD" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" placeholder="YES" id="w1M-Il-jBT"/> |
219 | 249 | <constraint firstAttribute="trailing" secondItem="oRx-7J-bma" secondAttribute="trailing" constant="60" id="y6f-vv-nWJ"/> |