1// Compare 2 arrays. 2jQuery.fn.compare = function (t) { 3 if (this.length !== t.length) { 4 return false; 5 } 6 7 let a = this.sort(), 8 b = t.sort(); 9 10 for (let i = 0; t[i]; i++) { 11 if (a[i] !== b[i]) { 12 return false; 13 } 14 } 15 16 return true; 17}; 18 19function selectFilterCategory(obj, catId) { 20 if (jQuery(obj).hasClass('calendar_filter_item_selected')) { 21 jQuery(obj).removeClass('calendar_filter_item_selected'); 22 23 let index; 24 let i; 25 26 for (i = 0; i < selectedCategories.length; i++) { 27 if (catId === selectedCategories[i]) { 28 index = i; 29 break; 30 } 31 } 32 33 selectedCategories.splice(index, 1); 34 35 if (selectedCategories.length === 0) { 36 // Choose "all" option. 37 jQuery('#select-cat').removeClass('calendar_filter_item_selected'); 38 } 39 } else { 40 jQuery('#select-cat').removeClass('calendar_filter_item_selected'); 41 jQuery(obj).addClass('calendar_filter_item_selected'); 42 43 let index = selectedCategories.length; 44 selectedCategories[index] = catId; 45 } 46 47 updateCalendar(); 48} 49 50function selectFilterCategoryAll(obj) { 51 // Nothing selected. 52 if (!jQuery(obj).hasClass('calendar_filter_item_selected')) { 53 // Empty the list. 54 let selectedCategories = []; 55 jQuery('.calendar_filter_item_selected').removeClass('calendar_filter_item_selected'); 56 jQuery(obj).addClass('calendar_filter_item_selected'); 57 } 58 59 updateCalendar(); 60} 61 62// Select cities from region 63/*function selectFilterCitiesFromRegion(region_id, region_class, b_update_event) { 64 jQuery("." + region_class).each(function () { 65 let obj = this; 66 let city_code = jQuery(this).attr("code"); 67 68 selectFilterCity(obj, city_code, region_id, false); 69 }) 70 71 updateFilterVenues(b_update_event); 72}*/ 73 74function updateCalendar() { 75 let siteUrl = document.location.host; 76 let category = jQuery('#select-cat').val(); 77 let subCategory = jQuery('#select-sub-category').val(); 78 79 if (0 < subCategory) { 80 category = subCategory; 81 } 82 83 let city = jQuery('#select-city').val(); 84 let venue = jQuery('#select-venue').val(); 85 let year_month = jQuery('#select-monthyear').val(); 86 let free_only = calendarFreeOnly; 87 let language = calendarLanguage; 88 let arrDate = []; 89 let dates = ''; 90 91 jQuery('.date-selected', '.calendar').each(function () { 92 arrDate.push(jQuery(this).attr('date')); 93 }); 94 95 if (arrDate.length) dates = arrDate.join(','); 96 97 jQuery('#calendar_events').html('<p><img src="' + templateDirectory + '/images/ajax-loader.gif" alt=""></p>'); 98 99 jQuery.post(document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php', { 100 action: 'update-calendar', 101 year_month: year_month, 102 category: category, 103 city: city, 104 venue: venue, 105 dates: dates, 106 free_only: free_only, 107 language: language 108 }, function (data) { 109 jQuery('#calendar_events').html(data); 110 }, 'text'); 111} 112 113/** 114 * Update venues list when a city is selected or deselected. 115 * 116 * @param b_update_event 117 */ 118function updateFilterVenues(b_update_event) { 119 let siteUrl = document.location.host; 120 let city = jQuery('#select-city').val(); 121 122 jQuery.post(document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php', { 123 action: 'calendar-filter-update-venue', 124 cities_code: city, 125 }, 126 127 function (data) { 128 let select = jQuery('#select-venue'); 129 select.html(''); 130 select.append(jQuery('<option></option>').val('0').html('Toutes')); 131 132 jQuery.each(data, function (key, item) { 133 select.append(jQuery('<option></option>').val(item.id).html(item.name)); 134 }); 135 136 if (b_update_event) { 137 updateCalendar(); 138 } 139 }, 140 'json' 141 ); 142} 143 144function updateFilterSubCategories(b_update_event, subcat = null) { 145 let siteUrl = document.location.host;
146 let category = jQuery('#select-cat').val(); 147 148 if (window.location.href.indexOf("subcat") > -1) { 149 jQuery('#select-sub-category').val(0); 150 } 151 152 jQuery.ajax({ 153 type: "post", 154 dataType: "json", 155 url: document.location.protocol + '//' + siteUrl + '/wp-admin/admin-ajax.php', 156 data: {action: "calendar-filter-update-sub-categories", category: category}, 157 success: function (response) { 158 let select = jQuery('#select-sub-category'); 159 let container = jQuery('.filter-sub-categories'); 160 let count = 0; 161 162 if (response) { 163 count = response.length; 164 } 165 166 select.html(''); 167 select.append(jQuery('<option></option>').val(0).html('Toutes')); 168 //select.val(0); 169 170 if (0 < count && '0' !== category) { 171 jQuery.each(response, function (key, item) { 172 select.append(jQuery('<option></option>').val(item.id).html(item.name)); 173 }); 174 175 container.show(); 176 } else { 177 container.hide(); 178 select.val(0); 179 } 180 } 181 }) 182} 183 184/** 185 * Change url to go directly to specific month. 186 * 187 * @param select 188 */ 189function filterChangeMonth(select) { 190 let siteUrl = document.location.host; 191 let url = jQuery(select).val(); 192 let city = jQuery('#select-city').val(); 193 let venue = jQuery('#select-venue').val(); 194 let category = jQuery('#select-cat').val(); 195 let subcategory = jQuery('#select-sub-category').val(); 196 let arrParam = []; 197 let params = ''; 198 let pathName = document.location.pathname.split('/'); 199 let baseUrl = document.location.protocol + '//' + siteUrl + '/' + (pathName[1] != null ? pathName[1] : ''); 200 201 if (url !== '') { 202 if (city !== 0) arrParam.push('ville=' + city); 203 if (venue !== 0) arrParam.push('salle=' + venue); 204 if (category !== 0) arrParam.push('cat=' + category); 205 if (subcategory !== 0) arrParam.push('subcat=' + subcategory); 206 207 if (arrParam.length) { 208 params = '?' + arrParam.join('&'); 209 } 210 211 window.location.href = baseUrl + '/' + url + '/' + params; 212 } else { 213 window.location.href = baseUrl; 214 } 215} 216 217jQuery(document).ready(function () { 218 if (window.location.href.indexOf('ville') || window.location.href.indexOf('salle') || window.location.href.indexOf('cat') || window.location.href.indexOf('subcat')) { 219 const urlParams = new URLSearchParams(window.location.search); 220 221 const subcat = urlParams.get('subcat'); 222 const cat = urlParams.get('cat'); 223 const city = urlParams.get('ville'); 224 const venue = urlParams.get('salle'); 225 226 if (0 < subcat) { 227 //cat = subcat; 228 jQuery('.filter-sub-categories').show(); 229 } 230 231 if (null !== cat) { 232 jQuery('#select-cat').val(cat); 233 } else { 234 jQuery('#select-cat').val(0); 235 } 236 237 if (null !== subcat && 0 < subcat) { 238 jQuery('#select-sub-category').val(subcat); 239 } else { 240 jQuery('#select-sub-category').val(0); 241 } 242 243 if ( null !== city) { 244 jQuery('#select-city').val(city); 245 } else { 246 jQuery('#select-city').val(0); 247 } 248 249 if ( null !== venue) { 250 jQuery('#select-venue').val(venue); 251 } else { 252 jQuery('#select-venue').val(0); 253 } 254 } 255 256 jQuery('.buy_ticket').on('click', function () { 257 let url = this.href; 258 let eventId = jQuery(this).attr('event'); 259 260 jQuery.ajax({ 261 async: false, 262 type: 'POST', 263 url: baseUrl + '/wp-admin/admin-ajax.php', 264 data: { 265 action: 'log-click', 266 event_id: eventId, 267 url: url 268 }, 269 contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 270 cache: false 271 }); 272 273 return true; 274 }); 275 276 jQuery('.calendar .date').on('click', function () { 277 if (jQuery(this).hasClass('date-selected')) { 278 jQuery(this).removeClass('date-selected'); 279 } else { 280 jQuery(this).addClass('date-selected'); 281 } 282
283 updateCalendar(); 284 }); 285 286 jQuery('#select-venue').on('change', function () { 287 updateCalendar(); 288 }); 289 290 jQuery('#select-city').on('change', function () { 291 updateCalendar(); 292 updateFilterVenues(); 293 }); 294 295 jQuery('#select-monthyear').on('change', function () { 296 filterChangeMonth(this); 297 }); 298 299 jQuery('#select-cat').on('change', function (e) { 300 updateFilterSubCategories(); 301 updateCalendar(); 302 }); 303 304 jQuery('#select-sub-category').on('change', function () { 305 updateCalendar(); 306 }); 307});
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.