// Recuperar datos del localStorage al cargar la página let carritoGuardado = JSON.parse(localStorage.getItem('carrito')) || []; let preciototalGuardado = parseInt(localStorage.getItem('preciototal')) || 0; // Restaurar los valores en caso de recarga let carrito = carritoGuardado; let preciototal = preciototalGuardado; class Container { constructor(id, tipo, modelo, precio, stock) { this.id = id; this.tipo = tipo this.modelo = modelo; this.precio = precio; this.stock = stock; } } let producto1 = new Container(1, "Contenedor", "20 pies", 2500, 5) let producto2 = new Container(2, "Contenedor", "30 pies", 3500, 8) let producto3 = new Container(3, "Contenedor", "40 pies", 5000, 25) let producto4 = new Container(4, "Casa", "15 m2", 15000, 7); let producto5 = new Container(5, "Casa", "30 m2", 25000, 15); let producto6 = new Container(6, "Casa", "45 m2", 32000, 2); let producto7 = new Container(7, "Casa", "50 m2", 36000, 8); let producto8 = new Container(8, "Casa", "60 m2", 40000, 10); let productos = [producto1,producto2,producto3,producto4,producto5,producto6,producto7,producto8] let stockProducto1 = document.getElementById('contenedorsimple_20pies'); contenedorsimple_20pies.innerText = `Stock: ${producto1.stock}`; let stockProducto2 = document.getElementById('contenedorsimple_30pies'); contenedorsimple_30pies.innerText = `Stock: ${producto2.stock}`; let stockProducto3 = document.getElementById('contenedorsimple_40pies'); contenedorsimple_40pies.innerText = `Stock: ${producto3.stock}`; let stockProducto4 = document.getElementById('contenedorcasa_15m2'); contenedorcasa_15m2.innerText = `Stock: ${producto4.stock}`; let stockProducto5 = document.getElementById('contenedorcasa_30m2'); contenedorcasa_30m2.innerText = `Stock: ${producto5.stock}`; let stockProducto6 = document.getElementById('contenedorcasa_45m2'); contenedorcasa_45m2.innerText = `Stock: ${producto6.stock}`; let stockProducto7 = document.getElementById('contenedorcasa_50m2'); contenedorcasa_50m2.innerText = `Stock: ${producto7.stock}`; let stockProducto8 = document.getElementById('contenedorcasa_60m2'); contenedorcasa_60m2.innerText = `Stock: ${producto8.stock}`; function Agregaralcarrito(producto) { if (producto.stock <= 0) { Swal.fire({ title: 'Error', text: 'No hay más stock de este producto.', icon: 'error', confirmButtonText: 'Cerrar' }); return; } carrito.push(producto); producto.stock--; contenedorsimple_20pies.innerText = `Stock: ${producto1.stock}`; contenedorsimple_30pies.innerText = `Stock: ${producto2.stock}`; contenedorsimple_40pies.innerText = `Stock: ${producto3.stock}`; contenedorcasa_15m2.innerText = `Stock: ${producto4.stock}`; contenedorcasa_30m2.innerText = `Stock: ${producto5.stock}`; contenedorcasa_45m2.innerText = `Stock: ${producto6.stock}`; contenedorcasa_50m2.innerText = `Stock: ${producto7.stock}`; contenedorcasa_60m2.innerText = `Stock: ${producto8.stock}`; preciototal += producto.precio; console.table(carrito); console.log('Precio total: $', preciototal); const Toast = Swal.mixin({ toast: true, position: 'top-end', showConfirmButton: false, timer: 1000, timerProgressBar: true, didOpen: (toast) => { toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseleave', Swal.resumeTimer) } }); Toast.fire({ icon: 'success', title: 'Agregado al carrito' }); // Guardar el carrito en localStorage localStorage.setItem('carrito', JSON.stringify(carrito)); localStorage.setItem('preciototal', preciototal); } //BOTONES CARRITO let boton1 = document.getElementById('botoncarrito20pies'); boton1.addEventListener('click', function() { Agregaralcarrito(producto1); }); let boton2 = document.getElementById('botoncarrito30pies'); boton2.addEventListener('click', function() { Agregaralcarrito(producto2); }); let boton3 = document.getElementById('botoncarrito40pies'); boton3.addEventListener('click', function() { Agregaralcarrito(producto3); }); let boton4 = document.getElementById('botoncarrito15m2'); boton4.addEventListener('click', function() { Agregaralcarrito(producto4); }); let boton5 = document.getElementById('botoncarrito30m2'); boton5.addEventListener('click', function() { Agregaralcarrito(producto5); }); let boton6 = document.getElementById('botoncarrito45m2'); boton6.addEventListener('click', function() { Agregaralcarrito(producto6); }); let boton7 = document.getElementById('botoncarrito50m2'); boton7.addEventListener('click', function() { Agregaralcarrito(producto7); }); let boton8 = document.getElementById('botoncarrito60m2'); boton8.addEventListener('click', function() { Agregaralcarrito(producto8); }); //agregar el boton carrito del header let boton9 = document.getElementById('header__button__carrito'); boton9.addEventListener('click',mostrarAlerta) function mostrarAlerta() { if (carrito.length === 0) { Swal.fire({ title: 'VACÍO', text: 'El carrito está vacío. Agrega productos para continuar.', icon: 'info', confirmButtonText: 'Cerrar' }); return; } let mensaje = ""; for (let producto of carrito) { mensaje += `${producto.tipo} ${producto.modelo}
`; } mensaje += `
Total: U$D ${preciototal}`; const swalWithBootstrapButtons = Swal.mixin({ customClass: { confirmButton: 'btn btn-success', cancelButton: 'btn btn-danger' }, buttonsStyling: false }) swalWithBootstrapButtons.fire({ title: 'Productos en carrito:', html: mensaje, icon: 'warning', showCancelButton: true, showCloseButton: true, confirmButtonText: 'Realizar pago!', cancelButtonText: 'Cancelar compra' , reverseButtons: true, }).then((result) => { if (result.isConfirmed) { swalWithBootstrapButtons.fire( 'Compra exitosa.', '', 'success' ); for (let producto of carrito) { producto.stock--; } carrito = []; preciototal = 0; } else if (result.dismiss === Swal.DismissReason.cancel) { swalWithBootstrapButtons.fire( 'Compra cancelada.', '', 'error' ); for (let producto of carrito) { producto.stock++; contenedorsimple_20pies.innerText = `Stock: ${producto1.stock}`; contenedorsimple_30pies.innerText = `Stock: ${producto2.stock}`; contenedorsimple_40pies.innerText = `Stock: ${producto3.stock}`; contenedorcasa_15m2.innerText = `Stock: ${producto4.stock}`; contenedorcasa_30m2.innerText = `Stock: ${producto5.stock}`; contenedorcasa_45m2.innerText = `Stock: ${producto6.stock}`; contenedorcasa_50m2.innerText = `Stock: ${producto7.stock}`; contenedorcasa_60m2.innerText = `Stock: ${producto8.stock}`; } carrito = []; preciototal = 0; } }); } //BOTON para desplazar hacia arriba const irArribaBtn = document.getElementById('irArribaBtn'); irArribaBtn.addEventListener('click', () => { window.scrollTo({ top: 0, behavior: 'smooth' }); }); // Mostrar u ocultar el botón según el desplazamiento window.addEventListener('scroll', () => { if (window.scrollY > 300) { irArribaBtn.style.display = 'block'; } else { irArribaBtn.style.display = 'none'; } }); function eliminarProducto(id) { const productoIndex = carrito.findIndex(producto => producto.id === id); if (productoIndex !== -1) { const productoEliminado = carrito.splice(productoIndex, 1)[0]; preciototal -= productoEliminado.precio; // Incrementa el stock del producto eliminado (si es necesario) const productoOriginal = productos.find(producto => producto.id === id); if (productoOriginal) { productoOriginal.stock++; } // Actualiza la vista del carrito y los valores actualizarVistaCarrito(); // Guarda los cambios en localStorage localStorage.setItem('carrito', JSON.stringify(carrito)); localStorage.setItem('preciototal', preciototal); } } function actualizarVistaCarrito() { // Actualiza los elementos de stock en la vista contenedorsimple_20pies.innerText = `Stock: ${producto1.stock}`; contenedorsimple_30pies.innerText = `Stock: ${producto2.stock}`; // Repite para otros productos... // Actualiza el total en la vista console.log('Precio total: $', preciototal); // Llama a mostrarAlerta para refrescar el mensaje en la vista mostrarAlerta(); } //Asincronía const boton = document.getElementById("boton") const popup = document.getElementById("popup-mensaje") boton.addEventListener("click", ()=>{ popup.classList.add("popup-active") setTimeout(()=>{ popup.classList.remove("popup-active") },3500) }) //FETCH fetch("https://dolarapi.com/v1/dolares") fetch("https://dolarapi.com/v1/dolares") .then(response => response.json()) .then(data => { const dolarContainer = document.getElementById('dolarContainer'); data.forEach(item => { const dolarElement = document.createElement('p'); const compraText = `Compra: ${item.compra}`; const ventaText = `Venta: ${item.venta}`; const casaText = `Casa: ${item.casa}`; const nombreText = `Nombre: ${item.nombre}`; const fechaText = `Fecha de Actualización: ${item.fechaActualizacion}`; dolarElement.innerHTML = `${nombreText}
${compraText}, ${ventaText}
${fechaText}`; dolarContainer.appendChild(dolarElement); }); }) .catch(error => { console.error('Hay un error:', error); });