PageSourceSearch

https://www.tissus-print.com/modules/csperfectsearch/views/js/csperfectsearch-front.js?v=1791086218

js tissus-print.com collected 2026-10-04 03:58:21 UTC 17,045 bytes, 430 lines download raw bytes

1/**
2 * Module CsPerfectSearch - This module provides form for avance seacrh
3 *
4 * @author    Crystals Services SARL <[email protected]>
5 * @copyright 2015-2016 Crystals Services SARL
6 * @license   from ccrystals services SARL
7 */
8
9;
10
11function perfectSearchBindGrid()
12{
13    var view = $.totalStorage('perfectsearch-display');
14
15    if (!view && (typeof displayList != 'undefined') && displayList)
16        view = 'list';
17
18    if (view && view != 'grid')
19        perfectSearchDisplay(view);
20    else
21        $('.perfectsearch-display').find('li#display-grid').addClass('selected');
22
23    $(document).on('click', '#display-grid', function (e) {
24        e.preventDefault();
25        perfectSearchDisplay('grid');
26    });
27
28    $(document).on('click', '#display-list', function (e) {
29        filter_price_from
30        e.preventDefault();
31        perfectSearchDisplay('list');
32    });
33}
34
35function perfectSearchDisplay(view)
36{
37    if (view == 'list')
38    {
39        $('.grid-elt').addClass('hidden');
40        $('.list-elt').removeClass('hidden');
41        $('#display-list').addClass('selected');
42        $('#display-grid').removeClass('selected');
43        $.totalStorage('perfectsearch-display', 'list');
44    }
45    else
46    {
47        $('.list-elt').addClass('hidden');
48        $('.grid-elt').removeClass('hidden');
49        $('#display-grid').addClass('selected');
50        $('#display-list').removeClass('selected');
51        $.totalStorage('perfectsearch-display', 'grid');
52    }
53}
54
55function initRangeSlider(selector, min, max) {
56    
57    if (isNaN(min) || isNaN(max))
58        return;
59    $(selector).noUiSlider({
60        start: [min, max],
61        connect: true,
62        range: {
63            'min': min,
64            'max': max
65        }
66    });
67    $(selector).on({
68        slide: function () {
69            value = $(selector).val();
70            $('#priceSlider-values .priceMin').text(value[0]);
71            $('#priceSlider-values .priceMax').text(value[1]);
72            $('#filter_price_from').val(value[0]);
73            $('#filter_price_to').val(value[1]);
74        },
75        set: function () {
76            updatePerfectSearchFilters();
77        },
78        change: function () {
79            sendPerfectSearchFilters('price');
80        }
81    });
82}
83
84function rebuildSlider(selector, min, max) {
85    updateSlider = $(selector);
86    updateSlider.empty().attr('class', 'priceSlider').attr('id', 'test');
87
88    //initRangeSlider(selector, min, max);
89}
90
91function updatePerfectSearchFilters() {
92    filterPrice = $('#priceSlider-values').html();
93    filterCateg = $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = categ].selected').find('.filterblock-item-listname').html();
94    filterManuf = $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = manuf].selected').find('.filterblock-item-listname').html();
95    filterSuppl = $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = suppl].selected').find('.filterblock-item-listname').html();
96    filterCatid = $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = categ].selected').attr('data-catid');
97
98    $('#filter_categ').val(filterCatid);
99    $('#filter_manuf').val(filterManuf);
100    $('#filter_suppl').val(filterSuppl);
101
102    filterManuf = (filterManuf == '' || filterManuf == undefined) ? noFilterSelectedText : filterManuf;
103    filterSuppl = (filterSuppl == '' || filterSuppl == undefined) ? noFilterSelectedText : filterSuppl;
104    filterCateg = (filterCateg == '' || filterCateg == undefined) ? noFilterSelectedText : filterCateg;
105    filterCatid = (filterCatid == '' || filterCatid == undefined) ? '' : filterCatid;
106
107    $('#activedFilters-values .filter-by-price').find('.filter-value').html(filterPrice);
108    $('#activedFilters-values .filter-by-manuf').find('.filter-value').html(filterManuf);
109    $('#activedFilters-values .filter-by-suppl').find('.filter-value').html(filterSuppl);
110    $('#activedFilters-values .filter-by-categ').find('.filter-value').html(filterCateg);
111
112    initFilterBlockAction(false);
113}
114
115var isInitiated = false;
116function initFilterBlockAction(testInit) {
117    if (testInit) {
118        return;
119    }
120
121    $('ul.filterblock-item-list').on('click', 'li.filterblock-item-listitem', function () {
122        if ($(this).hasClass('selected'))
123            return;
124        filterVal = $(this).attr('data-filter-value');
125        filterTyp = $(this).attr('data-filter-type');
126        $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = ' + filterTyp + ']').hide();
127        $(this).append('<i class="filterblock-item-listremove pull-right icon icon-remove"></i>');
128        $(this).show().addClass('selected');
129        updatePerfectSearchFilters();
130        sendPerfectSearchFilters();
131    })
132
133    $('ul.filterblock-item-list li.filterblock-item-listitem').on('click', '.filterblock-item-listremove', function (e) {
134        if (!$(this).parent().hasClass('selected'))
135            return;
136        filterVal = $(this).parent().attr('data-filter-value');
137        filterTyp = $(this).parent().attr('data-filter-type');
138        $(this).parent().hide().removeClass('selected');
139        $('ul.filterblock-item-list li.filterblock-item-listitem[data-filter-type = ' + filterTyp + ']').show();
140        $(this).remove();
141        e.stopPropagation();
142        updatePerfectSearchFilters('removeFilter');
143        sendPerfectSearchFilters();
144    })
145
146}
147
148function sendPerfectSearchFilters(filterType) {
149    filterCatid = $('#filter_categ').val();
150    filterManuf = encodeURIComponent($('#filter_manuf').val());
151    filterSuppl = encodeURIComponent($('#filter_suppl').val());
152    filterPriceF = $('#filter_price_from').val();
153    filterPriceT = $('#filter_price_to').val();
154    
155    if (filterType == 'removeFilter') {
156        filterPriceF = 0;
157        filterPriceT = parseFloat(999999999999999999);
158    }
159    
160    if (filterType == 'refreshFilter') {
161        filterPriceF = 0;
162        filterPriceT = parseFloat(999999999999999999);
163        filterCatid = '';
164        filterManuf = '';
165        filterSuppl = '';
166    }
167    
168    // Vérifier si tous les filtres sont vides/non sélectionnés
169    var hasNoFilters = (!filterCatid || filterCatid == '' || filterCatid == 'undefined' || filterCatid <= 0) &&
170                       (!filterManuf || filterManuf == '' || filterManuf == 'undefined') &&
171                       (!filterSuppl || filterSuppl == '' || filterSuppl == 'undefined');
172    
173    // Si aucun filtre n'est sélectionné, réinitialiser les prix aussi
174    if (hasNoFilters && filterType != 'price') {
175        filterPriceF = parseFloat($('#first_filter_price_from').val());
176        filterPriceT = parseFloat($('#first_filter_price_to').val());
177    }
178    
179    $('#searchresult-filter').append('<div class="perfectSearch-loader"></div>');
180
181    splitUrl = perfectsearchUrl.split('?');
182    splitUrl[0] += '?' + $('#csperfectsearch_quicksearchbox').seri
182alize();
183    
184    // N'ajouter les paramètres que s'ils ont une valeur
185    if (filterCatid != undefined && filterCatid != 'undefined' && filterCatid != '' && filterCatid > 0)
186        splitUrl[0] += '&filter_catid=' + filterCatid;
187    if (filterManuf != undefined && filterManuf != 'undefined' && filterManuf != '' && filterManuf != 'null')
188        splitUrl[0] += '&filter_manuf=' + filterManuf;
189    if (filterSuppl != undefined && filterSuppl != 'undefined' && filterSuppl != '' && filterSuppl != 'null')
190        splitUrl[0] += '&filter_suppl=' + filterSuppl;
191    
192    splitUrl[0] += '&filter_price_from=' + filterPriceF + '&filter_price_to=' + filterPriceT;
193
194    $('#searchresult-filter').find('.perfectSearch-loader').html('<div class="perfectSearch-loadertext">' + itemsBlockUpdateMsg + '</div>');
195
196    $('#searchresult-list').load(splitUrl.join('&') + ' #searchresult-listcontent', function () {
197        perfectSearchBindGrid();
198
199        $('#searchresult-filter').find('.perfectSearch-loader').html('<div class="perfectSearch-loadertext">' + filterBlockUpdateMsg + '</div>');
200
201        $.ajax({
202            url: splitUrl.join('&'),
203            data: {ajaxFilter: 1},
204            dataType: 'JSON',
205            success: function (rep) {
206                if (rep.filters.price.min != undefined && rep.filters.price.max != undefined)
207                {
208                    $('#csperfectsearch-priceSlider').noUiSlider({
209                        start: [rep.filters.price.min, rep.filters.price.max],
210                        connect: true,
211                        range: {
212                            'min': parseFloat(rep.filters.price.min),
213                            'max': parseFloat(rep.filters.price.max)
214                        }
215                    }, true);
216
217                    value = $('#csperfectsearch-priceSlider').val();
218
219                    if (value[0] != undefined) {
220                        $('#priceSlider-values .priceMin').text(value[0]);
221                        $('#filter_price_from').val(value[0]);
222                    }
223                    if (value[1] != undefined) {
224                        $('#priceSlider-values .priceMax').text(value[1]);
225                        $('#filter_price_to').val(value[1]);
226                    }
227                }
228
229                if (rep.filtered.catid <= 0 && rep.filters.catid !== undefined) {
230                    $('#filterblock-by-categ').empty();
231                    $.each(rep.filters.categ, function (name, count) {
232                        html = '<li class="filterblock-item-listitem clearfix" data-filter-type="categ" data-filter-value="' + name + '" data-filter-selected="false" data-catid="';
233                        if (rep.filters.catid[name])
234                            html += rep.filters.catid[name];
235                        html += '" >\
236									<span class="pull-left filterblock-item-listname">' + name + '</span>\
237									<span class="pull-right filterblock-item-listcount">' + count + '</span>\
238								</li>';
239                        $('#filterblock-by-categ').append(html);
240                    });
241                }
242
243                if (rep.filtered.manuf == '' && rep.filters.manuf !== undefined) {
244                    $('#filterblock-by-manuf').empty();
245                    $.each(rep.filters.manuf, function (name, count) {
246                        html = '<li class="filterblock-item-listitem clearfix" data-filter-type="manuf" data-filter-value="' + name + '" data-filter-selected="false" >\
247									<span class="pull-left filterblock-item-listname">' + name + '</span>\
248									<span class="pull-right filterblock-item-listcount">' + count + '</span>\
249								</li>';
250                        $('#filterblock-by-manuf').append(html);
251                    });
252                }
253
254                if (rep.filtered.suppl == '' && rep.filters.suppl !== undefined) {
255                    $('#filterblock-by-suppl').empty();
256                    $.each(rep.filters.suppl, function (name, count) {
257                        html = '<li class="filterblock-item-listitem clearfix" data-filter-type="suppl" data-filter-value="' + name + '" data-filter-selected="false" >\
258									<span class="pull-left filterblock-item-listname">' + name + '</span>\
259									<span class="pull-right filterblock-item-listcount">' + count + '</span>\
260								</li>';
261                        $('#filterblock-by-suppl').append(html);
262                    });
263                }
264                updatePerfectSearchFilters();
265            }
266        }).done(function () {
267            loadInfiteScroll();
268            updatePerfectSearchFilters();
269            $('#searchresult-filter').find('.perfectSearch-loader').remove();
270        })
271
272    });
273}
274
275var isScrollLoading = false;
276function loadPerfectSearchByScroll(page) {
277
278
279    totalNumber = parseInt($('#csperfectsearch_nbTotal').text());
280    numberFrom = parseInt($('#csperfectsearch_nbFrom').text());
281    numberTo = parseInt($('#csperfectsearch_nbTo').text());
282    hasNextElt = numberTo < totalNumber;
283
284
285    if (hasNextElt && !isScrollLoading)
286    {
287        isScrollLoading = true;
288        filterCatid = $('#filter_categ').val();
289        filterManuf = encodeURIComponent($('#filter_manuf').val());
290        filterSuppl = encodeURIComponent($('#filter_suppl').val());
291        filterPriceF = $('#filter_price_from').val();
292        filterPriceT = $('#filter_price_to').val();
293
294        $('#searchresult-listcontent #perfectsearch-product_list').append('<div class="perfectSearch-scrollloader"></div>');
295
296        splitUrl = perfectsearchUrl.split('?');
297
298        splitUrl[0] += '?' + $('#csperfectsearch_quicksearchbox').serialize();
299        splitUrl[0] += '&filter_price_from=' + filterPriceF + '&filter_price_to=' + filterPriceT;
300        if (filterCatid != undefined && filterCatid != 'undefined' && filterCatid > 0)
301            splitUrl[0] += '&filter_catid=' + filterCatid;
302        if (filterManuf != undefined && filterManuf != 'undefined' && filterManuf != '')
303            splitUrl[0] += '&filter_manuf=' + filterManuf;
304        if (filterSuppl != undefined && filterSuppl != 'undefined' && filterSuppl != '')
305            splitUrl[0] += '&filter_suppl=' + filterSuppl;
306
307        url = splitUrl.join('&') + '&page=' + page;
308
309        $('#perfectSearchScroll-tmp').load(url + ' #searchresult-listcontent', function () {
310            html = $('#perfectSearchScroll-tmp #perfectsearch-product_list').html();
311            $('#searchresult-listcontent #perfectsearch-product_list').find('.perfectSearch-scrollloader').remove();
312            $('#searchresult-listcontent #perfectsearch-product_list').append(html);
313            $('#perfectSearchScroll-tmp').empty();
314            perfectSearchBindGrid();
315            $('#csperfectsearch_nbFrom').text(numberFrom + nbItemPerPage);
316            $('#csperfectsearch_nbTo').text((numberTo + nbItemPerPage) > totalNumber ? totalNumber : numberTo + nbItemPerPage);
317            isScrollLoading = false;
318        });
319    }
320}
321
322function loadInfiteScroll() {
323    currentPage = 1;
324    $('ul#perfectsearch-product_list.perfectsearch-product_list').scroll(function (data) {
325        // We check if we're at the bottom of the scroll container
326        if ($(this)[0].scrollHeight - $(this).scrollTop() <= $(this).outerHeight() + 25) {
327            // If we're at the bottom, show the overlay and retrieve the next page
328
329            currentPage++;
330            loadPerfectSearchByScroll(currentPage);
331        }
332    });
333}
334
335;
336
337$(function () {
338
339    var xhr = null;
340    var quicksearch_onload = false;
341    perfectSearchBindGrid();
342    updatePerfectSearchFilters();
343
344   $('#csperfectsearch_quicksearch #quicksearch_query')
345	.on('input', function () {
346
347		var searchText = $(this).val().trim();
348
349		if (searchText.length > 2) {
350
351			var splitUrl = perfectsearchUrl.split('?');
352			splitUrl[0] += '?' + $('#csperfectsearch_quicksearchbox').serialize();
353			url = splitUrl.join('&');
354
355			$("#csperfectsearch_quicksearchresult").show();
356			$('#csperfectsearch_quicksearchresult')
357				.html('<div class="perfectSearch-loader"></div>');
358
359			if (xhr) {
360				xhr.abort();
361			}
362
363			xhr = $.ajax({
364				url: url,
365				success: function (data) {
366
367					$("#csperfectsearch_quicksearchresult")
368					.html($(data).find("#csperfectsearch_searchresult_block"));
369
370					$('#searchresult-filter .filterblock').filterblock();
371					perfectSearchBindGrid();
372					updatePerfectSearchFilters();
373					loadInfiteScroll();
374
375					var priceSliderMin = parseFloat($('#priceSlider-values .priceMin').text());
376					var priceSliderMax = parseFloat($('#priceSlider-values .priceMax').text());
377
378					initRangeSlider('#csperfectsearch-priceSlider', priceSliderMin, priceSliderMax);
379
380					initFilterBlockAction(isInitiated);
381					isInitiated = true;
382				},
383				error: function (xhr, status) {
384					if (status !== 'abort') {
385						$('#csperfectsearch_quicksearchresult .perfectSearch-loader').remove();
386					}
387				}
388			});
389		}
390	})
391
392    $('#searchresult-filter .filterblock').filterblock();
393
394    loadInfiteScroll();
395})
396
397$(function () {
398    $("#csperfectsearch_quicksearchresult").on('click', '#csperfectsearch_searchresult_close', function () {
399        $("#csperfectsearch_quicksearchresult").hide();
400        $("#quicksearch_query").val('');
401    });
402    
403    $("#csperfectsearch_quicksearchresult").on('click', '#csperfectsearch_searchresult_refresh', function () {
404        $('#csperfectsearch_quicksearch #quicksearch_query').keyup();
405        sendPerfectSearchFilters('refreshFilter');
406    });
407})
408
409$(document).ready(function() {
410	$(document).on('click', '#reset-price-slider', function(e) {
411        e.preventDefault();
412        
413        // Récupérer les valeurs initiales
414        var initialMin = parseFloat($('#first_filter_price_from').val());
415        var initialMax = parseFloat($('#first_filter_price_to').val());
416        
417		$('#filter_price_from').val(initialMin);
418		$('#filter_price_to').val(initialMax);
419		
420		sendPerfectSearchFilters('price');
421    });
422	
423	$(document).on('click', '#btn_quicksearch_query', function(e) {
424        e.preventDefault();
425    });
426	
427	$(document).on('submit', '#csperfectsearch_quicksearchbox', function (e) {
428		e.preventDefault();
429	});
430});

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.