1if (typeof filterBuilder == "undefined") { 2 filterBuilder = []; 3} 4 5filterBuilder.applyFilters = function () { 6var valueSlidePriceOld = filterBuilder.collectSliderPrice(); 7const btnApplyFilters = document.getElementById("apply-filters"); 8 9if (btnApplyFilters) { 10 btnApplyFilters.addEventListener("click", function () { 11 const filtersContainer = document.querySelector(".new-filters__container"); 12 if (filtersContainer) { 13 const sliderFilter = filtersContainer.querySelector("#preco #slider-filter"); 14 const anyChecked = filterBuilder.checkAnyCheckboxChecked(filtersContainer); 15 const valueSlidePriceNew = filterBuilder.collectSliderPrice(); 16 const pricesUnchanged = 17 valueSlidePriceOld[0] === valueSlidePriceNew[0] && 18 valueSlidePriceOld[1] === valueSlidePriceNew[1]; 19 20 if (!anyChecked && (!sliderFilter || pricesUnchanged)) { 21 return; 22 } 23 24 const filters = filterBuilder.collectFilters(filtersContainer, pricesUnchanged, valueSlidePriceNew); 25 filterBuilder.buildNewURL(filters); 26 } 27 }); 28} 29}; 30 31filterBuilder.checkAnyCheckboxChecked = function (container) { 32const checkboxes = container.querySelectorAll('input[type="checkbox"]'); 33let anyChecked = false; 34 35checkboxes.forEach(checkbox => { 36 if (checkbox.checked) { 37 anyChecked = true; 38 } 39}); 40 41return anyChecked; 42}; 43 44filterBuilder.collectFilters = function (container, pricesUnchanged, valueSlidePrice) { 45const filters = {}; 46const allCheckboxes = container.querySelectorAll('input[type="checkbox"]:checked'); 47const sliderPrice = []; 48 49if (!pricesUnchanged) { 50 sliderPrice.push(...valueSlidePrice); 51} 52 53allCheckboxes.forEach(function (checkbox) { 54 const name = checkbox.name; 55 if (name) { 56 filters[name] = filters[name] || []; 57 filters[name].push(checkbox.value); 58 } 59}); 60 61if (sliderPrice.length > 0) { 62 filters["minp"] = [sliderPrice[0]]; 63 filters["maxp"] = [sliderPrice[1]]; 64} 65 66return filters; 67}; 68 69filterBuilder.buildNewURL = function (filters) { 70const baseUrl = window.location.origin + window.location.pathname; 71const queryParams = new URLSearchParams(); 72 73for (const key in filters) { 74 if (filters[key].length) { 75 queryParams.append(key, filters[key].join(",")); 76 } 77} 78 79if (queryParams.toString()) { 80 window.location.href = `${baseUrl}?${queryParams.toString()}`; 81} 82}; 83 84filterBuilder.collectSliderPrice = function () { 85const container = document.querySelector(".new-filters__container"); 86if (container) { 87 const sliderFilter = container.querySelector("#preco #slider-filter .new-slider__values"); 88 if (sliderFilter) { 89 const minPriceElement = sliderFilter.querySelector(".new-slider__min"); 90 const maxPriceElement = sliderFilter.querySelector(".new-slider__max"); 91 92 let minPrice = minPriceElement ? minPriceElement.value : ""; 93 let maxPrice = maxPriceElement ? maxPriceElement.value : ""; 94 95 minPrice = minPrice.replace(/[^0-9.,]/g, ""); 96 maxPrice = maxPrice.replace(/[^0-9.,]/g, ""); 97 98 return [minPrice, maxPrice]; 99 } 100} 101return [null, null]; 102}; 103 104filterBuilder.cleanFilters = function () { 105let selectedFilters = document.querySelector(".selected-filters"); 106if (!selectedFilters) { 107 return 108} 109 110const buttonCleanFilters = document.createElement('button'); 111buttonCleanFilters.type = 'button'; 112buttonCleanFilters.textContent = 'Limpar filtro'; 113buttonCleanFilters.classList.add('clean-filter-category'); 114selectedFilters.appendChild(buttonCleanFilters); 115 116buttonCleanFilters.addEventListener("click", function () { 117 const baseUrl = window.location.href; 118 const url = new URL(baseUrl); 119 url.search = ''; 120 window.location.href = url.toString(); 121}) 122} 123 124document.addEventListener("DOMContentLoaded", () => { 125if (typeof lazyLoadService == 'undefined') { 126 filterBuilder.applyFilters(); 127 filterBuilder.cleanFilters(); 128} else { 129 lazyLoadService.addFunctionToQueue(filterBuilder.applyFilters); 130 lazyLoadService.addFunctionToQueueAfterInteraction(filterBuilder.cleanFilters); 131} 132});
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.