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.