72 self.title =
@"Y4MenuPostViewController";
74 +
self.navigationController.navigationBar.frame.size.height;
77 CGRect totalFrame =
self.view.frame;
78 NSLog(
@"Y4MenuPostViewController.viewDidLoad: width: %3.2f", totalFrame.size.width);
81 NSLog(
@"MenuPostViewController.viewDidLoad: postingDate: %@", _postingDate);
82 for (
Meal *m in _postedMeals) {
83 NSSet *items = [m containedItem];
84 NSSortDescriptor *modelDescriptor = [NSSortDescriptor
85 sortDescriptorWithKey:@"name"
87 selector:@selector(caseInsensitiveCompare:)];
88 NSArray<NSSortDescriptor *> *descriptors = @[modelDescriptor];
89 NSArray *itemsAray = [items sortedArrayUsingDescriptors:descriptors];
90 NSLog(
@"MenuPostViewController.viewDidLoad: meal: %@", [m orderDate]);
92 NSLog(
@"MenuPostViewController.viewDidLoad: menuItem: %@", [mi name]);
98 UIImage *backgrdImage = [UIImage imageNamed:@"stillLifeWithWineAndCheese.png"];
99 CGSize photoSize = [backgrdImage size];
100 float resizeRatio = photoSize.height / totalFrame.size.height;
101 UIImage *resizedImage = [UIImage imageWithCGImage:[backgrdImage CGImage]
102 scale:backgrdImage.scale * resizeRatio
103 orientation:(backgrdImage.imageOrientation) ];
104 UIImageView *backgrd = [[UIImageView alloc] initWithImage:resizedImage];
105 [
self.view addSubview:backgrd];
115 NSMutableArray<MenuItem *> *proposedTodaysMenu = [localData
todaysMenuItems];
116 NSLog(
@"MenuPostViewController.viewDidLoad: proposedTodaysMenu: %@", proposedTodaysMenu);
118 if (proposedTodaysMeal) {
119 NSLog(
@"MenuPostViewController.viewDidLoad: proposedTodaysMeal: %@ -date: %@", proposedTodaysMeal, [proposedTodaysMeal orderDate]);
121 NSMutableArray *todayItems = [[NSMutableArray alloc] initWithArray:[[proposedTodaysMeal
containedItem] allObjects]];
124 }
else if ((0 == [proposedTodaysMenu count]) && (nil != _postedMeals)) {
128 NSMutableArray<MenuItem *> *todaysMenuItems = [localData
todaysMenuItems];
129 if (nil != todaysMenuItems) {
133 NSLog(
@"MenuPostViewController.viewDidLoad: sniffing at history, with meal edit in progress");
138 UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeMenu:)];
139 gesture.direction = UISwipeGestureRecognizerDirectionRight;
142 NSLog(
@"MenuPostViewController.viewDidLoad: end");
145 - (void) viewDidAppear:(BOOL)animated
147 [
super viewDidAppear:animated];
148 float tableWidth =
self.view.bounds.size.width;
149 NSLog(
@"MenuPostViewController.viewDidAppear: tableWidth: %3.2f", tableWidth);
158 CGRect dateTimeViewFrame = CGRectMake(0.0, 0.0, tableWidth - 8.0, dateTimeViewFrameHeight);
159 [dateTimeView appear:dateTimeViewFrame];
161 NSString *mealTimeDateStamp;
163 NSDateFormatter *mDayFormatter = [[NSDateFormatter alloc] init];
164 [mDayFormatter setDateStyle:NSDateFormatterMediumStyle];
165 [mDayFormatter setTimeStyle:NSDateFormatterNoStyle];
166 mealTimeDateStamp = [mDayFormatter stringFromDate:_postingDate];
167 NSLog(
@"MenuPostViewController.viewDidAppear: mealTimeDateStamp: %@", mealTimeDateStamp);
169 mealTimeDateStamp =
@"missing posted orderDate";
171 [dateTimeView setLabelCaption:mealTimeDateStamp];
172 [dateTimeView appear:self.view.bounds];
173 [menuStatusView appear:self.view.bounds];
177 [menuChoicesTableView scrollInitially];
180 NSArray<MenuItem *> *showMenu;
183 [dateTimeView setLabelCaption:@"requested menu"];
184 [dateTimeView appear:self.view.bounds];
185 [menuStatusView appear:self.view.bounds];
194 - (void) viewWillAppear:(BOOL)animated
196 NSLog(
@"MenuPostViewController.viewWillAppear");
197 [menuChoicesTableView appearingNow];
203 - (void) updateTodaysMenuView:(NSMutableArray<
MenuItem *> *)proposedTodaysMenu
206 float tableWidth =
self.view.bounds.size.width;
207 CGRect menuTableViewFrame = CGRectMake(8.0, 30.0, 320, 30);
212 NSLog(
@"MenuPostViewController.updateTodaysMenuView: clearly an ordered meal");
215 CGRect dateTimeViewFrame = CGRectMake(0.0, 0.0, tableWidth - 8.0, dateTimeViewFrameHeight);
219 [menuChoicesTableView setViewForMenuHead:dateTimeView];
220 [menuChoicesTableView setViewForMenuTail:menuStatusView];
221 [menuChoicesTableView clearParameters];
224 [
self.view addSubview:menuChoicesTableView];
229 Boolean needsAdditionalAuthority = NO;
230 for (NSDictionary *component in componentsPresent) {
232 if (![authorityStatus boolValue]) {
234 HKQuantityType *rowQuantityType = [HKObjectType quantityTypeForIdentifier:[@"HKQuantityTypeIdentifierDietary" stringByAppendingString:componentName]];
235 [needAuthorizationSet addObject:rowQuantityType];
236 needsAdditionalAuthority = YES;
239 if (needsAdditionalAuthority) {
249 - (void) updateMenuSeriesView:(NSArray<
Meal *> *)postedMeals
251 float tableWidth =
self.view.bounds.size.width;
252 NSLog(
@"MenuPostViewController.updateMenuSeriesView: tableWidth: %3.2f", tableWidth);
255 CGRect menuTableViewFrame = CGRectMake(4.0, 4.0, tableWidth - 8.0, 32);
260 NSLog(
@"MenuPostViewController.updateMenuSeriesView: clearly a series of meals from the calendar orderDate");
262 CGRect dateTimeViewFrame = CGRectMake(0.0, 0.0, tableWidth - 8.0, dateTimeViewFrameHeight);
266 [menuChoicesTableView setViewForHead:dateTimeView];
267 [menuChoicesTableView setViewForMenuTail:nil];
268 [menuChoicesTableView update:nil];
270 [
self.view addSubview:menuChoicesTableView];
281 UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
284 case UIDeviceOrientationPortrait:
285 case UIDeviceOrientationFaceUp:
287 [menuChoicesTableView scrollInitially];
292 case UIDeviceOrientationLandscapeLeft:
293 case UIDeviceOrientationLandscapeRight:
297 case UIDeviceOrientationUnknown:
299 NSLog(
@"MenuPostViewController.orientUI: orientation unknown");
304 NSLog(
@"MenuPostViewController.orientUI: other: %ld", (
long)orientation);
311 NSLog(
@"MenuPostController.clickAction");
313 #pragma mark - U3ParameterTableDelegate 314 - (void) updatedParameterArray:(NSArray *)parameterArray
316 NSLog(
@"MenuPostViewController.updatedParameterArray: NO-OP NO-OP");
317 NSLog(
@"MenuPostViewController.updatedParameterArray: parameterArryCount: %lu", (
unsigned long)[parameterArray count]);
318 for (NSObject *parameterItem in parameterArray) {
319 Class parameterItemClass = [parameterItem class];
320 NSString *className = NSStringFromClass(parameterItemClass);
321 if ([NSStringFromClass(parameterItemClass) containsString:
@"Dictionary"]) {
322 NSDictionary *itemDictionary = (NSDictionary *)parameterItem;
324 NSString *itemName = [itemDictionary objectForKey:@"component-type"];
325 NSLog(
@"MenuPostViewController.updatedParameterArray: item-name: %@", itemName);
326 }
else if ([NSStringFromClass(parameterItemClass) containsString:
@"Meal"]) {
327 Meal *itemMeal = (
Meal *)parameterItem;
328 NSLog(
@"MenuPostViewController.updatedParameterArray: meal-name: %@", [[itemMeal orderDate] description]);
330 NSLog(
@"MenuPostViewController.updatedParameterArray: className: %@", className);
337 CGRect totalFrame =
self.view.frame;
338 float leftMargin = 0.02*totalFrame.size.width;
340 float controlWidth = 0.96*totalFrame.size.width;
343 float parameterListPanelHeight = [menuChoicesTableView getViewHeightReqmt];
344 CGRect menuItemParametersFrame = CGRectMake(leftMargin,
navbarBottomEdge + 6, controlWidth, parameterListPanelHeight);
345 [menuChoicesTableView setFrame:menuItemParametersFrame];
347 NSLog(
@"MenuPostController.resizeParameterFrame: height: %3.2f", menuItemParametersFrame.size.height);
349 return parameterListPanelHeight;
351 - (void) didSelectParameterRow:(NSIndexPath *) index
353 NSLog(
@"MenuPostViewController.didSelectParameterRow");
361 #pragma mark - U3MenuTableDelegate 367 headerDate = [[NSDate alloc] initWithTimeIntervalSinceNow:0];
371 headerDate = _postingDate;
377 NSDateComponents *components = [[NSCalendar currentCalendar]
378 components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay
379 fromDate:headerDate];
380 NSDate *dayBegin = [[NSCalendar currentCalendar] dateFromComponents:components];
401 - (void) updatedMenuItemArray:(NSArray *)menuItemArray
403 NSLog(
@"MenuPostController.updatedMenuItemArray");
407 float menuItemListPanelHeight = 99;
408 NSLog(
@"MenuPost.resizeMenuItemFrame: menuItemListPanelHeight: %3.2f", menuItemListPanelHeight);
409 return menuItemListPanelHeight;
411 - (void) didSelectMenuItemRow:(NSIndexPath *) index
413 Meal *meal = [_postedMeals objectAtIndex:[index section]];
414 NSSortDescriptor *modelDescriptor = [NSSortDescriptor
415 sortDescriptorWithKey:@"name"
417 selector:@selector(caseInsensitiveCompare:)];
418 NSArray *descriptors = @[modelDescriptor];
419 NSArray *itemsArray = [meal.containedItem sortedArrayUsingDescriptors:descriptors];
420 MenuItem *mi = [itemsArray objectAtIndex:[index row]];
424 [
self.navigationController pushViewController:recipeView animated:YES];
428 #pragma mark - meal aproval sequence 431 NSLog(
@"MenuPostController.didTapBravoFooter");
436 NSLog(
@"MenuPostController.didTapNetworkFooter");
457 NSLog(
@"MenuPostViewController.didTapConsumedFooter: Current_Menu");
462 NSLog(
@"MenuPostViewController.didTapConsumedFooter: Calendar_Menu");
469 float tableWidth =
self.view.bounds.size.width;
489 [menuJournalView setFrame:menuJournalFrame];
490 [menuChoicesTableView setViewForMenuHead:nil];
491 [menuChoicesTableView setViewForMenuTail:menuJournalView];
492 [menuJournalView appear:menuJournalFrame];
495 [menuChoicesTableView.givenMenuItems removeAllObjects];
496 [menuChoicesTableView showFooterOnly:YES];
498 [menuChoicesTableView reloadData];
508 NSArray<Meal *> *mealsToday;
509 NSDate *rightNow = [NSDate dateWithTimeIntervalSinceNow:0];
513 [menuChoicesTableView setViewForMenuTail:nil];
517 NSLog(
@"HEY: Y4MenuPostViewController.didTapConsumedFooter: meal count: %ld", [totalParams count]);
520 [menuChoicesTableView update:totalParams];
521 [menuChoicesTableView reloadData];
529 - (NSArray<NSDictionary *> *) parametersOfMeals:(NSArray<
Meal *> *)meals
531 NSMutableArray *buildRet = [[NSMutableArray alloc] init];
532 for (
Meal *meal in meals) {
534 for (
MenuItem *mealMenuItem in mealItems) {
535 NSString *theNumbers = [mealMenuItem usdaNumbers];
536 if (theNumbers != nil) {
538 NSData *objectData = [theNumbers dataUsingEncoding:NSUTF8StringEncoding];
539 NSDictionary *menuItemUsdaNumbers = [NSJSONSerialization JSONObjectWithData:objectData
540 options:NSJSONReadingMutableContainers
543 NSLog(
@"MenuPostViewController.parametersOfMeals: ERR: %@", jsonError);
545 NSLog(
@"MenuPostViewController.parametersOfMeals: json: %@", menuItemUsdaNumbers);
548 NSLog(
@"MenuPostViewController.parametersOfMeals: componentName: %@", componentName);
556 NSArray<NSDictionary *> *ret = [NSArray arrayWithArray:buildRet];
559 - (NSMutableArray<NSDictionary *> *) addParameters:(NSDictionary *) itemParameters toRunningTotal:(NSMutableArray<NSDictionary *> *) runningTotal
568 assert(runningTotal);
569 assert(itemParameters);
570 for (NSDictionary *paramDictionary in runningTotal) {
572 if ([runningRecordName isEqualToString:parameterName]) {
574 float enterParameterValueF = [enterParameterValue floatValue];
576 float runningParameterValueF = [runningParameterValue floatValue];
580 float newRunningValueF = enterParameterValueF + runningParameterValueF;
581 NSNumber *newRunningValue = [NSNumber numberWithFloat:newRunningValueF];
587 - (void) didTapRatingControl:(
float) rating
589 NSLog(
@"MenuPostController.didTapRatingControl: %3.2f", rating);
595 NSLog(
@"MenuPostController.didTapCheckFooter");
599 NSDate *mealConsumeDate = [menuJournalView getMealJournalDate];
605 [menuChoicesTableView reloadData];
610 NSLog(
@"MenuPostViewController.popOut: pop view off stack");
611 [[
self navigationController] popToRootViewControllerAnimated:YES];
615 NSLog(
@"MenuPostViewController.didTapSkippedFooter");
621 [[
self navigationController] popViewControllerAnimated:YES];
623 #pragma mark - Z5HealthConnectionProtocol 624 - (void) healthQuantityTypeData: (HKQuantityType *)quantityType success: (Boolean) flag
626 NSLog(
@"MenuPostViewController:healthQuantityTypeDate: NO-OP success: %@", (flag?
@"yes":
@"no"));
630 NSLog(
@"MenuPostViewController.updateToAuthorizationOK");
634 [menuChoicesTableView reloadData];
638 #pragma mark - gesture processing 639 -(void)didSwipeMenu:(UIGestureRecognizer *)gestureRecognizer {
641 if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
661 [
super didReceiveMemoryWarning];
void getAddedAuthorizationToShare:forDelegate:(NSSet *writeNutrTypes, [forDelegate] id< Z5HealthConnectionProtocol > requestFrom)
NSMutableSet * needAuthorizationSet
void initializeTodaysMeal()
NSString * componentNameKey()
NSArray< NSDictionary * > * todaysMenuComponents()
instancetype sharedInstance()
void todaysMealRated:(float rating)
NSArray< Meal * > * findMealsWithDate:(NSDate *findDate)
NSString * componentValueKey()
NSString * componentAuthorityKey()
Singleton interface to both core and remote data sources.
NSSet< MenuItem * > * containedItem
NSMutableArray< MenuItem * > * todaysMenuItems
NSDate * toLocalTime:(NSDate *grenwich)
void todaysMealConsumed:forDelegate:(NSDate *date, [forDelegate] id< Z5HealthConnectionProtocol > jingo)