Răsfoiți Sursa

Move unit conversions to ingredient class

Lee Morgan 6 ani în urmă
părinte
comite
c5d3be8570
2 a modificat fișierele cu 79 adăugiri și 77 ștergeri
  1. 77 76
      views/dashboardPage/Merchant.js
  2. 2 1
      views/dashboardPage/sidebars/sidebars.js

+ 77 - 76
views/dashboardPage/Merchant.js

@@ -1,10 +1,85 @@
 class Ingredient{
-    constructor(id, name, category, unitType, unit){
+    constructor(id, name, category, unitType, unit, parent){
         this.id = id;
         this.name = name;
         this.category = category;
         this.unitType = unitType;
         this.unit = unit;
+        this.parent = parent;
+    }
+
+    convert(unit){
+        let converted = 0;
+
+        if(this.unitType === "mass"){
+            //change to grams
+            switch(this.unit){
+                case "mm": converted = quantity / 1000; break;
+                case "cm": converted = quantity / 100; break;
+                case "m": converted = quantity; break;
+                case "in": converted = quantity / 39.3701; break;
+                case "ft": converted = quantity / 3.2808; break;
+            }
+
+            //change to new unit
+            switch(unit){
+                case "mm": converted *= 1000; break;
+                case "cm": converted *= 100; break;
+                case "m": break;
+                case "in": converted *= 39.3701; break;
+                case "ft": converted *= 3.2808; break;
+            }
+        }else if(this.unitType === "volume"){
+            //change to liters
+            switch(this.unit){
+                case "ml": converted = quantity / 1000; break;
+                case "l": converted = quantity; break;
+                case "tsp": converted = quantity / 202.8842; break;
+                case "tbsp": converted = quantity / 67.6278; break;
+                case "ozfl": converted = quantity / 33.8141; break;
+                case "cup": converted = quantity / 4.1667; break;
+                case "pt": converted = quantity / 2.1134; break;
+                case "qt": converted = quantity / 1.0567; break;
+                case "gal": converted = quantity * 3.7854; break;
+            }
+
+            //change to new unit
+            switch(unit){
+                case "ml": converted *= 1000; break;
+                case "l": break;
+                case "tsp": converted *= 202.8842; break;
+                case "tbsp": converted *= 67.6278; break;
+                case "ozfl": converted *= 33.8141; break;
+                case "cup": converted *= 4.1667; break;
+                case "pt": converted *= 2.1134; break;
+                case "qt": converted *= 1.0567; break;
+                case "gal": converted /= 3.7854; break;
+            }
+        }else if(this.unitType === "length"){
+            //change to meters
+            switch(this.unit){
+                case "g": converted = quantity; break;
+                case "kg": converted = quantity * 1000; break;
+                case "oz": converted = quantity * 28.3495; break;
+                case "lb": converted = quantity * 453.5924; break;
+            }
+
+            //change to new unit
+            switch(unit){
+                case "g": break;
+                case "kg": converted = converted / 1000; break;
+                case "oz": converted = converted / 28.3495; break;
+                case "lb": converted = converted / 453.5924; break;
+            }
+        }
+
+        for(let i = 0; i < this.parent.ingredients.length; i++){
+            if(this === this.parent.ingredients[i]){
+                this.parent.ingredients[i].quantity = converted;
+                break;
+            }
+        }
+        this.unit = unit;
     }
 }
 
@@ -90,6 +165,7 @@ class Merchant{
                     oldMerchant.inventory[i].ingredient.category,
                     oldMerchant.inventory[i].ingredient.unitType,
                     oldMerchant.inventory[i].defaultUnit,
+                    this
                 ),
                 quantity: oldMerchant.inventory[i].quantity
             });
@@ -487,79 +563,4 @@ class Merchant{
 
         return recipes;
     }
-}
-
-let convertMass = (quantity, from, to)=>{
-    //change to g
-    let converted = 0;
-    switch(from){
-        case "g": converted = quantity; break;
-        case "kg": converted = quantity * 1000; break;
-        case "oz": converted = quantity * 28.3495; break;
-        case "lb": converted = quantity * 453.5924; break;
-    }
-
-    //change to end
-    switch(to){
-        case "g": break;
-        case "kg": converted = converted / 1000; break;
-        case "oz": converted = converted / 28.3495; break;
-        case "lb": converted = converted / 453.5924; break;
-    }
-
-    return converted;
-}
-
-let convertVolume = (quantity, from, to)=>{
-    //change to l
-    let converted = 0;
-    switch(from){
-        case "ml": converted = quantity / 1000; break;
-        case "l": converted = quantity; break;
-        case "tsp": converted = quantity / 202.8842; break;
-        case "tbsp": converted = quantity / 67.6278; break;
-        case "ozfl": converted = quantity / 33.8141; break;
-        case "cup": converted = quantity / 4.1667; break;
-        case "pt": converted = quantity / 2.1134; break;
-        case "qt": converted = quantity / 1.0567; break;
-        case "gal": converted = quantity * 3.7854; break;
-    }
-
-    //change to end
-    switch(to){
-        case "ml": converted *= 1000; break;
-        case "l": break;
-        case "tsp": converted *= 202.8842; break;
-        case "tbsp": converted *= 67.6278; break;
-        case "ozfl": converted *= 33.8141; break;
-        case "cup": converted *= 4.1667; break;
-        case "pt": converted *= 2.1134; break;
-        case "qt": converted *= 1.0567; break;
-        case "gal": converted /= 3.7854; break;
-    }
-
-    return converted;
-}
-
-let convertLength = (quantity, from, to)=>{
-    //change to m
-    let converted = 0;
-    switch(from){
-        case "mm": converted = quantity / 1000; break;
-        case "cm": converted = quantity / 100; break;
-        case "m": converted = quantity; break;
-        case "in": converted = quantity / 39.3701; break;
-        case "ft": converted = quantity / 3.2808; break;
-    }
-
-    //change to end
-    switch(to){
-        case "mm": converted *= 1000; break;
-        case "cm": converted *= 100; break;
-        case "m": break;
-        case "in": converted *= 39.3701; break;
-        case "ft": converted *= 3.2808; break;
-    }
-
-    return converted;
 }

+ 2 - 1
views/dashboardPage/sidebars/sidebars.js

@@ -355,7 +355,8 @@ let newIngredientComp = {
                             response.ingredient.name,
                             response.ingredient.category,
                             response.ingredient.unitType,
-                            response.defaultUnit
+                            response.defaultUnit,
+                            merchant
                         ),
                         quantity: response.quantity
                     }]);