PageSourceSearch

https://www.centroculturaledimilano.it/wp-content/plugins/mage-eve…/filter_pagination.js?ver=1790916026

js centroculturaledimilano.it collected 2026-10-02 04:41:37 UTC 11,544 bytes, 304 lines download raw bytes

1function mpwem_add_loader(target) {
2	target.css('position', 'relative');
3	target.append('<div class="spinner_loading"><div class="icon_loader"><span class="fas fa-spinner fa-pulse"></span></div></div>');
4}
5function mpwem_add_loader_xs(target) {
6	target.css('position', 'relative');
7	target.append('<div class="spinner_loading"><div class="icon_loader_xs"><span class="fas fa-spinner fa-pulse"></span></div></div>');
8}
9function mpwem_remove_loader(target) {
10	target.find('.spinner_loading').remove();
11}
12function mpwem_page_scroll_to(target) {
13	jQuery('html, body').animate({
14		scrollTop: target.offset().top -= 100
15	}, 1000);
16}
17(function ($) {
18	"use strict";
19	let bg_image_load = false;
20	load_pagination_initial_item();
21	$(".filter_datepicker").datepicker({dateFormat: "mm/dd/yy"});
22	$(document).ready(function () {
23		$(window).on('load', function () {
24			load_bg_img();
25			bg_image_load = true;
26		});
27		if (!bg_image_load) {
28			load_bg_img();
29			$(document).scroll(function () {
30				load_bg_img();
31				bg_image_load = true;
32			});
33		}
34	});
35	let filter_input_list = {
36		title_filter: 'data-title',
37		filter_with_city: 'data-city-name',
38		filter_with_category: 'data-category',
39		filter_with_organizer: 'data-organizer'
40	};
41	for (let name in filter_input_list) {
42		$(document).on('change keyup', '[name="' + name + '"] ', function (e) {
43			e.preventDefault();
44			load_filter($(this));
45		});
46	}
47	$(document).on('change', '.search_with_start_date , .search_with_end_date', function () {
48		load_filter($(this));
49	});
50	function load_filter(target) {
51		let parent = target.closest('.list_with_filter_section');
52		let result = 0;
53		if (check_search_value_exit(parent)) {
54			let date_check = date_filter_check(parent);
55			parent.find('.all_filter_item .filter_item').each(function () {
56				let active = 1;
57				for (let name in filter_input_list) {
58					if (single_text_check(parent, name) && active > 0) {
59						active = single_text_search(parent, $(this), name);
60					}
61				}
62				if (date_check && active > 0) {
63					active = date_search(parent, $(this));				
64				}
65				if (active > 1) {
66					result++;
67					$(this).addClass('search_on').removeClass('search_of');
68				} else {
69					$(this).addClass('search_of').removeClass('search_on');
70				}
71			}).promise().done(function () {
72				if (result > 0) {
73					parent.find('.all_filter_item').slideDown('fast');
74					parent.find('.search_result_empty').slideUp('fast');
75				} else {
76					parent.find('.all_filter_item').slideUp('fast');
77					parent.find('.search_result_empty').slideDown('fast');
78				}
79			}).promise().done(function () {
80				load_pagination(parent, 0);
81			});
82		} else {
83			parent.find('.all_filter_item').slideDown('fast');
84			parent.find('.all_filter_item .filter_item').each(function () {
85				$(this).removeClass('search_of').removeClass('search_on');
86			}).promise().done(function () {
87				load_pagination(parent, 0);
88			});
89			parent.find('.search_result_empty').slideUp('fast');
90		}
91	}
92	function date_convert_to_str(date) {
93		date = new Date(date).getTime();
94		if (date && date !== 'NaN') {
95			return date;
96		} else {
97			return 0;
98		}
99	}
100	function single_text_check(parent, inputName) {
101		let inputText = parent.find('[name="' + inputName + '"]').val();
102		return (inputText && inputText.length > 0) ? 1 : false;
103	}
104	function single_text_search(parent, item, inputName) {
105		let target = parent.find('[name="' + inputName + '"]');
106		let inputText = target.val();
107		let currentValue = item.attr(filter_input_list[inputName]);
108		return (currentValue && currentValue.match(new RegExp(inputText, "i"))) ? 2 : 0;
109	}
110	function date_filter_check(parent) {
111		let start_date = date_convert_to_str(parent.find('.search_with_start_date').val());
112		let end_date = date_convert_to_str(parent.find('.search_with_end_date').val());
113		return (start_date > 0 && end_date > 0) ? 1 : false;
114	}
115	function date_search(parent, target) {
116		let start_date = date_convert_to_str(parent.find('.search_with_start_date').val());
117		let end_date = date_convert_to_str(parent.find('.search_with_end_date').val());
118		let date = date_convert_to_str(target.attr('data-date'));
119		return (date >= start_date && end_date >= date) ? 2 : 0;
120	}
121	function check_search_value_exit(parent) {
122		let date_result = date_filter_check(parent);
123		let active = 0;
124		for (let name in filter_input_list) {
125			if (single_text_check(parent, name)) {
126				active = 1;
127			}
128		}
129		return (date_result || active > 0) ? 1 : false;
130	}
131	function load_bg_img() {
132		$('.filter_item:visible').each(function () {
133			let target = $(this);
134			if (target.find('[data-bg-image]').css('background-image') === 'none') {
135				target.find('[data-bg-image]').css('background-image', 'url("' + target.find('[data-bg-image]').data('bg-image') + '")').promise().done(function () {
136					mpwem_remove_loader(target);
137				});
138			}
139		});
140		return true;
141	}
142	//************Pagination*************//
143	$(document).on('click', '.pagination_area [data-pagination]', function (e) {
144		e.preventDefault();
145		let pagination_page = $(this).data('pagination');
146		let parent = $(this).closest('.list_with_filter_section');
147		parent.find('[data-pagination]').removeClass('active_pagination');
148		$(this).addClass('active_pagination').promise().done(function () {
149			load_pagination(parent, pagination_page);
150		}).promise().done(function () {
151			mpwem_page_scroll_to(parent);
152			load_bg_img();
153		});
154	});
155	$(document).on('click', '.pagination_area .page_prev', function (e) {
156		e.preventDefault();
157		let parent = $(this).closest('.pagination_area');
158		let page_no = parseInt(parent.find('.active_pagination').data('pagination')) - 1;
159		parent.find('[data-pagination="' + page_no + '"]').trigger('click');
160	});
161	$(document).on('click', '.pagination_area .page_next', function (e) {
162		e.preventDefault();
163		let parent = $(this).closest('.pagination_area');
164		let page_no = parseInt(parent.find('.active_pagination').data('pagination')) + 1;
165		parent.find('[data-pagination="' + page_no + '"]').trigger('click');
166	});
167	$(document).on('click', '.pagination_area .pagination_load_more', function () {
168		let pagination_page = parseInt($(this).attr('data-load-more'));
169		let parent = $(this).closest('.list_with_filter_section');
170		let item_class = get_item_class(parent);
171		if (parent.find(item_class + ':hidden').length > 0) {
172			pagination_page = pagination_page + 1;
173		} else {
174			pagination_page = 0;
175		}
176		$(this).attr('data-load-more', pagination_page).promise().done(function () {
177			load_pagination(parent, pagination_page);
178		}).promise().done(function () {
179			if (parent.find(item_class + ':hidden').length === 0) {
180				$(this).attr('disabled', 'disabled');
181			}
182		}).promise().done(function () {
183			load_bg_img();
184		});
185	});
186	function load_more_scroll(parent, pagination_page) {
187		let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
188		let start_item = pagination_page > 0 ? pagination_page * per_page_item : 0;
189		let item_class = get_item_class(parent);
190		let target = parent.find(item_class + ':nth-child(' + (start_item + 1) + ')');
191		mpwem_page_scroll_to(target);
192	}
193	function load_pagination_initial_item() {
194		$('.list_with_filter_section').each(function () {
195			mpwem_add_loader($(this));
196			$(this).find('[data-bg-image]').each(function () {
197				mpwem_add_loader($(this));
198			});
199			load_pagination($(this), 0);
200		}).promise().done(function () {
201			$('.list_with_filter_section').each(function () {
202				mpwem_remove_loader($(this));
203				$(this).find('.all_filter_item').css({'height': 'auto', 'overflow': 'inherit'}).slideDown('slow');
204			});
205		});
206	}
207	function load_pagination(parent, pagination_page) {
208		let all_item = parent.find('.all_filter_item');
209		let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
210		let pagination_type = parent.find('input[name="pagination_style"]').val();
211		let start_item = pagination_page > 0 ? pagination_page * per_page_item : 0;
212		let end_item = pagination_page > 0 ? start_item + per_page_item : per_page_item;
213		let item = 0;
214		let items_class = get_item_class(parent);
215		if (pagination_type === 'load_more') {
216			start_item = 0;
217		} else {
218			let all_item_height = all_item.outerHeight();
219			//all_item.css({"height": all_item_height, "overflow": "hidden"});
220			mpwem_add_loader(all_item);
221		}
222		parent.find(items_class).each(function () {
223			if (item >= start_item && item < end_item) {
224				if ($(this).is(':hidden')) {
225					$(this).slideDown(200);
226				}
227			} else {
228				$(this).slideUp('fast');
229			}
230			item++;
231		}).promise().done(function () {
232			all_item.css({'height': 'auto', 'overflow': 'inherit'}).promise().done(function () {
233				filter_qty_palace(parent, items_class);
234				pagination_management(parent, pagination_page);
235				mpwem_remove_loader(all_item);
236			});
237		});
238	}
239	function pagination_management(parent, pagination_page) {
240		let pagination_type = parent.find('input[name="pagination_style"]').val();
241		let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
242		let total_item = parent.find(get_item_class(parent)).length;
243		if (total_item <= per_page_item) {
244			parent.find('.pagination_area').slideUp(200);
245		} else {
246			parent.find('.pagination_area').slideDown(200);
247			if (pagination_type === 'load_more') {
248				parent.find('[data-load-more]').attr('data-load-more', pagination_page)
249			} else {
250				pagination_page_management(parent, pagination_page);
251			}
252		}
253	}
254	function pagination_page_management(parent, pagination_page) {
255		let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
256		let total_item = parent.find(get_item_class(parent)).length;
257		let total_active_page = (total_item / per_page_item) + ((total_item % per_page_item) > 0 ? 1 : 0);
258		let page_limit_start = (pagination_page > 2) ? (pagination_page - 2) : 0;
259		let page_limit_end = (pagination_page > 2) ? (pagination_page + 2) : 4;
260		let limit_dif = total_active_page - pagination_page;
261		if (total_active_page > 5 && limit_dif < 3) {
262			page_limit_start = page_limit_start - ((limit_dif > 1) ? 1 : 2);
263		}
264		let total_page = parent.find('[data-pagination]').length;
265		for (let i = 0; i < total_page; i++) {
266			if (i < total_active_page && i >= page_limit_start && i <= page_limit_end) {
267				parent.find('[data-pagination="' + i + '"]').slideDown(200);
268			} else {
269				parent.find('[data-pagination="' + i + '"]').slideUp(200);
270			}
271		}
272		if (pagination_page > 0) {
273			parent.find('.page_prev').removeAttr('disabled');
274		} else {
275			parent.find('.page_prev').prop('disabled', true);
276		}
277		if (pagination_page > 2 && total_active_page > 5) {
278			parent.find('.ellipse_left').slideDown(200);
279		} else {
280			parent.find('.ellipse_left').slideUp(200);
281		}
282		if (pagination_page < total_active_page - 3 && total_active_page > 5) {
283			parent.find('.ellipse_right').slideDown(200);
284		} else {
285			parent.find('.ellipse_right').slideUp(200);
286		}
287		if (pagination_page < total_active_page - 1) {
288			parent.find('.page_next').removeAttr('disabled');
289		} else {
290			parent.find('.page_next').prop('disabled', true);
291		}
292	}
293	function get_item_class(parent, items = '.filter_item') {
294		if (parent.find('.filter_item.search_on').length > 0 || parent.find('.filter_item.search_of').length > 0) {
295			items = '.filter_item.search_on';
296			parent.find('.filter_item.search_of').slideUp('fast');
297		}
298		return items;
299	}
300	function filter_qty_palace(parent, item_class) {
301		parent.find('.qty_count').html($(parent).find(item_class + ':visible').length);
302		parent.find('.total_filter_qty').html($(parent).find(item_class).length);
303	}
304}(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.