inventory.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. let items = [];
  2. let tbody = document.querySelector("tbody");
  3. let renderIngredients = ()=>{
  4. while(tbody.hasChildNodes()){
  5. tbody.removeChild(tbody.firstChild);
  6. }
  7. for(let item of items){
  8. let row = document.createElement("tr");
  9. tbody.appendChild(row);
  10. let name = document.createElement("td");
  11. name.innerText = item.name;
  12. row.appendChild(name);
  13. let category = document.createElement("td");
  14. category.innerText = item.category;
  15. row.appendChild(category);
  16. let quantity = document.createElement("td");
  17. quantity.innerText = item.quantity;
  18. row.appendChild(quantity);
  19. let unit = document.createElement("td");
  20. unit.innerText = item.unit;
  21. row.appendChild(unit);
  22. let action = document.createElement("td");
  23. row.appendChild(action);
  24. let editBtn = document.createElement("button");
  25. editBtn.onclick = ()=>{editThis(item.id, row)};
  26. editBtn.innerText = "Edit";
  27. editBtn.className = "edit-button"
  28. action.appendChild(editBtn);
  29. }
  30. }
  31. let sortIngredients = (property)=>{
  32. items.sort((a, b) => (a[property] > b[property]) ? 1 : -1);
  33. renderIngredients();
  34. }
  35. let filter = ()=>{
  36. items = [];
  37. let searchString = document.querySelector("#filter").value.toLowerCase();
  38. for(let item of merchant.inventory){
  39. if(item.ingredient.name.toLowerCase().includes(searchString)){
  40. items.push({
  41. id: item.ingredient._id,
  42. name: item.ingredient.name,
  43. category: item.ingredient.category,
  44. quantity: item.quantity,
  45. unit: item.ingredient.unitType
  46. });
  47. }
  48. }
  49. sortIngredients("name");
  50. renderIngredients(items);
  51. }
  52. let editThis = (id, row)=>{
  53. let quantity = row.childNodes[2];
  54. let button = row.childNodes[4].childNodes[0];
  55. let quantityInput = document.createElement("input");
  56. quantityInput.type = "number";
  57. quantityInput.step = "0.01";
  58. quantityInput.value = quantity.innerText;
  59. quantity.innerText = "";
  60. quantity.appendChild(quantityInput);
  61. button.innerText = "Save";
  62. button.onclick = ()=>{updateOne(id, row)};
  63. }
  64. let updateOne = (id, row)=>{
  65. let quantityField = row.childNodes[2];
  66. let quantity = quantityField.childNodes[0].value;
  67. let button = row.childNodes[4].childNodes[0];
  68. quantityField.removeChild(quantityField.firstChild);
  69. quantityField.innerText = quantity;
  70. button.innerText = "Edit";
  71. button.onclick = ()=>{editThis(item.id, row)};
  72. axios.post("/ingredients/update", {
  73. id: id,
  74. quantity: quantity
  75. })
  76. .then((ingredient)=>{
  77. // console.log(ingredient);
  78. })
  79. .catch((err)=>{
  80. console.log(err);
  81. });
  82. }
  83. filter();