PageSourceSearch

https://zamek-veltrusy.cz/cache-buster-1698399558/static/js/filter.js

js zamek-veltrusy.cz collected 2026-10-02 11:14:01 UTC 6,987 bytes, 266 lines download raw bytes

1/***************************************
2FILTER UTILS
3****************************************/
4
5$(function(){
6	//load more items
7	$('a.load-more-items').on('click', function() {
8		var formId = $(this).attr('data-form-id');
9		var form = null;
10		var pageInput = null;
11		var offsetInput = null
12		if (formId && $('form#' + formId).length) {
13			form = $('form#' + formId);
14			pageInput = $('input#page', form);
15			offsetInput = $('input#offset', form);
16		}
17		if (form == null) {
18			pageInput = $('input#page').first();
19			form = pageInput.closest('form');
20			offsetInput = $('input#offset', form);
21		}
22		if (form.length && pageInput.length) {
23			var page = parseInt(pageInput.val());
24			var nextPage = page + 1;
25			pageInput.val(nextPage);
26
27			form.submitForm();
28
29			if (offsetInput.length) {
30				offsetInput.val(nextPage);
31			}
32		}
33	});
34
35  $('body').on('change', '.form-autosubmit', function() {
36		var form = $(this).closest('form');
37		if (!form.length) return;
38
39		form.submitForm();
40	});
41
42	$('#EventsFilterFormType select#region').change(function() {
43		var form = $('form#EventsFilterFormType');
44		if (!form.length) return;
45
46		form.submitForm();
47	});
48	$('#EventsFilterFormType input[type="checkbox"]').change(function(e) {
49		var previousState = $(this).attr('data-previous-state');
50		var currentState = $(this).prop('checked');
51		// cast undefined, "" or "1" to boolean
52		if (!previousState) {
53			previousState = false;
54		} else {
55			previousState = true;
56		}
57
58		var form = $('form#EventsFilterFormType');
59		if (!form.length) return;
60
61		$(this).attr('data-previous-state', currentState ? 1 : '');
62		if (previousState !== currentState) {
63			$('#EventsFilterFormType a#reset-categories').removeClass('checked');
64			form.submitForm();
65		}
66	});
67
68	// month pagination actions
69	$('#events-filter-month-pagination-wrapper').on('click', '.events-filter-month-selector', function() {
70		var form = $('form#EventsFilterFormType');
71		if (!form.length) return;
72
73		var dayInput = $('input#day', form);
74		var monthInput = $('input#month', form);
75		var yearInput = $('input#year', form);
76		var fullMonthInput = $('input#fullMonth', form);
77		if (!dayInput || !monthInput || !yearInput || !fullMonthInput) return;
78
79		var month = parseInt($(this).attr('data-month'));
80		var year = parseInt($(this).attr('data-year'));
81		dayInput.val(''); // hide day pagination
82		fullMonthInput.val(''); // hide previous days in current month
83		monthInput.val(month);
84		yearInput.val(year);
85
86		form.submitForm();
87	});
88
89	// day pagination actions
90	$('#events-filter-day-pagination-wrapper, #event-list-wrapper').on('click', '.events-filter-day-selector', function() {
91		var form = $('form#EventsFilterFormType');
92		if (!form.length) return;
93
94		var dayInput = $('input#day', form);
95		var monthInput = $('input#month', form);
96		if (!dayInput) return;
97
98		var day = parseInt($(this).attr('data-day'));
99		dayInput.val(day);
100		if (monthInput.length > 0 && $(this).attr('data-month')) {
101			monthInput.val(parseInt($(this).attr('data-month')));
102		}
103
104		form.submitForm();
105	});
106
107	// show previous days in current month button
108	$('#event-list-wrapper').on('click', 'a#show-previous-days-in-month', function() {
109		var form = $('form#EventsFilterFormType');
110		if (!form.length) return;
111
112		var fullMonthInput = $('input#fullMonth', form);
113		if (!fullMonthInput) return;
114
115		fullMonthInput.val('1');
116
117		form.submitForm();
118	});
119
120    // reset categories button
121	$('#EventsFilterFormType a#reset-categories').click(function() {
122		var form = $('form#EventsFilterFormType');
123		if (!form.length) return;
124
125		var checkboxes = $('#EventsFilterFormType .filter-topic input[type="checkbox"]');
126		var labels = $('#EventsFilterFormType .filter-topic label');
127        if (!checkboxes.length) return;
128
129        checkboxes.prop('checked', false);
130        checkboxes.attr('data-previous-state', '');
131        labels.removeClass('checked');
132        $(this).addClass('checked')
133
134		form.submitForm();
135	});
136
137	// scroll to top of list on some actions
138	$('#event-list-wrapper').on('click', '.events-filter-scroll', function() {
139		$("html:not(:animated),body:not(:animated)").animate({ scrollTop: $('#events-filter-day-pagination-wrapper').offset().top - $('.headroom').height() }, 500);
140	});
141
142	// fulltext tags
143	$('a.fulltext-tag').on('click', function() {
144		var tag = $(this).attr('data-tag');
145		var form = $('form#searchForm').first();
146		if (tag && form) {
147			form.submitForm({'type':tag});
148		}
149	});
150
151	// publications filter
152	$('#publications-filter-wrapper').on('click', '.filter-label', function() {
153		var form = $('form#PublicationsFilterFormType'),
154			allLabels = form.find('.filter-label'),
155			optionId = $(this).data('id');
156		if (!form.length || !optionId) return;
157
158		var categoriesSelect = $('select#category', form);
159		if (!categoriesSelect) return;
160
161		var selectedOption = categoriesSelect.val();
162		if(selectedOption == optionId) {
163			categoriesSelect.val(null);
164			// allLabels.removeClass('checked');
165		}
166		else {
167			categoriesSelect.val(optionId);
168			// allLabels.removeClass('checked');
169			// $(this).addClass('checked');
170		}
171
172		form.submitForm();
173	});
174	$('#publications-filter-wrapper .filter-label').each(function() {
175		var form = $('form#PublicationsFilterFormType'),
176			optionId = $(this).data('id');
177		if (!form.length || !optionId) return;
178
179		var categoriesSelect = $('select#category', form);
180		if (!categoriesSelect) return;
181
182		var selectedOption = categoriesSelect.val();
183		if(selectedOption == optionId) {
184			$(this).addClass('checked');
185		}
186	});
187});
188
189function normalizeOffset(formId, afterSubmit)
190{
191	var form = $('form#' + formId);
192	if (!form.length) {
193		return;
194	}
195	var pageInput = $('input#page', form);
196	var offsetInput = $('input#offset', form);
197	if (!pageInput.length || !offsetInput.length) {
198		return;
199	}
200
201	var page = parseInt(pageInput.val());
202
203	if (afterSubmit) {
204		offsetInput.val(page);
205	} else {
206		var offset = parseInt(offsetInput.val());
207		if (!offset || page != (offset + 1)) {
208			offsetInput.val(0);
209		}
210	}
211}
212
213function cancelSearch(searchFormId, relatedFilterFormId)
214{
215  const searchForm = $('form#' + searchFormId);
216  const relatedFilterForm = $('form#' + relatedFilterFormId);
217
218	if (searchForm.length) {
219		searchForm[0].reset();
220    resetForm(searchForm[0]);
221    searchForm.submit();
222	}
223  if (relatedFilterForm.length) {
224    relatedFilterForm[0].reset();
225    resetForm(relatedFilterForm[0]);
226    relatedFilterForm.submitForm();
227  }
228}
229
230function resetForm(form) {
231  for(const el of form.elements) {
232    const field_type = el.type.toLowerCase();
233    switch(field_type) {
234      case 'text':
235      case 'search':
236      case 'textarea':
237        el.value = '';
238        break;
239      case 'radio':
240      case 'checkbox':
241        el.checked = false;
242        break;
243      case 'select-one':
244      case 'select-multi':
245          el.selectedIndex = -1;
246        break;
247      default:
248        break;
249    }
250  }
251}
252
253function addParamToFormHash(formId)
254{
255
256}
257
258function removeParamFromFormHash(formId)
259{
260
261}
262
263function cleanFormHash(formId)
264{
265
266}

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.