orders.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. let orders = {
  2. isPopulated: false,
  3. display: function(){
  4. document.getElementById("orderFilterBtn").addEventListener("click", ()=>{controller.openSidebar("orderFilter")});
  5. document.getElementById("newOrderBtn").addEventListener("click", ()=>{controller.openSidebar("newOrder")});
  6. document.getElementById("orderCalcBtn").addEventListener("click", ()=>{controller.openSidebar("orderCalculator")});
  7. if(this.isPopulated === false){
  8. this.getOrders()
  9. .then((response)=>{
  10. if(typeof(response) === "string"){
  11. controller.createBanner(response, "error");
  12. }else{
  13. this.displayOrders();
  14. }
  15. })
  16. .catch((err)=>{
  17. controller.createBanner("UNABLE TO DISPLAY ORDERS", "error");
  18. });
  19. }else{
  20. this.displayOrders();
  21. }
  22. this.isPopulated = true;
  23. },
  24. getOrders: function(){
  25. let loader = document.getElementById("loaderContainer");
  26. loader.style.display = "flex";
  27. let to = new Date();
  28. let from = new Date(to.getFullYear(), to.getMonth(), to.getDate() - 30);
  29. from.setHours(0, 0, 0, 0);
  30. let body = {
  31. to: to.toUTCString(),
  32. from: from.toUTCString(),
  33. ingredients: []};
  34. return fetch("/orders/get", {
  35. method: "post",
  36. body: JSON.stringify(body),
  37. headers: {
  38. "Content-Type": "application/json;charset=utf-8"
  39. }
  40. })
  41. .then(response => response.json())
  42. .then((response)=>{
  43. if(typeof(response) === "string"){
  44. controller.createBanner(response, "error");
  45. }else{
  46. merchant.clearOrders();
  47. merchant.addOrders(response);
  48. }
  49. })
  50. .catch((err)=>{
  51. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  52. })
  53. .finally(()=>{
  54. loader.style.display = "none";
  55. });
  56. },
  57. displayOrders: function(){
  58. let orderList = document.getElementById("orderList");
  59. let template = document.getElementById("order").content.children[0];
  60. while(orderList.children.length > 0){
  61. orderList.removeChild(orderList.firstChild);
  62. }
  63. for(let i = 0; i < merchant.orders.length; i++){
  64. let orderDiv = template.cloneNode(true);
  65. orderDiv.order = merchant.orders[i];
  66. orderDiv.children[0].innerText = merchant.orders[i].name;
  67. orderDiv.children[1].innerText = `${merchant.orders[i].ingredients.length} ingredients`;
  68. orderDiv.children[2].innerText = merchant.orders[i].date.toLocaleDateString("en-US");
  69. orderDiv.children[3].innerText = `$${merchant.orders[i].getTotalCost().toFixed(2)}`;
  70. orderDiv.onclick = ()=>{
  71. controller.openSidebar("orderDetails", merchant.orders[i]);
  72. orderDiv.classList.add("active");
  73. }
  74. orderList.appendChild(orderDiv);
  75. }
  76. }
  77. }
  78. module.exports = orders;