ingredientDetails.js 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. //Calculate and display average daily use
  10. // let quantities = [];
  11. // let now = new Date();
  12. // for(let i = 1; i < 31; i++){
  13. // let endDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i)
  14. // let startDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i - 1);
  15. // quantities.push(merchant.getSingleIngredientSold(ingredient, startDay, endDay));
  16. // }
  17. // let sum = 0;
  18. // for(let i = 0; i < quantities.length; i++){
  19. // sum += quantities[i];
  20. // }
  21. // let dailyUse = sum / quantities.length;
  22. // const dailyUseDiv = document.getElementById("dailyUse");
  23. // dailyUseDiv.innerText = `${dailyUse.toFixed(2)} ${ingredient.ingredient.unit.toUpperCase()}`;
  24. let unitCostElement = document.getElementById("unitCostDisplay");
  25. let unitCost = ingredient.ingredient.getUnitCost();
  26. if(unitCost === 0){
  27. unitCostElement.parentElement.style.display = "none";
  28. }else{
  29. unitCostElement.parentElement.style.display = "block";
  30. unitCostElement.innerText = `$${unitCost.toFixed(2)}`;
  31. }
  32. let subIngredientList = document.getElementById("subIngredientList");
  33. let template = document.getElementById("ingredientRecipe").content.children[0];
  34. while(subIngredientList.children.length > 0){
  35. subIngredientList.removeChild(subIngredientList.firstChild);
  36. }
  37. for(let i = 0; i < ingredient.ingredient.subIngredients.length; i++){
  38. let subIngredient = ingredient.ingredient.subIngredients[i];
  39. let button = template.cloneNode(true);
  40. button.children[0].innerText = subIngredient.ingredient.name;
  41. button.children[1].innerText = `${subIngredient.quantity} ${subIngredient.ingredient.unit}`;
  42. button.onclick = ()=>{this.display(merchant.getIngredient(subIngredient.ingredient.id))};
  43. subIngredientList.appendChild(button);
  44. }
  45. },
  46. remove: function(ingredient){
  47. for(let i = 0; i < merchant.recipes.length; i++){
  48. for(let j = 0; j < merchant.recipes[i].ingredients.length; j++){
  49. if(ingredient.ingredient === merchant.recipes[i].ingredients[j].ingredient){
  50. controller.createBanner("MUST REMOVE INGREDIENT FROM ALL RECIPES BEFORE REMOVING FROM INVENTORY", "error");
  51. return;
  52. }
  53. }
  54. }
  55. let loader = document.getElementById("loaderContainer");
  56. loader.style.display = "flex";
  57. fetch(`/ingredients/remove/${ingredient.ingredient.id}`, {
  58. method: "delete",
  59. })
  60. .then((response) => response.json())
  61. .then((response)=>{
  62. if(typeof(response) === "string"){
  63. controller.createBanner(response, "error");
  64. }else{
  65. merchant.removeIngredient(ingredient);
  66. state.updateIngredients();
  67. controller.openStrand("ingredients");
  68. controller.closeModal();
  69. controller.createBanner("INGREDIENT REMOVED", "success");
  70. }
  71. })
  72. .catch((err)=>{
  73. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  74. })
  75. .finally(()=>{
  76. loader.style.display = "none";
  77. });
  78. }
  79. }
  80. module.exports = ingredientDetails;