window.ingredientsStrandObj = { isPopulated: false, display: function(){ if(!this.isPopulated){ let categories = this.categorizeIngredients(); let ingredientStrand = document.querySelector("#ingredientsStrand"); for(let category of categories){ let categoryDiv = document.createElement("div"); categoryDiv.classList = "categoryDiv" ingredientStrand.appendChild(categoryDiv); let headerDiv = document.createElement("div"); categoryDiv.appendChild(headerDiv); let headerTitle = document.createElement("p"); headerTitle.innerText = category.name; headerDiv.appendChild(headerTitle); let ingredientsDiv = document.createElement("div"); ingredientsDiv.classList = "ingredientsDiv"; ingredientsDiv.style.display = "none"; categoryDiv.appendChild(ingredientsDiv); let headerButton = document.createElement("button"); headerButton.innerHTML = ''; headerButton.onclick = ()=>{this.toggleCategory(ingredientsDiv, headerButton)}; headerDiv.appendChild(headerButton); for(let ingredient of category.ingredients){ let ingredientDiv = document.createElement("div"); ingredientDiv.classList = "ingredient"; ingredientsDiv.appendChild(ingredientDiv); let ingredientName = document.createElement("p"); ingredientName.innerText = ingredient.name; ingredientDiv.appendChild(ingredientName); let spacer = document.createElement("p"); spacer.innerText = "-".repeat(25); ingredientDiv.appendChild(spacer); let ingredientData = document.createElement("p"); ingredientData.innerText = `${ingredient.quantity} ${ingredient.unit}`; ingredientDiv.appendChild(ingredientData); } } this.isPopulated = true; } }, categorizeIngredients: function(){ let ingredientsByCategory = []; for(let item of merchant.inventory){ let categoryExists = false; for(let category of ingredientsByCategory){ if(item.ingredient.category === category.name){ category.ingredients.push({ id: item.ingredient._id, name: item.ingredient.name, quantity: item.quantity, unit: item.ingredient.unit }); categoryExists = true; break; } } if(!categoryExists){ ingredientsByCategory.push({ name: item.ingredient.category, ingredients: [{ id: item.ingredient._id, name: item.ingredient.name, quantity: item.quantity, unit: item.ingredient.unit }] }); } } return ingredientsByCategory; }, toggleCategory: function(div, button){ if(div.style.display === "none"){ button.innerHTML = ''; div.style.display = "flex"; }else if(div.style.display === "flex"){ button.innerHTML = ''; div.style.display = "none"; } }, toggleAddIngredient: function(){ let sidebar = document.querySelector("#addIngredient"); if(sidebar.classList.value === "sidebarHide"){ sidebar.classList = "sidebar"; }else{ sidebar.classList = "sidebarHide"; } } }