Kaynağa Gözat

Add new Meal: Dessert. Clean and improve ktchn's Planner model.

Tatiana Inama 7 yıl önce
ebeveyn
işleme
ec57a15f9a

+ 1 - 1
ktchn/src/planner/controller.ts

@@ -1,6 +1,6 @@
 import { IMongoService, IDBDocument } from '../mongo';
 import { ChainPController } from '../promise-all-middleware';
-import PlanDB, { WeeklyPlanner, CompletePlanDB, Weekday, Plan, CompactWeeklyPlanner } from './model';
+import PlanDB, { CompletePlanDB, Weekday, Plan, WeeklyPlanner } from './model';
 import moment, { Moment } from 'moment';
 import { ObjectId } from 'bson';
 

+ 18 - 27
ktchn/src/planner/model.ts

@@ -3,30 +3,42 @@ import { RecipeDB } from '../recipes/model';
 import { Moment, weekdays } from 'moment';
 
 export enum Meal {
-  Lunch = 1,
-  Dinner
+  Lunch = 0,
+  Dinner,
+  Dessert
 }
 
 export type Weekday =
   'monday' |
   'tuesday' |
-  'wednsday' |
+  'wednesday' |
   'thursday' |
   'friday' |
   'saturday' |
   'sunday';
 
-export type WeekPlan<T> = {
-  [day in Weekday]: T;
+export type DayPlan = {
+  date: Moment,
+  [Meal.Lunch]?: RecipePlan,
+  [Meal.Dinner]?: RecipePlan,
+  [Meal.Dessert]?: RecipePlan
+}
+
+export type WeekPlan = {
+  [day in Weekday]: DayPlan;
 };
 
+export interface WeeklyPlanner extends WeekPlan {
+  week: number;
+}
+
 export interface Plan {
   date: Date,
   recipe: ObjectID,
   meal: Meal
 }
 
-export default interface PlanDB extends Plan{
+export default interface PlanDB extends Plan {
   _id: ObjectID,
 }
 
@@ -38,24 +50,3 @@ export interface RecipePlan {
 export interface CompletePlanDB extends Omit<PlanDB, 'recipe'> {
   recipe: RecipePlan
 }
-
-export interface DayPlan {
-  date: Moment,
-  lunch?: RecipeDB,
-  dinner?: RecipeDB
-}
-
-export interface CompactDayPlan {
-  date: Date,
-  lunch?: { _id: ObjectID, name: string },
-  dinner?: { _id: ObjectID, name: string },
-}
-
-export interface WeeklyPlanner extends WeekPlan<DayPlan> {
-  week: number
-}
-
-export interface CompactWeeklyPlanner extends WeekPlan<CompactDayPlan> {
-  week: number
-}
-

+ 9 - 4
recipes/src/containers/Planner/index.tsx

@@ -3,7 +3,7 @@ import { RouteComponentProps } from 'react-router';
 import Navbar from 'components/Navbar';
 import { AppState } from 'store/configureStore';
 import { connect } from 'react-redux';
-import { PlannerState, Weekday, Meal, PlannerMode, RecipePlan, WeekPlan } from 'types/planner';
+import { PlannerState, Weekday, Meal, PlannerMode, RecipePlan, WeekPlan, Meals } from 'types/planner';
 import Card from 'components/Card';
 import PlannerActions, { fetchPlannerActionCreator, savePlannerActionCreator } from './actions';
 import moment, { Moment } from 'moment';
@@ -159,8 +159,13 @@ const DisplayPlanner: React.SFC<{
         <div className='container'>
           <div className='day-schedule day-schedule--meals'>
             <div className='day-schedule--date'></div>
-            <div className='day-schedule--meal'> <h5>lunch</h5></div>
-            <div className='day-schedule--meal'> <h5>dinner</h5> </div>                                      
+            {
+              Meals.map((meal, key) => (
+                <div className='day-schedule--meal' key={key}>
+                  <h5>{Meal[meal]}</h5>
+                </div>
+              ))
+            }
           </div>
           {
             week.map(([weekday, day], dayNumber) => (
@@ -169,7 +174,7 @@ const DisplayPlanner: React.SFC<{
                   <h5>{weekday} {moment(day).format('DD')}</h5>
                 </div>
                 {
-                  [Meal.Lunch, Meal.Dinner].map((meal, key) => {
+                  Meals.map((meal, key) => {
                     const recipe = planner[weekday][meal];
                     return (
                       <div className='day-schedule--meal' key={key}>

+ 2 - 1
recipes/src/containers/Planner/services.ts

@@ -21,7 +21,8 @@ const toDBPlan = (weekplan: WeekPlan) => {
     return [
       ...acc,
       ...mkPlan(day, Meal.Lunch),
-      ...mkPlan(day, Meal.Dinner)
+      ...mkPlan(day, Meal.Dinner),
+      ...mkPlan(day, Meal.Dessert)
     ]
   }, [] as Array<DBDayPlan>)
 }

+ 5 - 1
recipes/src/types/planner.ts

@@ -12,6 +12,7 @@ export type Weekday =
 export enum Meal {
   Lunch = 0,
   Dinner,
+  Dessert
 }
 
 export type RecipePlan = {
@@ -23,6 +24,7 @@ export type DayPlan = {
   date: Moment,
   [Meal.Lunch]?: RecipePlan,
   [Meal.Dinner]?: RecipePlan,
+  [Meal.Dessert]?: RecipePlan
 };
 
 export type WeekPlan = {
@@ -55,4 +57,6 @@ export interface DBDayPlan {
 
 export interface DBPlanner extends WeekPlan {
   week: number,
-}
+}
+
+export const Meals = [Meal.Lunch, Meal.Dinner, Meal.Dessert]