Переглянути джерело

Update ingredients to display the current converted units

Lee Morgan 6 роки тому
батько
коміт
69df5a56e1

+ 50 - 60
views/dashboardPage/Merchant.js

@@ -8,80 +8,37 @@ class Ingredient{
         this.parent = parent;
     }
 
-    convert(unit){
-        let converted = 0;
-        let parentIngredient;
-
-        for(let i = 0; i < this.parent.ingredients.length; i++){
-            if(this === this.parent.ingredients[i].ingredient){
-                parentIngredient = this.parent.ingredients[i];
-                break;
-            }
-        }
-
+    convert(quantity){
         if(this.unitType === "mass"){
             switch(this.unit){
-                case "g": converted = parentIngredient.quantity; break;
-                case "kg": converted = parentIngredient.quantity * 1000; break;
-                case "oz": converted = parentIngredient.quantity * 28.3495; break;
-                case "lb": converted = parentIngredient.quantity * 453.5924; break;
-            }
-
-            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;
+                case "kg": quantity /= 1000; break;
+                case "oz":  quantity /= 28.3495; break;
+                case "lb":  quantity /= 453.5924; break;
             }
         }else if(this.unitType === "volume"){
             switch(this.unit){
-                case "ml": converted = parentIngredient.quantity / 1000; break;
-                case "l": converted = parentIngredient.quantity; break;
-                case "tsp": converted = parentIngredient.quantity / 202.8842; break;
-                case "tbsp": converted = parentIngredient.quantity / 67.6278; break;
-                case "ozfl": converted = parentIngredient.quantity / 33.8141; break;
-                case "cup": converted = parentIngredient.quantity / 4.1667; break;
-                case "pt": converted = parentIngredient.quantity / 2.1134; break;
-                case "qt": converted = parentIngredient.quantity / 1.0567; break;
-                case "gal": converted = parentIngredient.quantity * 3.7854; break;
-            }
-
-            switch(unit){
-                case "ml": converted *= 1000; break;
+                case "ml": quantity *= 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;
+                case "tsp": quantity *= 202.8842; break;
+                case "tbsp": quantity *= 67.6278; break;
+                case "ozfl": quantity *= 33.8141; break;
+                case "cup": quantity *= 4.1667; break;
+                case "pt": quantity *= 2.1134; break;
+                case "qt": quantity *= 1.0567; break;
+                case "gal": quantity /= 3.7854; break;
             }
         }else if(this.unitType === "length"){
             switch(this.unit){
-                case "mm": converted = parentIngredient.quantity / 1000; break;
-                case "cm": converted = parentIngredient.quantity / 100; break;
-                case "m": converted = parentIngredient.quantity; break;
-                case "in": converted = parentIngredient.quantity / 39.3701; break;
-                case "ft": converted = parentIngredient.quantity / 3.2808; break;
-            }
-
-            switch(unit){
-                case "mm": converted *= 1000; break;
-                case "cm": converted *= 100; break;
+                case "mm": quantity *= 1000; break;
+                case "cm": quantity *= 100; break;
                 case "m": break;
-                case "in": converted *= 39.3701; break;
-                case "ft": converted *= 3.2808; break;
+                case "in": quantity *= 39.3701; break;
+                case "ft": quantity *= 3.2808; break;
             }
         }
 
-        parentIngredient.quantity = converted;
-        this.unit = unit;
-
-        homeStrandObj.drawInventoryCheckCard();
-        ingredientsStrandObj.populateByProperty("category");
-        addIngredientsComp.isPopulated = false;
-        document.getElementById("ingredientStock").innerText = `${converted.toFixed(2)} ${this.unit.toUpperCase()}`;
+        return quantity;
     }
 }
 
@@ -148,6 +105,39 @@ class Order{
             }
         }
     }
+
+    convertPrice(unitType, unit, price){
+        if(unitType === "mass"){
+            switch(unit){
+                case "g": break;
+                case "kg": price *= 1000; break;
+                case "oz":  price *= 28.3495; break;
+                case "lb":  price *= 453.5924; break;
+            }
+        }else if(unitType === "volume"){
+            switch(unit){
+                case "ml": price /= 1000; break;
+                case "l": break;
+                case "tsp": price /= 202.8842; break;
+                case "tbsp": price /= 67.6278; break;
+                case "ozfl": price /= 33.8141; break;
+                case "cup": price /= 4.1667; break;
+                case "pt": price /= 2.1134; break;
+                case "qt": price /= 1.0567; break;
+                case "gal": price *= 3.7854; break;
+            }
+        }else if(unitType === "length"){
+            switch(unit){
+                case "mm": price /= 1000; break;
+                case "cm": price /= 100; break;
+                case "m": break;
+                case "in": price /= 39.3701; break;
+                case "ft": price /= 3.2808; break;
+            }
+        }
+
+        return price;
+    }
 }
 
 class Merchant{

+ 1 - 1
views/dashboardPage/ingredients.js

@@ -39,7 +39,7 @@ window.ingredientsStrandObj = {
                 let ingredientDiv = ingredientTemplate.cloneNode(true);
 
                 ingredientDiv.children[0].innerText = ingredient.ingredient.name;
-                ingredientDiv.children[2].innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit}`;
+                ingredientDiv.children[2].innerText = `${ingredient.ingredient.convert(ingredient.quantity).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
                 ingredientDiv.onclick = ()=>{ingredientDetailsComp.display(ingredient)};
                 ingredientDiv._name = ingredient.ingredient.name.toLowerCase();
                 ingredientDiv._unit = ingredient.ingredient.unit.toLowerCase();

+ 17 - 12
views/dashboardPage/sidebars/sidebars.js

@@ -19,7 +19,7 @@ let recipeDetailsComp = {
             ingredientDiv = template.cloneNode(true);
 
             ingredientDiv.children[0].innerText = recipe.ingredients[i].ingredient.name;
-            ingredientDiv.children[2].innerText = `${recipe.ingredients[i].quantity} ${recipe.ingredients[i].ingredient.unit}`;
+            ingredientDiv.children[2].innerText = `${recipe.ingredients[i].ingredient.convert(recipe.ingredients[i].quantity).toFixed(2)} ${recipe.ingredients[i].ingredient.unit}`;
             ingredientDiv.ingredient = recipe.ingredients[i].ingredient;
             ingredientDiv.name = recipe.ingredients[i].ingredient.name;
 
@@ -57,7 +57,7 @@ let recipeDetailsComp = {
 
             div.children[2].innerText = this.recipe.ingredients[i].ingredient.unit;
             div.children[1].style.display = "block";
-            div.children[1].value = parseFloat(this.recipe.ingredients[i].quantity);
+            div.children[1].value = this.recipe.ingredients[i].ingredient.convert(this.recipe.ingredients[i].quantity).toFixed(2);
             div.children[3].style.display = "block";
             div.children[3].onclick = ()=>{div.parentElement.removeChild(div)};
         }
@@ -390,15 +390,19 @@ let orderDetailsComp = {
         let template = document.querySelector("#orderIngredient").content.children[0];
         let grandTotal = 0;
         for(let i = 0; i < order.ingredients.length; i++){
-            let ingredient = template.cloneNode(true);
+            let ingredientDiv = template.cloneNode(true);
             let price = (order.ingredients[i].quantity * order.ingredients[i].price) / 100;
             grandTotal += price;
 
-            ingredient.children[0].innerText = order.ingredients[i].ingredient.name;
-            ingredient.children[1].innerText = `${order.ingredients[i].quantity} ${order.ingredients[i].ingredient.unit.toUpperCase()} x $${(order.ingredients[i].price / 100).toFixed(2)}`;
-            ingredient.children[2].innerText = `$${price.toFixed(2)}`;
+            let ingredient = order.ingredients[i].ingredient;
+            let priceText = ingredient.convert(order.ingredients[i].quantity).toFixed(2) + " " + 
+                ingredient.unit.toUpperCase() + " x $" +
+                (order.convertPrice(ingredient.unitType, ingredient.unit, order.ingredients[i].price) / 100).toFixed(2);
+            ingredientDiv.children[0].innerText = order.ingredients[i].ingredient.name;
+            ingredientDiv.children[1].innerText = priceText;
+            ingredientDiv.children[2].innerText = `$${price.toFixed(2)}`;
 
-            ingredientList.appendChild(ingredient);
+            ingredientList.appendChild(ingredientDiv);
         }
 
         document.querySelector("#orderTotalPrice p").innerText = `$${grandTotal.toFixed(2)}`;
@@ -644,10 +648,10 @@ let ingredientDetailsComp = {
         document.querySelector("#ingredientDetails p").innerText = ingredient.ingredient.category;
         document.querySelector("#ingredientDetails h1").innerText = ingredient.ingredient.name;
         let ingredientStock = document.getElementById("ingredientStock");
-        ingredientStock.innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
+        ingredientStock.innerText = `${ingredient.ingredient.convert(ingredient.quantity).toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
         ingredientStock.style.display = "block";
         let ingredientInput = document.getElementById("ingredientInput");
-        ingredientInput.value = ingredient.quantity;
+        ingredientInput.value = ingredient.ingredient.convert(ingredient.quantity).toFixed(2);
         ingredientInput.style.display = "none";
 
         let quantities = [];
@@ -780,16 +784,17 @@ let ingredientDetailsComp = {
     },
 
     changeUnit: function(newActive, unit){
-        this.ingredient.ingredient.convert(unit);
+        this.ingredient.ingredient.unit = unit;
 
         let ingredientButtons = document.querySelectorAll(".unitButton");
         for(let i = 0; i < ingredientButtons.length; i++){
-            console.log(ingredientButtons[i]);
             ingredientButtons[i].classList.remove("unitActive");
         }
 
-        console.log(newActive);
         newActive.classList.add("unitActive");
+
+        ingredientsStrandObj.populateByProperty("category");
+        document.getElementById("ingredientStock").innerText = `${this.ingredient.ingredient.convert(this.ingredient.quantity).toFixed(2)} ${this.ingredient.ingredient.unit.toUpperCase()}`;
     },
 
     changeUnitDefault: function(){

+ 9 - 7
views/dashboardPage/transactions.js

@@ -12,9 +12,11 @@ window.transactionsStrandObj = {
 
             let i = 0
             while(i < merchant.transactions.length && i < 100){
-                let transaction = template.cloneNode(true);
-                transaction.onclick = ()=>{transactionDetailsComp.display(merchant.transactions[i])};
-                transactionsList.appendChild(transaction);
+                let transactionDiv = template.cloneNode(true);
+                let transaction = merchant.transactions[i];
+
+                transactionDiv.onclick = ()=>{transactionDetailsComp.display(transaction)};
+                transactionsList.appendChild(transactionDiv);
 
                 let totalRecipes = 0;
                 let totalPrice = 0;
@@ -24,11 +26,11 @@ window.transactionsStrandObj = {
                     totalPrice += merchant.transactions[i].recipes[j].recipe.price * merchant.transactions[i].recipes[j].quantity;
                 }
 
-                transaction.children[0].innerText = `${merchant.transactions[i].date.toLocaleDateString()} ${merchant.transactions[i].date.toLocaleTimeString()}`;
-                transaction.children[1].innerText = `${totalRecipes} recipes sold`;
-                transaction.children[2].innerText = `$${(totalPrice / 100).toFixed(2)}`;
+                transactionDiv.children[0].innerText = `${merchant.transactions[i].date.toLocaleDateString()} ${merchant.transactions[i].date.toLocaleTimeString()}`;
+                transactionDiv.children[1].innerText = `${totalRecipes} recipes sold`;
+                transactionDiv.children[2].innerText = `$${(totalPrice / 100).toFixed(2)}`;
 
-                i--;
+                i++;
             }
 
             this.isPopulated = true;