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