Browse Source

Update displaying of ingredients across the site

Lee Morgan 6 years ago
parent
commit
8ebbce6ed1

+ 0 - 1
controllers/ingredientData.js

@@ -65,7 +65,6 @@ module.exports = {
                 return res.json(newIngredient);
             })
             .catch((err)=>{
-                console.log(err);
                 return res.json("ERROR: UNABLE TO CREATE NEW INGREDIENT");
             });
     }

+ 46 - 39
views/dashboardPage/Merchant.js

@@ -10,40 +10,42 @@ class Ingredient{
 
     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;
+            }
+        }
 
         if(this.unitType === "mass"){
-            //change to grams
             switch(this.unit){
-                case "mm": converted = quantity / 1000; break;
-                case "cm": converted = quantity / 100; break;
-                case "m": converted = quantity; break;
-                case "in": converted = quantity / 39.3701; break;
-                case "ft": converted = quantity / 3.2808; break;
+                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;
             }
 
-            //change to new unit
             switch(unit){
-                case "mm": converted *= 1000; break;
-                case "cm": converted *= 100; break;
-                case "m": break;
-                case "in": converted *= 39.3701; break;
-                case "ft": converted *= 3.2808; break;
+                case "g": break;
+                case "kg": converted = converted / 1000; break;
+                case "oz": converted = converted / 28.3495; break;
+                case "lb": converted = converted / 453.5924; break;
             }
         }else if(this.unitType === "volume"){
-            //change to liters
             switch(this.unit){
-                case "ml": converted = quantity / 1000; break;
-                case "l": converted = quantity; break;
-                case "tsp": converted = quantity / 202.8842; break;
-                case "tbsp": converted = quantity / 67.6278; break;
-                case "ozfl": converted = quantity / 33.8141; break;
-                case "cup": converted = quantity / 4.1667; break;
-                case "pt": converted = quantity / 2.1134; break;
-                case "qt": converted = quantity / 1.0567; break;
-                case "gal": converted = quantity * 3.7854; break;
+                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;
             }
 
-            //change to new unit
             switch(unit){
                 case "ml": converted *= 1000; break;
                 case "l": break;
@@ -56,30 +58,30 @@ class Ingredient{
                 case "gal": converted /= 3.7854; break;
             }
         }else if(this.unitType === "length"){
-            //change to meters
             switch(this.unit){
-                case "g": converted = quantity; break;
-                case "kg": converted = quantity * 1000; break;
-                case "oz": converted = quantity * 28.3495; break;
-                case "lb": converted = quantity * 453.5924; break;
+                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;
             }
 
-            //change to new unit
             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 "mm": converted *= 1000; break;
+                case "cm": converted *= 100; break;
+                case "m": break;
+                case "in": converted *= 39.3701; break;
+                case "ft": converted *= 3.2808; break;
             }
         }
 
-        for(let i = 0; i < this.parent.ingredients.length; i++){
-            if(this === this.parent.ingredients[i]){
-                this.parent.ingredients[i].quantity = converted;
-                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()}`;
     }
 }
 
@@ -156,6 +158,11 @@ class Merchant{
         this.recipes = [];
         this.transactions = [];
         this.orders = [];
+        this.units = {
+            mass: ["g", "kg", "oz", "lb"],
+            volume: ["ml", "l", "tsp", "tbsp", "ozfl", "cup", "pt", "qt", "gal"],
+            length: ["mm", "cm", "m", "in", "foot"]
+        }
         
         for(let i = 0; i < oldMerchant.inventory.length; i++){
             this.ingredients.push({

+ 18 - 14
views/dashboardPage/home.js

@@ -96,7 +96,7 @@ window.homeStrandObj = {
             ingredientCheck.ingredient = merchant.ingredients[rands[i]];
             ingredientCheck.children[0].innerText = merchant.ingredients[rands[i]].ingredient.name;
             ingredientCheck.children[1].children[0].onclick = ()=>{input.value--};
-            input.value = merchant.ingredients[rands[i]].quantity;
+            input.value = merchant.ingredients[rands[i]].quantity.toFixed(2);
             ingredientCheck.children[1].children[2].onclick = ()=>{input.value++}
             ingredientCheck.children[2].innerText = merchant.ingredients[rands[i]].ingredient.unit.toUpperCase();
 
@@ -110,22 +110,26 @@ window.homeStrandObj = {
         let thisMonth = new Date(now.getFullYear(), now.getMonth(), 1);
 
         let ingredientList = merchant.ingredientsSold(merchant.transactionIndices(thisMonth));
-        if(ingredientList){
+        if(ingredientList.length > 0){
             for(let i = 0; i < 5; i++){
-                let max = ingredientList[0].quantity
-                let index = 0;
-                for(let j = 0; j < ingredientList.length; j++){
-                    if(ingredientList[j].quantity > max){
-                        max = ingredientList[j].quantity;
-                        index = j;
+                try{
+                    let max = ingredientList[0].quantity;
+                    let index = 0;
+                    for(let j = 0; j < ingredientList.length; j++){
+                        if(ingredientList[j].quantity > max){
+                            max = ingredientList[j].quantity;
+                            index = j;
+                        }
                     }
-                }
 
-                dataArray.push({
-                    num: max,
-                    label: `${ingredientList[index].ingredient.name}: ${+ingredientList[index].quantity.toFixed(2)} ${ingredientList[index].ingredient.unit}`
-                });
-                ingredientList.splice(index, 1);
+                    dataArray.push({
+                        num: max,
+                        label: `${ingredientList[index].ingredient.name}: ${+ingredientList[index].quantity.toFixed(2)} ${ingredientList[index].ingredient.unit}`
+                    });
+                    ingredientList.splice(index, 1);
+                }catch(err){
+                    break;
+                }
             }
 
             let thisCanvas = document.querySelector("#popularCanvas");

+ 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} ${ingredient.ingredient.unit}`;
+                ingredientDiv.children[2].innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit}`;
                 ingredientDiv.onclick = ()=>{ingredientDetailsComp.display(ingredient)};
                 ingredientDiv._name = ingredient.ingredient.name.toLowerCase();
                 ingredientDiv._unit = ingredient.ingredient.unit.toLowerCase();

+ 4 - 0
views/dashboardPage/sidebars/ingredientDetails.ejs

@@ -33,6 +33,10 @@
         <input id="ingredientInput" type="number" min="0" step="0.01" style="display: none;">
     </label>
 
+    <label>CHANGE UNITS:
+        <select id="unitChanger"></select>
+    </label>
+
     <div class="lineBorder"></div>
 
     <label>AVERAGE DAILY USE (30 DAYS)

+ 20 - 7
views/dashboardPage/sidebars/sidebars.js

@@ -365,7 +365,6 @@ let newIngredientComp = {
                 }
             })
             .catch((err)=>{
-                console.log(err);
                 banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
             })
             .finally(()=>{
@@ -396,7 +395,7 @@ let orderDetailsComp = {
             grandTotal += price;
 
             ingredient.children[0].innerText = order.ingredients[i].ingredient.name;
-            ingredient.children[1].innerText = `${order.ingredients[i].quantity} x $${(order.ingredients[i].price / 100).toFixed(2)}`;
+            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)}`;
 
             ingredientList.appendChild(ingredient);
@@ -645,11 +644,25 @@ 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} ${ingredient.ingredient.unit}`;
+        ingredientStock.innerText = `${ingredient.quantity.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
         ingredientStock.style.display = "block";
         let ingredientInput = document.getElementById("ingredientInput");
-        ingredientInput.placeholder = `${ingredient.quantity} ${ingredient.ingredient.unit}`;
+        ingredientInput.value = ingredient.quantity;
         ingredientInput.style.display = "none";
+        document.getElementById("ingredientRecipeList").style.display = "none"
+
+        let select = document.getElementById("unitChanger");
+        select.onchange = ()=>{this.ingredient.ingredient.convert(select.value)};
+        while(select.children.length > 0){
+            select.removeChild(select.firstChild);
+        }
+        let units = merchant.units[this.ingredient.ingredient.unitType];
+        for(let i = 0; i < units.length; i++){
+            let option = document.createElement("option");
+            option.innerText = units[i].toUpperCase();
+            option.value = units[i];
+            select.appendChild(option);
+        }
 
         let quantities = [];
         let now = new Date();
@@ -722,9 +735,9 @@ let ingredientDetailsComp = {
     },
 
     edit: function(){
-        document.querySelector("#ingredientStock").style.display = "none";
-        document.querySelector("#ingredientInput").style.display = "block";
-        document.querySelector("#editSubmitButton").style.display = "block";
+        document.getElementById("ingredientStock").style.display = "none";
+        document.getElementById("ingredientInput").style.display = "block";
+        document.getElementById("editSubmitButton").style.display = "block";
     },
 
     editSubmit: function(){

+ 4 - 1
views/dashboardPage/transactions.js

@@ -10,7 +10,8 @@ window.transactionsStrandObj = {
                 transactionsList.removeChild(transactionsList.firstChild);
             }
 
-            for(let i = merchant.transactions.length - 1; i > merchant.transactions.length - 101 ; i--){
+            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);
@@ -26,6 +27,8 @@ window.transactionsStrandObj = {
                 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)}`;
+
+                i--;
             }
 
             this.isPopulated = true;