Browse Source

Bug fix: updating an ingredient dereferenced it on the frontend.

Lee Morgan 5 years ago
parent
commit
a41701c3fb

+ 8 - 0
views/dashboardPage/js/classes/Ingredient.js

@@ -13,6 +13,10 @@ class Ingredient{
     get id(){
         return this._id;
     }
+    
+    set id(id){
+        this._id = id;
+    }
 
     get name(){
         return this._name;
@@ -34,6 +38,10 @@ class Ingredient{
         return this._unitType;
     }
 
+    set unitType(unitType){
+        this._unitType = unitType;
+    }
+
     get unit(){
         return this._unit;
     }

+ 18 - 0
views/dashboardPage/js/classes/Merchant.js

@@ -38,6 +38,10 @@ class MerchantIngredient{
         }
     }
 
+    set quantity(quantity){
+        this._quantity = quantity;
+    }
+
     updateQuantity(quantity){
         this._quantity += controller.baseUnit(quantity, this._ingredient.unit);
     }
@@ -266,6 +270,20 @@ class Merchant{
         this._inventory.splice(index, 1);
     }
 
+    updateIngredients(ingredients){
+        for(let i = 0; i < ingredients.length; i++){
+            let inventoryItem = this.getIngredient(ingredients[i].ingredient._id);
+
+            inventoryItem.quantity = ingredients[i].quantity;
+            inventoryItem.ingredient.id = ingredients[i].ingredient._id;
+            inventoryItem.ingredient.name = ingredients[i].ingredient.name;
+            inventoryItem.ingredient.unitType = ingredients[i].ingredient.unitType;
+            inventoryItem.ingredient.unit = ingredients[i].defaultUnit;
+            inventoryItem.ingredient.unitSize = ingredients[i].ingredient.unitSize;
+            inventoryItem.ingredient.addIngredients(ingredients[i].ingredient.ingredients);
+        }
+    }
+
     getIngredient(id){
         for(let i = 0; i < this._inventory.length; i++){
             if(this._inventory[i].ingredient.id === id) return this._inventory[i];

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

@@ -102,8 +102,7 @@ let editIngredient = {
             if(typeof(response) === "string"){
                 controller.createBanner(response, "error");
             }else{
-                merchant.removeIngredient(merchant.getIngredient(response.ingredient._id));
-                merchant.addIngredients([response]);
+                merchant.updateIngredients([response]);
                 state.updateIngredients();
                 controller.openStrand("ingredients");
                 controller.createBanner("INGREDIENT UPDATED", "success");