8 #import <UIKit/UIKit.h> 9 #import <HealthKit/HealthKit.h> 10 #import <QuartzCore/QuartzCore.h> 24 @property (strong, nonatomic)
MenuItem *focusMenuItem;
30 CGRect parameterViewFrame;
57 focusGallery = [
self.focusMenuItem.galleryNumber integerValue];
58 self.title =
@"Update Menu Item";
59 NSString *theNumbers =
self.focusMenuItem.usdaNumbers;
60 NSLog(
@"USDAparameterEntry.initWithItem: USDA #: %@", theNumbers);
64 NSData *objectData = [theNumbers dataUsingEncoding:NSUTF8StringEncoding];
66 options:NSJSONReadingMutableContainers
69 NSLog(
@"USDAparameterEntry.initWithItem: ERR: %@", jsonError);
72 _nutritionComponents = [usdaNumbersJsonInitial mutableArrayValueForKey:@"usdaNumbers"];
75 if (!_nutritionComponents) {
76 _nutritionComponents = [[NSMutableArray alloc] init];
96 [
self.view setBackgroundColor:[UIColor colorWithHue:0.17 saturation:0.5 brightness:0.7 alpha:1.0]];
100 CGRect totalFrame =
self.view.frame;
101 CGRect topNavigationFrame = [[[
self navigationController] navigationBar] frame];
104 float topOfPageFloat = topNavigationFrame.origin.y + topNavigationFrame.size.height;
105 topOfPage = [[NSNumber alloc] initWithFloat:topOfPageFloat];
107 featuresWidth = [[NSNumber alloc] initWithFloat:featuresWidthFloat];
109 sideMarginWidth = [[NSNumber alloc] initWithFloat:sideMarginWidthFloat];
112 UIImage *backgrdImage = [UIImage imageNamed:@"red_barn_field.png"];
113 CGSize photoSize = [backgrdImage size];
114 float resizeRatio = photoSize.height / totalFrame.size.height;
115 UIImage *resizedImage = [UIImage imageWithCGImage:[backgrdImage CGImage]
116 scale:backgrdImage.scale * resizeRatio
117 orientation:(backgrdImage.imageOrientation) ];
118 UIImageView *backgrd = [[UIImageView alloc] initWithImage:resizedImage];
119 [
self.view addSubview:backgrd];
132 andComponents:_nutritionComponents
134 UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
135 gesture.direction = UISwipeGestureRecognizerDirectionRight;
136 [parameterTableView addGestureRecognizer:gesture];
138 [parameterTableView setViewForHead:menuItemView];
139 [parameterTableView setViewForTail:editTotalView];
141 [
self.view addSubview:parameterTableView];
143 UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"HealthKit"
144 style:UIBarButtonItemStylePlain
146 action:@selector(checkWithHealthKit)];
147 self.navigationItem.rightBarButtonItem = anotherButton;
148 self.navigationItem.rightBarButtonItem.enabled = YES;
150 - (void) viewDidAppear:(BOOL)animated
152 [
super viewDidAppear:animated];
157 [menuItemView appear:parameterTableView.bounds];
158 [editTotalView appear:self.view.bounds];
161 - (void) viewWillAppear:(BOOL)animated
164 NSLog(
@"USDAparameterEntry.viewWillAppear: usdaNumbers: %@", [
self.
focusMenuItem usdaNumbers]);
168 NSData *data = [[
self.focusMenuItem usdaNumbers] dataUsingEncoding:NSUTF8StringEncoding];
170 NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data
174 NSLog(
@"USDAparameterEntry.viewWillAppear: error: %@", error);
176 NSLog(
@"USDAparameterEntry.viewWillAppear: jsonResponse: %@", jsonResponse);
177 NSArray<NSDictionary *> *parameters = [jsonResponse mutableArrayValueForKey:@"usdaNumbers"];
178 NSArray<NSDictionary *> *parametersWithAuth = [localData
annotateAuthority:parameters];
179 [parameterTableView update:parametersWithAuth];
180 [parameterTableView reloadData];
183 [editTotalView appear:parameterViewFrame];
185 - (void) viewWillDisappear:(BOOL)animated
187 NSLog(
@"USDAparameterEntry.viewWillDisappear: usdaNumbers: %@", [
self.
focusMenuItem usdaNumbers]);
188 NSLog(
@"USDAparameterEntry.viewWillDisappear: nutritionComponents: %@", _nutritionComponents);
203 NSString *jsonReturn =
@"{ \"usdaNumbers\
" : [";
204 for (NSDictionary *nutritCompo in _nutritionComponents) {
206 jsonReturn = [jsonReturn stringByAppendingString:nuroidAddition];
208 jsonReturn = [jsonReturn stringByAppendingString:@"] }"];
209 NSLog(
@"USDAparameterEntry.viewWillDisappear: jsonReturn: %@", jsonReturn);
211 NSData *jsonReturnData = [jsonReturn dataUsingEncoding:NSUTF8StringEncoding];
213 NSObject *jsonSerialized = [NSJSONSerialization JSONObjectWithData:jsonReturnData options:NSJSONReadingAllowFragments error:&err];
214 if (jsonSerialized) {
215 NSString *jsonSerializedClass = NSStringFromClass([jsonSerialized
class]);
216 NSLog(
@"USDAparameterEntry.viewWillDisappear: valid data, top class: %@", jsonSerializedClass);
217 if (([jsonSerializedClass isEqualToString:
@"__NSCFDictionary"])
218 || ([jsonSerializedClass isEqualToString:
@"__NSSingleEntryDictionaryI"])){
219 NSDictionary *jsonSerializedDict = (NSDictionary *)jsonSerialized;
220 NSObject *uNums = [jsonSerializedDict objectForKey:@"usdaNumbers"];
221 NSString *uNumsClass = NSStringFromClass([uNums
class]);
222 NSLog(
@"USDAparameterEntry.viewWillDisappear: uNumsClass: %@", uNumsClass);
225 if ([NSJSONSerialization isValidJSONObject:jsonSerialized]) {
226 NSLog(
@"USDAparameterEntry.viewWillDissappear: json is valid");
228 NSString *jsonString = [[NSString alloc] initWithData:jsonReturnData encoding:NSUTF8StringEncoding];
230 NSLog(
@"USDAparameterEntry.viewWillDissappear: ---> jsonString: %@", jsonString);
231 NSLog(
@"USDAparameterEntry.viewWillDissappear: jsonSerializedDict: %@", [jsonSerializedDict descriptionWithLocale:nil]);
233 [
self.focusMenuItem setUsdaNumbers:jsonString];
234 }
else if ([jsonSerializedClass isEqualToString:
@"__NSSingleEntryDictionaryI"]) {
235 NSDictionary *jsonSerializedDict = (NSDictionary *)jsonSerialized;
236 NSObject *uNums = [jsonSerializedDict objectForKey:@"usdaNumbers"];
237 NSString *uNumsClass = NSStringFromClass([uNums
class]);
238 NSLog(
@"USDAparameterEntry.viewWillDisappear: single-entry dictionary: uNumsClass: %@", uNumsClass);
240 NSLog(
@"USDAparameterEntry.viewWillDissappear: jsonSerializedClass: %@", jsonSerializedClass);
243 NSLog(
@"USDAparameterEntry.viewWillDisappear: invalid data");
253 NSSet *forAuthorizationCheck = [
self produceSetWith: _nutritionComponents];
256 -(NSSet *) produceSetWith:(NSArray *)nutrComp
258 NSMutableSet *ret = [[NSMutableSet alloc] init];
259 for (NSDictionary *entry in nutrComp) {
260 NSLog(
@"USDAparameterEntry.produceSetWith: entry: %@", entry);
262 HKQuantityType *rowQuantityType = [HKObjectType quantityTypeForIdentifier:[@"HKQuantityTypeIdentifierDietary" stringByAppendingString:caption]];
263 [ret addObject:rowQuantityType];
270 CGRect totalFrame =
self.view.frame;
271 CGRect topNavigationFrame = [[[
self navigationController] navigationBar] frame];
272 float topOfPageFloat = topNavigationFrame.origin.y + topNavigationFrame.size.height;
273 topOfPage = [[NSNumber alloc] initWithFloat:topOfPageFloat];
275 featuresWidth = [[NSNumber alloc] initWithFloat:featuresWidthFloat];
277 sideMarginWidth = [[NSNumber alloc] initWithFloat:sideMarginWidthFloat];
286 return self.view.frame.size.width;
293 return [menuItemView heightRequirement]
294 + [_nutritionComponents count] * 42
295 + [editTotalView heightRequirement]
300 float parameterFramePerCentHeightMax = 0.26;
301 CGRect totalFrame =
self.view.frame;
302 float paramLineHgtPerCent = 46.0 / totalFrame.size.height;
306 float suggestedParamHeightPerCent = paramLineHgtPerCent * [_nutritionComponents count];
307 if (parameterFramePerCentHeightMax < suggestedParamHeightPerCent) {
308 suggestedParamHeightPerCent = parameterFramePerCentHeightMax;
313 -(void)didSwipe:(UIGestureRecognizer *)gestureRecognizer {
315 if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
316 CGPoint swipeLocation = [gestureRecognizer locationInView:parameterTableView];
317 swipedIndexPath = [parameterTableView indexPathForRowAtPoint:swipeLocation];
318 UITableViewCell* swipedCell = [parameterTableView cellForRowAtIndexPath:swipedIndexPath];
319 NSLog(
@"USDAparameterEntry.didSwipe: cell: %@", [swipedCell description]);
320 [swipedCell setBackgroundColor:[UIColor orangeColor]];
322 [editTotalView showRemoveOption:YES];
323 [parameterTableView scrollForControlPanel];
327 #pragma mark - Z5HealthConnectionProtocol 328 - (void) healthQuantityTypeData: (HKQuantityType *)quantityType success: (Boolean) flag
330 NSLog(
@"USDAparameterEntry.healthQuantityTypeData");
334 NSLog(
@"USDAparameterEntry.updateToAuthorizationOK");
335 [parameterTableView update:_nutritionComponents];
336 NSLog(
@"USDAparameterEntry.healthQuantityTypeData: nutritionComponents: %@", _nutritionComponents);
337 [parameterTableView reloadData];
340 #pragma mark - Z6ContainingView` 344 return parameterViewFrame;
347 #pragma mark - U3ParameterTableDelegate 348 - (void) didSelectParameterRow: (NSIndexPath *)iPath
352 [editTotalView configureToState:PICK_QUANTITY];
359 - (void) updatedParameterArray:(NSArray *)parameterArray;
361 [_nutritionComponents removeAllObjects];
362 [_nutritionComponents addObjectsFromArray:parameterArray];
373 if (parameterPanelHgt < 0) parameterPanelHgt = 0;
374 CGRect totalFrame =
self.view.frame;
375 float parameterPanelHgtLimit = totalFrame.size.height -
topOfPage.floatValue - 8;
376 if (parameterPanelHgt > parameterPanelHgtLimit) {
377 NSLog(
@"USDAparamEntryController.manageParameterViewFrame: limit vertical from %3.2f to %3.2f", parameterPanelHgt, parameterPanelHgtLimit);
378 parameterPanelHgt = parameterPanelHgtLimit;
384 [parameterTableView setFrame:parameterViewFrame];
385 [parameterTableView reloadData];
387 NSIndexPath *addIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
388 [parameterTableView scrollToRowAtIndexPath:addIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
390 NSLog(
@"USDAparameterView.manageParameterViewFrame: %3.2f/%3.2f %3.2f/%3.2f", parameterViewFrame.origin.x, parameterViewFrame.origin.y, parameterViewFrame.size.width, parameterViewFrame.size.height);
392 return parameterPanelHgt;
399 #pragma mark - Z6ParamEditTotalDelegate 406 [parameterTableView scrollForControlPanel];
410 NSLog(
@"USDAparameterEntry: clickRemoveButton");
411 [editTotalView showRemoveOption:NO];
413 NSLog(
@"USDAparameterEntry.clickRemoveButton: remove %@",
swipedIndexPath);
414 NSInteger tRow = [swipedIndexPath row];
415 [_nutritionComponents removeObjectAtIndex:tRow];
416 [parameterTableView update:_nutritionComponents];
423 - (void) addParameter: (NSDictionary *)newComponentSpecDict
427 NSLog(
@"USDAparameterView.addParameter: RESTART HERE: %@ already listed", specDictName);
428 [parameterTableView updateParameter:newComponentSpecDict];
430 [parameterTableView addParameter:newComponentSpecDict];
439 [
self.view setNeedsDisplay];
443 NSDictionary *selectParameters;
446 selectParameters = [_nutritionComponents objectAtIndex:editParameterIndexRow];
448 NSLog(
@"USDAparameterEntry.selectedParameterList: editParameterIndexRow: %ld nutritionComponents count: %lu", (
long)
editParameterIndexRow, (
unsigned long)[_nutritionComponents count] );
451 selectParameters = [[NSDictionary alloc] init];
453 return selectParameters;
458 NSLog(
@"USDAParameterEntryViewController.getTotalEditState: returns INITIAL_STATE");
465 [parameterTableView setViewForTail:editTotalView];
469 #pragma mark - Z6MenuItemControlbarDelegate 475 - (void) addMenuItemOnToday:(UIButton *)sender
480 #pragma mark - Z6ParamValueEditDelegate 482 #pragma mark - UIPickerViewDataSource 483 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
488 - (NSInteger)pickerView:(UIPickerView *)pickerView
489 numberOfRowsInComponent:(NSInteger)component
496 #pragma mark (removed UITextFieldDelegate) 518 #pragma mark - (removed U7ParamEditControlDelegate) 652 - (UIView *) createParameterValueEntryViewWithFrame: (CGRect) frame caption: (NSString *) nutrCaption
654 CGRect parameterNameRect = CGRectMake(0, 0, 90, 38);
655 CGRect parameterValueRect = CGRectMake(90, 0, 70, 38);
656 UIView* ret = [[UIView alloc] initWithFrame:frame];
657 [ret setBackgroundColor:[UIColor blueColor]];
659 UILabel *parameterType = [[UILabel alloc] initWithFrame:parameterNameRect];
660 [parameterType setBackgroundColor:[UIColor grayColor]];
661 [parameterType setText:nutrCaption];
662 [ret addSubview:parameterType];
664 UITextField *parameterValue = [[UITextField alloc] initWithFrame:parameterValueRect];
665 [parameterValue setBackgroundColor:[UIColor lightGrayColor]];
666 [ret addSubview:parameterValue];
671 - (NSString *) stringForPickerRow99: (NSInteger) row
674 if ((row >= 0) && (row < [[[[
Z5DataController sharedInstance] localDataController] availableNutritionParamArray] count])) {
680 HKQuantityType *rowQuantityType = [HKObjectType quantityTypeForIdentifier:rowQuantityTypeClue];
683 NSString *rowQuanTypeString = [rowQuantityType description];
687 NSString *protoCaption = [rowQuanTypeString substringFromIndex:31];
696 #pragma mark - remainder 698 [
super didReceiveMemoryWarning];
703 #pragma mark - storyboard Navigation
void getAddedAuthorizationToShare:forDelegate:(NSSet *writeNutrTypes, [forDelegate] id< Z5HealthConnectionProtocol > requestFrom)
void updateToAuthorizationOK()
NSString * componentNameKey()
float resizeParameterFrame()
void captureNutritionComponents()
void didReceiveMemoryWarning()
void scrollForControlPanel()
NSSet * produceSetWith:(NSArray *nutrComp)
instancetype sharedInstance()
U3ParameterTableView * parameterTableView
NSNumber * sideMarginWidth
NSDictionary * selectedParameterList()
float parameterViewHeight()
Z6ParamEditTotalView * editTotalView
TotalEditStateEnum getTotalEditState()
NSString * componentValueKey()
float parameterViewHeight2()
Singleton interface to both core and remote data sources.
NSIndexPath * swipedIndexPath
void showUpdatedHeaderFooter()
Z6MenuItemFocusView * menuItemView
float manageParameterViewFrame()
NSMutableDictionary * usdaNumbersJsonUpdated
NSInteger editParameterIndexRow
NSMutableArray * annotateAuthority:(NSArray *componentArray)
void checkWithHealthKit()
float sideMarginWidthFloat
NSDictionary * usdaNumbersJsonInitial