PageSourceSearch

https://www.prumex.cz/assets/scripts/cs/frontend/product/productList.AjaxFilter-v20260806141123_prod.js

js prumex.cz collected 2026-10-04 12:46:26 UTC 4,877 bytes, 102 lines download raw bytes

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.