orders.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. window.ordersStrandObj = {
  2. isPopulated: false,
  3. display: async function(){
  4. if(!this.isPopulated){
  5. window.orders = [];
  6. fetch("/orders", {
  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 listDiv = document.querySelector("#orderList");
  18. let template = document.querySelector("#order").content.children[0];
  19. while(listDiv.children.length > 0){
  20. listDiv.removeChild(listDiv.firstChild);
  21. }
  22. for(let i = 0; i < response.length; i++){
  23. let row = template.cloneNode(true);
  24. let totalCost = 0;
  25. for(let j = 0; j < response[i].ingredients.length; j++){
  26. totalCost += response[i].ingredients[j].quantity * response[i].ingredients[j].price;
  27. }
  28. row.children[0].innerText = response[i].orderId;
  29. row.children[1].innerText = `${response[i].ingredients.length} items`;
  30. row.children[2].innerText = new Date(response[i].date).toLocaleDateString("en-US");
  31. row.children[3].innerText = (totalCost / 100).toFixed(2);
  32. row._date = row.children[2].innerText;
  33. row._id = response[i]._id;
  34. window.orders.push(row);
  35. listDiv.appendChild(row);
  36. }
  37. }
  38. })
  39. .catch((err)=>{
  40. banner.createError("Unable to retrieve your orders at the moment");
  41. });
  42. this.isPopulated = true;
  43. }
  44. }
  45. }