1/** 2 * Widget ShopModalProductList main JS 3 * @author Michal Malek <[email protected]> 4 */ 5var modalProductList = modalProductList || {}; 6 7modalProductList = function () { 8 var urlAjax = "\\shop\\shopWidgetAjax\\modalProductListContent"; 9 var handlers = []; 10 var widgetClass = "shop-widget-container"; 11 var triggerClass = "shop-modal-product-list"; 12 var modalContentContainerClass = "shop-modal-product-list-content-container"; 13 var quantityWidgetClass = "shop-quantity-changer-container"; 14 var addToCartWidgetClass = "shop-product-add-to-cart-container"; 15 16 var registerWidgetInstance = function (handler) { 17 var findInHandlers = function (handler) { 18 for (var i = 0; i < handlers.length; i++) { 19 if (handlers[i].id === handler.id) { 20 return true; 21 } 22 } 23 return false; 24 }; 25 if (! findInHandlers(handler)) { 26 handlers.push(handler); 27 } 28 }; 29 30 var bindClickHandler = function (handler) { 31 handler.addEventListener('click', modalProductList.handleClick); 32 }; 33 34 var registerQuantityChangers = function (handler) { 35 var widgetHandlers = handler.querySelectorAll("."+quantityWidgetClass); 36 for (var i = 0; i < widgetHandlers.length; i++) { 37 productQuantityChanger.register(widgetHandlers[i].dataset.widget); 38 } 39 }; 40 var registerAddToCartTriggers = function (handler) { 41 var widgetHandlers = handler.querySelectorAll("."+addToCartWidgetClass); 42 for (var i = 0; i < widgetHandlers.length; i++) { 43 productAddToCart.register(widgetHandlers[i].dataset.widget); 44 } 45 }; 46 47 return { 48 handleError: function (data) { 49 if (data.hasOwnProperty('widgetId')) { 50 var handler = document.getElementById(data.widgetId); 51 shopError.show(handler); 52 } else { 53 for (var i = 0; i < handlers.length; i++) { 54 shopError.show(handlers[i]); 55 } 56 } 57 }, 58 handleClick: function (eventHandler) { 59 var triggerHandler = shopHelpers.findAncestor(eventHandler.target, triggerClass); 60 var containerHandler = shopHelpers.findAncestor(triggerHandler, widgetClass); 61 62 var request = { 63 'products': triggerHandler.dataset.products || '', 64 'tags': triggerHandler.dataset.tags || '', 65 'additionalImgPath': triggerHandler.dataset.additionalimgscr || '', 66 'additionalModalTitle': triggerHandler.dataset.additionalmodaltitle || '', 67 'additionalModalTitle2': triggerHandler.dataset.additionalmodaltitle2 || '', 68 'containerId': containerHandler.dataset.container 69 }; 70 shopLoading.show(containerHandler); 71 shopAjax.post(urlAjax, JSON.stringify(request)).then(function(response) { 72 shopModal.show(response); 73 var modalContentContainerHandler = document.querySelector("."+modalContentContainerClass); 74 if (modalContentContainerHandler !== null) { 75 registerQuantityChangers(modalContentContainerHandler); 76 registerAddToCartTriggers(modalContentContainerHandler); 77 } 78 shopLoading.hide(containerHandler); 79 }).catch(function() { 80 shopError.show(containerHandler); 81 shopLoading.hide(containerHandler); 82 }); 83 }, 84 register: function (hash) { 85 var containerHandler = shopHelpers.getContainerByHash(hash); 86 var triggerHandler = containerHandler.querySelector("."+triggerClass); 87 if (containerHandler !== null && triggerHandler !== null) { 88 bindClickHandler(triggerHandler); 89 registerWidgetInstance(containerHandler); 90 } 91 }, 92 init: function () { 93 EventBus.on('shopWidgetsError', modalProductList.handleError); 94 } 95 } 96}(); 97
98modalProductList.init();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.