ingredients.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. window.ingredientsStrandObj = {
  2. isPopulated: false,
  3. display: function(){
  4. if(!this.isPopulated){
  5. this.populateIngredients();
  6. this.isPopulated = true;
  7. }
  8. },
  9. populateIngredients: function(){
  10. let categories = categorizeIngredients();
  11. let ingredientStrand = document.querySelector("#categoryList");
  12. while(ingredientStrand.children.length > 0){
  13. ingredientStrand.removeChild(ingredientStrand.firstChild);
  14. }
  15. for(let category of categories){
  16. let categoryDiv = document.createElement("div");
  17. categoryDiv.classList = "categoryDiv"
  18. ingredientStrand.appendChild(categoryDiv);
  19. let headerDiv = document.createElement("div");
  20. categoryDiv.appendChild(headerDiv);
  21. let headerTitle = document.createElement("p");
  22. headerTitle.innerText = category.name;
  23. headerDiv.appendChild(headerTitle);
  24. let ingredientsDiv = document.createElement("div");
  25. ingredientsDiv.classList = "ingredientsDiv";
  26. ingredientsDiv.style.display = "none";
  27. categoryDiv.appendChild(ingredientsDiv);
  28. let headerButton = document.createElement("button");
  29. headerButton.innerHTML = '<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>';
  30. headerButton.onclick = ()=>{this.toggleCategory(ingredientsDiv, headerButton)};
  31. headerDiv.appendChild(headerButton);
  32. for(let ingredient of category.ingredients){
  33. let ingredientDiv = document.createElement("div");
  34. ingredientDiv.classList = "ingredient";
  35. ingredientDiv.onclick = ()=>{this.displayIngredient(ingredient, category)};
  36. ingredientsDiv.appendChild(ingredientDiv);
  37. let ingredientName = document.createElement("p");
  38. ingredientName.innerText = ingredient.name;
  39. ingredientDiv.appendChild(ingredientName);
  40. let spacer = document.createElement("hr");
  41. spacer.classList = "ingredientSpacer";
  42. ingredientDiv.appendChild(spacer);
  43. let ingredientData = document.createElement("p");
  44. ingredientData.innerText = `${ingredient.quantity} ${ingredient.unit}`;
  45. ingredientDiv.appendChild(ingredientData);
  46. }
  47. }
  48. },
  49. toggleCategory: function(div, button){
  50. if(div.style.display === "none"){
  51. button.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="18 15 12 9 6 15"></polyline></svg>';
  52. div.style.display = "flex";
  53. }else if(div.style.display === "flex"){
  54. button.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>';
  55. div.style.display = "none";
  56. }
  57. },
  58. displayAddIngredient: function(){
  59. let sidebar = document.querySelector("#addIngredient");
  60. openSidebar(sidebar);
  61. },
  62. displayIngredient: function(ingredient, category){
  63. sidebar = document.querySelector("#ingredientDetails");
  64. openSidebar(sidebar);
  65. document.querySelector("#ingredientDetails p").innerText = category.name;
  66. document.querySelector("#ingredientDetails h1").innerText = ingredient.name;
  67. document.querySelector("#ingredientStock").innerText = `${ingredient.quantity} ${ingredient.unit}`;
  68. let quantities = [];
  69. let now = new Date();
  70. for(let i = 1; i < 31; i++){
  71. let endDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i)
  72. let startDay = new Date(now.getFullYear(), now.getMonth(), now.getDate() - i - 1);
  73. quantities.push(ingredientSold(dateIndices(startDay, endDay), ingredient.id));
  74. }
  75. let sum = 0;
  76. for(let quantity of quantities){
  77. sum += quantity;
  78. }
  79. document.querySelector("#dailyUse").innerText = `${(sum/quantities.length).toFixed(2)} ${ingredient.unit}`;
  80. },
  81. }