window.ingredientsStrandObj = {
isPopulated: false,
ingredients: [],
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 i = 0; i < categories.length; i++){
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 = categories[i].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 j = 0; j < categories[i].ingredients.length; j++){
let ingredientDiv = document.createElement("div");
ingredientDiv.classList = "ingredient";
ingredientDiv.onclick = ()=>{ingredientDetailsComp.display(categories[i].ingredients[j], categories[i])};
ingredientsDiv.appendChild(ingredientDiv);
ingredientDiv._name = categories[i].ingredients[j].name.toLowerCase();
ingredientDiv._unit = categories[i].ingredients[j].unit.toLowerCase();
let ingredientName = document.createElement("p");
ingredientName.innerText = categories[i].ingredients[j].name;
ingredientDiv.appendChild(ingredientName);
let spacer = document.createElement("hr");
spacer.classList = "ingredientSpacer";
ingredientDiv.appendChild(spacer);
let ingredientData = document.createElement("p");
ingredientData.innerText = `${categories[i].ingredients[j].quantity} ${categories[i].ingredients[j].unit}`;
ingredientDiv.appendChild(ingredientData);
this.ingredients.push(ingredientDiv);
}
}
},
displayIngredientsOnly: function(ingredients){
let ingredientDiv = document.querySelector("#categoryList");
while(ingredientDiv.children.length > 0){
ingredientDiv.removeChild(ingredientDiv.firstChild);
}
for(let i = 0; i < ingredients.length; i++){
ingredientDiv.appendChild(ingredients[i]);
}
},
//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";
}
},
search: function(){
let input = document.querySelector("#ingredientSearch").value.toLowerCase();
if(input === ""){
this.populateIngredients();
return;
}
let matchingIngredients = [];
for(let i = 0; i < this.ingredients.length; i++){
if(this.ingredients[i]._name.includes(input)){
matchingIngredients.push(this.ingredients[i]);
}
}
this.displayIngredientsOnly(matchingIngredients);
}
}