orders.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. let orders = {
  2. orders: [],
  3. display: async function(Order, newOrders){
  4. if(newOrders){
  5. this.orders = newOrders;
  6. }
  7. if(this.orders.length === 0){
  8. this.orders = await this.getOrders(Order);
  9. }
  10. document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
  11. document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
  12. let orderList = document.getElementById("orderList");
  13. let template = document.getElementById("order").content.children[0];
  14. while(orderList.children.length > 0){
  15. orderList.removeChild(orderList.firstChild);
  16. }
  17. for(let i = 0; i < this.orders.length; i++){
  18. let orderDiv = template.cloneNode(true);
  19. orderDiv.order = this.orders[i];
  20. orderDiv.children[0].innerText = this.orders[i].name;
  21. orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
  22. orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
  23. orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
  24. orderDiv.onclick = ()=>{
  25. controller.openSidebar("orderDetails", this.orders[i]);
  26. orderDiv.classList.add("active");
  27. }
  28. orderList.appendChild(orderDiv);
  29. }
  30. },
  31. getOrders: function(Order){
  32. let loader = document.getElementById("loaderContainer");
  33. loader.style.display = "flex";
  34. return fetch("/order", {
  35. method: "get",
  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. banner.createError(response);
  44. }else{
  45. let orders = [];
  46. for(let i = 0; i < response.length; i++){
  47. orders.push(new Order(
  48. response[i]._id,
  49. response[i].name,
  50. response[i].date,
  51. response[i].taxes,
  52. response[i].fees,
  53. response[i].ingredients,
  54. merchant
  55. ));
  56. }
  57. return orders;
  58. }
  59. })
  60. .catch((err)=>{
  61. banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
  62. })
  63. .finally(()=>{
  64. loader.style.display = "none";
  65. });
  66. }
  67. }
  68. module.exports = orders;