Pārlūkot izejas kodu

Refactor getSoldQuantity to call getIngredientQuantity.

Lee Morgan 5 gadi atpakaļ
vecāks
revīzija
b0eaba7cd9

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

@@ -54,28 +54,11 @@ class MerchantIngredient{
     return: quantity sold in default unit
     */
     getSoldQuantity(from, to){
-        let traverseIngredient = (ingredient)=>{
-            let total = 0;
-            for(let i = 0; i < ingredient.subIngredients.length; i++){
-                if(ingredient.subIngredients[i].ingredient === this._ingredient) return ingredient.subIngredients[i].quantity;
-                total += traverseIngredient(ingredient.subIngredients[i].ingredient) * ingredient.subIngredients[i].quantity;
-            }
-
-            return total;
-        }
-
         let total = 0;
         const {start, end} = this._parent.getTransactionIndices(from, to);
 
         for(let i = start; i <= end; i++){
-            for(let j = 0; j < this._parent.transactions[i].recipes.length; j++){
-                let transactionRecipe = this._parent.transactions[i].recipes[j];
-                for(let k = 0; k < transactionRecipe.recipe.ingredients.length; k++){
-                    let ingredient = transactionRecipe.recipe.ingredients[k];
-                    let multiplier = (this._ingredient === ingredient.ingredient) ? 1 : traverseIngredient(ingredient.ingredient);
-                    total += multiplier * ingredient.quantity * transactionRecipe.quantity;
-                }
-            }
+            total += this._parent.transactions[i].getIngredientQuantity(this._ingredient);
         }
 
         return total;

+ 6 - 12
views/dashboardPage/js/classes/Transaction.js

@@ -45,19 +45,13 @@ class Transaction{
     */
     getIngredientQuantity(ingredient){
         let traverseIngredient = (transIngredient)=>{
-            if(transIngredient === ingredient) return true;
-
+            let total = 0;
             for(let i = 0; i < transIngredient.subIngredients.length; i++){
-                let next = traverseIngredient(transIngredient.subIngredients[i].ingredient);
-
-                if(next === true){
-                    return transIngredient.subIngredients[i].quantity;
-                }else{
-                    return transIngredient.subIngredients[i].quantity * next;
-                }
+                if(transIngredient.subIngredients[i].ingredient === ingredient) return transIngredient.subIngredients[i].quantity;
+                total += traverseIngredient(transIngredient.subIngredients[i].ingredient) * transIngredient.subIngredients[i].quantity;
             }
 
-            return 0;
+            return total;
         }
 
         let quantity = 0;
@@ -65,8 +59,8 @@ class Transaction{
         for(let i = 0; i < this._recipes.length; i++){
             for(let j = 0; j < this._recipes[i].recipe.ingredients.length; j++){
                 let transIngredient = this._recipes[i].recipe.ingredients[j];
-
-                quantity += traverseIngredient(transIngredient.ingredient) * transIngredient.quantity * this._recipes[i].quantity;
+                let multiplier = (ingredient === transIngredient.ingredient) ? 1 : traverseIngredient(transIngredient.ingredient);
+                quantity += multiplier * transIngredient.quantity * this._recipes[i].quantity;
             }
         }