ingredientDetails.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. let ingredientDetails = {
  2. dailyUse: 0,
  3. display: function(ingredient){
  4. document.getElementById("editIngBtn").onclick = ()=>{controller.openSidebar("editIngredient", ingredient)};
  5. document.getElementById("removeIngBtn").onclick = ()=>{controller.openModal("confirmDeleteIngredient", ingredient)};
  6. document.getElementById("ingredientDetailsCategory").innerText = ingredient.ingredient.category;
  7. document.getElementById("ingredientDetailsName").innerText = ingredient.ingredient.name;
  8. document.getElementById("ingredientStock").innerText = ingredient.getQuantityDisplay();
  9. let unitCostElement = document.getElementById("unitCostDisplay");
  10. let unitCost = ingredient.ingredient.getUnitCost();
  11. if(unitCost === 0){
  12. unitCostElement.parentElement.style.display = "none";
  13. }else{
  14. unitCostElement.parentElement.style.display = "block";
  15. unitCostElement.innerText = `$${unitCost.toFixed(2)}`;
  16. }
  17. let subIngredientList = document.getElementById("subIngredientList");
  18. let template = document.getElementById("ingredientRecipe").content.children[0];
  19. while(subIngredientList.children.length > 0){
  20. subIngredientList.removeChild(subIngredientList.firstChild);
  21. }
  22. for(let i = 0; i < ingredient.ingredient.subIngredients.length; i++){
  23. let subIngredient = ingredient.ingredient.subIngredients[i];
  24. let button = template.cloneNode(true);
  25. button.children[0].innerText = subIngredient.ingredient.name;
  26. button.children[1].innerText = subIngredient.getDisplayQuantity();
  27. button.onclick = ()=>{this.display(merchant.getIngredient(subIngredient.ingredient.id))};
  28. subIngredientList.appendChild(button);
  29. }
  30. },
  31. remove: function(ingredient){
  32. for(let i = 0; i < merchant.recipes.length; i++){
  33. for(let j = 0; j < merchant.recipes[i].ingredients.length; j++){
  34. if(ingredient.ingredient === merchant.recipes[i].ingredients[j].ingredient){
  35. controller.createBanner("MUST REMOVE INGREDIENT FROM ALL RECIPES BEFORE REMOVING FROM INVENTORY", "error");
  36. return;
  37. }
  38. }
  39. }
  40. let loader = document.getElementById("loaderContainer");
  41. loader.style.display = "flex";
  42. fetch(`/ingredients/remove/${ingredient.ingredient.id}`, {
  43. method: "delete",
  44. })
  45. .then((response) => response.json())
  46. .then((response)=>{
  47. if(typeof(response) === "string"){
  48. controller.createBanner(response, "error");
  49. }else{
  50. merchant.removeIngredient(ingredient);
  51. state.updateIngredients();
  52. controller.openStrand("ingredients");
  53. controller.closeModal();
  54. controller.createBanner("INGREDIENT REMOVED", "success");
  55. }
  56. })
  57. .catch((err)=>{
  58. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  59. })
  60. .finally(()=>{
  61. loader.style.display = "none";
  62. });
  63. }
  64. }
  65. module.exports = ingredientDetails;