orderDetails.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. let orderDetails = {
  2. display: function(order){
  3. document.getElementById("removeOrderBtn").onclick = ()=>{this.remove(order)};
  4. document.getElementById("orderDetailName").innerText = order.name;
  5. document.getElementById("orderDetailDate").innerText = order.date.toLocaleDateString("en-US");
  6. document.getElementById("orderDetailTax").innerText = `$${(order.taxes / 100).toFixed(2)}`;
  7. document.getElementById("orderDetailFee").innerText = `$${(order.fees / 100).toFixed(2)}`;
  8. let ingredientList = document.getElementById("orderIngredients");
  9. while(ingredientList.children.length > 0){
  10. ingredientList.removeChild(ingredientList.firstChild);
  11. }
  12. let template = document.getElementById("orderIngredient").content.children[0];
  13. let grandTotal = 0;
  14. for(let i = 0; i < order.ingredients.length; i++){
  15. let ingredientDiv = template.cloneNode(true);
  16. let price = order.ingredients[i].pricePerUnit * order.ingredients[i].quantity;
  17. grandTotal += price;
  18. const ingredient = order.ingredients[i].ingredient;
  19. ingredientDiv.children[0].innerText = order.ingredients[i].ingredient.name;
  20. ingredientDiv.children[2].innerText = `$${(price / 100).toFixed(2)}`;
  21. const ingredientDisplay = ingredientDiv.children[1];
  22. if(ingredient.specialUnit === "bottle"){
  23. const quantSold = order.ingredients[i].quantity / ingredient.unitSize;
  24. const ppu = (order.ingredients[i].pricePerUnit * order.ingredients[i].quantity) / quantSold;
  25. ingredientDisplay.innerText = `${quantSold.toFixed(0)} bottles x $${(ppu / 100).toFixed(2)}`;
  26. }else{
  27. const convertedQuantity = ingredient.convert(order.ingredients[i].quantity);
  28. const convertedPrice = controller.reconvertPrice(order.ingredients[i].ingredient.unitType, order.ingredients[i].ingredient.unit, order.ingredients[i].pricePerUnit);
  29. ingredientDisplay.innerText = `${convertedQuantity.toFixed(2)} ${ingredient.unit.toUpperCase()} x $${(convertedPrice / 100).toFixed(2)}`;
  30. }
  31. ingredientList.appendChild(ingredientDiv);
  32. }
  33. document.getElementById("orderDetailTotal").innerText = `$${(grandTotal / 100).toFixed(2)}`;
  34. document.querySelector("#orderTotalPrice p").innerText = `$${((grandTotal + order.taxes + order.fees) / 100).toFixed(2)}`;
  35. },
  36. remove: function(order){
  37. let loader = document.getElementById("loaderContainer");
  38. loader.style.display = "flex";
  39. fetch(`/order/${order.id}`, {
  40. method: "DELETE",
  41. headers: {
  42. "Content-Type": "application/json;charset=utf-8"
  43. }
  44. })
  45. .then((response) => response.json())
  46. .then((response)=>{
  47. if(typeof(response) === "string"){
  48. banner.createError(response);
  49. }else{
  50. merchant.removeOrder(order);
  51. banner.createNotification("ORDER REMOVED");
  52. }
  53. })
  54. .catch((err)=>{
  55. banner.createError("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE");
  56. })
  57. .finally(()=>{
  58. loader.style.display = "none";
  59. });
  60. }
  61. }
  62. module.exports = orderDetails;