Advertisement
ucielsola

Untitled

Apr 27th, 2022
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. const init = () => {
  2. fetchData();
  3. actualizarCarrito();
  4. };
  5.  
  6. /* INSTANCIACIÓN */
  7. const carrito = new Carrito();
  8. //OPERADOR LOGICO AND
  9. localStorage.getItem("MI_CARRITO") && carrito.recuperarDatos();
  10.  
  11. let stock;
  12. const fetchData = async () => {
  13. try {
  14. const res = await fetch("js/data/productos.json");
  15. const data = await res.json();
  16. stock = data;
  17. pintarInventario(stock);
  18. } catch (error) {
  19. console.log(error);
  20. }
  21. };
  22.  
  23. const pintarInventario = (data) => {
  24. data.forEach((categoria) => {
  25. const productos = categoria.modelos;
  26. const nombreCategoria = categoria.nombre;
  27. productos.forEach((prod) => {
  28. const { id, nombre, precio, imagen } = prod;
  29. let card = document.createElement("div");
  30. card.setAttribute("class", "card");
  31.  
  32. card.innerHTML = `
  33. <div class = 'content'>
  34. <div class ='img'>
  35. <img src= '${imagen}'></img>
  36. </div>
  37. <div class ='details'>
  38. <div class ='cardText'>
  39. <h4 class='nombreProducto'>${nombre}</h4>
  40. <a href='${categoria.url}' target='_blank' class = 'categoria'>${categoria.nombre}</a>
  41. <p> $${precio}</p>
  42. </div>
  43. <a id='agregar${id}' class='btnAdd' title = 'Add to cart'>+</a>
  44. </div>
  45. </div>`;
  46.  
  47. //Anido card al contenedor de productos
  48. contenedorProductos.appendChild(card);
  49.  
  50. const btnAdd = document.getElementById(`agregar${id}`);
  51. btnAdd.addEventListener("click", () => {
  52. agregarAlCarrito(`${categoria.nombre}`, id);
  53. actualizarCarrito();
  54. showMessage("Successfully added 😀", "success");
  55. });
  56. });
  57. });
  58. };
  59.  
  60. // Contenedor de todos los productos del carrito
  61. const productosDelCarrito = document.getElementById("productosDelCarrito");
  62.  
  63. /* FUNCIÓN QUE MUESTRA TODAS LAS CARACTERÍSTICAS DEL CARRITO
  64. DE ACUERDO A LA INTERACCIÓN DEL USUARIO*/
  65.  
  66. const actualizarCarrito = () => {
  67. productosDelCarrito.innerHTML = "";
  68. carrito.productos.forEach((producto) => {
  69. // DESTRUCTURING
  70. const { id, imagen, nombre, cantidad, precio } = producto;
  71.  
  72. //hago el cálculo de cantidad del producto por su precio
  73. let sumaPorProducto = cantidad * precio;
  74. //creo el div para cada modelo seleccionado
  75. const cardCarrito = document.createElement("div");
  76. cardCarrito.setAttribute("class", "cardEnMiCarrito");
  77.  
  78. cardCarrito.innerHTML = `
  79. <img class='imgCard' src= '${imagen}'></img>
  80. <div class='infoCard'>
  81. <h4>${nombre}</h4>
  82. <p id='cantidad'>QUANTITY: ${cantidad} x <span>$${precio.toFixed(2)}</span></p>
  83. </div>
  84. <div>
  85. <b class='sumaPorProducto'> $${sumaPorProducto.toFixed(2)}</b>
  86. </div>
  87. <p class = 'borrarProducto' id = 'remover${id}'> x </p>`;
  88. //Anido cardCarrito al contenedor del carrito
  89. productosDelCarrito.appendChild(cardCarrito);
  90.  
  91. const btnRemover = document.getElementById(`remover${id}`);
  92. btnRemover.addEventListener("click", () => {
  93. showMessage("Successfully removed 😢", "caution");
  94. borrarProducto(id);
  95. actualizarCarrito();
  96. });
  97. });
  98.  
  99. //muestra la cantidad de productos que añadí al Carrito
  100. document.getElementById("contadorCarrito").innerText =
  101. carrito.productos.reduce((acc, prod) => acc + prod.cantidad, 0);
  102.  
  103. //muestra el valor total de mi compra
  104. document.getElementById("valorTotal").innerHTML = `${carrito.total}`;
  105. carrito.guardar();
  106. };
  107.  
  108. //FUNCIÓN QUE AGREGA EFECTIVAMENTE LOS PRODUCTOS AL CARRITO
  109. const agregarAlCarrito = (categoria, prodId) => {
  110. console.log(stock);
  111. const existe = carrito.productos.some((prod) => prod.id === prodId);
  112. const producto = stock
  113. .find((cat) => cat.nombre === categoria)
  114. .modelos.find((prod) => prod.id === prodId);
  115.  
  116. // OPERADOR TERNARIO
  117. existe
  118. ? carrito.productos.map((prod) => {
  119. if (prod.id === prodId) {
  120. prod.cantidad++;
  121. }
  122. })
  123. : carrito.productos.push(producto);
  124.  
  125. carrito.calcularTotal();
  126. carrito.guardar();
  127. };
  128.  
  129. //FUNCIÓN PARA BORRAR PRODUCTO DEL CARRITO
  130. const borrarProducto = (prodId) => {
  131. const producto = carrito.productos.find((prod) => (prod.id = prodId));
  132. const indice = carrito.productos.indexOf(producto);
  133.  
  134. carrito.productos.map((item) => (item.cantidad = 1));
  135. carrito.productos.splice(indice, 1);
  136. carrito.calcularTotal();
  137. carrito.guardar();
  138. };
  139.  
  140. // Botón dentro del modal del carrito que permite realizar la compra de los productos seleccionados
  141. const botonComprarProductos = document.getElementById("comprarProductos");
  142.  
  143. // FUNCIÓN PARA REALIZAR LA COMPRA DE LOS PRODUCTOS EN EL CARRITO
  144. const comprarProductos = () => {
  145. botonComprarProductos.addEventListener("click", () => {
  146. if (carrito.productos.length > 0) {
  147. showMessageCentered(
  148. `<img src = 'img/comprobado.png' class = 'checked'></img>
  149. <p> Thank you for your Purchase!</p>`,
  150. "buy"
  151. );
  152. //vacio el carrito porque ya ejecuté la compra
  153. vaciarCarrito();
  154. //luego actualizo
  155. actualizarCarrito();
  156. } else {
  157. showMessage("Nothing to buy 🥱", "error");
  158. }
  159. });
  160. };
  161.  
  162. //Botón ubicado dentro del modal -carrito con una cruz roja-
  163. const botónVaciarCarrito = document.getElementById("vaciarCarrito");
  164.  
  165. //FUNCIÓN PARA ELIMINAR TODOS LOS PRODUCTOS DEL CARRITO
  166. const eliminarProductos = () => {
  167. botónVaciarCarrito.addEventListener("click", () => {
  168. if (carrito.productos.length > 0) {
  169. //Llamo a la función que permite eliminar todos los productos
  170. vaciarCarrito();
  171. showMessage("Successfully emptied 😣", "caution");
  172. actualizarCarrito();
  173. } else {
  174. showMessage("Nothing to empty 🥱", "error");
  175. }
  176. });
  177. };
  178.  
  179. //FUNCIÓN QUE EFECTIVAMENTE BORRA TODOS LOS PRODUCTOS DEL CARRITO
  180. const vaciarCarrito = () => {
  181. carrito.productos.map((item) => (item.cantidad = 1));
  182. carrito.productos = [];
  183. carrito.calcularTotal();
  184. carrito.guardar();
  185. };
  186.  
  187.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement