PageSourceSearch

https://www.lojaintt.com.br/stores/687/static/js/filterBuilder.js

js lojaintt.com.br collected 2026-09-26 10:10:08 UTC 4,064 bytes, 132 lines download raw bytes

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.