window.ingredientsStrandObj = { isPopulated: false, addIngredientsDiv: [], display: function(){ if(!this.isPopulated){ this.populateIngredients(); this.isPopulated = true; } }, populateIngredients: function(){ let categories = categorizeIngredients(merchant.inventory); let ingredientStrand = document.querySelector("#categoryList"); while(ingredientStrand.children.length > 0){ ingredientStrand.removeChild(ingredientStrand.firstChild); } 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"; ingredientDiv.onclick = ()=>{ingredientDetailsComp.display(ingredient, category)}; ingredientsDiv.appendChild(ingredientDiv); let ingredientName = document.createElement("p"); ingredientName.innerText = ingredient.name; ingredientDiv.appendChild(ingredientName); let spacer = document.createElement("hr"); spacer.classList = "ingredientSpacer"; ingredientDiv.appendChild(spacer); let ingredientData = document.createElement("p"); ingredientData.innerText = `${ingredient.quantity} ${ingredient.unit}`; ingredientDiv.appendChild(ingredientData); } } }, //Open or close the list of ingredients for a category 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"; } } }