57 NSMutableArray<Meal *> *givenMeals;
76 - (id) initWithFrame:(CGRect)frame
77 andParameters:(NSArray<NSDictionary *> *)components
78 andMenuItems:(NSArray<
MenuItem *> *)menuitems
79 inContainer:(
id<U3MenuTableDelegate, U3ParameterTableDelegate>)container
81 NSLog(
@"U3MenuChoicesTableView.init-A: components: %lu", (
unsigned long)[components count]);
92 if (0 < [menuitems count]) {
99 [
self setDelegate:self];
100 self.dataSource =
self;
102 [
self setScrollEnabled:YES];
114 - (id) initWithFrame:(CGRect)frame
115 andMenus:(NSArray<
Meal *> *)meals
116 inContainer:(
id<U3MenuTableDelegate, U3ParameterTableDelegate>)container
118 NSUInteger mealCount = [meals count];
119 NSLog(
@"U3MenuChoicesTableView.init-B: meal count: %lu", (
unsigned long)mealCount);
132 givenMeals = [[NSMutableArray alloc] initWithArray:meals];
136 float tableWidth =
self.frame.size.width;
137 NSLog(
@"U3MenuChoicesTableView.initWithFrame:Menus:Container: tableWidth: %3.2f", tableWidth);
141 for (
int j = 0; j < mealCount; j++) {
143 [mealSectionHeaderView setLabelCaption:@"geronimo"];
144 [sectionHeaderViews addObject:mealSectionHeaderView];
149 [
self setDelegate:self];
150 self.dataSource =
self;
155 [
self setScrollEnabled:YES];
163 - (id) initWithFrame:(CGRect)frame
164 andComponents:(NSArray<NSDictionary *> *)components
165 inContainer:(
id<U3MenuTableDelegate, U3ParameterTableDelegate>)container
169 NSLog(
@"U3MenuChoicesTableView.init-C: encountered on todays-menu select");
172 [
self setBackgroundColor:[UIColor colorWithRed:177.0/256 green:206.0/256 blue:131.0/256 alpha:0.4]];
177 float tableWidth =
self.frame.size.width;
181 [sectionHeaderViews addObject:mealSectionHeaderView];
185 [
self setDelegate:self];
186 self.dataSource =
self;
188 [
self setScrollEnabled:YES];
200 NSLog(
@"U3MenuChoicesTableView.appearingNow: initial section collapsed");
202 NSLog(
@"U3MenuChoicesTableView.appearingNow: initial section up");
210 for (
Meal *m in givenMeals) {
211 NSSet *items = [m containedItem];
213 NSSortDescriptor *modelDescriptor = [NSSortDescriptor
214 sortDescriptorWithKey:@"name"
216 selector:@selector(caseInsensitiveCompare:)];
217 NSArray<NSSortDescriptor *> *descriptors = @[modelDescriptor];
218 NSArray *itemsAray = [items sortedArrayUsingDescriptors:descriptors];
219 NSLog(
@"U3MenuChoicesTableView.logMenu: meal consumed: %@", [m consumeDate]);
221 NSLog(
@"U3MenuChoicesTableView.logMenu: menuItem: %@", [mi name]);
224 NSLog(
@"U3MenuChoicesTableView.logMenu: snap meal, caption: %@", m.caption);
235 - (void) showFooterOnly:(Boolean) flag
246 NSLog(
@"U3MenuChoicesTableView.getViewHeightReqmt: super height: %3.2f", ret);
252 NSUInteger nMeals = [givenMeals count];
253 float sectionHeaderHgt = 0;
259 NSLog(
@"U3MenuChoicesTableView.getViewHeightReqmt: number of Meals: %ld sectionHeaderHgt: %3.2f", (
unsigned long)nMeals, sectionHeaderHgt);
264 for (
Meal *meal in givenMeals) {
265 NSInteger n_menuItem = [[meal containedItem] count];
266 ret += sectionHeaderHgt;
267 ret += n_menuItem * 40.0f;
271 }
else if (developingMeal) {
273 NSLog(
@"U3MenuChoicesTableView.getViewHeightReqmt: view the ordered meal (A)");
274 NSInteger menuCount = [developingMeal count];
283 NSLog(
@"U3MenuChoicesTableView.getViewHeightReqmt: view the ordered footer rating view only");
288 NSLog(
@"U3MenuChoicesTableView.getViewHeightReqmt: view the ordered meal (B)");
299 NSLog(
@" .. meItMeal: %@", meItMeal);
300 NSLog(
@" .. meItContents: %@", meItMealContents);
301 NSLog(
@" .. todaysMeItCount: %ld", (
long)todaysMeItCount);
302 if (0 < todaysMeItCount) {
304 + todaysMeItCount * 40
321 - (void) updateMenu:(NSArray<
MenuItem *> *)menuItems
324 NSLog(
@"U3MenuChoicesTableView.updateMenu: menu-item: %@", [item name]);
328 NSLog(
@"U3MenuChoicesTableView.updateMenu: nutrition controller input, givenMenuItems: %@",
givenMenuItems);
333 NSLog(
@"U3MenuChoicesTableView.updateMenu: end, givenMenuItems: %@",
givenMenuItems);
336 - (void) setViewForMenuHead: (UIView <Z6ContainedView> *)headView
340 NSLog(
@"U3MenuChoicesTableView.setViewForHead: menuHeaderHeight: %3.2f",
menuHeaderHeight);
343 - (void) setViewForMenuTail: (UIView <Z6ContainedView> *) tailView
347 NSLog(
@"U3MenuChoicesTableView.setViewForMenuTail: menuFooterHeight: %3.2f",
menuFooterHeight);
352 UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipeMenu:)];
353 gesture.direction = UISwipeGestureRecognizerDirectionRight;
354 [
self addGestureRecognizer:gesture];
357 -(void)didSwipeMenu:(UIGestureRecognizer *)gestureRecognizer {
359 if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
360 CGPoint swipeLocation = [gestureRecognizer locationInView:self];
362 UITableViewCell* swipedCell = [
self cellForRowAtIndexPath:swipedMenuIndexPath];
363 NSLog(
@"U3MenuChoicesTableView.didSwipeMenu: cell row: %ld", (
long)[
swipedMenuIndexPath row]);
364 [swipedCell setBackgroundColor:[UIColor orangeColor]];
367 NSInteger nRow = [swipedMenuIndexPath row];
368 if ((0<=nRow) && ([[localData todaysMenuItems] count] > nRow)) {
390 #pragma mark - UIDateTimeFocusDelegate 394 NSLog(
@"U3MenuChoicesTableView.clickAction");
397 #pragma mark - UITableViewDelegate 398 - (void)tableView:(UITableView *)tableView
399 didSelectRowAtIndexPath:(NSIndexPath *)indexPath
401 NSLog(
@"U3menuChoicesTableView.didSelectRowAtIndexPath: %ld", (
long)indexPath.row);
403 if (0 == [indexPath section]) {
406 NSLog(
@"U3MenuChoicesTableView.didSelectRowAtIndexPath: %ld", (
long)indexPath.row);
409 #pragma mark - UITableViewDataSource 411 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
419 ret = 1 + [givenMeals count];
428 NSLog(
@"U3MenuChoicesTableView.numberOfSectionsInTableView: meals or items available");
433 [todaysMealItems removeAllObjects];
435 for (
MenuItem *mItem in [todaysMeal containedItem]) {
436 [todaysMealItems addObject:mItem];
438 NSLog(
@"U3MenuChoicesTableView.numberOfSectionsInTableView: mItem count: %ld", (
unsigned long)[
todaysMealItems count]);
441 [todaysMealItems addObject:menuItem];
444 NSLog(
@"U3MenuChoicesTableView.numberOfSectionsInTableView: nil todaysMeal");
449 NSLog(
@"U3MenuChoicesTableView.numberOfSectionsInTableView: %ld", (
long)ret);
455 - (NSInteger)tableView:(UITableView *)tableView
456 numberOfRowsInSection:(NSInteger)section
467 NSInteger mealNumber = section - 1;
468 if (givenMeals && (mealNumber < [givenMeals count])) {
470 Meal *meal = [givenMeals objectAtIndex:mealNumber];
471 switch([
self categorizeMealOrigin:meal]) {
473 NSLog(
@"U3MenuChoicesTableView.numberOfRowsInSection: meal ORIGIN_UNKNOWN");
478 NSLog(
@"U3MenuChoicesTableView.numberOfRowsInSection: meal COLLECTION_MENUITEMS");
479 NSSet *items = [meal containedItem];
484 NSLog(
@"U3MenuChoicesTableView.numberOfRowsInSection: meal IMPORT_SPEC");
489 NSLog(
@"U3MenuChoicesTableView.numberOfRowsInSection: meal PHOTO_MEAL");
514 BOOL snapFlag = ((nil != meal.
caption) && (nil != meal.
photo));
515 NSLog(
@"U3MenuChoicesTableView.categorizeMealOrigin: caption: %@", meal.
caption);
516 if (0 < [items count]) {
518 }
else if (snapFlag) {
526 - (UITableViewCell *)tableView:(UITableView *)tableView
527 cellForRowAtIndexPath:(NSIndexPath *)indexPath
529 UITableViewCell *cell = nil;
530 if (0 == [indexPath section]) {
533 cell = [tableView dequeueReusableCellWithIdentifier:@"item-todays-menu"];
535 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
536 reuseIdentifier:@"item-todays-menu"];
537 cell.contentView.autoresizingMask
538 = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
543 NSLog(
@"U3MenuChoicesTableView.(givenMeals)cellForRowAtIndexPath: %@", indexPath);
544 NSInteger mealNumber = [indexPath section] - 1;
545 Meal *sectionMeal = [givenMeals objectAtIndex:mealNumber];
546 switch([
self categorizeMealOrigin:sectionMeal]) {
548 NSLog(
@"U3MenuChoicesTableView.(givenMeals)cellForRowAtIndexPath: meal ORIGIN_UNKNOWN");
553 NSSet *items = [sectionMeal containedItem];
554 NSSortDescriptor *modelDescriptor = [NSSortDescriptor
555 sortDescriptorWithKey:@"name"
557 selector:@selector(caseInsensitiveCompare:)];
558 NSArray<NSSortDescriptor *> *descriptors = @[modelDescriptor];
559 NSArray *itemsAray = [items sortedArrayUsingDescriptors:descriptors];
561 if ([indexPath row] < [itemsAray count]) {
562 MenuItem *rowMenuItem = [itemsAray objectAtIndex:[indexPath row]];
570 NSLog(
@"U3MenuChoicesTableView.(givenMeals)cellForRowAtIndexPath: meal IMPORT_SPEC");
575 NSLog(
@"U3MenuChoicesTableView.(givenMeals)cellForRowAtIndexPath: meal PHOTO_MEAL");
589 NSLog(
@"U3MenuChoicesTableView.(NOT givenMeals)cellForRowAtIndexPath: %@", indexPath);
598 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
605 NSInteger menuN = section - 1;
609 ret = [tableMenuHead heightRequirement];
615 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
618 NSLog(
@"U3MenuChoicesTableView.viewForHeaderInSection: %ld", (
long)section);
623 NSInteger menuN = section - 1;
624 Meal *sectionMeal = [givenMeals objectAtIndex:menuN];
626 [mDateFormatter setDateStyle:NSDateFormatterNoStyle];
627 [mDateFormatter setTimeStyle:NSDateFormatterMediumStyle];
628 NSString *daytime = [mDateFormatter stringFromDate:[sectionMeal
consumeDate]];
630 [retx setLabelCaption:daytime];
631 CGRect dummp = CGRectMake(2.0, 2.0, 300.0, 26.0);
635 NSLog(
@"U3MenuChoicesTableView.view~ %@ ~ForHeaderInSection: %ld, one of given-meals", ret, (
long)section);
653 - (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
659 ret = [tableMenuTail heightRequirement];
664 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
675 - (void) setInitialSectionCollapsed:(Boolean)flag
678 [
self setNeedsDisplay];
CGFloat tableView:heightForFooterInSection:(UITableView *tableView, [heightForFooterInSection] NSInteger section)
void scrollForInstructionPanel()
id initWithFrame:andComponents:inContainer:(CGRect frame, [andComponents] NSArray *components, [inContainer] id< U3ParameterTableDelegate > container)
void setViewForHead:(UIView *headView)
instancetype sharedInstance()
UIView * tableView:viewForHeaderInSection:(UITableView *tableView, [viewForHeaderInSection] NSInteger section)
float getViewHeightReqmt()
id< U3ParameterTableDelegate > givenContainer
UIColor * menuContentsBackground()
void update:(NSArray< NSDictionary * > *components)
UITableViewCell * tableView:cellForRowAtIndexPath:(UITableView *tableView, [cellForRowAtIndexPath] NSIndexPath *indexPath)
CGFloat tableView:heightForHeaderInSection:(UITableView *tableView, [heightForHeaderInSection] NSInteger section)
float heightRequirement()
void appear:(CGRect bound)
Singleton interface to both core and remote data sources.
UIView * tableView:viewForFooterInSection:(UITableView *tableView, [viewForFooterInSection] NSInteger section)
void setViewForTail:(UIView< Z6ContainedView > *tailView)
NSInteger tableView:numberOfRowsInSection:(UITableView *tableView, [numberOfRowsInSection] NSInteger section)
NSSet< MenuItem * > * containedItem
NSMutableArray< MenuItem * > * todaysMenuItems
void labelizeCell:withText:inColor:andDetail:(UITableViewCell *targCell, [withText] NSString *txt, [inColor] UIColor *color, [andDetail] NSString *detailTxt)
void tableView:didSelectRowAtIndexPath:(UITableView *tableView, [didSelectRowAtIndexPath] NSIndexPath *indexPath)