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); }); */
});