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.