orders.js 3.1 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. if(this.isPopulated === false){
  7. this.getOrders()
  8. .then((response)=>{
  9. if(typeof(response) === "string"){
  10. controller.createBanner(response, "error");
  11. }else{
  12. this.displayOrders();
  13. }
  14. })
  15. .catch((err)=>{
  16. controller.createBanner("UNABLE TO DISPLAY ORDERS", "error");
  17. });
  18. }else{
  19. this.displayOrders();
  20. }
  21. this.isPopulated = true;
  22. },
  23. getOrders: function(){
  24. let loader = document.getElementById("loaderContainer");
  25. loader.style.display = "flex";
  26. let to = new Date();
  27. let from = new Date(to.getFullYear(), to.getMonth(), to.getDate() - 30);
  28. from.setHours(0, 0, 0, 0);
  29. let body = {
  30. to: to.toUTCString(),
  31. from: from.toUTCString(),
  32. ingredients: []};
  33. return fetch("/orders/get", {
  34. method: "post",
  35. body: JSON.stringify(body),
  36. headers: {
  37. "Content-Type": "application/json;charset=utf-8"
  38. }
  39. })
  40. .then(response => response.json())
  41. .then((response)=>{
  42. if(typeof(response) === "string"){
  43. controller.createBanner(response, "error");
  44. }else{
  45. merchant.clearOrders();
  46. merchant.addOrders(response);
  47. state.updateOrders();
  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;