inventory.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. let items = [];
  2. let tbody = document.querySelector("tbody");
  3. console.log(merchant);
  4. let renderIngredients = ()=>{
  5. while(tbody.hasChildNodes()){
  6. tbody.removeChild(tbody.firstChild);
  7. }
  8. for(let item of items){
  9. let row = document.createElement("tr");
  10. tbody.appendChild(row);
  11. let name = document.createElement("td");
  12. name.innerText = item.name;
  13. row.appendChild(name);
  14. let category = document.createElement("td");
  15. category.innerText = item.category;
  16. row.appendChild(category);
  17. let quantity = document.createElement("td");
  18. quantity.innerText = item.quantity;
  19. row.appendChild(quantity);
  20. let unit = document.createElement("td");
  21. unit.innerText = item.unit;
  22. row.appendChild(unit);
  23. let action = document.createElement("td");
  24. row.appendChild(action);
  25. let editBtn = document.createElement("button");
  26. editBtn.onclick = ()=>{editIngredient(item.id, row)};
  27. editBtn.innerText = "Edit";
  28. editBtn.className = "edit-button"
  29. action.appendChild(editBtn);
  30. let removeBtn = document.createElement("button");
  31. removeBtn.onclick = ()=>{removeIngredient(item.id, row)};
  32. removeBtn.innerText = "Remove";
  33. removeBtn.className = "edit-button";
  34. action.appendChild(removeBtn);
  35. }
  36. }
  37. let sortIngredients = (property)=>{
  38. items.sort((a, b) => (a[property] > b[property]) ? 1 : -1);
  39. renderIngredients();
  40. }
  41. let filter = ()=>{
  42. items = [];
  43. let searchString = document.querySelector("#filter").value.toLowerCase();
  44. for(let item of merchant.inventory){
  45. if(item.ingredient.name.toLowerCase().includes(searchString)){
  46. items.push({
  47. id: item.ingredient._id,
  48. name: item.ingredient.name,
  49. category: item.ingredient.category,
  50. quantity: item.quantity,
  51. unit: item.ingredient.unitType
  52. });
  53. }
  54. }
  55. sortIngredients("name");
  56. renderIngredients(items);
  57. }
  58. let editIngredient = (id, row)=>{
  59. let quantity = row.childNodes[2];
  60. let button = row.childNodes[4].childNodes[0];
  61. let quantityInput = document.createElement("input");
  62. quantityInput.type = "number";
  63. quantityInput.step = "0.01";
  64. quantityInput.value = quantity.innerText;
  65. quantity.innerText = "";
  66. quantity.appendChild(quantityInput);
  67. button.innerText = "Save";
  68. button.onclick = ()=>{updateOne(id, row)};
  69. }
  70. let updateOne = (id, row)=>{
  71. let quantityField = row.childNodes[2];
  72. let quantity = quantityField.childNodes[0].value;
  73. let button = row.childNodes[4].childNodes[0];
  74. quantityField.removeChild(quantityField.firstChild);
  75. quantityField.innerText = quantity;
  76. button.innerText = "Edit";
  77. button.onclick = ()=>{editThis(item.id, row)};
  78. axios.post("/ingredients/update", {
  79. id: id,
  80. quantity: quantity
  81. })
  82. .then((ingredient)=>{
  83. // console.log(ingredient);
  84. })
  85. .catch((err)=>{
  86. console.log(err);
  87. });
  88. }
  89. let removeIngredient = (id, row)=>{
  90. axios.post("/ingredients/remove", {id: id})
  91. .then((result)=>{
  92. console.log(result);
  93. for(let i = 0; i < items.length; i++){
  94. if(id === items[i].id){
  95. items.splice(i, 1);
  96. }
  97. }
  98. renderIngredients();
  99. })
  100. .catch((err)=>{
  101. console.log(err);
  102. });
  103. }
  104. let displayAdd = ()=>{
  105. let modal = document.querySelector(".add-ingredient");
  106. let content = document.querySelector(".modal-content");
  107. let removeModal = (modal)=>{modal.style.visibility = "hidden";}
  108. modal.onclick = ()=>{removeModal(modal);}
  109. modal.style.visibility = "visible";
  110. }
  111. let addIngredient = ()=>{
  112. let content = document.querySelector(".modal-content");
  113. let newIngredient = {
  114. ingredient: {
  115. name: content.children[0].children[0].value,
  116. category: content.children[1].children[0].value,
  117. unitType: content.children[3].children[0].value
  118. },
  119. quantity: content.children[2].children[0].value
  120. }
  121. console.log(newIngredient);
  122. axios.post("/ingredients/createone", newIngredient)
  123. .then((ingredient)=>{
  124. console.log(ingredient);
  125. items.push({
  126. id: ingredient._id,
  127. name: newIngredient.ingredient.name,
  128. category: newIngredient.ingredient.category,
  129. quantity: newIngredient.quantity,
  130. unit: newIngredient.ingredient.unitType
  131. })
  132. sortIngredients("name");
  133. renderIngredients();
  134. })
  135. .catch((err)=>{
  136. console.log(err);
  137. });
  138. let modal = document.querySelector(".add-ingredient");
  139. modal.style.visibility = "hidden";
  140. }
  141. filter();