/* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ $(document).ready(function () { PdProductAttributesList.initFancyboxOnProductImages() PdProductAttributesList.initTouchSpinOnProductQtyInputs() PdProductAttributesList.initEventAddToCartToButtons() $('#pdproductattributeslist table.table').tablesorter({ theme: 'default', headerTemplate: '{content} {icon}', widgets: ['uitheme', 'columns'], }) prestashop.on('updateProductList', function (params) { if (typeof params !== 'undefined') { PdProductAttributesList.initFancyboxOnProductImages() PdProductAttributesList.initTouchSpinOnProductQtyInputs() PdProductAttributesList.initEventAddToCartToButtons() } }) }) let PdProductAttributesList = { initFancyboxOnProductImages() { if (!!$.prototype.fancybox) { $('.option_image a.fancybox').fancybox({ hideOnContentClick: true, openEffect: 'elastic', closeEffect: 'elastic', helpers: { overlay: { locked: false, }, }, }) } }, initTouchSpinOnProductQtyInputs() { if (!!$.prototype.TouchSpin) { var max = parseInt( $("#pdproductattributeslist input[name='qty']").data('max') ) $("#pdproductattributeslist input[name='qty']").TouchSpin({ min: 0, max: max, step: 1, decimals: 0, verticalbuttons: true, verticaldownclass: 'fa fa-minus touchspin-down bootstrap-touchspin-down material-icons touchspin-down', verticalupclass: 'fa fa-plus touchspin-up bootstrap-touchspin-up material-icons touchspin-up', buttondown_class: 'btn btn-touchspin js-touchspin ', buttonup_class: 'btn btn-touchspin js-touchspin ', }) $("#pdproductattributeslist_grid input[name='qty']").TouchSpin({ min: 0, max: 9999999999, step: 1, decimals: 0, verticalbuttons: true, verticaldownclass: 'fa fa-minus touchspin-down bootstrap-touchspin-down material-icons touchspin-down', verticalupclass: 'fa fa-plus touchspin-up bootstrap-touchspin-up material-icons touchspin-up', buttondown_class: 'btn btn-touchspin js-touchspin ', buttonup_class: 'btn btn-touchspin js-touchspin ', }) } }, executeAddProductsToCart(products) { $.ajax({ type: 'POST', url: pdproductattributeslist_ajax_link, dataType: 'json', data: { action: 'addProductsToCart', products: products, secure_key: pdproductattributeslist_secure_key, ajax: 1, }, success: function (resp) { if (resp) { prestashop.emit('updateCart', { reason: { cart: [], }, resp: resp, }) Object.entries(resp).forEach(([k, v]) => { if (v.response) { if (v.id_product_attribute > 0) { console.log('click1') message_ok = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_variant + ' ' + v.combination_name + ' ' + pdproductattributeslist_add_ok $.growl({ title: pdproductattributeslist_title_ok, message: message_ok, duration: 1000, }) } else { console.log('click2') message_ok = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_add_ok $.growl({ title: pdproductattributeslist_title_ok, message: message_ok, duration: 1000, }) } } else if (v.response == false) { if (v.id_product_attribute > 0) { console.log('click3') message_error = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_variant + ' ' + v.combination_name + ', ' + pdproductattributeslist_max_qty + ' ' + v.max_quantity + ' ' + pdproductattributeslist_pcs $.growl.error({ title: pdproductattributeslist_title_error, message: message_error, duration: 1000, }) } else { console.log('click4') message_error = pdproductattributeslist_product + ' ' + v.product_name + ', ' + pdproductattributeslist_max_qty + ' ' + v.max_quantity + ' ' + pdproductattributeslist_pcs $.growl.error({ title: pdproductattributeslist_title_error, message: message_error, duration: 5000, }) } } }) } else { $.growl.error({ title: pdproductattributeslist_title_error, message: pdproductattributeslist_add_error, duration: 15000, }) } }, }) }, initEventAddToCartToButtons() { $('body').on( 'click', 'button.add-to-cart-pdproductattributeslist', function () { var products_array = [] var tr_colection = $(this).parent().parent().parent().find('tr') $(tr_colection).each(function (index) { elem = $(this).find('td.option_gty') qty = parseInt(elem.find('input.quantity').val()) if (elem.length > 0 && qty > 0) { var product = { id_product: parseInt(elem.data('id-product')), id_product_attribute: parseInt(elem.data('id-product-attribute')), quantity: qty, id_customization: 0, } products_array.push(product) } }) if (products_array.length > 0) { PdProductAttributesList.executeAddProductsToCart(products_array) } else { $.growl.error({ title: pdproductattributeslist_title_error, message: pdproductattributeslist_add_error, duration: 5000, }) } } ) }, }