orders.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. window.ordersStrandObj = {
  2. isFetched: false,
  3. display: async function(){
  4. if(!this.isFetched){
  5. let loader = document.getElementById("loaderContainer");
  6. loader.style.display = "flex";
  7. fetch("/order", {
  8. method: "GET",
  9. headers: {
  10. "Content-Type": "application/json;charset=utf-8"
  11. },
  12. })
  13. .then((response) => response.json())
  14. .then((response)=>{
  15. if(typeof(response) === "string"){
  16. banner.createError(response);
  17. }else{
  18. let newOrders = [];
  19. for(let i = 0; i < response.length; i++){
  20. newOrders.push(new Order(
  21. response[i]._id,
  22. response[i].name,
  23. response[i].date,
  24. response[i].ingredients,
  25. merchant
  26. ));
  27. }
  28. merchant.editOrders(newOrders);
  29. this.isFetched = true;
  30. }
  31. })
  32. .catch((err)=>{
  33. banner.createError("SOMETHING WENT WRONG. TRY REFRESHING THE PAGE");
  34. })
  35. .finally(()=>{
  36. loader.style.display = "none";
  37. });
  38. }
  39. },
  40. populate: function(){
  41. let listDiv = document.getElementById("orderList");
  42. let template = document.getElementById("order").content.children[0];
  43. let dateDropdown = document.getElementById("dateDropdownOrder");
  44. let ingredientDropdown = document.getElementById("ingredientDropdown");
  45. dateDropdown.style.display = "none";
  46. ingredientDropdown.style.display = "none";
  47. document.getElementById("dateFilterBtnOrder").onclick = ()=>{this.toggleDropdown(dateDropdown)};
  48. document.getElementById("ingredientFilterBtn").onclick = ()=>{this.toggleDropdown(ingredientDropdown)};
  49. for(let i = 0; i < merchant.ingredients.length; i++){
  50. let checkbox = document.createElement("input");
  51. checkbox.type = "checkbox";
  52. checkbox.ingredient = merchant.ingredients[i];
  53. ingredientDropdown.appendChild(checkbox);
  54. let label = document.createElement("label");
  55. label.innerText = merchant.ingredients[i].name;
  56. label.for = checkbox;
  57. ingredientDropdown.appendChild(label);
  58. let brk = document.createElement("br");
  59. ingredientDropdown.appendChild(brk);
  60. }
  61. while(listDiv.children.length > 0){
  62. listDiv.removeChild(listDiv.firstChild);
  63. }
  64. for(let i = 0; i < merchant.orders.length; i++){
  65. let row = template.cloneNode(true);
  66. let totalCost = 0;
  67. for(let j = 0; j < merchant.orders[i].ingredients.length; j++){
  68. totalCost += merchant.orders[i].ingredients[j].quantity * merchant.orders[i].ingredients[j].price;
  69. }
  70. row.children[0].innerText = merchant.orders[i].name;
  71. row.children[1].innerText = `${merchant.orders[i].ingredients.length} items`;
  72. row.children[2].innerText = new Date(merchant.orders[i].date).toLocaleDateString("en-US");
  73. row.children[3].innerText = `$${(totalCost / 100).toFixed(2)}`;
  74. row.order = merchant.orders[i];
  75. row.onclick = ()=>{orderDetailsComp.display(merchant.orders[i])};
  76. listDiv.appendChild(row);
  77. }
  78. },
  79. submitFilter: function(){
  80. event.preventDefault();
  81. console.log("something");
  82. },
  83. toggleDropdown: function(dropdown){
  84. event.preventDefault();
  85. let polyline = dropdown.parentElement.children[0].children[1].children[0].children[0];
  86. if(dropdown.style.display === "none"){
  87. dropdown.style.display = "block";
  88. polyline.setAttribute("points", "18 15 12 9 6 15");
  89. }else{
  90. dropdown.style.display = "none";
  91. polyline.setAttribute("points", "6 9 12 15 18 9");
  92. }
  93. }
  94. }