orders.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. window.ordersStrandObj = {
  2. isFetched: false,
  3. display: async function(){
  4. if(!this.isFetched){
  5. window.orders = [];
  6. fetch("/order", {
  7. method: "GET",
  8. headers: {
  9. "Content-Type": "application/json;charset=utf-8"
  10. },
  11. })
  12. .then((response) => response.json())
  13. .then((response)=>{
  14. if(typeof(response) === "string"){
  15. banner.createError(response);
  16. }else{
  17. let newOrders = [];
  18. for(let i = 0; i < response.length; i++){
  19. newOrders.push(new Order(
  20. response[i]._id,
  21. response[i].orderId,
  22. response[i].date,
  23. response[i].ingredients,
  24. merchant
  25. ));
  26. }
  27. merchant.editOrders(newOrders);
  28. isFetched = true;
  29. }
  30. })
  31. .catch((err)=>{
  32. console.log(err);
  33. banner.createError("Unable to retrieve your orders at the moment");
  34. });
  35. }
  36. },
  37. populate: function(){
  38. let listDiv = document.querySelector("#orderList");
  39. let template = document.querySelector("#order").content.children[0];
  40. while(listDiv.children.length > 0){
  41. listDiv.removeChild(listDiv.firstChild);
  42. }
  43. for(let i = 0; i < merchant.orders.length; i++){
  44. let row = template.cloneNode(true);
  45. let totalCost = 0;
  46. for(let j = 0; j < merchant.orders[i].ingredients.length; j++){
  47. totalCost += merchant.orders[i].ingredients[j].quantity * merchant.orders[i].ingredients[j].price;
  48. }
  49. row.children[0].innerText = merchant.orders[i].name;
  50. row.children[1].innerText = `${merchant.orders[i].ingredients.length} items`;
  51. row.children[2].innerText = new Date(merchant.orders[i].date).toLocaleDateString("en-US");
  52. row.children[3].innerText = (totalCost / 100).toFixed(2);
  53. row.order = merchant.orders[i];
  54. row.onclick = ()=>{orderDetailsComp.display(merchant.orders[i])};
  55. window.orders.push(row);
  56. listDiv.appendChild(row);
  57. }
  58. }
  59. }