Преглед на файлове

Adding sub-ingredients now in working state.

Lee Morgan преди 5 години
родител
ревизия
8974f9f93b
променени са 4 файла, в които са добавени 24 реда и са изтрити 26 реда
  1. 2 1
      controllers/ingredientData.js
  2. 4 0
      models/ingredient.js
  3. 6 14
      views/dashboardPage/js/classes/Ingredient.js
  4. 12 11
      views/dashboardPage/js/modal.js

+ 2 - 1
controllers/ingredientData.js

@@ -85,7 +85,7 @@ module.exports = {
                 //find and update ingredient on merchant
                 for(let i = 0; i < res.locals.merchant.inventory.length; i++){
                     if(res.locals.merchant.inventory[i].ingredient.toString() === req.body.ingredient.id){
-                        res.locals.merchant.inventory[i].quantity = req.body.quantity;                        
+                        res.locals.merchant.inventory[i].quantity = req.body.quantity;         
                         break;
                     }
                 }
@@ -112,6 +112,7 @@ module.exports = {
         ingredients: [{
             ingredient: String (id)
             quantity: Number
+            unit: String
         }]
     }
     response = Ingredient

+ 4 - 0
models/ingredient.js

@@ -40,6 +40,10 @@ const IngredientSchema = new mongoose.Schema({
             type: Number,
             required: true,
             min: 0
+        },
+        unit: {
+            type: String,
+            required: true
         }
     }],
 });

+ 6 - 14
views/dashboardPage/js/classes/Ingredient.js

@@ -2,7 +2,8 @@ class SubIngredient{
     constructor(id, ingredient, quantity, unit, parent){
         this.id = id;
         this._ingredient = ingredient;
-        this.quantity = quantity;
+        this._quantity = quantity;
+        this.unit = unit;
         this._parent = parent;
     }
 
@@ -11,20 +12,10 @@ class SubIngredient{
     }
 
     get quantity(){
-        let convertMultiplier = 1;
-        switch(controller.getBaseUnit(this._ingredient.unit)){
-            case "g":
-                convertMultiplier = this._ingredient.convert.toMass;
-                break;
-            case "l":
-                convertMultiplier = this._ingredient.convert.toVolume;
-                break;
-            case "m":
-                convertMultiplier = this._ingredient.convert.toLength;
-                break;
-        }
+        let subQuantity = this._quantity * controller.unitMultiplier(controller.getBaseUnit(this.unit), this.unit);
+        let parentMultiplier = controller.unitMultiplier(controller.getBaseUnit(this._ingredient.unit), this._ingredient.unit);
 
-        return this._quantity * controller.unitMultiplier(controller.getBaseUnit(this._ingredient.unit), this._ingredient.unit) * convertMultiplier;
+        return subQuantity / parentMultiplier;
     }
 
     getDisplayQuantity(){
@@ -47,6 +38,7 @@ class Ingredient{
                 subIngredients[i]._id,
                 subIngredients[i].ingredient,
                 subIngredients[i].quantity,
+                subIngredients[i].unit,
                 this
             ));
         }

+ 12 - 11
views/dashboardPage/js/modal.js

@@ -226,19 +226,20 @@ let modal = {
         }
 
         for(let i = 0; i < merchant.inventory.length; i++){
-            if(ingredient.id === merchant.inventory[i].ingredient.id) continue;
+            let merchIngredient = merchant.inventory[i].ingredient;
+            if(ingredient.id === merchIngredient.id) continue;
             let skip = false;
             for(let j = 0; j < ingredient.subIngredients.length; j++){
-                if(merchant.inventory[i].ingredient === ingredient.subIngredients[j].ingredient){
+                if(merchIngredient === ingredient.subIngredients[j].ingredient){
                     let div = template.cloneNode(true);
-                    div.children[0].children[0].innerText = merchant.inventory[i].ingredient.name;
+                    div.children[0].children[0].innerText = merchIngredient.name;
                     div.children[0].children[1].onclick = ()=>{removeIngredient(div, ingredient.subIngredients[j].ingredient)};
-                    div.children[1].children[0].children[0].value = ingredient.subIngredients[j].quantity;
-                    div.children[1].children[2].children[0].value = 1;
-                    div.ingredient = merchant.inventory[i].ingredient;
+                    div.children[1].children[0].children[0].value = parseFloat((ingredient.subIngredients[j].quantity).toFixed(3));
+                    div.children[1].children[2].children[0].value = controller.unitMultiplier(controller.getBaseUnit(ingredient.unit), ingredient.unit);
+                    div.ingredient = merchIngredient;
                     right.appendChild(div);
 
-                    let conversions = merchant.inventory[i].ingredient.convert;
+                    let conversions = merchIngredient.convert;
                     if(conversions.toMass !== undefined){
                         createOptGroup(div.children[1].children[0].children[1], "Mass", ["g", "kg", "oz", "lb"]);
                     }
@@ -248,15 +249,15 @@ let modal = {
                     if(conversions.toLength !== undefined){
                         createOptGroup(div.children[1].children[0].children[1], "Length", ["mm", "cm", "m", "in", "ft"]);
                     }
-                    div.children[1].children[0].children[1].value = merchant.inventory[i].ingredient.unit;
+                    div.children[1].children[0].children[1].value = merchIngredient.unit;
 
                     createOptGroup(
                         div.children[1].children[2].children[1],
                         controller.getUnitType(ingredient.unit),
-                        ingredient.getPotentialUnits()    
+                        ingredient.getPotentialUnits()
                     );
-                    div.children[1].children[0].children[1].value = ingredient.unit;
-                    div.children[1].children[2].children[1].value = merchant.inventory[i].ingredient.unit;
+                    div.children[1].children[0].children[1].value = ingredient.subIngredients[j].unit;
+                    div.children[1].children[2].children[1].value = ingredient.unit;
 
                     skip = true;
                     break;