1var riaSearch = { 2 searchquery: null, 3 modal: $(".modal-list"), 4 wrapper: $(".search-container"), 5 calendar: { 6 minDate: "2000-09-01", 7 selector: ".date-range-calendar", 8 lastSel: false 9 }, 10 url: { 11 articles: "/services/search/getmore/", 12 suggest: "/services/tags/gettotal/" 13 }, 14 request: { 15 tags_limit: 20, 16 date_from: null, 17 date_to: null, 18 list_sids: [], 19 sort: null, 20 query: $(".search-query__input").val(), 21 }, 22 init: function () { 23 var inputText = riaSearch.wrapper.find(".search-query__input"); 24 25 // СоздаÑÑ ÐºÐ°Ð»ÐµÐ½Ð´Ð°ÑÑ 26 riaSearch.datepicker(); 27 28 // Теги 29 riaSearch.suggest(); 30 31 // СбÑоÑиÑÑ Ð²Ñе ÑилÑÑÑÑ 32 riaSearch.wrapper.on("click", ".search-filters__reset", function () { 33 if (!$(this).hasClass('m-active')) { 34 return 35 } 36 37 riaSearch.request.list_sids = []; 38 riaSearch.request.date_from = null; 39 riaSearch.request.date_to = null; 40 riaSearch.request.sort = null; 41 42 riaSearch.datePickerClear(); 43 riaSearch.renderFilters(); 44 riaSearch.getArticles(); 45 }); 46 47 // СбÑÐ¾Ñ Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° 48 riaSearch.wrapper.on('click', '.search-query__reset', function(e) { 49 e.preventDefault(); 50 riaSearch.wrapper.find('.search-query__input').val('').focus(); 51 }) 52 53 // ÐоиÑк по ÑекÑÑÑ 54 riaSearch.wrapper.on("submit", ".search-query", function (e) { 55 e.preventDefault(); 56 57 riaSearch.request.query = inputText.val(); 58 riaSearch.getArticles(); 59 }); 60 61 // УдалиÑÑ ÑилÑÑÑ 62 riaSearch.wrapper.on("click", ".search-filters__list-item-remove", function () { 63 var filter = $(this).data("filter"), 64 sid = $(this).data("sid"); 65 66 if (filter === "period") { 67 riaSearch.request.date_from = null; 68 riaSearch.request.date_to = null; 69 riaSearch.datePickerClear(); 70 } 71 72 if (filter === "list_sids") { 73 riaSearch.request.list_sids = 74 riaSearch.request.list_sids.filter((i) => i.sid != sid); 75 } 76 77 riaSearch.renderFilters(); 78 riaSearch.getArticles(); 79 }); 80 81 // СоÑÑиÑовка 82 riaSearch.wrapper.on("click", ".search-info__btn", function () { 83 var btn = $(this); 84 85 btn.addClass("m-active") 86 .siblings(".search-info__btn") 87 .removeClass("m-active"); 88 89 riaSearch.request.sort = btn.data("sort"); 90 riaSearch.getArticles(); 91 }); 92 }, 93 suggest: function () { 94 $("#tagBtn").on("click", function (e) { 95 e.stopPropagation(); 96 $(document).trigger("click.hidedaterange"); 97 98 var btn = $(this); 99 100 btn.toggleClass('m-active'); 101 102 if (document.documentElement.clientWidth > 925) { 103 btn.toggleClass("active"); 104 } else { 105 $("html").toggleClass("modal-tags"); 106 ria.disablePageScroll(true); 107 108 riaSearch.modal 109 .html( btn.find(".search-filters__suggest") ) 110 .toggleClass("active"); 111 } 112 113 $(document).on("click.hidesearchdropdown", function () { 114 $("html").removeClass("modal-tags"); 115 ria.disablePageScroll(false); 116 117 riaSearch.modal.removeClass("active"); 118 119 if (btn) { 120 btn.removeClass("active m-active"); 121 btn.append( riaSearch.modal.find(".search-filters__suggest") ); 122 } 123 124 $(document).off("click.hidesearchdropdown"); 125 }); 126 127 $(".search-filters__suggest-input").focus(); 128 }); 129 130 $(".search-filters__suggest").ajaxSuggest({ 131 url: riaSearch.url.suggest, 132 data: { 133 offset: 0, 134 page: 0, 135 xmlview: "tags", 136 limit: 50, 137 type: "tag", 138 }, 139 input: ".search-filters__suggest-input", 140 container: ".search-filters__add-suggest ul",
141 stringLength: 3, 142 delay: 200, 143 requestQueryName: "query", 144 messageMoreLetters: true, 145 clearCallback: function () {}, 146 beforeCallback: function () { 147 $(".search-filters__add-suggest").addClass("m-loading"); 148 }, 149 successCallback: function (data, container) { 150 $(".search-filters__add-suggest").removeClass("m-loading"); 151 }, 152 }); 153 154 // ÐÑиÑÑиÑÑ Ð¿Ð¾Ð»Ðµ поиÑка Ñега 155 $('.search-filters__suggest-input-reset').on('click', function(e) { 156 e.stopPropagation(); 157 e.preventDefault(); 158 159 $('.search-filters__suggest-input').val(''); 160 }); 161 162 $(".search-filters__add-suggest").on("click", "li:not(.m-disabled)", function () { 163 var item = $(this), 164 tag = { 165 name: this.outerText, 166 sid: item.data("value"), 167 }; 168 169 if (riaSearch.request.list_sids.filter((i) => i.sid === tag.sid).length) { 170 return; 171 } 172 173 riaSearch.request.list_sids.push(tag); 174 175 riaSearch.renderFilters(); 176 riaSearch.getArticles(); 177 } 178 ); 179 }, 180 datepicker: function () { 181 var monthsCount = 13, 182 monthHeight = 192, 183 monthsMax = Math.ceil( moment().diff(moment(riaSearch.calendar.minDate), "months", true) ); 184 185 var periodBtn = $("#periodBtn"); 186 var scrollWrapper = $(".date-range-scroll"); 187 188 scrollWrapper.theinScroll(); 189 190 riaSearch.datepickerInit( 191 riaSearch.calendar.selector, 192 [moment().toDate(), moment().toDate()], 193 monthsCount 194 ); 195 monthHeight = $(".pmu-instance").height() || monthHeight; 196 197 periodBtn.on("click", function (e) { 198 e.stopPropagation(); 199 $(document).trigger("click.hidesearchdropdown"); 200 201 periodBtn.toggleClass('m-active'); 202 203 if (document.documentElement.clientWidth < 925) { 204 $("html").toggleClass("modal-tags"); 205 ria.disablePageScroll(true); 206 } else { 207 $(".date-range").css({ 208 top: periodBtn.offset().top + 20, 209 left: periodBtn.offset().left, 210 }); 211 } 212 $(".date-range").toggleClass("active"); 213 214 $(document).on("click.hidedaterange", function () { 215 $("html").removeClass("modal-tags"); 216 ria.disablePageScroll(false); 217 $(".date-range").removeClass("active"); 218 periodBtn.removeClass('m-active'); 219 $(document).off("click.hidedaterange"); 220 }); 221 }); 222 223 $(riaSearch.calendar.selector).on("pickmeup-change", function (e) { 224 riaSearch.calendar.lastSel = $(riaSearch.calendar.selector)[0].__pickmeup.options.lastSel; 225 226 if (!riaSearch.calendar.lastSel) { 227 var start = moment(e.detail.date[0]), 228 end = moment(e.detail.date[1]); 229 230 $(document).trigger("click.hidedaterange"); 231 232 riaSearch.request.date_from = start; 233 riaSearch.request.date_to = end; 234 235 riaSearch.renderFilters(); 236 riaSearch.getArticles(); 237 } 238 }); 239 240 scrollWrapper.trigger("add-scrolling-trigger.the-in-scroll", [{ 241 name: "calendar_prev", 242 position: monthHeight * 2, 243 sign: "<" 244 }]); 245 246 scrollWrapper.on("calendar_prev.the-in-scroll", function (e, data) { 247 if (monthsCount <= monthsMax) { 248 riaSearch.datepickerInit( 249 riaSearch.calendar.selector, 250 pickmeup(riaSearch.calendar.selector).get_date(), 251 monthsCount 252 ); 253 254 scrollWrapper.data("theinScroll").$box.css({ "-webkit-overflow-scrolling": "auto" }); 255 scrollWrapper.data("theinScroll").$box.scrollTop(monthHeight * 14); 256 scrollWrapper.data("theinScroll").$box.css({ "-webkit-overflow-scrolling": "touch" }); 257 258 if (monthsCount == monthsMax) { 259 ++monthsCount; 260 } else { 261 monthsCount = monthsCount + 12 < monthsMax ? monthsCount + 12 : monthsMax; 262 } 263 } else { 264 scrollWrapper.off("calendar_prev.the-in-scroll"); 265 } 266 }); 267 268 $(".date-range__ranges li").on("click", function () { 269 var th = $(this); 270 var range = th.data("range-days"); 271 th.addClass("active").siblings().removeClass("active"); 272 273 if (range === 'all') { 274 pickmeup(riaSearch.calendar.selector).set_date([moment().toDate(), moment().toDate()]); 275 riaSearch.request.date_from = null; 276 riaSearch.request.date_to = null; 277 } else { 278 var start = moment().subtract(1, range), 279 end = moment(); 280 pickmeup(riaSearch.calendar.selector).set_date([start.toDate(), end.toDate()]); 281 riaSearch.request.date_from = start; 282 riaSearch.request.date_to = end; 283 } 284 285 $("html").removeClass("modal-tags"); 286 ria.disablePageScroll(false); 287 $(".date-range").removeClass("active"); 288 289 riaSearch.renderFilters({ 290 period: range != "all" ? th.text(): null 291 }); 292 riaSearch.getArticles(); 293 }); 294 }, 295 datepickerInit: function (selector, dates, monthsCount) { 296 pickmeup(selector).destroy(); 297 pickmeup(selector, { 298 flat: true, 299 date: dates, 300 mode: "range", 301 calendars: monthsCount, 302 min: moment(riaSearch.calendar.minDate).toDate(), 303 max: new Date(), 304 }); 305 $(riaSearch.calendar.selector)[0].__pickmeup.options.lastSel = riaSearch.calendar.lastSel; 306 }, 307 datePickerClear: function () { 308 pickmeup(".date-range-calendar").set_date([ 309 moment().toDate(), 310 moment().toDate(), 311 ]); 312 }, 313 renderFilters: function (options) { 314 var filtersWrapper = $(".search-filters__list"); 315 var filtersTemplate = _.template($("#filtersTemplate").html()); 316 var df = riaSearch.request.date_from; 317 var dt = riaSearch.request.date_to; 318 319 var data = { 320 period: df && dt ? df.format("DD.MM.YYYY") + " - " + dt.format("DD.MM.YYYY") : null, 321 list_sids: riaSearch.request.list_sids, 322 }; 323 324 if (options && options.period) { 325 data.period = options.period 326 } 327 328 filtersWrapper.html(filtersTemplate({ data }).trim()); 329 330 // РаÑкÑаÑиÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ð¡Ð±ÑоÑиÑÑ Ð²Ñе 331 $(".search-filters__reset").toggleClass("m-active", !!(data.period || data.list_sids.length)); // not just truthy/falsy 332 }, 333 getRequestData: function () { 334 // УбÑаÑÑ Ð¿ÑÑÑÑе знаÑÐµÐ½Ð¸Ñ 335 var data = Object.keys(riaSearch.request) 336 .filter((k) =>
336 riaSearch.request[k]) 337 .reduce((a, k) => ({ ...a, [k]: riaSearch.request[k] }), {}); 338 339 if (data.list_sids) { 340 data.list_sids = riaSearch.request.list_sids.map((i) => i.sid); 341 } 342 343 if (data.date_from) { 344 data.date_from = data.date_from.format("YYYY-MM-DD"); 345 } 346 347 if (data.date_to) { 348 data.date_to = data.date_to.format("YYYY-MM-DD"); 349 } 350 351 return data; 352 }, 353 getArticles: function () { 354 if (riaSearch.searchquery && typeof riaSearch.searchquery.abort == "function") { 355 riaSearch.searchquery.abort(); 356 } 357 358 riaSearch.searchquery = $.ajax({ 359 url: riaSearch.url.articles, 360 dataType: "html", 361 beforeSend: function () { 362 $(".list").addClass("loading"); 363 $(".list-more").addClass("loading"); 364 }, 365 data: riaSearch.getRequestData(), 366 }).done(function (response) { 367 var next_url = $(response).attr("data-next-url"), 368 items_count = parseInt($(response).attr("data-count")), 369 new_items = $(response).html(); 370 371 if ($(response).hasClass("list-items-loaded")) { 372 if (!isNaN(items_count)) { 373 $(riaList.options.articlesCountEl) 374 .addClass("m-active") 375 .html(`<span>${items_count}</span>${ria.declension(items_count, [" маÑеÑиал", " маÑеÑиалов", " маÑеÑиала"])}`); 376 } else { 377 $(riaList.options.articlesCountEl).removeClass("m-active"); 378 } 379 380 $(".list").empty(); 381 382 var els = $(new_items).appendTo(".list"); 383 384 riaShare.initItems(els); 385 386 if (next_url != "") { 387 $(".list-more") 388 .removeClass("hidden") 389 .attr("data-url", next_url); 390 } else { 391 $(".list-more").addClass("hidden"); 392 } 393 } 394 }) 395 .always(function () { 396 $(".list").removeClass("loading"); 397 $(".list-more").removeClass("loading"); 398 }); 399 }, 400}; 401 402$(function () { 403 riaList.init(); 404 riaSearch.init(); 405});
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.