ingredientDetails.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 subIngredientList = document.getElementById("subIngredientList");
  25. let template = document.getElementById("ingredientRecipe").content.children[0];
  26. while(subIngredientList.children.length > 0){
  27. subIngredientList.removeChild(subIngredientList.firstChild);
  28. }
  29. for(let i = 0; i < ingredient.ingredient.subIngredients.length; i++){
  30. let subIngredient = ingredient.ingredient.subIngredients[i];
  31. let button = template.cloneNode(true);
  32. button.children[0].innerText = subIngredient.ingredient.name;
  33. button.children[1].innerText = `${subIngredient.quantity} ${subIngredient.ingredient.unit}`;
  34. button.onclick = ()=>{this.display(merchant.getIngredient(subIngredient.ingredient.id))};
  35. subIngredientList.appendChild(button);
  36. }
  37. },
  38. remove: function(ingredient){
  39. for(let i = 0; i < merchant.recipes.length; i++){
  40. for(let j = 0; j < merchant.recipes[i].ingredients.length; j++){
  41. if(ingredient.ingredient === merchant.recipes[i].ingredients[j].ingredient){
  42. controller.createBanner("MUST REMOVE INGREDIENT FROM ALL RECIPES BEFORE REMOVING FROM INVENTORY", "error");
  43. return;
  44. }
  45. }
  46. }
  47. let loader = document.getElementById("loaderContainer");
  48. loader.style.display = "flex";
  49. fetch(`/ingredients/remove/${ingredient.ingredient.id}`, {
  50. method: "delete",
  51. })
  52. .then((response) => response.json())
  53. .then((response)=>{
  54. if(typeof(response) === "string"){
  55. controller.createBanner(response, "error");
  56. }else{
  57. merchant.removeIngredient(ingredient);
  58. state.updateIngredients();
  59. controller.openStrand("ingredients");
  60. controller.closeModal();
  61. controller.createBanner("INGREDIENT REMOVED", "success");
  62. }
  63. })
  64. .catch((err)=>{
  65. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  66. })
  67. .finally(()=>{
  68. loader.style.display = "none";
  69. });
  70. }
  71. }
  72. module.exports = ingredientDetails;