1$('.smart-search-wrap').show(); 2 3var smartSearchObj = {}, 4 smartSearchProdList = {}, 5 smartSearchObjErr = false, 6 smartSearchTimer, 7 searchWord = ''; 8 9// ÐлобалÑнÑй ÑÑеÑÑик Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Race Condition (ÑоÑÑоÑÐ½Ð¸Ñ Ð³Ð¾Ð½ÐºÐ¸) 10var smartSearchRequestId = 0; 11 12window.addEventListener('load', function() { 13 setTimeout(function() { 14 const xhr = new XMLHttpRequest(); 15 xhr.open('GET', '/smart_search/ajax.php?type=get_list'); 16 xhr.onload = function() { 17 if (xhr.readyState !== 4 || xhr.status !== 200) { 18 console.log(`Smart Search: ÐÑибка: код - ${xhr.readyState}, status - ${xhr.status}`); 19 smartSearchObjErr = true; 20 return; 21 } 22 smartSearchObj = $.parseJSON(xhr.response); 23 console.log(smartSearchObj); 24 for (let key in smartSearchObj) { 25 smartSearchProdList[key] = smartSearchObj[key].name.toLowerCase(); 26 } 27 if($('[data-type="smart-search-input"]').length > 0) { } 28 return; 29 } 30 xhr.onprogress = function(e) { 31 if (e.lengthComputable) { 32 console.log(`Smart Search: ÐолÑÑено ${e.loaded} из ${e.total} байÑ`); 33 } else { 34 console.log(`Smart Search: ÐолÑÑено ${e.loaded} байÑ`); 35 } 36 return; 37 }; 38 xhr.onerror = function() { 39 console.log("Smart Search: ÐÑоизоÑла непÑÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾Ñибка."); 40 return; 41 }; 42 xhr.send(); 43 }, 1000); 44}); 45 46$(document).ready(function() { 47 $(window).bind('resize', function() { 48 if(typeof searchScroll !== 'undefined') { searchScroll.reinitialise(); } 49 if(typeof orderSS !== 'undefined') { orderSS.reinitialise(); } 50 }); 51 52 // ÐбеÑÑки Debounce Ð´Ð»Ñ Ð¿Ð¾Ð»ÐµÐ¹ ввода (задеÑжка 350Ð¼Ñ Ð¿ÐµÑед ÑеалÑнÑм ÑÑаÑÑом поиÑка) 53 var debouncedSmartSearch = debounce(function() { 54 smartSearchResClear(); 55 smartSearchShortRes("smart-search-input"); 56 setStatistics($('[data-type="smart-search-input"]')); 57 }, 350); 58 59 var debouncedHeaderSearch = debounce(function() { 60 $('[data-type="header-ss-icon"]').hide(); 61 $('[data-type="header-ss-wait"]').show(); 62 smartSearchResClear(); 63 smartSearchShortRes("header-ss-input"); 64 setStatistics($('[data-type="header-ss-input"]')); 65 }, 350); 66 67 var debouncedFullSearch = debounce(function() { 68 smartSearchFullResClear(); 69 smartSearchFullRes(); 70 setStatistics($('[data-type="searchSP"]')); 71 }, 350); 72 73 var debouncedOrderSearch = debounce(function() { 74 $('[data-type="order-ss-icon"]').hide(); 75 $('[data-type="order-ss-wait"]').show(); 76 smartSearchShortResOrder("order-ss-input"); 77 }, 350); 78 79 // 1. ÐоиÑк в конÑенÑе (ÐÑплÑваÑÑий) 80 $('[data-type="smart-search-input"]').keydown(function(event) { 81 if(event.keyCode == 13) { 82 event.preventDefault(); 83 smartSearchResClear(); 84 smartSearchShortRes("smart-search-input"); 85 return false; 86 } 87 }); 88 $('[data-type="smart-search-input"]').on('input', function() { 89 debouncedSmartSearch(); 90 }); 91 92 // 2. ÐоиÑк в Ñапке ÑайÑа 93 $('[data-type="header-ss-input"]').keydown(function(event) { 94 if(event.keyCode == 13) { 95 event.preventDefault(); 96 $('[data-type="header-ss-icon"]').hide(); 97 $('[data-type="header-ss-wait"]').show(); 98 smartSearchResClear(); 99 smartSearchShortRes("header-ss-input"); 100 return false; 101 } 102 }); 103 $('[data-type="header-ss-input"]').on('input', function() { 104 debouncedHeaderSearch(); 105 }); 106 107 // 3. ÐоиÑк на оÑделÑной ÑÑÑаниÑе поиÑка (SP) 108 if($('[data-type="searchSP"]').length > 0) { 109 let url = window.location.href; 110 url = url.split('?'); 111 if(url.length > 1) { 112 q = url[1].split('=')[1]; 113 if(q != '') { 114 smartSearchFullResClear(); 115 smartSearchFullRes(); 116 } 117 } 118 } 119 $('[data-type="searchSP"]').keydown(function(event) { 120 if(event.keyCode == 13) { 121 event.preventDefault(); 122 smartSearchFullResClear(); 123 smartSearchFullRes(); 124 return false;
125 } 126 }); 127 $('[data-type="searchSP"]').on('input', function() { 128 debouncedFullSearch(); 129 }); 130 131 // 4. ÐоиÑк в ÑоÑме Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоваÑа к Ð·Ð°ÐºÐ°Ð·Ñ (Order) 132 $('[data-type="order-ss-input"]').keydown(function(event) { 133 if(event.keyCode == 13) { 134 event.preventDefault(); 135 $('[data-type="order-ss-icon"]').hide(); 136 $('[data-type="order-ss-wait"]').show(); 137 smartSearchShortResOrder("order-ss-input"); 138 return false; 139 } 140 }); 141 $('[data-type="order-ss-input"]').on('input', function() { 142 debouncedOrderSearch(); 143 }); 144 145 // ÐÑÑалÑнÑе клики по кнопкам инÑеÑÑейÑа и ÑбÑоÑÑ Ð¾ÐºÐ¾Ð½ 146 $('[data-type="header-ss-clear"]').on('click', function() { closeSSwindow(); }); 147 $('[data-type="search-open"]').on('click',function() { 148 if($(this).hasClass('close')) { 149 closeSSwindow(); 150 smartSearchResClearTotal(); 151 } else { 152 showSSwindow(); 153 } 154 return false; 155 }); 156 $('[data-type="smart-search-close"]').on('click',function() { 157 closeSSwindow(); 158 smartSearchResClearTotal(); 159 }); 160 161 $(document).mouseup(function (e) { 162 if(window.innerWidth > 900) { 163 let container = $('[data-type="smart-search-wrap"]'); 164 let target = e.target; 165 if (container.css('display')!='none' && container.hasClass('active') && container.has(e.target).length === 0 && !$(target).is('[data-type="smart-search-wrap"]') && $('[data-type="header-ss-input"]').has(e.target).length === 0 && !$(target).is('[data-type="header-ss-input"]') && $('[data-type="search-open"]').has(e.target).length === 0 && !$(target).is('[data-type="search-open"]') ) { 166 closeSSwindow(); 167 smartSearchResClearTotal(); 168 } 169 } 170 }); 171 172 /*if($('[data-type="searchSP"]').length > 0) { 173 let url = window.location.href; 174 url = url.split('?'); 175 if(url.length > 1) { 176 let q = url.split('='); 177 if(q.endsWith('/')) q = q.slice(0, -1); 178 console.log(q); 179 if(q != '') { 180 smartSearchFullResClear(); 181 smartSearchFullRes(); 182 } 183 } 184 }*/ 185 186 $('[data-type="search-resetSP"]').on('click', function () { 187 $('[data-type="search-messSP"]').hide(); 188 $('[data-type="search-resSP-qty"]').hide(); 189 $('[data-type="search-resSP"]').hide(); 190 $('[data-type="search-resSP-prod"]').html(''); 191 $('[data-type="search-page"]').find('.icon-search').show(); 192 $('[data-type="search-page"]').find('.search-wait').hide(); 193 194 // 1. СнаÑала ÑбÑаÑÑваем ÑоÑÐ¼Ñ (она веÑÐ½ÐµÑ Ð·Ð½Ð°Ñение из PHP) 195 let $form = $('[data-type="search-formSP"]'); 196 if ($form.length > 0) { 197 $form[0].reset(); 198 } 199 200 // 2. ТепеÑÑ Ð¶ÐµÑÑко ÑÑиÑаем ÑекÑÑее знаÑение РзнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ (defaultValue) 201 let $input = $('[data-type="searchSP"]'); 202 if ($input.length > 0) { 203 $input.val(''); // СÑиÑаем видимое знаÑение 204 $input.attr('value', ''); // ÐÑиÑаем аÑÑибÑÑ Ð² DOM 205 $input[0].defaultValue = ''; // СÑиÑаем памÑÑÑ Ð±ÑаÑзеÑа о PHP-вÑÑавке 206 } 207 208 // 3. ÐÑпÑавлÑем адÑеÑнÑÑ ÑÑÑÐ¾ÐºÑ (без дÑблиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°ÐºÐ¾Ð² '?') 209 let url = window.location.href.split('?')[0]; 210 url = url + '?q='; 211 window.history.replaceState("", "", url); 212 }); 213 214 215 $('[data-type="order-ss-close"]').on('click', function() { 216 $('[data-type="order-ss-icon"]').show(); 217 $('[data-type="order-ss-wait"]').hide(); 218 $(this).hide(); 219 $('[data-type="order-ss-input"]').val(''); 220 $('[data-type="order-ss-list-wrap"]').html(''); 221 orderScroll(); 222 }); 223 224 $(document).mouseup(function (e) { 225 let cont = $('[data-type="order-add-prod-form"]'); 226 if(cont.is(":visible") && cont.has(e.target).length === 0 && !$(e.target).is('[data-type="order-add-prod-form"]')) { 227 hideOrderSearch(); 228 } 229 }); 230}); 231 232function showSSwindow() { 233 $('[data-type="search-open"]').addClass('close'); 234 $('[data-type="header-ss-wait"]').hide(); 235 $('[data-type="header-ss-clear"]').show(); 236 $('[data-type="smart-search-wrap"]').addClass('active'); 237 disableBodyScroll(); 238 $('[data-type="overlay"]').addClass('ss-overlay').show(); 239} 240 241function closeSSwindow() { 242 $('[data-type="search-open"]').removeClass('close'); 243 $('[data-type="header-ss-clear"]').hide(); 244 $('[data-type="header-ss-wait"]').hide(); 245 $('[data-type="header-ss-icon"]').show(); 246 $('[data-type="header-ss-input"]').val(''); 247 $('[data-type="smart-search-wrap"]').removeClass('active'); 248 enableBodyScroll(); 249 $('[data-type="overlay"]').removeClass('ss-overlay').hide(); 250} 251 252$('[data-type="smart-search-btn"]').on('click',function() { 253 smartSearchResClear(); 254 smartSearchShortRes("smart-search-input"); 255}); 256 257$('[data-type="smart-search-clear"]').on('click', function () { 258 $('[data-type="smart-search-input"]').val(''); 259 $('.smart-search-short-res').hide(); 260 $('.smart-search-result-short-link').hide(); 261 $('.smart-search-result-short').hide(); 262 $('.smart-search-no-results').hide(); 263 $('.smart-search-bottom-panel').hide(); 264 $('.smart-search-wait').hide(); 265}); 266 267function debounce(func, ms) { 268 let timer = null; 269 return function(...args) { 270 const onComplete = function() { 271 func.apply(this, args); 272 timer = null; 273 } 274 if (timer) { clearTimeout(timer); } 275 timer = setTimeout(onComplete, ms); 276 }; 277} 278 279function findPartial(a, s) { 280 let res = []; 281 let numRes = []; 282 for (key in a) { 283 if(a[key].indexOf(s) >= 0) { 284 let article = smartSearchObj[key]['article'].trim(); 285 let col = smartSearchObj[key]['col']; 286 if(article == 6 && s != '6.' && s != article && s != a[key].trim() && col != 'na
286d' && col != 'lines') { 287 continue; 288 } 289 if(a[key].trim() == article.trim()) { 290 numRes.push(key); 291 } else { 292 res.push(key); 293 } 294 } 295 } 296 return res.concat(numRes); 297} 298 299function smartSearchProducts(q, input, requestId) { 300 return new Promise(function(resolve) { 301 let smartSearchRes = []; 302 q = q.toLowerCase(); 303 q = q.replace(/,/g, "."); 304 input.attr('data-search', q); 305 smartSearchRes = findPartial(smartSearchProdList, q); 306 307 if (smartSearchRes.length == 0) { 308 let qArr = q.split(' '); 309 let runSpeller = []; 310 for (let i = 0; i < qArr.length; i++) { 311 runSpeller[i] = new Promise(function (resSpeller) { 312 let url = "https://speller.yandex.net/services/spellservice.json/checkText?text=" + encodeURIComponent(qArr[i]); 313 $.ajax(url) 314 .done(function (data) { 315 if (data.length > 0 && data.s && data.s.length > 0) { 316 resSpeller(data.s); 317 } else { 318 resSpeller(qArr[i]); 319 } 320 }) 321 .fail(function () { 322 resSpeller(qArr[i]); 323 }); 324 }); 325 } 326 Promise.all(runSpeller).then(function (values) { 327 // ÐаÑиÑа: ÐÑли пока ждали ЯндекÑ, полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ» ÑÑо-Ñо новое â вÑÑ Ð¾Ð´Ð¸Ð¼ 328 if (requestId !== smartSearchRequestId) return; 329 330 let qStrNew = values.join(' '); 331 if (q != qStrNew) { 332 smartSearchRes = findPartial(smartSearchProdList, qStrNew); 333 if (smartSearchRes.length == 0) { 334 for (var i = 0; i < values.length; ++i) { 335 if(values[i].length < 2) continue; 336 let smartSearchWordRes = findPartial(smartSearchProdList, values[i]); 337 if (smartSearchWordRes.length > 0) { 338 input.attr('data-search', values[i]); 339 smartSearchRes = smartSearchRes.concat(smartSearchWordRes); 340 } 341 } 342 smartSearchRes = [...new Set(smartSearchRes)]; // Удаление дÑблей ID 343 } else { 344 input.attr('data-search', qStrNew); 345 } 346 } 347 resolve(smartSearchRes); 348 }).catch(function(err) { 349 console.log(err); 350 resolve([]); 351 }); 352 } else { 353 resolve(smartSearchRes); 354 } 355 }); 356} 357 358function checkObjLoading() { 359 return new Promise(function(resolve, reject) { 360 const checker = setInterval(function(){ 361 if(Object.keys(smartSearchObj).length > 0 || smartSearchObjErr) { 362 if(smartSearchObjErr) { 363 reject(); 364 } else { 365 resolve(); 366 } 367 clearInterval(checker); 368 } 369 }, 100); 370 }); 371} 372 373function setStatistics(input) { 374 return false; 375} 376 377 378function smartSearchResClear() { 379 $('.smart-search-result-short').hide(); 380 $('.smart-search-short-res').hide(); 381 $('.smart-search-no-results').hide(); 382 $('.smart-search-bottom-panel').show(); 383 $('.smart-search-wait').show(); 384} 385 386function smartSearchResClearTotal() { 387 $('.smart-search-result-short').hide(); 388 $('.smart-search-short-res').hide(); 389 $('.smart-search-no-results').hide(); 390 $('.smart-search-bottom-panel').hide(); 391 $('.smart-search-wait').hide(); 392 $('[data-type="smart-search-input"]').val(''); 393} 394 395function smartSearchShortRes(type = "smart-search-input") { 396 let q = $('[data-type="'+type+'"]').val().trim(); 397 if(q != ''){ 398 smartSearchRequestId++; 399 let currentId = smartSearchRequestId; 400 401 checkObjLoading(q).then(function(){ 402 smartSearchProducts(q, $('[data-type="'+type+'"]'), currentId) 403 .then(function(result){ 404 // ÐÑли пÑилеÑел оÑÐ²ÐµÑ Ð¾Ñ ÑÑаÑого заÑоÑмозивÑего запÑоÑа â блокиÑÑем вÑвод 405 if (currentId !== smartSearchRequestId) return; 406 407 $('.smart-search-wait').hide(); 408 if(window.innerWidth > 900 && type === "header-ss-input") { 409 showSSwindow(); 410 } 411 if(result.length > 0) { 412 let smartSearchHtml = getSmartSearchShortPreview(result); 413 $('[data-type="smart-search-items-wrap"]').html(smartSearchHtml); 414 $('.smart-search-short-res').show(400, function(){ 415 if(typeof searchScroll === 'undefined') { 416 var searchScroll = $('[data-type="search-scroll"]').jScrollPane({ showArrows: fal
416se, maintainPosition: false }).data('jsp'); 417 } else { 418 searchScroll.reinitialise(); 419 } 420 }); 421 $('.smart-search-result-short-link').show(); 422 $('.smart-search-result-qty span').html(result.length); 423 $('.smart-search-result-short').css('display', 'flex'); 424 $('.smart-search-no-results').hide(); 425 $('[data-type="smart-search-show-all"]').each(function() { 426 $(this).attr('href', '/search/?q='+q).show(); 427 }); 428 } else { 429 $('[data-type="smart-search-items-wrap"]').html(''); 430 $('.smart-search-short-res').hide(); 431 $('[data-type="smart-search-show-all"]').hide(); 432 $('.smart-search-result-short-link').hide(); 433 $('.smart-search-result-qty span').html('0'); 434 $('.smart-search-result-short').css('display', 'flex'); 435 $('.smart-search-no-results').html(notFoundLang()).show(); 436 } 437 }) .catch(function(err) { console.log(err) }); 438 }, function() { 439 if (currentId !== smartSearchRequestId) return; 440 $('.smart-search-wait').hide(); 441 $('.smart-search-no-results').html(errorLang()).show(); 442 }).catch(function(err) { console.log(err) }); 443 } else { 444 $('[data-type="'+type+'"]').val(''); 445 $('[data-type="smart-search-items-wrap"]').html(''); 446 $('[data-type="smart-search-show-all"]').hide(); 447 $('.smart-search-short-res').hide(); 448 $('.smart-search-result-short-link').hide(); 449 $('.smart-search-result-short').hide(); 450 $('.smart-search-no-results').hide(); 451 $('.smart-search-bottom-panel').hide(); 452 $('.smart-search-wait').hide(); 453 if(window.innerWidth > 900 && type === "header-ss-input") { 454 closeSSwindow(); 455 } 456 return false; 457 } 458 return false; 459} 460 461function getSmartSearchShortPreview(arr) { 462 let stop = 11; 463 let res = ''; 464 for(let i = 0; i < arr.length && i <= stop; i++) { 465 let item = smartSearchObj[arr[i]]; 466 if(item) res += item.shortPreview; 467 } 468 return res; 469} 470 471function smartSearchFullResClear() { 472 $('[data-type="search-messSP"]').hide(); 473 $('[data-type="search-resSP-qty"]').hide(); 474 $('[data-type="search-resSP"]').hide(); 475 $('[data-type="search-resSP-prod"]').html(''); 476 $('[data-type="search-page"]').find('.icon-search').hide(); 477 $('[data-type="search-page"]').find('.search-wait').show(); 478} 479 480function smartSearchFullRes() { 481 let q = $('[data-type="searchSP"]').val().trim(); 482 let url = window.location.href; 483 url = url.split('?'); 484 url = url[0] + '?q=' + q; 485 window.history.replaceState("", "", url); 486 if(q != ''){ 487 smartSearchRequestId++; 488 let currentId = smartSearchRequestId; 489 490 checkObjLoading(q).then(function(){ 491 smartSearchProducts(q, $('[data-type="searchSP"]'), currentId).then(function(result){ 492 if (currentId !== smartSearchRequestId) return; 493 494 $('[data-type="search-page"]').find('.search-wait').hide(); 495 $('[data-type="search-page"]').find('.icon-search').show(); 496 if(result.length > 0) { 497 let smartSearchHtml = getSmartSearchFullPreview(result); 498 $('[data-type="search-resSP-prod"]').html(smartSearchHtml); 499 $('[data-type="search-resSP"]').show(); 500 $('[data-type="search-resSP-qty"] span').html(result.length); 501 $('[data-type="search-resSP-qty"]').show(); 502 $('[data-type="search-messSP"]').hide(); 503 } else { 504 $('[data-type="search-resSP-prod"]').html(''); 505 $('[data-type="search-resSP"]').hide(); 506 $('[data-type="search-resSP-qty"] span').html('0'); 507 $('[data-type="search-resSP-qty"]').show(); 508 $('[data-type="search-messSP"]').html(notFoundLang()).show(); 509 } 510 }).catch(function(err) { console.log(err) }); 511 }, function() { 512 if (currentId !== smartSearchRequestId) return; 513 $('.search-wait').hide(); 514 $('[data-type="search-page"]').find('.icon-search').show(); 515 $('[data-type="search-messSP"]').html(errorLang()).show(); 516 }).catch(function(err) { console.log(err) }); 517 } else { 518 $('[data-type="search-page"]').find('.search-wait').hide(); 519 $('[data-type="search-page"]').find('.icon-search').show(); 520 $('[data-type="search-messSP"]').hide(); 521 $('[data-type="search-resSP-qty"]').hide(); 522 $('[data-type="search-resSP"]').hide(); 523 $('[data-type="search-resSP-prod"]').html(''); 524 return false;
525 } 526 return false; 527} 528 529function getSmartSearchFullPreview(arr) { 530 let res = ''; 531 for(let i = 0; i < arr.length; i++) { 532 let item = smartSearchObj[arr[i]]; 533 if(item) res += item.preview; 534 } 535 return res; 536} 537 538function notFoundLang() { 539 let lang = $.cookie('id_lang'); 540 switch (lang) { 541 case 'en': return "Sorry, we couldn't find any results"; 542 case 'de': return 'Keine Ergebnisse gefunden'; 543 case 'fr': return "Désolé, aucun résultat ne correspond à votre recherche."; 544 case 'nl': return 'Sorry, we konden geen resultaten vinden'; 545 case 'ro': return "Ne pare rÄu, nu am gÄsit niciun rezultat"; 546 case 'it': return "Siamo spiacenti, non è stato possibile trovare risultati"; 547 case 'ru': return 'ÐоиÑк не дал ÑезÑлÑÑаÑов'; 548 case 'es': return 'Lo sentimos, no se pudieron encontrar resultados'; 549 case 'pt': return 'Desculpe, nenhum resultado foi encontrado'; 550 default: return "Sorry, we couldn't find any results"; 551 } 552} 553 554function errorLang() { 555 let lang = $.cookie('id_lang'); 556 switch (lang) { 557 case 'en': return "An error has occurred. Please reload the page and search again"; 558 case 'de': return "Es ist ein Fehler aufgetreten. Bitte laden Sie die Seite neu und suchen Sie erneut"; 559 case 'fr': return "Une erreur s'est produite. Veuillez recharger la page et effectuer une nouvelle recherche"; 560 case 'nl': return "Er is een fout opgetreden. Laad de pagina opnieuw и zoek opnieuw"; 561 case 'ro': return "A apÄrut o eroare. VÄ rugÄm sÄ reîncÄrcaÈi pagina Èi sÄ cÄutaÈi din nou"; 562 case 'it': return "Si è verificato un errore. Ricarica la pagina e cerca di nuovo"; 563 case 'ru': return "ÐÑоизоÑла оÑибка. ÐожалÑйÑÑа, пеÑезагÑÑзиÑе ÑÑÑаниÑÑ Ð¸ повÑоÑиÑе поиÑк еÑÑ Ñаз"; 564 case 'es': return "Ha ocurrido un error. Por favor recarga la página y busca nuevamente"; 565 case 'pt': return "Ocorreu um erro. Atualize a página e pesquise novamente"; 566 default: return "An error has occurred. Please reload the page and search again"; 567 } 568} 569 570function smartSearchShortResOrder(type = "smart-search-input") { 571 let q = $('[data-type="'+type+'"]').val().trim(); 572 if(q != '') { 573 $('[data-type="order-ss-close"]').show(); 574 575 // УвелиÑиваем глобалÑнÑй ÑÑеÑÑик и запоминаем ID ÑÑого запÑоÑа 576 smartSearchRequestId++; 577 let currentId = smartSearchRequestId; 578 579 checkObjLoading(q).then(function(){ 580 smartSearchProducts(q, $('[data-type="'+type+'"]'), currentId) 581 .then(function(result){ 582 // ÐаÑиÑа: еÑли за вÑÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ» новÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ â игноÑиÑÑем ÑÑаÑÑй оÑÐ²ÐµÑ 583 if (currentId !== smartSearchRequestId) return; 584 585 $('[data-type="order-ss-wait"]').hide(); 586 if(result.length > 0) { 587 let smartSearchHtml = getSmartSearchShortPreviewOrder(result); 588 $('[data-type="order-ss-list-wrap"]').html(smartSearchHtml); 589 orderScroll(); 590 } else { 591 $('[data-type="order-ss-list-wrap"]').html('<div class="order-ss-err">' + notFoundLang() + '</div>'); 592 orderScroll(); 593 } 594 }).catch(function(err) { console.log(err) }); 595 }, function() { 596 if (currentId !== smartSearchRequestId) return; 597 $('[data-type="order-ss-wait"]').hide(); 598 $('[data-type="order-ss-list-wrap"]').html('<div class="order-ss-err">' + errorLang() + '</div>'); 599 orderScroll(); 600 }).catch(function(err) { console.log(err) }); 601 } else { 602 $('[data-type="order-ss-close"]').hide(); 603 $('[data-type="order-ss-wait"]').hide(); 604 $('[data-type="order-ss-list-wrap"]').html(''); 605 orderScroll(); 606 return false;
607 } 608 return false; 609} 610 611function getSmartSearchShortPreviewOrder(arr) { 612 let res = ''; 613 for(let i = 0; i < arr.length; i++) { 614 let item = smartSearchObj[arr[i]]; 615 if(!item) continue; // ÐаÑиÑа Ð¾Ñ Ð½ÐµÐ¾Ð¿ÑеделеннÑÑ ÑлеменÑов в маÑÑиве Ð±Ð°Ð·Ñ 616 res += '<div class="order-add-prod-item" data-id="' + item.id + '" data-type="order-add-prod-item">'; 617 res += '<div class="order-add-prod-item-art">'; 618 res += '<a href="' + item.url + '" target="_blank">'; 619 res += item.name; 620 res += '</a>'; 621 res += '</div>'; 622 res += '<div class="order-add-prod-item-btn" data-type="add-order-prod"><i class="new-icon-plus-symbol"></i></div>'; 623 res += '</div>'; 624 } 625 return res; 626} 627 628function orderScroll() { 629 if(typeof orderSS === 'undefined') { 630 var orderSS = $('[data-type="order-ss-list"]').jScrollPane({ showArrows: false, maintainPosition: false }).data('jsp'); 631 } else { 632 orderSS.reinitialise(); 633 } 634} 635 636function hideOrderSearch() { 637 $('[data-type="order-ss-icon"]').show(); 638 $('[data-type="order-ss-wait"]').hide(); 639 $('[data-type="order-ss-close"]').hide(); 640 $('[data-type="order-ss-input"]').val(''); 641 $('[data-type="order-ss-list-wrap"]').html(''); 642 orderScroll(); 643 $('[data-type="order-add-prod-form"]').hide(); 644}
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.