소스 검색

Bug fix: traversing the ingredient tree on the backend was not working as expected.
The frontend is still not displaying newly added sub-ingredients until a refresh.

Lee Morgan 5 년 전
부모
커밋
bb7da07184
2개의 변경된 파일16개의 추가작업 그리고 12개의 파일을 삭제
  1. 16 11
      controllers/ingredientData.js
  2. 0 1
      views/dashboardPage/js/sidebars/editIngredient.js

+ 16 - 11
controllers/ingredientData.js

@@ -79,16 +79,19 @@ module.exports = {
             .then((response)=>{
                 response[0].name = req.body.name;
                 response[0].category = req.body.category;
+                response[0].ingredients = [];
 
                 // Check ingredients for circular references
                 let isCircular = (ingredient, original)=>{
                     if(ingredient.ingredients.length === 0) return false;
-                    
-                    for(let i = 0; i < res.locals.merchant.inventory.length; i++){
-                        if(res.locals.merchant.inventory[i].ingredient._id.toString() === req.body.ingredients[i].ingredient){
-                            let next = res.locals.merchant.inventory[i].ingredient;
-                            if(next._id.toString() === original._id.toString()) return true;
-                            return isCircular(next, original);
+
+                    for(let i = 0; i < ingredient.ingredients.length; i++){
+                        for(let j = 0; j < res.locals.merchant.inventory.length; j++){
+                            if(res.locals.merchant.inventory[j].ingredient._id.toString() === ingredient.ingredients[i].ingredient.toString()){
+                                let next = res.locals.merchant.inventory[j].ingredient;
+                                if(next._id.toString() === original._id.toString()) return true;
+                                return isCircular(next, original);
+                            }
                         }
                     }
                 }
@@ -97,8 +100,8 @@ module.exports = {
                     for(let j = 0; j < res.locals.merchant.inventory.length; j++){
                         if(res.locals.merchant.inventory[j].ingredient._id.toString() === req.body.ingredients[i].ingredient){
                             let ingredient = res.locals.merchant.inventory[j].ingredient;
-                            if(ingredient._id.toString() === req.body.id) throw "YOU HAVE CIRCULAR REFERENCES IN YOUR INGREDIENTS";
-                            if(isCircular(ingredient, ingredient) === false){
+                            if(ingredient._id.toString() === req.body.id) throw "YOU HAVE CIRCULAR REFERENCES IN YOUR INGREDIENTS1";
+                            if(isCircular(response[0], response[0]) === false){
                                 response[0].ingredients.push({
                                     ingredient: req.body.ingredients[i].ingredient,
                                     quantity: req.body.ingredients[i].quantity
@@ -130,14 +133,16 @@ module.exports = {
                         break;
                     }
                 }
-                
                 return Promise.all([response[0].save(), res.locals.merchant.save()])
             })
             .then((response)=>{
-                return res.json(response[0]);
+                return res.json({
+                    ingredient: response[0],
+                    quantity: req.body.quantity,
+                    defaultUnit: req.body.unit
+                });
             })
             .catch((err)=>{
-                console.log(err);
                 if(typeof(err) === "string"){
                     return res.json(err);
                 }

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

@@ -96,7 +96,6 @@ let editIngredient = {
             });
         }
 
-        console.log(data);
         let loader = document.getElementById("loaderContainer");
         loader.style.display = "flex";