1// Load more items on click event 2 3jQuery(function ($) { 4 if (document.querySelector("#unboxnow-filter-products") !== null) { 5 function initLoadMore() { 6 filtersForm = document.querySelector(".filter-by"); 7 const wrapper = document.querySelector("#collection-header"); 8 if(!wrapper) return; 9 10 const eventType = document 11 .querySelector("#unboxnow-filter-products") 12 .getAttribute("data-more"); 13 // console.log(eventType); 14 wrapper.setAttribute("data-end", "0"); 15 wrapper.setAttribute("data-current-page", 1); 16 17 if (eventType === "click") { 18 $(".collection-cards__view-more") 19 .add(".boardgame-cards__view-more") 20 .click(function (e) { 21 e.preventDefault(); 22 var button = $(this); 23 // console.log(unboxnow_load_more_options); 24 // console.log(Math.ceil(unboxnow_load_more_options.found_posts / 12),unboxnow_load_more_options.current_page); 25 let filters = []; 26 $('#collection-header input[type="checkbox"]:checked').each( 27 function () { 28 const taxonomy = $(this) 29 .closest(".accordion__content-item") 30 .data("taxonomy"); 31 const term = $(this) 32 .closest(".accordion__content-item") 33 .data("term"); 34 const search = term + "#" + taxonomy; 35 36 if (filters.indexOf(search) === -1) { 37 filters.push(search); 38 } 39 // console.log('plop'); 40 } 41 ); 42 // console.log("Filters:", filters); 43 44 const ppp = wrapper.getAttribute("data-ppp") || 12; 45 const currentSort = document.querySelector('#order-products').getAttribute('data-sort'); 46 const searchInputEl = document.querySelector(".filter-by__search-input"); 47 const searchVal = searchInputEl ? searchInputEl.value.trim() : ""; 48 49 var data = { 50 action: "load_more", 51 query: unboxnow_load_more_options.posts, 52 lang: unboxnow_load_more_options.lang, 53 page: unboxnow_load_more_options.current_page, 54 nbposts: unboxnow_load_more_options.found_posts, 55 posts_per_page: ppp, 56 filters: filters, 57 orderby: currentSort, 58 search: searchVal, 59 }; 60 61 const paged = wrapper.getAttribute("data-current-page"); 62 data.paged = paged; 63 $.ajax({ 64 url: unboxnow_load_more_options.ajaxurl, 65 data: data, 66 posts_per_page: ppp, 67 type: "POST", 68 beforeSend: function (xhr) { 69 button.text(unboxnow_load_more_options.txt_loading); 70 }, 71 success: function (data) { 72 if (data) { 73 // unboxnow_load_more_options.current_page++; 74 // update data attribute from $('#collection-header').data('current-page') 75 76 // increment wrapper page attribute 77 let paged = wrapper.getAttribute("data-current-page"); 78 paged++; 79 wrapper.setAttribute("data-current-page", paged); 80 unboxnow_load_more_options.current_page = paged; 81 82 button.text(unboxnow_load_more_options.txt_more); 83 if (data.indexOf("no-results") !== -1) { 84 $("#unboxnow-filter-products").parent().append(data); 85 } else { 86 $("#unboxnow-load-more").prev().append(data); 87 } 88 if ( 89 unboxnow_load_more_options.current_page == 90 unboxnow_load_more_options.max_page || 91 Math.ceil(unboxnow_load_more_options.found_posts / 12) == 92 unboxnow_load_more_options.current_page 93 ) 94 button.hide(); 95 } else { 96 button.hide(); 97 } 98 99 if (data.indexOf('no-results') !== -1) { 100 button.hide(); 101 } else { 102 const returnedCount = $(data).filter('.collection-cards__card-primary').length; 103 if (returnedCount < ppp) { 104 button.hide(); 105 } else { 106 button.show(); 107 } 108 } 109 }, 110 }); 111 }); 112 } else { 113 // jquery scroll event to load more items 114 var recentScroll = false;
115 var button = $("a.boardgame-cards__view-more"); 116 // if button not exist get collection-cards__view-more-wrapper item 117 if (!button.length) { 118 button = $(".collection-cards__view-more-wrapper"); 119 } 120 121 // remove button border jquery 122 button.css("border", "0px"); 123 button.hide(); 124 125 $(window).on("scroll", function () { 126 if ( 127 !recentScroll && 128 $(window).scrollTop() + $(window).height() >= $(document).height() - 600 129 ) { 130 if(wrapper.getAttribute('data-end') === '0') { 131 button.show(); 132 } 133 // console.log( 134 // "scrolling " + unboxnow_load_more_options.current_page 135 // ); 136 // parse each checkbox checked in id="unboxnow-filter-products" div 137 let filters = []; 138 $('#collection-header input[type="checkbox"]:checked').each( 139 function () { 140 const taxonomy = $(this) 141 .closest(".accordion__content-item") 142 .data("taxonomy"); 143 const term = $(this) 144 .closest(".accordion__content-item") 145 .data("term"); 146 const search = term + "#" + taxonomy; 147 // console.log(search); 148 // console.log(unboxnow_load_more_options.posts); 149 // console.log(unboxnow_load_more_options.posts.indexOf(search)); 150 if (filters.indexOf(search) === -1) { 151 filters.push(search); 152 } 153 // console.log('plop'); 154 } 155 ); 156 // console.log("Filters:", filters); 157 158 const currentSort = document.querySelector('#order-products').getAttribute('data-sort'); 159 const ppp = wrapper.getAttribute("data-ppp") || 12; 160 const searchInputEl = document.querySelector(".filter-by__search-input"); 161 const searchVal = searchInputEl ? searchInputEl.value.trim() : ""; 162 163 var data = { 164 paged: "", 165 action: "load_more", 166 query: unboxnow_load_more_options.posts, 167 lang: unboxnow_load_more_options.lang, 168 page: unboxnow_load_more_options.current_page, 169 nbposts: unboxnow_load_more_options.found_posts, 170 posts_per_page: ppp, 171 filters: filters, 172 orderby: currentSort, 173 search: searchVal, 174 }; 175 176 177 let paged = wrapper.getAttribute("data-current-page"); 178 data.paged = paged; 179 180 const loading = '<svg width="24" height="24" stroke="#000" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_V8m1{transform-origin:center;animation:spinner_zKoa 2s linear infinite}.spinner_V8m1 circle{stroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite}@keyframes spinner_zKoa{100%{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%{stroke-dasharray:42 150;stroke-dashoffset:-16}
18095%,100%{stroke-dasharray:42 150;stroke-dashoffset:-59}}</style><g class="spinner_V8m1"><circle cx="12" cy="12" r="9.5" fill="none" stroke-width="3"></circle></g></svg>'; 181 $.ajax({ 182 url: unboxnow_load_more_options.ajaxurl, 183 data: data, 184 posts_per_page: ppp, 185 type: "POST", 186 beforeSend: function (xhr) { 187 button.html(loading); 188 }, 189 _success: function (data) { 190 button.hide(); 191 if (data && data.indexOf("no-results") === -1) { 192 // update data attribute from $('#collection-header').data('current-page') 193 // let paged = wrapper.getAttribute("data-current-page"); 194 paged++; 195 wrapper.setAttribute("data-current-page", paged); 196 unboxnow_load_more_options.current_page = paged; 197 198 button.text(unboxnow_load_more_options.txt_more); 199 $("#unboxnow-load-more").prev().append(data); 200 if ( 201 unboxnow_load_more_options.current_page == 202 unboxnow_load_more_options.max_page || 203 Math.ceil( 204 unboxnow_load_more_options.found_posts / 205 data.posts_per_page 206 ) == unboxnow_load_more_options.current_page 207 ) 208 // increment paged data attribute 209 button.hide(); 210 // end = true; 211 } else { 212 // append message "No results only once" 213 if (!$(".no-results-grid").length) { 214 // before $("#unboxnow-load-more") 215 $("#unboxnow-filter-products").parent().append(data); 216 } 217 button.hide(); 218 wrapper.setAttribute("data-end", "1"); 219 } 220 }, 221 get success() { 222 return this._success; 223 }, 224 set success(value) { 225 this._success = value; 226 }, 227 }); 228 229 recentScroll = true; 230 window.setTimeout(() => { 231 recentScroll = false; 232 }, 1000); 233 } 234 // else { 235 // console.log("nope"); 236 // } 237 }); 238 } 239 } 240 initLoadMore(); 241 } 242});
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.