$(document).ready(function () { getProducts(); document.getElementById("productAddedAlert").hidden = true; }); function getProducts() { //ajax call to php $.ajax({ url: '../logic/getProductData.php', type: 'GET', cache: false, datatype: 'json', data: {}, success: function (response) { const data = JSON.parse(response); //set data to fields const productOverview = document.getElementById("productOverviewDiv"); for (let i = 0; i < data.length; i++) { const product = document.createElement("div"); product.className = "product col-md-3"; product.id = data[i].id; product.innerHTML = `
${data[i].name}
${data[i].name} ${data[i].price} € ${data[i].description}
1 Stück | ${data[i].weight} g
ID: ${data[i].product_id}
`; productOverview.appendChild(product); } var btns = document.getElementsByClassName('btn btn-success cart-button btn-block addtocart'); for (var i = 0; i < btns.length; i++) { btns[i].addEventListener('click', function () { addToCart(this); }); } } }); } function addToCart(elem) { //init var productDetails = elem.parentNode.parentNode; var productDetailsKids = productDetails.children; var getprice; var getproductName; var getproductId; var productCount; var cart = []; var stringCart; for (let i = 0; i < productDetailsKids.length; i++) { if (productDetailsKids[i].className == "fw-bold d-block price") { getprice = productDetailsKids[i].innerText.replace(" €", ""); } if (productDetailsKids[i].className == "fw-bold d-block productname") { getproductName = productDetailsKids[i].innerText; } if (productDetailsKids[i].className == "id") { getproductId = productDetailsKids[i].innerText.replace("ID: ", ""); } } //create product object var product = { productid: getproductId, productname: getproductName, price: getprice, count: 1 }; //convert product data to JSON for storage var stringProduct = JSON.stringify(product); /*send product data to session storage */ if (!sessionStorage.getItem('cart')) { //append product JSON object to cart array cart.push(stringProduct); //cart to JSON stringCart = JSON.stringify(cart); //create session storage cart item sessionStorage.setItem('cart', stringCart); addedToCart(getproductName); updateCartCount(); } else { //get existing cart data from storage and convert back into array cart = JSON.parse(sessionStorage.getItem('cart')); var productExists = false; for (let i = 0; i < cart.length; i++) { var object = JSON.parse(cart[i]); if (object.productid == getproductId) { productExists = true; } } if (!productExists) { cart.push(stringProduct); stringCart = JSON.stringify(cart); sessionStorage.setItem('cart', stringCart); addedToCart(getproductName); updateCartCount(); } else { for (let i = 0; i < cart.length; i++) { var object = JSON.parse(cart[i]); if (object.productid == getproductId) { object.count++; cart[i] = JSON.stringify(object); stringCart = JSON.stringify(cart); sessionStorage.setItem('cart', stringCart); addedToCart(getproductName); updateCartCount(); } } } } } function addedToCart(pname) { var message = pname + " was added to the cart"; var alerts = document.getElementById("productAddedAlert"); alerts.innerHTML = message; if (!alerts.classList.contains("message")) { alerts.classList.add("message"); } alerts.hidden = false; setTimeout(function () { alerts.hidden = true; } , 3000); } function updateCartCount() { var items = getCartCount(); $('#cartCount').text(items); } function getCartCount() { var items; if (sessionStorage.getItem('cart')) { var cart = JSON.parse(sessionStorage.getItem('cart')) ?? []; items = 0; for (let i = 0; i < cart.length; i++) { var object = JSON.parse(cart[i]); items += object.count; } } else { items = 0; } return items; }