import * as Cart from './modules/cart.js'; import { numberToEuroFormat } from './utils.js'; import { Product } from './elements/product.js'; async function displayProducts() { document.querySelector('#list-products-in-bag').innerHTML = ''; let products = await Cart.getItems(); if (products.length > 0) { products.forEach(function (product) { let elementProduct = Product(product); let productRow = document.createElement("tr"); productRow.innerHTML = elementProduct; document.querySelector('#list-products-in-bag').append(productRow); }); let quantity = await Cart.getQuantity(); document.querySelectorAll('.js-product-counter').forEach(element => { element.innerText = quantity; if (quantity > 0) element.style.display = "block"; else element.style.display = "none"; }); let totalPrice = await Cart.getTotalPrice(); document.querySelectorAll(".js-total-price").forEach(element => { element.innerText = numberToEuroFormat(totalPrice); }); let link = await Cart.getLink(); document.querySelectorAll('.js-cart-link').forEach(element => element.value = link); if (navigator.share) document.querySelectorAll(".btn-share").forEach(button => { button.addEventListener("click", async function () { try { const shareData = { title: "Share cart list", text: 'share cart list', url: link, }; await navigator.share(shareData); } catch (error) { console.error(error); } }); }); else { document.querySelectorAll(".btn-share").forEach(button => { button.style.display = "none"; }); console.warn('Native Web Sharing not supported'); } let copyCartLink = document.querySelector('#btn-copy-cart-link'); let copyIcon = ` `; let copiedIcon = ` `; if (copyCartLink != undefined) copyCartLink.addEventListener("click", () => { let cartLink = document.querySelector('.cart-link'); if (cartLink && cartLink.select) { navigator.clipboard.writeText(cartLink.value).then(() => { copyCartLink.innerHTML = copiedIcon; setTimeout(() => { copyCartLink.innerHTML = copyIcon; }, 3000); }).catch(function (error) { console.error(error); }); } }); //document.querySelectorAll('.cart-link').forEach(cartLink => cartLink.style.display = "block"); //document.querySelectorAll(".btn-share").forEach(btnShare => btnShare.style.display = "block"); //document.querySelector('#shopping-cart').querySelector('.modal-footer').style.display = "block"; //document.querySelector('#total-price').parentElement.parentElement.parentElement.style.display = "block"; document.querySelector('#no-products').style.display = "none"; document.querySelector('#cart-error').style.display = "none"; document.querySelector('#modal-buttons').style.display = "flex"; } else { document.querySelectorAll('.cart-link').forEach(cartLink => cartLink.style.display = "none"); document.querySelectorAll(".btn-share").forEach(btnShare => btnShare.style.display = "none"); //document.querySelector('#list-products-in-bag').parentElement.parentElement.parentElement.parentElement.parentElement.querySelector('.modal-footer').style.display = "none"; //document.querySelector('#total-price').parentElement.parentElement.parentElement.style.display = "none"; document.querySelector('#no-products').style.display = "block"; document.querySelector('#cart-error').style.display = "none"; document.querySelector('#modal-buttons').style.display = "none"; document.querySelector('#selected-products').style.display = "none"; } } document.addEventListener('DOMContentLoaded', async () => { displayProducts(); document.body.addEventListener('click', async function (event) { if (event.target.matches('.btn-remove-product')) { let button = event.target; let productId = button.getAttribute('data-id'); await Cart.removeItem(productId); button.parentElement.parentElement.remove(); displayProducts(); /* productId = document.querySelector('meta[name="product-id"]').getAttribute('content'); if (productId != undefined) { let objProduct = objProducts.find(obj => obj.id == productId); if (objProduct == undefined) { $('#btn-add-to-bag').show(); $('#btn-show-bag').hide(); if (objProducts.length > 0) $('#btn-check-out').parent().hide(); else $('#btn-check-out').parent().show(); } else { $('#btn-add-to-bag').hide(); $('#btn-show-bag').show(); $('#btn-check-out').parent().hide(); $('#count-items-in-bag').html(objProduct.quantity + ``); } } */ } }); /* document.querySelectorAll('.select-quantity').forEach(async input => { let quantity = input.value; let productId = input.getAttribute('data-id'); Cart.updateItem(productId, { quantity: quantity }); let product = Cart.getItem(productId); let elementPrice = ` ${numberToEuroFormat(product.calc_preis)}`; if (product.calc_preis != product.preis) elementPrice += `
${(((product.calc_preis - product.preis) * 100) / product.preis).toFixed(2)} % `; input.parentElement.parentElement.querySelector('.product-price').innerHTML = elementPrice; quantity = await Cart.getQuantity(); document.querySelectorAll('.js-product-counter').forEach(counter => { counter.innerText = quantity; if (quantity > 0) counter.style.display = "block"; else counter.style.display = "none"; }); document.querySelector('#total-price').innerText = numberToEuroFormat(Cart.getTotalPrice()); productId = document.querySelector('meta[name="product-id"]').getAttribute('content'); if (productId != undefined) { let objProduct = objProducts.find(obj => obj.id == productId); if (objProduct == undefined) { $('#btn-add-to-bag').show(); $('#btn-show-bag').hide(); if (objProducts.length > 0) $('#btn-check-out').parent().hide(); else $('#btn-check-out').parent().show(); } else { $('#btn-add-to-bag').hide(); $('#btn-show-bag').show(); $('#btn-check-out').parent().hide(); $('#count-items-in-bag').html(objProduct.quantity + ``); } } } ); * / /* let sharedCode = getSharedCode(); if (sharedCode) { if (Cart.getItems().length > 0) $('#modal-confirm-product-replacement').modal('show'); else $('#modal-confirm-addition-of-products').modal('show'); $('.btn-confirm-product-link').click(function () { objProducts = JSON.parse(sharedCode); window.location.replace($('meta[name="checkout"]').attr('content')); }); } */ /* if (localStorage.getItem("dismiss-message") == 1) $('.alert-dismissible').remove(); else $('.alert-dismissible').show(); $('#btn-close-message').click(function () { localStorage.setItem("dismiss-message", 1); }); */ });