Ver código fonte

Create Services folder and Measurement service. Update Suggestions model

Tatiana Inama 7 anos atrás
pai
commit
c50a3d20b5

+ 17 - 17
ktchn/src/ingredients/data.ts

@@ -9,7 +9,7 @@ const data: Ingredient[] = [{
   translation: {
     dutch: 'patentbloem'
   },
-  measure: 0
+  measure: 2
 }, {
   name: 'bread flour',
   variants: ['bread flour'],
@@ -19,7 +19,7 @@ const data: Ingredient[] = [{
   translation: {
     dutch: 'tarwebloem'
   },
-  measure: 0
+  measure: 2
 }, {
   name: 'pastry flour',
   variants: ['pastry flour'],
@@ -29,89 +29,89 @@ const data: Ingredient[] = [{
   translation: {
     dutch: 'zeeuwsebloem'
   },
-  measure: 0
+  measure: 2
 }, {
   name: 'almond flour',
   equivalence: 96,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'cornflour',
   equivalence: 150,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'self raising flour',
   equivalence: 125,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'honey',
   equivalence: 340,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'semolina',
   equivalence: 167,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'long rice',
   equivalence: 185,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'short rice',
   variants: ['sushi rice'],
   equivalence: 200,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'basmati rice',
   equivalence: 195,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'granulated sugar',
   variants: ['sugar', 'plain sugar'],
   equivalence: 200,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'icing sugar',
   variants: ['confectioner sugar', 'powdered sugar'],
   equivalence: 125,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'caster sugar',
   variants: ['fine sugar'],
   equivalence: 225,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'brown sugar',
   equivalence: 200,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'yeast',
   equivalence: 2.83,
   referenceUnit: 'tsp',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'yogurt',
   variants: ['plain yogurt'],
@@ -125,7 +125,7 @@ const data: Ingredient[] = [{
   equivalence: 118,
   referenceUnit: 'cup',
   prefferedUnit: 'gr',
-  measure: 0
+  measure: 2
 }, {
   name: 'chicken breast',
   variants: ['chicken', 'skinless chicken'],

+ 1 - 0
recipes/package.json

@@ -27,6 +27,7 @@
     "@types/storybook__react": "^4.0.1",
     "axios": "^0.18.0",
     "classnames": "^2.2.6",
+    "convert-units": "git+https://github.com/ben-ng/convert-units.git",
     "moment": "^2.24.0",
     "node-sass": "^4.11.0",
     "ramda": "^0.26.1",

+ 2 - 2
recipes/src/components/Ingredient/Form/index.tsx

@@ -3,7 +3,7 @@ import Input from 'components/Input';
 import Select from 'components/Select';
 import TabBar from 'components/TabBar';
 import Suggestions from 'components/Ingredient/Suggestions';
-
+import { MeasuresTypes } from 'services/measurements';
 import { SubRecipe, _recipe, _subRecipe, _ingredient } from 'types/recipes';
 
 import './styles.scss';
@@ -102,7 +102,7 @@ class IngredientForm extends React.Component<IngredientFormProps, IngredientForm
                   <Select
                     label=''
                     value={this.normalizeUnits(ingredient.unit)}
-                    options={unitOptions}
+                    options={MeasuresTypes().map(m => ({label: m, value: m}))}
                     onChange={this.onChangeUnit(['ingredients', activeGroup, 'ingredients', index, 'unit'])}
                   />
                   <Input

+ 4 - 0
recipes/src/components/Ingredient/Form/styles.scss

@@ -20,6 +20,10 @@
       div {
         flex: 1;
       }
+
+      .ingredient-units {
+        display: flex;
+      }
     }  
   }
 }

+ 18 - 49
recipes/src/containers/Recipes/Create.tsx

@@ -78,14 +78,10 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                     "variants": [
                       "cocoa"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 118,
-                      "tbsp": 16,
-                      "tsp": 48
-                    },
+                    "equivalence": 118,
                     "referenceUnit": "cup",
-                    "prefferedUnit": "gr"
+                    "prefferedUnit": "gr",
+                    "measure": 2
                   },
                   {
                     "_id": "5cf1397d72cd19452443503c",
@@ -94,16 +90,10 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                       "confectioner sugar",
                       "powdered sugar"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 125,
-                      "oz": 0.27,
-                      "tbsp": 15,
-                      "tsp": 45,
-                      "lb": 0.27
-                    },
+                    "equivalence": 125,
                     "referenceUnit": "cup",
-                    "prefferedUnit": "gr"
+                    "prefferedUnit": "gr",
+                    "measure": 2
                   }
                 ]
               },
@@ -141,16 +131,10 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                       "sugar",
                       "plain sugar"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 200,
-                      "oz": 7.1,
-                      "tbsp": 14,
-                      "tsp": 42,
-                      "lb": 0.4
-                    },
+                    "equivalence": 200,
                     "referenceUnit": "cup",
-                    "prefferedUnit": "gr"
+                    "prefferedUnit": "gr",
+                    "measure": 2
                   }
                 ]
               },
@@ -178,15 +162,10 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                     "variants": [
                       "plain yogurt"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 245,
-                      "oz": 8.64,
-                      "tbsp": 16,
-                      "tsp": 48
-                    },
+                    "equivalence": 245,
                     "referenceUnit": "cup",
-                    "prefferedUnit": "gr"
+                    "prefferedUnit": "gr",
+                    "measure": 2
                   },
                   {
                     "_id": "5cf1397d72cd19452443503b",
@@ -195,16 +174,10 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                       "sugar",
                       "plain sugar"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 200,
-                      "oz": 7.1,
-                      "tbsp": 14,
-                      "tsp": 42,
-                      "lb": 0.4
-                    },
+                    "equivalence": 200,
                     "referenceUnit": "cup",
-                    "prefferedUnit": "gr"
+                    "prefferedUnit": "gr",
+                    "measure": 2
                   },
                   {
                     "_id": "5cf1397d72cd194524435030",
@@ -215,17 +188,13 @@ class CreateRecipe extends React.Component<CreateRecipeProps, CreateRecipeState>
                       "regular flour",
                       "flour"
                     ],
-                    "equivalences": {
-                      "cup": 1,
-                      "gr": 125,
-                      "tbsp": 15.5,
-                      "tsp": 47
-                    },
+                    "equivalence": 125,
                     "referenceUnit": "cup",
                     "prefferedUnit": "gr",
                     "translation": {
                       "dutch": "patentbloem"
-                    }
+                    },
+                    "measure": 2
                   }
                 ]
               },

+ 20 - 0
recipes/src/services/measurements.ts

@@ -0,0 +1,20 @@
+import convert from 'convert-units';
+
+type Measure = 'mass'|'volume'|'temperature';
+
+const measureValues: { [key:string]: string[] } = {
+  mass: ['g', 'kg', 'oz', 'lb'],
+  volume: [ 'ml', 'tsp', 'tbsp', 'cup', 'pnt', 'gal', 'oz', 'l'],
+  misc: ['unit', 'pinch', 'to taste'],
+  temperature: ['C', 'F'],
+} 
+const MeasuresTypes = (measure?: Measure) => {
+  console.log(convert(1).from('cup').to('ml'));
+  return measure ?
+  measureValues[measure] :
+  [ ...measureValues.mass, ...measureValues.volume, ...measureValues.misc ]
+};
+
+export {
+  MeasuresTypes
+};

+ 26 - 3
recipes/src/types/recipes.ts

@@ -66,13 +66,36 @@ export interface Equivalences {
   lb?: number,
 }
 
+type Units = 
+  "cup" |
+  "tbsp" |
+  "tsp" |
+  "stick" |
+  "gr" |
+  "ml" |
+  "oz" |
+  "lb" |
+  "pint" |
+  "gal" |
+  "unit" |
+  "pinch" |
+  "to taste"
+;
+
+enum Measures {
+  mass,
+  volume,
+  hybrid,
+};
+
 export interface Suggestion {
   _id?: string,
   name: string,
   variants?: string[],
-  equivalences: Equivalences,
-  prefferedUnit: keyof Equivalences,
-  referenceUnit: keyof Equivalences,
+  equivalence?: number,
+  prefferedUnit: Units,
+  referenceUnit: Units,
+  measure: Measures,
   translation?: {
     english?: string,
     dutch?: string,