newIngredient.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. let newIngredient = {
  2. display: function(){
  3. const selector = document.getElementById("unitSelector");
  4. document.getElementById("newIngName").placeholder = "NAME";
  5. document.getElementById("newIngCategory").placeholder = "CATEGORY";
  6. document.getElementById("newIngQuantity").placeholder = "QUANTITY";
  7. document.getElementById("bottleSizeLabel").style.display = "none";
  8. document.getElementById("volumeConvertUnitLeft").innerText = "G";
  9. document.getElementById("lengthConvertUnitLeft").innerText = "G";
  10. selector.value = "g";
  11. selector.onchange = ()=>{this.unitChange()};
  12. document.getElementById("submitNewIng").onclick = ()=>{this.submit()};
  13. },
  14. unitChange: function(){
  15. let select = document.getElementById("unitSelector");
  16. let bottleLabel = document.getElementById("bottleSizeLabel");
  17. if(select.value === "bottle"){
  18. bottleLabel.style.display = "block";
  19. }else{
  20. bottleLabel.style.display = "none";
  21. }
  22. let convertMass = document.getElementById("newIngMassConvert");
  23. let convertVolume = document.getElementById("newIngVolumeConvert");
  24. let convertLength = document.getElementById("newIngLengthConvert");
  25. let massLeft = document.getElementById("massConvertUnitLeft");
  26. let volumeLeft = document.getElementById("volumeConvertUnitLeft");
  27. let lengthLeft = document.getElementById("lengthConvertUnitLeft");
  28. if(controller.getUnitType(select.value) === "mass"){
  29. convertMass.style.display = "none";
  30. convertVolume.style.display = "flex";
  31. convertLength.style.display = "flex";
  32. volumeLeft.innerText = select.value.toUpperCase();
  33. lengthLeft.innerText = select.value.toUpperCase();
  34. }else if(controller.getUnitType(select.value) === "volume"){
  35. convertMass.style.display = "flex";
  36. convertVolume.style.display = "none";
  37. convertLength.style.display = "flex";
  38. massLeft.innerText = select.value.toUpperCase();
  39. lengthLeft.innerText = select.value.toUpperCase();
  40. }else if(controller.getUnitType(select.value) === "length"){
  41. convertMass.style.display = "flex";
  42. convertVolume.style.display = "flex";
  43. convertLength.style.display = "none";
  44. massLeft.innerText = select.value.toUpperCase();
  45. volumeLeft.innerText = select.value.toUpperCase();
  46. }else if(select.value === "bottle"){
  47. convertMass.style.display ="flex";
  48. convertVolume.style.display = "none";
  49. convertLength.style.display = "flex";
  50. massLeft.innerText = "ML";
  51. lengthLeft.innerText = "ML";
  52. let bottleSelect = document.getElementById("bottleUnits");
  53. bottleSelect.onchange = ()=>{
  54. massLeft.innerText = bottleSelect.value.toUpperCase();
  55. lengthLeft.innerText = bottleSelect.value.toUpperCase();
  56. }
  57. }
  58. },
  59. submit: function(){
  60. let unitSelector = document.getElementById("unitSelector");
  61. let quantityValue = parseFloat(document.getElementById("newIngQuantity").value);
  62. let unit = unitSelector.value;
  63. let massDiv = document.getElementById("newIngMassConvert");
  64. let volumeDiv = document.getElementById("newIngVolumeConvert");
  65. let lengthDiv = document.getElementById("newIngLengthConvert");
  66. let massLeft = controller.toBase(massDiv.children[0].value, unit)
  67. let massRight = controller.toBase(massDiv.children[3].value, massDiv.children[4].value);
  68. let volumeLeft = controller.toBase(volumeDiv.children[0].value, unit)
  69. let volumeRight = controller.toBase(volumeDiv.children[3].value, volumeDiv.children[4].value);
  70. let lengthLeft = controller.toBase(lengthDiv.children[0].value, unit)
  71. let lengthRight = controller.toBase(lengthDiv.children[3].value, lengthDiv.children[4].value);
  72. let newIngredient = {
  73. ingredient: {
  74. name: document.getElementById("newIngName").value,
  75. category: document.getElementById("newIngCategory").value,
  76. unit: unit,
  77. convert: {
  78. toMass: massRight / massLeft,
  79. toVolume: volumeRight / volumeLeft,
  80. toLength: lengthRight / lengthLeft
  81. }
  82. },
  83. quantity: controller.baseUnit(quantityValue, unit)
  84. };
  85. if(isNaN(newIngredient.ingredient.convert.toMass)) newIngredient.ingredient.convert.toMass = 0;
  86. if(isNaN(newIngredient.ingredient.convert.toVolume)) newIngredient.ingredient.convert.toVolume = 0;
  87. if(isNaN(newIngredient.ingredient.convert.toLength)) newIngredient.ingredient.convert.toLength = 0;
  88. switch(controller.getUnitType(unit)){
  89. case "mass": newIngredient.ingredient.convert.toMass = 1; break;
  90. case "volume": newIngredient.ingredient.convert.toVolume = 1; break;
  91. case "length": newIngredient.ingredient.convert.toLength = 1; break;
  92. case "bottle":
  93. let bottleQuant = document.getElementById("bottleSize").value;
  94. let bottleUnit = document.getElementById("bottleUnits").value;
  95. newIngredient.ingredient.convert.toVolume = 1 / controller.toBase(bottleQuant, bottleUnit);
  96. newIngredient.quantity = quantityValue * controller.toBase(bottleQuant, bottleUnit);
  97. break;
  98. }
  99. let loader = document.getElementById("loaderContainer");
  100. loader.style.display = "flex";
  101. fetch("/ingredients/create", {
  102. method: "POST",
  103. headers: {
  104. "Content-Type": "application/json"
  105. },
  106. body: JSON.stringify(newIngredient)
  107. })
  108. .then((response) => response.json())
  109. .then((response)=>{
  110. if(typeof(response) === "string"){
  111. controller.createBanner(response, "error");
  112. }else{
  113. merchant.addIngredients([response]);
  114. state.updateIngredients();
  115. controller.openStrand("ingredients");
  116. controller.createBanner("INGREDIENT CREATED", "success");
  117. }
  118. })
  119. .catch((err)=>{
  120. controller.createBanner("SOMETHING WENT WRONG. PLEASE REFRESH THE PAGE", "error");
  121. })
  122. .finally(()=>{
  123. loader.style.display = "none";
  124. });
  125. }
  126. }
  127. module.exports = newIngredient;