orders.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. }
  48. })
  49. .catch((err)=>{
  50. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  51. })
  52. .finally(()=>{
  53. loader.style.display = "none";
  54. });
  55. },
  56. displayOrders: function(){
  57. let orderList = document.getElementById("orderList");
  58. let template = document.getElementById("order").content.children[0];
  59. while(orderList.children.length > 0){
  60. orderList.removeChild(orderList.firstChild);
  61. }
  62. for(let i = 0; i < merchant.orders.length; i++){
  63. let orderDiv = template.cloneNode(true);
  64. orderDiv.order = merchant.orders[i];
  65. orderDiv.children[0].innerText = merchant.orders[i].name;
  66. orderDiv.children[1].innerText = `${merchant.orders[i].ingredients.length} ingredients`;
  67. orderDiv.children[2].innerText = merchant.orders[i].date.toLocaleDateString("en-US");
  68. orderDiv.children[3].innerText = `$${merchant.orders[i].getTotalCost().toFixed(2)}`;
  69. orderDiv.onclick = ()=>{
  70. controller.openSidebar("orderDetails", merchant.orders[i]);
  71. orderDiv.classList.add("active");
  72. }
  73. orderList.appendChild(orderDiv);
  74. }
  75. }
  76. }
  77. module.exports = orders;