orders.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 = ()=>{controller.openSidebar("orderDetails", this.orders[i])};
  25. orderList.appendChild(orderDiv);
  26. }
  27. },
  28. getOrders: function(Order){
  29. let loader = document.getElementById("loaderContainer");
  30. loader.style.display = "flex";
  31. return fetch("/order", {
  32. method: "get",
  33. headers: {
  34. "Content-Type": "application/json;charset=utf-8"
  35. }
  36. })
  37. .then(response => response.json())
  38. .then((response)=>{
  39. if(typeof(response) === "string"){
  40. banner.createError(response);
  41. }else{
  42. let orders = [];
  43. for(let i = 0; i < response.length; i++){
  44. let ingredients = [];
  45. for(let j = 0; j < response[i].ingredients.length; j++){
  46. for(let k = 0; k < merchant.ingredients.length; k++){
  47. if(merchant.ingredients[k].ingredient.id === response[i].ingredients[j].ingredient){
  48. ingredients.push({
  49. ingredient: merchant.ingredients[k].ingredient,
  50. quantity: response[i].ingredients[j].quantity,
  51. pricePerUnit: response[i].ingredients[j].pricePerUnit
  52. });
  53. break;
  54. }
  55. }
  56. }
  57. orders.push(new Order(
  58. response[i]._id,
  59. response[i].name,
  60. response[i].date,
  61. response[i].taxes,
  62. response[i].fees,
  63. ingredients,
  64. merchant
  65. ));
  66. }
  67. return orders;
  68. }
  69. })
  70. .catch((err)=>{
  71. banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
  72. })
  73. .finally(()=>{
  74. loader.style.display = "none";
  75. });
  76. }
  77. }
  78. module.exports = orders;