1( function ( $ ) { 2 SS6 = window.SS6 || { }; 3 SS6.productList = SS6.productList || { }; 4 SS6.productList.AjaxFilter = SS6.productList.AjaxFilter || { }; 5 SS6.productList.AjaxFilter = function ( ajaxMoreLoader ) { 6 var $productsWithControls = $ ( '.js-product-list-ajax-filter-products-with-controls' ); 7 var $productFilterForm = $ ( 'form[name="product_filter_form"]' ); 8 var $showResultsButton = $ ( '.js-product-filter-show-result-button' ); 9 var $resetFilterButton = $ ( '.js-product-filter-reset-button' ); 10 var requestTimer = null; 11 var requestDelay = 1000; 12 this.init = function ( ) { 13 $productFilterForm.change ( function ( event ) { 14 var isComboboxElement = $ ( event.target ) . hasClass ( 'js-filter-sortable-values-input' ); 15 if ( isComboboxElement === false ) { 16 clearTimeout ( requestTimer ); 17 requestTimer = setTimeout ( submitFormWithAjax, requestDelay ); 18 SS6.history.pushReloadState ( SS6.url.getBaseUrl ( ) + '?' + $productFilterForm.serialize ( ) ); 19 } 20 } ); 21 $showResultsButton.click ( function ( ) { 22 var $productList = $ ( '.js-product-list' ); 23 $ ( 'html, body' ) . animate ( { scrollTop : $productList.offset ( ) . top }, 'slow' ); 24 return false; 25 } ); 26 $resetFilterButton.click ( function ( ) { 27 $productFilterForm.find ( ':radio, :checkbox' ) . removeAttr ( 'checked' ) . end ( ) . find ( 'textarea, :text, select' ) . val ( '' ); 28 $productFilterForm.find ( '.js-product-filter-call-change-after-reset' ) . change ( ); 29 clearTimeout ( requestTimer ); 30 var resetUrl = $ ( this ) . attr ( 'href' ); 31 window.location.href = resetUrl; 32 return false; 33 } ); 34 updateFiltersDisabled ( ); 35 }; 36 var showProducts = function ( $wrappedData ) { 37 var $productsHtml = $wrappedData.find ( '.js-product-list-ajax-filter-products-with-controls' ); 38 $productsWithControls.html ( $productsHtml.html ( ) ); 39 $productsWithControls.show ( ); 40 if ( ajaxMoreLoader !== null ) { 41 ajaxMoreLoader.reInit ( $productsWithControls.find ( '.js-load-more-button' ) ); 42 } 43 SS6.register.registerNewContent ( $productsWithControls ); 44 }; 45 var updateFiltersCounts = function ( $wrappedData ) { 46 var $existingCountElements = $ ( '.js-product-filter-count' ); 47 var $newCountElements = $wrappedData.find ( '.js-product-filter-count' ); 48 $newCountElements.each ( function ( ) { 49 var $newCountElement = $ ( this ); 50 var $existingCountElement = $existingCountElements.filter ( '[data-form-id="' + $newCountElement.data ( 'form-id' ) + '"]' ); 51 $existingCountElement.html ( $newCountElement.html ( ) ); 52 if ( $existingCountElement.is ( 'option' ) ) { 53 $existingCountElement.attr ( 'disabled', $newCountElement.is ( ':disabled' ) ); 54 } 55 } ); 56 SS6.select2.refresh ( ); 57 }; 58 var updateFiltersDisabled = function ( ) { 59 $ ( '.js-product-filter-count' ) . each ( function ( ) { 60 var $countElement = $ ( this ); 61 var $label = $countElement.closest ( 'label' ); 62 var $formElement = $ ( '#' + $countElement.data ( 'form-id' ) ); 63 if ( willFilterZeroProducts ( $countElement ) ) { 64 if ( ! $formElement.is ( ':checked' ) ) { 65 $label.addClass ( 'in-disable' ); 66 $formElement.prop ( 'disabled', true ); 67 } 68 } 69 else { 70 $label.removeClass ( 'in-disable' ); 71 $formElement.prop ( 'disabled', false ); 72 } 73 } ); 74 }; 75 var willFilterZeroProducts = function ( $countElement ) { 76 return $countElement.html ( ) . indexOf ( '(0)' ) !== - 1; 77 }; 78 var submitFormWithAjax = function ( ) { 79 SS6.ajax ( { overlayDelay : 0, url : SS6.url.getBaseUrl ( ), data : $productFilterForm.serialize ( ), success : function ( data ) { 80 var $wrappedData = $ ( $.parseHTML ( '<div>' + data + '</div>' ) ); 81 var $googleRemarketingData = $wrappedData.find ( '.js-product-list-with-paginator' ) . data ( 'google-remarketing-products' ); 82 showProducts ( $wrappedData ); 83 updateFiltersCounts ( $wrappedData ); 84 updateFiltersDisabled ( ); 85 if ( typeof gtag !== 'undefined' ) { 86 SS6.googleRemarketing.products ( "view_search_results", $googleRemarketingData ); 87 } 88 updateLoadMoreButton ( ); 89 } } ); 90 }; 91 var updateLoadMoreButton = function ( ) { 92 $loadMoreButton = $ ( '.js-load-more-button' ); 93 var totalCount = $loadMoreButton.data ( 'total-count' ); 94 var pageSize = $loadMoreButton.data ( 'page-size' ); 95 var page = $loadMoreButton.data ( 'page' ); 96 var remaining = totalCount - page * pageSize; 97 var loadNextCount = remaining >= pageSize ? pageSize : remaining; 98 var buttonText = SS6.translator.transChoice ( "[1,4]Na\u010d\u00edst dal\u0161\u00ed %loadNextCount% zbo\u017e\u00ed|[5,Inf]Na\u010d\u00edst dal\u0161\u00edch %loadNextCount% zbo\u017e\u00ed", loadNextCount, { '%loadNextCount%' : loadNextCount } ); 99 $loadMoreButton.val ( buttonText ) . toggle ( remaining > 0 ); 100 }; 101 }; 102} ) ( jQuery );
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.