orders.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. let orders = {
  2. orders: [],
  3. display: function(Order){
  4. if(this.orders.length === 0){
  5. this.getOrders(Order);
  6. }else{
  7. document.getElementById("orderFilterBtn").onclick = ()=>{controller.openSidebar("orderFilter")};
  8. document.getElementById("newOrderBtn").onclick = ()=>{controller.openSidebar("newOrder")};
  9. let orderList = document.getElementById("orderList");
  10. let template = document.getElementById("order").content.children[0];
  11. while(orderList.children.length > 0){
  12. orderList.removeChild(orderList.firstChild);
  13. }
  14. for(let i = 0; i < this.orders.length; i++){
  15. let orderDiv = template.cloneNode(true);
  16. orderDiv.order = this.orders[i];
  17. orderDiv.children[0].innerText = this.orders[i].name;
  18. orderDiv.children[1].innerText = `${this.orders[i].ingredients.length} ingredients`;
  19. orderDiv.children[2].innerText = this.orders[i].date.toLocaleDateString("en-US");
  20. orderDiv.children[3].innerText = `$${this.orders[i].getTotalCost().toFixed(2)}`;
  21. orderDiv.onclick = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
  22. orderList.appendChild(orderDiv);
  23. }
  24. }
  25. },
  26. getOrders: function(Order){
  27. let loader = document.getElementById("loaderContainer");
  28. loader.style.display = "flex";
  29. fetch("/order", {
  30. method: "get",
  31. headers: {
  32. "Content-Type": "application/json;charset=utf-8"
  33. }
  34. })
  35. .then(response => response.json())
  36. .then((response)=>{
  37. if(typeof(response) === "string"){
  38. banner.createError(response);
  39. }else{
  40. let ingredients = [];
  41. for(let i = 0; i < response.length; i++){
  42. for(let j = 0; j < response[i].ingredients.length; j++){
  43. for(let k = 0; k < merchant.ingredients.length; k++){
  44. if(merchant.ingredients[k].ingredient.id === response[i].ingredients[j].ingredient){
  45. ingredients.push({
  46. ingredient: merchant.ingredients[k].ingredient,
  47. quantity: response[i].ingredients[j].quantity,
  48. pricePerUnit: response[i].ingredients[j].pricePerUnit
  49. });
  50. break;
  51. }
  52. }
  53. }
  54. this.orders.push(new Order(
  55. response[i]._id,
  56. response[i].name,
  57. response[i].date,
  58. response[i].taxes,
  59. response[i].fees,
  60. ingredients,
  61. merchant
  62. ));
  63. }
  64. this.display();
  65. }
  66. })
  67. .catch((err)=>{
  68. banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
  69. })
  70. .finally(()=>{
  71. loader.style.display = "none";
  72. });
  73. }
  74. }
  75. module.exports = orders;