Selaa lähdekoodia

Update new ingredient sidebar to a working state

Lee Morgan 5 vuotta sitten
vanhempi
sitoutus
e666a9a637

+ 24 - 0
controllers/helper.js

@@ -209,5 +209,29 @@ module.exports = {
             .catch((err)=>{
                 return false;
             });
+    },
+
+    convertQuantityToBaseUnit: function(quantity, unit){
+        switch(unit){
+            case "g":return quantity; 
+            case "kg": return quantity * 1000;
+            case "oz": return quantity * 28.3495;
+            case "lb": return quantity * 453.5924;
+            case "ml": return quantity / 1000;
+            case "l": return quantity;
+            case "tsp": return quantity / 202.8842;
+            case "tbsp": return quantity / 67.6278;
+            case "ozfl": return quantity / 33.8141;
+            case "cup": return quantity / 4.1667;
+            case "pt": return quantity / 2.1134;
+            case "qt": return quantity / 1.0567;
+            case "gal": return quantity * 3.7854;
+            case "mm": return quantity / 1000;
+            case "cm": return quantity / 100;
+            case "m": return quantity;
+            case "in": return quantity / 39.3701;
+            case "ft": return quantity / 3.2808;
+            default: return quantity;
+        }
     }
 }

+ 22 - 3
controllers/ingredientData.js

@@ -1,6 +1,8 @@
 const Merchant = require("../models/merchant");
 const Ingredient = require("../models/ingredient");
 const InventoryAdjustment = require("../models/inventoryAdjustment.js");
+
+const Helper = require("./helper.js");
 const Validator = require("./validator.js");
 
 module.exports = {
@@ -53,18 +55,35 @@ module.exports = {
             }
         }
 
-        let ingredientPromise = Ingredient.create((req.body.ingredient));
+        let newIngredient = {};
+        if(req.body.ingredient.specialUnit === "bottle"){
+            newIngredient = new Ingredient({
+                name: req.body.ingredient.name,
+                category: req.body.ingredient.category,
+                unitType: req.body.ingredient.unitType,
+                specialUnit: req.body.ingredient.specialUnit,
+                unitSize: Helper.convertQuantityToBaseUnit(req.body.ingredient.unitSize, req.body.defaultUnit)
+            });
+        }else{
+            newIngredient = new Ingredient(req.body.ingredient);
+        }
+
+        let ingredientPromise = newIngredient.save();
         let merchantPromise = Merchant.findOne({_id: req.session.user});
-        let newIngredient;
 
         Promise.all([ingredientPromise, merchantPromise])
             .then((response)=>{
                 newIngredient = {
                     ingredient: response[0],
-                    quantity: req.body.quantity,
                     defaultUnit: req.body.defaultUnit
                 }
 
+                if(response[0].specialUnit === "bottle"){
+                    newIngredient.quantity = req.body.quantity;
+                }else{
+                    newIngredient.quantity = Helper.convertQuantityToBaseUnit(req.body.quantity, req.body.defaultUnit);
+                }
+
                 response[1].inventory.push(newIngredient);
 
                 return response[1].save();

+ 16 - 24
views/dashboardPage/bundle.js

@@ -98,17 +98,13 @@ class Ingredient{
 module.exports = Ingredient;
 },{}],2:[function(require,module,exports){
 class MerchantIngredient{
-    constructor(ingredient, quantity, isBase = false){
+    constructor(ingredient, quantity){
         if(quantity < 0){
             banner.createError("QUANTITY CANNOT BE A NEGATIVE NUMBER");
             return false;
         }
-        if(isBase){
-            this._quantity = quantity;
-        }else{
-            this._quantity = this.convertToBase(quantity);
-        }
-
+        
+        this._quantity = quantity;
         this._ingredient = ingredient;
     }
 
@@ -158,7 +154,7 @@ class MerchantIngredient{
             case "kg": return quantity / 1000; 
             case "oz":  return quantity / 28.3495; 
             case "lb":  return quantity / 453.5924;
-            case "ml": return quantity *= 1000; 
+            case "ml": return quantity * 1000; 
             case "l": return quantity;
             case "tsp": return quantity * 202.8842; 
             case "tbsp": return quantity * 67.6278; 
@@ -209,7 +205,6 @@ class Merchant{
             const merchantIngredient = new MerchantIngredient(
                 ingredient,
                 oldMerchant.inventory[i].quantity,
-                true
             );
 
             this._ingredients.push(merchantIngredient);
@@ -275,7 +270,7 @@ class Merchant{
     }
 
     addIngredient(ingredient, quantity){
-        const MerchantIngredient = new MerchantIngredient(ingredient, quantity);
+        const merchantIngredient = new MerchantIngredient(ingredient, quantity);
         this._ingredients.push(merchantIngredient);
 
         this._modules.home.isPopulated = false;
@@ -2013,14 +2008,14 @@ let ingredientDetails = {
         let stockDisplay = document.getElementById("ingredientStock");
         stockInput.value = "";
         if(ingredient.ingredient.specialUnit === "bottle"){
-            let quantity = ingredient.ingredient.convert(ingredient.quantity);
+            let quantity = ingredient.quantity;
 
             stockDisplay.innerText = `${quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
             stockDisplay.innerText = `${(ingredient.quantity / ingredient.ingredient.unitSize).toFixed(2)} BOTTLES`;
             stockInput.placeholder = quantity.toFixed(2);
         }else{
-            stockDisplay.innerText = `${ingredient.ingredient.convert(ingredient.quantity).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
-            stockInput.placeholder = ingredient.ingredient.convert(ingredient.quantity).toFixed(2);
+            stockDisplay.innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
+            stockInput.placeholder = ingredient.quantity.toFixed(2);
         }
 
 
@@ -2030,7 +2025,7 @@ let ingredientDetails = {
             let endDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i)
             let startDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i - 1);
 
-            quantities.push(merchant.getSingleIngredientSold(startDay, endDay, ingredient));
+            quantities.push(merchant.getSingleIngredientSold(ingredient, startDay, endDay));
         }
 
         let sum = 0;
@@ -2039,7 +2034,7 @@ let ingredientDetails = {
         }
 
         let dailyUse = sum / quantities.length;
-        document.getElementById("dailyUse").innerText = `${ingredient.ingredient.convert(dailyUse).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
+        document.getElementById("dailyUse").innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
 
         let ul = document.getElementById("ingredientRecipeList");
         let recipes = merchant.getRecipesForIngredient(ingredient.ingredient);
@@ -2456,7 +2451,7 @@ let newIngredient = {
     submit: function(Ingredient){
         let unitSelector = document.getElementById("unitSelector");
         let options = document.querySelectorAll("#unitSelector option");
-        const quantityValue = document.getElementById("newIngQuantity").value;
+        const quantityValue = parseFloat(document.getElementById("newIngQuantity").value);
 
         let unit = unitSelector.value;
 
@@ -2464,22 +2459,19 @@ let newIngredient = {
             ingredient: {
                 name: document.getElementById("newIngName").value,
                 category: document.getElementById("newIngCategory").value,
-                unitType: options[unitSelector.selectedIndex].getAttribute("type"),
+                unitType: options[unitSelector.selectedIndex].getAttribute("type")
             },
-            quantity: controller.convertToMain(unit, quantityValue),
+            quantity: quantityValue,
             defaultUnit: unit
         }
 
         //Change the ingredient if it is a special unit type (ie "bottle")
         if(unit === "bottle"){
-            const bottleUnit = document.getElementById("bottleUnits").value;
-            const bottleSize = controller.convertToMain(bottleUnit, document.getElementById("bottleSize").value);
-
             newIngredient.ingredient.unitType = "volume";
-            newIngredient.ingredient.unitSize = bottleSize;
-            newIngredient.defaultUnit = bottleUnit;
+            newIngredient.ingredient.unitSize = document.getElementById("bottleSize").value
+            newIngredient.defaultUnit = document.getElementById("bottleUnits").value;
             newIngredient.ingredient.specialUnit = unit;
-            newIngredient.quantity = quantityValue * bottleSize;
+            newIngredient.quantity = quantityValue;
         }
     
         let loader = document.getElementById("loaderContainer");

+ 5 - 10
views/dashboardPage/js/Merchant.js

@@ -1,15 +1,11 @@
 class MerchantIngredient{
-    constructor(ingredient, quantity, isBase = false){
+    constructor(ingredient, quantity){
         if(quantity < 0){
             banner.createError("QUANTITY CANNOT BE A NEGATIVE NUMBER");
             return false;
         }
-        if(isBase){
-            this._quantity = quantity;
-        }else{
-            this._quantity = this.convertToBase(quantity);
-        }
-
+        
+        this._quantity = quantity;
         this._ingredient = ingredient;
     }
 
@@ -59,7 +55,7 @@ class MerchantIngredient{
             case "kg": return quantity / 1000; 
             case "oz":  return quantity / 28.3495; 
             case "lb":  return quantity / 453.5924;
-            case "ml": return quantity *= 1000; 
+            case "ml": return quantity * 1000; 
             case "l": return quantity;
             case "tsp": return quantity * 202.8842; 
             case "tbsp": return quantity * 67.6278; 
@@ -110,7 +106,6 @@ class Merchant{
             const merchantIngredient = new MerchantIngredient(
                 ingredient,
                 oldMerchant.inventory[i].quantity,
-                true
             );
 
             this._ingredients.push(merchantIngredient);
@@ -176,7 +171,7 @@ class Merchant{
     }
 
     addIngredient(ingredient, quantity){
-        const MerchantIngredient = new MerchantIngredient(ingredient, quantity);
+        const merchantIngredient = new MerchantIngredient(ingredient, quantity);
         this._ingredients.push(merchantIngredient);
 
         this._modules.home.isPopulated = false;

+ 5 - 5
views/dashboardPage/js/ingredientDetails.js

@@ -32,14 +32,14 @@ let ingredientDetails = {
         let stockDisplay = document.getElementById("ingredientStock");
         stockInput.value = "";
         if(ingredient.ingredient.specialUnit === "bottle"){
-            let quantity = ingredient.ingredient.convert(ingredient.quantity);
+            let quantity = ingredient.quantity;
 
             stockDisplay.innerText = `${quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
             stockDisplay.innerText = `${(ingredient.quantity / ingredient.ingredient.unitSize).toFixed(2)} BOTTLES`;
             stockInput.placeholder = quantity.toFixed(2);
         }else{
-            stockDisplay.innerText = `${ingredient.ingredient.convert(ingredient.quantity).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
-            stockInput.placeholder = ingredient.ingredient.convert(ingredient.quantity).toFixed(2);
+            stockDisplay.innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
+            stockInput.placeholder = ingredient.quantity.toFixed(2);
         }
 
 
@@ -49,7 +49,7 @@ let ingredientDetails = {
             let endDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i)
             let startDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i - 1);
 
-            quantities.push(merchant.getSingleIngredientSold(startDay, endDay, ingredient));
+            quantities.push(merchant.getSingleIngredientSold(ingredient, startDay, endDay));
         }
 
         let sum = 0;
@@ -58,7 +58,7 @@ let ingredientDetails = {
         }
 
         let dailyUse = sum / quantities.length;
-        document.getElementById("dailyUse").innerText = `${ingredient.ingredient.convert(dailyUse).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
+        document.getElementById("dailyUse").innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
 
         let ul = document.getElementById("ingredientRecipeList");
         let recipes = merchant.getRecipesForIngredient(ingredient.ingredient);

+ 6 - 9
views/dashboardPage/js/newIngredient.js

@@ -27,7 +27,7 @@ let newIngredient = {
     submit: function(Ingredient){
         let unitSelector = document.getElementById("unitSelector");
         let options = document.querySelectorAll("#unitSelector option");
-        const quantityValue = document.getElementById("newIngQuantity").value;
+        const quantityValue = parseFloat(document.getElementById("newIngQuantity").value);
 
         let unit = unitSelector.value;
 
@@ -35,22 +35,19 @@ let newIngredient = {
             ingredient: {
                 name: document.getElementById("newIngName").value,
                 category: document.getElementById("newIngCategory").value,
-                unitType: options[unitSelector.selectedIndex].getAttribute("type"),
+                unitType: options[unitSelector.selectedIndex].getAttribute("type")
             },
-            quantity: controller.convertToMain(unit, quantityValue),
+            quantity: quantityValue,
             defaultUnit: unit
         }
 
         //Change the ingredient if it is a special unit type (ie "bottle")
         if(unit === "bottle"){
-            const bottleUnit = document.getElementById("bottleUnits").value;
-            const bottleSize = controller.convertToMain(bottleUnit, document.getElementById("bottleSize").value);
-
             newIngredient.ingredient.unitType = "volume";
-            newIngredient.ingredient.unitSize = bottleSize;
-            newIngredient.defaultUnit = bottleUnit;
+            newIngredient.ingredient.unitSize = document.getElementById("bottleSize").value
+            newIngredient.defaultUnit = document.getElementById("bottleUnits").value;
             newIngredient.ingredient.specialUnit = unit;
-            newIngredient.quantity = quantityValue * bottleSize;
+            newIngredient.quantity = quantityValue;
         }
     
         let loader = document.getElementById("loaderContainer");