diff --git a/js/data.js b/js/data.js deleted file mode 100644 index 40164a7..0000000 --- a/js/data.js +++ /dev/null @@ -1,4 +0,0 @@ -let objProducts = []; -let totalPrice = 0; -let cartLink = null; -let shareData = []; \ No newline at end of file diff --git a/js/methods.js b/js/methods.js deleted file mode 100644 index 4366876..0000000 --- a/js/methods.js +++ /dev/null @@ -1,172 +0,0 @@ -function getInfoFromSelectedProduct() { - let ids = objProducts.map(obj => obj.id); - return $.get($('meta[name="get-contents"]').attr('content') + "/" + ids.join(",")); -} - -function numberToEuroFormat(number) { - let formatter = new Intl.NumberFormat('de', { style: 'currency', currency: 'EUR' }); - return formatter.format(number); -} - -function getQuantityOfProducts() { - let quantitys = objProducts.map(obj => obj.quantity); - let quantityOfProducts = 0; - for (let i = 0; i < quantitys.length; i++) { if (Number.isInteger(Number(quantitys[i]))) quantityOfProducts += Number(quantitys[i]); } - return quantityOfProducts; -} - -function getProductInfo(productInfo) { - let objProduct = objProducts.find(obj => obj.id == productInfo.id); - return jQuery.extend({}, objProduct, productInfo); -} - -function calculatePrice(objProduct) { - objProduct.calc_preis = objProduct.preis; - if (objProduct.quantity >= 5) objProduct.calc_preis = objProduct.preis_5; - if (objProduct.quantity >= 10) objProduct.calc_preis = objProduct.preis_10; - if (Number(objProduct.quantity) >= Number(objProduct.module_pro_palette)) objProduct.calc_preis = objProduct.preis_palette; - return objProduct; -} - -function createProductElement(objProduct) { - if (!objProduct.image) objProduct.image = ""; - calculatePrice(objProduct); - let elementProduct = ` - - - - - - - ${objProduct.title} - -
- sofort verfügbar -
- - - - - ${numberToEuroFormat(objProduct.calc_preis)}`; - if (objProduct.calc_preis != objProduct.preis) elementProduct += ` -
- - ${(((objProduct.calc_preis - objProduct.preis) * 100) / objProduct.preis).toFixed(2)} % - `; - elementProduct += ` - `; - return elementProduct; -} - -function addToBag(productId) { - let objProductInfo = objProducts.find(obj => obj.id == productId); - let index = objProducts.indexOf(objProductInfo); - if (index == -1) objProducts.push({ id: productId, quantity: 1 }); - updateProductsInLocalStorage(); -} - -function isJson(str) { - try { JSON.parse(str); } - catch (e) { return false; } - return true; -} - -function isEncoded(str) { - try { atob(str); } - catch (e) { return false; } - return true; -} - -function hasCartCode() { - let urlPath = window.location.pathname; - let code = urlPath.split("/"); - code = code[code.length - 1]; - if (isEncoded(code)) { - let productLink = atob(code); - if (isJson(productLink)) return true; - } - return false; -} - -function getCartCode() { - let urlPath = window.location.pathname; - let code = urlPath.split("/"); - code = code[code.length - 1]; - if (isEncoded(code)) return atob(code); - return null; -} - -function updateProductsInLocalStorage() { - localStorage.setItem("products", JSON.stringify(objProducts)); - $('#count-products-in-bag').text(getQuantityOfProducts()); - $('#list-products-in-bag').html(''); - totalPrice = 0; - if (objProducts.length > 0) { - getInfoFromSelectedProduct().done(function (response, status) { - response.contents.forEach(function (product) { - let objProduct = getProductInfo(product); - objProduct = calculatePrice(objProduct); - totalPrice += objProduct.calc_preis * objProduct.quantity; - let elementProduct = createProductElement(objProduct); - $('#list-products-in-bag').append(elementProduct); - }); - $('#total-price').text(numberToEuroFormat(totalPrice)); - }).fail(function (response) { - $('.cart-link').hide(); - $(".btn-share").hide(); - $('#count-products-in-bag').hide(); - $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').hide(); - $('#total-price').parent().parent().parent().hide(); - $('#no-products').hide(); - $('#cart-error').show(); - $('#modal-buttons').hide(); - }); - $('.cart-link').show(); - $(".btn-share").show(); - $('#count-products-in-bag').show(); - $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').show(); - $('#total-price').parent().parent().parent().show(); - $('#no-products').hide(); - $('#cart-error').hide(); - $('#modal-buttons').show(); - - cartLink = window.location.origin + '/' + btoa(JSON.stringify(objProducts)); - $('.cart-link').val(cartLink); - shareData = { - title: "Share cart list", - text: 'share cart list', - url: cartLink, - }; - - - - } else { - $('.cart-link').hide(); - $(".btn-share").hide(); - $('#count-products-in-bag').hide(); - $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').hide(); - $('#total-price').parent().parent().parent().hide(); - $('#no-products').show(); - $('#cart-error').hide(); - $('#modal-buttons').hide(); - } - let productId = $('meta[name="product-id"]').attr('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 + ``); - } - } -} \ No newline at end of file diff --git a/js/script.js b/js/script.js deleted file mode 100644 index 618e3b9..0000000 --- a/js/script.js +++ /dev/null @@ -1,135 +0,0 @@ -$(window).on('load', function () { - $.ajaxSetup({ - headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').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); }); - if (localStorage.getItem("products") != null) objProducts = JSON.parse(localStorage.getItem("products")); - updateProductsInLocalStorage(); - if (hasCartCode()) { - let productLink = getCartCode(); - if (objProducts.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(productLink); - updateProductsInLocalStorage(); - window.location.replace($('meta[name="checkout"]').attr('content')); - }); - } - $(document).on('click', '.btn-remove-product', function () { - let productId = $(this).attr('data-id'); - let objProductInfo = objProducts.find(obj => obj.id == productId); - let index = objProducts.indexOf(objProductInfo); - if (index != -1) objProducts.splice(index, 1); - localStorage.setItem("products", JSON.stringify(objProducts)); - $(this).parent().parent().remove(); - - $('#count-products-in-bag').text(getQuantityOfProducts()); - if (objProducts.length > 0) { - $('.cart-link').show(); - $(".btn-share").show(); - $('#count-products-in-bag').show(); - $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').show(); - $('#total-price').parent().parent().parent().show(); - $('#no-products').hide(); - $('#modal-buttons').show(); - } else { - $('.cart-link').hide(); - $(".btn-share").hide(); - $('#count-products-in-bag').hide(); - $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').hide(); - $('#total-price').parent().parent().parent().hide(); - $('#no-products').show(); - $('#modal-buttons').hide(); - } - - getInfoFromSelectedProduct().done(function (response, status) { - totalPrice = 0; - if (response.contents != undefined) response.contents.forEach(function (product) { - let objProduct = getProductInfo(product); - totalPrice += objProduct.preis * objProduct.quantity; - }); - $('#total-price').text(numberToEuroFormat(totalPrice)); - if (typeof updateProducts === "function") $('#total-checkout-price').text(numberToEuroFormat(totalPrice)); - }); - - productId = $('meta[name="product-id"]').attr('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).on('input', '.select-quantity', function () { - let quantity = $(this).val(); - let productId = $(this).attr('data-id'); - let objProductInfo = objProducts.find(obj => obj.id == productId); - let index = objProducts.indexOf(objProductInfo); - objProducts[index].quantity = quantity; - localStorage.setItem("products", JSON.stringify(objProducts)); - let productPrice = $(this).parent().parent().find('.product-price'); - $.get($('meta[name="get-contents"]').attr('content') + "/" + objProductInfo.id).done(function (response, status) { - let product = response.contents[0]; - let objProduct = getProductInfo(product); - objProduct = calculatePrice(objProduct); - let elementPrice = ` - ${numberToEuroFormat(objProduct.calc_preis)}`; - if (objProduct.calc_preis != objProduct.preis) elementPrice += ` -
- - ${(((objProduct.calc_preis - objProduct.preis) * 100) / objProduct.preis).toFixed(2)} % - `; - productPrice.html(elementPrice); - }); - $('#count-products-in-bag').text(getQuantityOfProducts()); - getInfoFromSelectedProduct().done(function (response, status) { - totalPrice = 0; - response.contents.forEach(function (product) { - let objProduct = getProductInfo(product); - calculatePrice(objProduct); - totalPrice += objProduct.calc_preis * objProduct.quantity; - }); - $('#total-price').text(numberToEuroFormat(totalPrice)); - }); - productId = $('meta[name="product-id"]').attr('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 + ``); - } - } - }); - $('#btn-copy-cart-link').click(function () { - $('.cart-link').select(); - document.execCommand("copy"); - $(this).html(``); - }); - $(".btn-share").click(async function () { - if (navigator.share) { try { await navigator.share(shareData); } catch (err) { console.warn(err); } } - else { console.warn('Native Web Sharing not supported'); } - }); -}); \ No newline at end of file