1/** 2 * ТÑÑ Ð¾Ð¿ÑеделÑем какие компоненÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑ Ð½Ð° какой ÑÑÑаниÑе 3 */ 4 document.addEventListener('DOMContentLoaded', function() { 5 //ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑÑÑаниÑа 6 if (document.querySelectorAll('#rec835134000').length) { 7 new TabNavigator({'tabButtonClass': '.tab-btn', 'tabClass': '.tab-content'}); 8 new TabNavigator({'tabButtonClass': '.button-tab', 'tabClass': '.cont-tab'}); 9 10 // ÐклÑÑаем показ каÑÑинок 11 document.querySelectorAll('img.tn-atom__img').forEach(img => { 12 if (!img.getAttribute('src') && img.getAttribute('data-original')) { 13 img.setAttribute('src', img.getAttribute('data-original')); 14 } 15 }); 16 17 // ÐклÑÑаем показ каÑÑинок 18 document.querySelectorAll('.tn-atom.t-bgimg').forEach(div => { 19 if (!div.style.backgroundImage && div.getAttribute('data-original')) { 20 div.style.backgroundImage = `url('${div.getAttribute('data-original')}')`; 21 } 22 }); 23 } 24 25 // СÑÑаниÑа apps 26 if (document.querySelectorAll('#rec836482391').length) { 27 document.querySelector('.uc-tab').classList.add('active'); 28 new PartnerFilter({'jsonPartners': allPartners}); 29 } 30 31 // СÑÑаниÑа двÑÑ Ð¿Ð°ÑÑнеÑов Ñедизайн 32 if (document.querySelectorAll('#rec845129035').length) { 33 new TriggerActionTabNavigator({}); 34 new TabNavigator({'tabButtonClass': '.tab-btn', 'tabClass': '.tab-content'}); 35 new PartnerPaginationNew({'jsonPartners': allPartners1, 'parentBlockId': '#rec833717894', 'currentPartner': currentPartner1}); 36 new PartnerPaginationNew({'jsonPartners': allPartners2, 'parentBlockId': '#rec855687099', 'currentPartner': currentPartner2}); 37 } 38 39 //СÑÑаниÑа одного паÑÑнеÑа Ñедизайн 40 if (document.querySelectorAll('#rec832756009').length) { 41 new TriggerActionTabNavigator({}); 42 new TabNavigator({'tabButtonClass': '.tab-btn', 'tabClass': '.tab-content'}); 43 new PartnerSearchBoxNew({'jsonPartners': allPartners}); 44 new PartnerPaginationNew({'jsonPartners': allPartners, 'parentBlockId': '#rec841956641', 'currentPartner': currentPartner, 'pageName': 'page'}); 45 } 46}); 47 48class PartnerSearchBox { 49 constructor(config) { 50 this.defaultBlock = null; //Ðлок Ñ ÐºÐ¾ÑоÑого бÑдÑÑ ÑоздаваÑÑÑÑ Ð²Ñе оÑÑалÑнÑе 51 52 this.parentBlockId = config.parentBlockId ?? null; 53 this.jsonPartners = config.jsonPartners ?? null; 54 55 if (!this.parentBlockId) { 56 throw new Error('config.parentBlockId not set'); 57 } 58 59 if (!this.jsonPartners) { 60 throw new Error('config.jsonPartners not set'); 61 } 62 63 this.init(); 64 } 65 66 init() { 67 let searchField = $('input[type="text"].t-input.js-tilda-rule'); 68 69 this.defaultBlock = this.getContainer().find('.t774__col_mobile-grid').first(); 70 71 let _th = this; 72 73 searchField.on('input', function () { 74 let searchValue = $(this).val().toLowerCase(); 75 76 _th.filterPartners(searchValue); 77 }); 78 79 this.addSearchResultsBox(); 80 } 81 82 showSearchResult(partner) { 83 let container = $('#search_result'); 84 let partnerBlock = this.generatePartnerBlock(partner); 85 86 partnerBlock.find('.t774__btn-wrapper').remove(); 87 88 container.append(partnerBlock); 89 container.css('display', 'block'); 90 } 91 92 removeSearchResult() { 93 $('#search_result').find('.t774__col_mobile-grid').remove(); 94 $('#search_result').css('display', 'none'); 95 } 96 97 filterPartners(searchValue) { 98 let _th = this; 99 100 if (searchValue.length > 0) { 101 this.removeSearchResult(); 102 103 $.each(allPartners, function (id, partner) { 104 if (partner.possibleLabels !== undefined && partner.possibleLabels.toLowerCase().indexOf(searchValue) >= 0) { 105 _th.showSearchResult(partner); 106 } 107 }); 108 } else { 109 this.removeSearchResult(); 110 } 111 } 112 113 addSearchResultsBox() {
114 let searchBlockResult = $('<div id="search_result"></div>'); 115 116 $('#form719532730 .t-col_12').removeClass('t-col_12').addClass('t-col_6'); 117 118 $('.t186__wrapper').after(searchBlockResult); 119 } 120 121 getContainer() { 122 return $(this.parentBlockId).find('.t774__container.t774__container_mobile-grid'); 123 } 124 125 getBlockId(partner) { 126 return partner['id'] ?? partner['partnerId'] ?? ''; 127 } 128 129 generatePartnerBlock(partner) { 130 let container = this.getContainer(); 131 let partnerBlock = this.defaultBlock.clone(); 132 133 partnerBlock.attr('data-appended', 'true'); 134 partnerBlock.attr('data-block-id', this.getBlockId(partner)); 135 136 partnerBlock.find('meta').first().attr('content', partner.logo); 137 partnerBlock.find('img').first().attr('src', partner.logo); 138 139 partnerBlock.find('a.t-card__link').first().text(partner.title).attr('href', partner.url); 140 141 partnerBlock.find('.t-card__btn.t-btn.t-btn_sm').text(partner.bundlesCount); 142 143 partnerBlock.css('display', 'block'); 144 145 return partnerBlock; 146 } 147} 148 149const partnerFilter = { 150 init: function () { 151 let searchField = $('input[type="text"].t-input.js-tilda-rule'); 152 153 searchField.on('input', function () { 154 let searchValue = $(this).val().toLowerCase(); 155 156 partnerFilter.filterPartners(searchValue); 157 }); 158 }, 159 filterPartners: function (searchValue) { 160 let key = 0; 161 162 if (searchValue.length > 0) { 163 this.hidePartners(); 164 165 $.each(allPartners, function (id, partner) { 166 if (partnerFilter.isPartnerAllowed(partner, searchValue)) { 167 key++; 168 partnerFilter.showPartnerBlock(partner, key); 169 } 170 }); 171 } else { 172 this.resetDefaultGrid(); 173 } 174 }, 175 showPartnerBlock: function (partner, key) { 176 let container = this.getContainer(); 177 let partnerBlock = container.find('[data-block-id="' + this.getBlockId(partner) + '"]'); 178 179 partnerBlock.css('display', 'block'); 180 181 if (key % 3 === 0) { 182 partnerBlock.after('<div class="t-clear t774__separator" data-appended="true"></div>'); 183 } 184 }, 185 removeGeneratedElements: function () { 186 187 }, 188 resetDefaultGrid: function () { 189 this.hidePartners(); 190 this.getContainer().find('[data-show-default=1]').css('display', 'block'); 191 this.getContainer().find('.t774__separator').css('display', 'block'); 192 }, 193 hidePartners: function () { 194 this.removeGeneratedElements(); 195 this.getContainer().find('.t774__col_mobile-grid').css('display', 'none'); 196 this.getContainer().find('.t774__separator').css('display', 'none'); 197 }, 198 getBlockId: function (partner) { 199 return partner['id'] ?? partner['partnerId'] ?? ''; 200 }, 201 getContainer: function () { 202 return $(t774ParentBlockId).find('.t774__container.t774__container_mobile-grid'); 203 }, 204 isPartnerAllowed(partner, searchValue) { 205 let result = partner.label !== undefined && partner.label.toLowerCase().indexOf(searchValue) >= 0; 206 207 if (!result) { 208 partner.possibleLabels !== undefined && partner.possibleLabels.toLowerCase().indexOf(searchValue) >= 0; 209 } 210 211 return result; 212 } 213}; 214 215class PartnerPagination { 216 constructor(config) { 217 this.maxPageNum = 1; 218 this.minPageNum = 1; 219 this.itemsPerRow = 3; 220 this.currentPageNum = 1; 221 this.chunkSize = 9; 222 this.previousLink = $('<a id="prev"><</a>'); 223 this.nextLink = $('<a id="next">></a>'); 224 this.paginationBlock = $('<div id="pagination"></div>'); 225 this.defaultBlock = null; //Ðлок Ñ ÐºÐ¾ÑоÑого бÑдÑÑ ÑоздаваÑÑÑÑ Ð²Ñе оÑÑалÑнÑе 226 227 this.parentBlockId = config.parentBlockId ?? null; 228 this.jsonPartners = config.jsonPartners ?? null; 229 this.pageName = config.pageName ?? null; 230 231 if (!this.parentBlockId) { 232 throw new Error('config.parentBlockId not set'); 233 } 234 235 if (!this.jsonPartners) { 236 throw new Error('config.jsonPartners not set'); 237 } 238 239 this.init(); 240 } 241 242 init() { 243 this.updateCurrentPageNumber(); 244 245 this.defaultBlock = this.getContainer().find('.t774__col_mobile-grid').first(); 246 247 this.maxPageNum = this.chunkArray(Object.values(this.jsonPartners)).length; 248 249 if (this.currentPageNum > this.maxPageNum) { 250 this.currentPageNum = this.maxPageNum; 251 252 this.updateUrl(); 253 } 254 255 if (this.currentPageNum < this.minPageNum) { 256 this.currentPageNum = this.minPageNum; 257 258 this.updateUrl(); 259 } 260 261 this.getContainer().after(this.paginationBlock); 262 263 this.refreshLinks(); 264 this.loadPageData(); 265 } 266 267 refreshLinks() { 268 let _th = this; 269 270 if (this.currentPageNum <= this.minPageNum) { 271 this.previousLink = $('<span id="prev"><</span>'); 272 } else { 273 this.previousLink = $('<a id="prev"><</a>'); 274 275 if (this.pageName) { 276 this.previousLink.attr("href", "#" + this.pageName + "=" + (this.currentPageNum - 1)); 277 } else { 278 this.previousLink.attr("href", "javascript:void(0);"); 279 } 280 281 this.previousLink.on('click', function (e) { 282 _th.navigate(-1); 283 }); 284 } 285 286 if (this.currentPageNum >= this.maxPageNum) { 287 this.nextLink = $('<span id="next">></span>'); 288 } else { 289 this.nextLink = $('<a id="next">></a>'); 290 291 if (this.pageName) { 292 this.nextLink.attr("href", "#" + this.pageName + "=" + (this.currentPageNum + 1)); 293 } else { 294 this.nextLink.attr("href", "javascript:void(0);"); 295 } 296 297 this.nextLink.on('click', function (e) { 298 _th.navigate(1); 299 }); 300 } 301 302 this.paginationBlock.find('a, span').remove(); 303 this.paginationBlock.append(this.previousLink); 304 this.paginationBlock.append(this.nextLink); 305 } 306 307 updateCurrentPageNumber() { 308 if (this.pageName) { 309 let regexp = new RegExp(`${this.pageName}=(\\d+)`); 310 let match = window.location.hash.match(regexp); 311 312 if (match) { 313 this.currentPageNum = parseInt(match[1]); 314 } 315 } 316 } 317 318 getContainer() { 319 return $(this.parentBlockId).find('.t774__container.t774__container_mobile-grid'); 320 } 321 322 navigate(direction) { 323 this.updateCurrentPageNumber(); 324 325 this.currentPageNum += direction; 326 327 this.updateUrl(); 328 329 this.loadPageData(); 330 this.refreshLinks(); 331 } 332 333 loadPageData() { 334 this.hidePartners(); 335 336 let partners = this.chunkArray(Object.values(this.jsonPartners))[this.currentPageNum - 1]; 337 let key = 0; 338 339 let _th = this; 340 341 $.each(partners, function (id, partner) { 342 key++; 343 344 _th.generatePartnerBlock(partner, key); 345 }); 346 } 347 348 chunkArray(array) { 349 let chunks = []; 350 for (let i = 0; i < array.length; i += this.chunkSize) { 351 chunks.push(array.slice(i, i + this.chunkSize)); 352 } 353 return chunks; 354 } 355 356 hidePartners() { 357 this.removeGeneratedElements(); 358 this.getContainer().find('.t774__col_mobile-grid').css('display', 'none');
359 this.getContainer().find('.t774__separator').css('display', 'none'); 360 } 361 362 generatePartnerBlock(partner, key) { 363 let container = this.getContainer(); 364 let partnerBlock = this.defaultBlock.clone(); 365 366 partnerBlock.attr('data-appended', 'true'); 367 partnerBlock.attr('data-block-id', this.getBlockId(partner)); 368 369 partnerBlock.find('meta').first().attr('content', partner.logo); 370 partnerBlock.find('img').first().attr('src', partner.logo); 371 372 partnerBlock.find('a.t-card__link').first().text(partner.title).attr('href', partner.url); 373 374 partnerBlock.find('.t-card__btn.t-btn.t-btn_sm').text(partner.bundlesCount); 375 376 partnerBlock.css('display', 'block'); 377 378 container.append(partnerBlock); 379 380 if (key % this.itemsPerRow === 0) { 381 partnerBlock.after('<div class="t-clear t774__separator" data-appended="true"></div>'); 382 } 383 } 384 385 removeGeneratedElements() { 386 this.getContainer().find('[data-appended="true"]').remove(); 387 } 388 389 getBlockId(partner) { 390 return partner['id'] ?? partner['partnerId'] ?? ''; 391 } 392 393 updateUrl() { 394 if (this.pageName) { 395 window.location.hash = this.pageName + '=' + this.currentPageNum; 396 } 397 } 398} 399 400class TriggerActionTabNavigator { 401 constructor(config) { 402 this.buttons = document.querySelectorAll('.tbbtn > a'); 403 this.tabs = document.querySelectorAll('.uc-tab'); 404 405 if (this.buttons && this.tabs) {
406 this.tabs.forEach(tab => tab.classList.add('active')); 407 408 // ТÑÑ ÑÑÑаниÑа не ÑÑÐ¿ÐµÐ²Ð°ÐµÑ Ð¾ÑÑиÑоваÑÑÑÑ Ð¿Ð¾ÑÑÐ¾Ð¼Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñем задеÑÐ¶ÐºÑ 409 setTimeout(() => { 410 this.removeActiveClass(); 411 this.tabs[0].classList.add('active'); 412 this.buttons[0].closest('.tbbtn').classList.add('active'); 413 }, 1000); 414 } 415 416 this.buttons.forEach((button, index) => { 417 button.addEventListener('click', (event) => { 418 event.preventDefault(); 419 420 this.removeActiveClass(); 421 button.closest('.tbbtn').classList.add('active'); 422 423 if (this.tabs[index]) { 424 this.tabs[index].classList.add('active'); 425 } 426 }); 427 }); 428 } 429 removeActiveClass() { 430 const allButtons = document.querySelectorAll('.tbbtn'); 431 432 allButtons.forEach(function(button) { 433 button.classList.remove('active') 434 }); 435
436 this.tabs.forEach(function(tab) { 437 tab.classList.remove('active') 438 }) 439 } 440} 441class TabNavigator { 442 constructor(config) 443 { 444 this.tabButtons = document.querySelectorAll(config.tabButtonClass); 445 this.tabContents = document.querySelectorAll(config.tabClass); 446 447 this.activateTab(0); 448 449 this.tabButtons.forEach((button, index) => { 450 button.addEventListener('click', event => { 451 event.preventDefault(); 452 this.activateTab(index) 453 }) 454 }) 455 } 456 activateTab(tabIndex) { 457 this.tabButtons.forEach((btn) => btn.classList.remove('active')); 458 this.tabContents.forEach((content) => content.classList.remove('active')); 459 this.tabButtons[tabIndex].classList.add('active'); 460 this.tabContents[tabIndex].classList.add('active') 461 } 462} 463 464class PartnerSearchBoxNew { 465 constructor(config) { 466 this.jsonPartners = config.jsonPartners ?? null; 467 468 if (!this.jsonPartners) { 469 throw new Error('config.jsonPartners not set'); 470 } 471 472 this.init(); 473 } 474 475 init() { 476 const searchField = document.querySelector('input[type="text"]#search'); 477 478 if (!searchField) { 479 throw new Error('Search field not found'); 480 } 481 482 searchField.addEventListener('input', (event) => { 483 const searchValue = event.target.value.toLowerCase(); 484 this.filterPartners(searchValue); 485 }); 486 487 this.addSearchResultsBox(); 488 } 489 490 showSearchResult(partner) { 491 const container = document.getElementById('search_result'); 492 493 if (!container) { 494 throw new Error('Search results container not found'); 495 } 496 497 const partnerBlock = this.generatePartnerBlock(partner); 498 499 container.appendChild(partnerBlock); 500 container.style.display = 'block'; 501 } 502 503 removeSearchResult() { 504 const container = document.getElementById('search_result'); 505 506 if (container) { 507 container.querySelectorAll('.item').forEach((element) => { 508 element.remove(); 509 }); 510 511 container.style.display = 'none'; 512 } 513 } 514 515 filterPartners(searchValue) { 516 if (searchValue.length > 0) { 517 this.removeSearchResult(); 518 519 for (const partner of this.jsonPartners) { 520 if (partner.possibleLabels && partner.possibleLabels.toLowerCase().includes(searchValue)) { 521 this.showSearchResult(partner); 522 } 523 } 524 } else { 525 this.removeSearchResult(); 526 } 527 } 528 529 addSearchResultsBox() { 530 const searchBlockResult = document.createElement('div'); 531 searchBlockResult.id = 'search_result'; 532 533 const wrapper = document.querySelector('#search'); 534 535 if (wrapper) { 536 wrapper.insertAdjacentElement('afterend', searchBlockResult); 537 } 538 } 539 540 generatePartnerBlock(partner) { 541 const partnerBlock = document.createElement('div'); 542 543 partnerBlock.classList.add('item'); 544 545 const link = document.createElement('a'); 546 547 link.setAttribute('href', partner.url); 548 549 const imgTag = document.createElement('img'); 550 551 imgTag.setAttribute('src', partner.logo); 552 553 const span = document.createElement('span'); 554 555 span.innerText = partner.title; 556 557 link.appendChild(imgTag); 558 link.appendChild(span); 559 560 partnerBlock.appendChild(link); 561 562 return partnerBlock; 563 } 564} 565 566class PartnerFilter { 567 constructor(config) { 568 this.jsonPartners = config.jsonPartners ?? null; 569 570 if (!this.jsonPartners) { 571 throw new Error('config.jsonPartners not set'); 572 } 573 574 this.init(); 575 } 576 577 init() { 578 const searchField = document.querySelector('input[type="text"]#search'); 579 580 searchField.addEventListener('input', (event) => { 581 const searchValue = event.target.value.toLowerCase(); 582 this.filterPartners(searchValue); 583 }); 584 } 585 586 filterPartners(searchValue) { 587 let key = 0; 588 589 if (searchValue.length > 0) { 590 this.hidePartners(); 591
592 Object.values(this.jsonPartners).forEach((partner, id) => { 593 if (this.isPartnerAllowed(partner, searchValue)) { 594 key++; 595 this.showPartnerBlock(partner, key); 596 } 597 }); 598 } else { 599 this.resetDefaultGrid(); 600 } 601 } 602 603 showPartnerBlock(partner, key) { 604 const container = this.getContainer(); 605 const partnerBlock = container.querySelector(`[data-block-id="${this.getBlockId(partner)}"]`); 606 607 if (partnerBlock) { 608 partnerBlock.style.display = 'block'; 609 610 if (key % 3 === 0) { 611 const separator = document.createElement('div'); 612 separator.className = 't-clear'; 613 separator.setAttribute('data-appended', 'true'); 614 partnerBlock.parentNode.insertBefore(separator, partnerBlock.nextSibling); 615 } 616 } 617 } 618 619 removeGeneratedElements() { 620 const container = this.getContainer(); 621 container.querySelectorAll('[data-appended="true"]').forEach(el => el.remove()); 622 } 623 624 resetDefaultGrid() { 625 this.hidePartners(); 626 const container = this.getContainer(); 627 container.querySelectorAll('.t396__group').forEach(el => el.style.display = 'block'); 628 container.querySelectorAll('.t-clear').forEach(el => el.style.display = 'block'); 629 } 630 631 hidePartners() { 632 this.removeGeneratedElements(); 633 const container = this.getContainer(); 634 container.querySelectorAll('.t396__group').forEach(el => el.style.display = 'none'); 635 container.querySelectorAll('.t-clear').forEach(el => el.style.display = 'none'); 636 } 637 638 getBlockId(partner) { 639 return partner['id'] || partner['partnerId'] || ''; 640 } 641 642 getContainer() { 643 return document.querySelector('.albato-wrapper'); 644 } 645 646 isPartnerAllowed(partner, searchValue) { 647 let result = partner.label && partner.label.toLowerCase().includes(searchValue); 648 649 if (!result && partner.possibleLabels) { 650 result = partner.possibleLabels.toLowerCase().includes(searchValue); 651 } 652 653 return result; 654 } 655} 656 657class PartnerPaginationNew { 658 constructor(config) { 659 this.maxPageNum = 1; 660 this.minPageNum = 1; 661 this.itemsPerRow = 3; 662 this.currentPageNum = 1; 663 this.chunkSize = 18; 664 this.previousLink = document.createElement('a'); 665 this.previousLink.id = 'prev'; 666 this.previousLink.textContent = '<'; 667 this.nextLink = document.createElement('a'); 668 this.nextLink.id = 'next'; 669 this.nextLink.textContent = '>'; 670 this.paginationBlock = document.createElement('div'); 671 this.paginationBlock.id = 'pagination'; 672 this.defaultBlock = null; // Ðлок Ñ ÐºÐ¾ÑоÑого бÑдÑÑ ÑоздаваÑÑÑÑ Ð²Ñе оÑÑалÑнÑе 673 674 this.parentBlockId = config.parentBlockId || null; 675 this.jsonPartners = config.jsonPartners || null; 676 this.pageName = config.pageName || null; 677 this.currentPartner = config.currentPartner || null; 678 679 if (!this.parentBlockId) { 680 throw new Error('config.parentBlockId not set'); 681 } 682 683 if (!this.jsonPartners) { 684 throw new Error('config.jsonPartners not set'); 685 } 686 687 this.init(); 688 } 689 690 init() { 691 this.updateCurrentPageNumber(); 692 693 const container = this.getContainer(); 694 this.defaultBlock = container.querySelector('.couple-item').cloneNode(true); 695 696 this.maxPageNum = this.chunkArray(Object.values(this.jsonPartners)).length; 697 698 if (this.currentPageNum > this.maxPageNum) { 699 this.currentPageNum = this.maxPageNum; 700 701 this.updateUrl(); 702 } 703 704 if (this.currentPageNum < this.minPageNum) { 705 this.currentPageNum = this.minPageNum; 706 707 this.updateUrl(); 708 } 709 710 container.appendChild(this.paginationBlock); 711 712 this.refreshLinks(); 713 this.loadPageData(); 714 } 715 716 refreshLinks() { 717 const _th = this; 718 719 if (this.currentPageNum <= this.minPageNum) { 720 this.previousLink = document.createElement('span'); 721 this.previousLink.id = 'prev'; 722 this.previousLink.textContent = '<'; 723 } else { 724 this.previousLink = document.createElement('a'); 725 this.previousLink.id = 'prev'; 726 if (this.pageName) { 727 this.previousLink.href = `#${this.pageName}=${this.currentPageNum - 1}`; 728 } else { 729 this.previousLink.href = 'javascript:void(0);'; 730 } 731 this.previousLink.addEventListener('click', function (e) { 732 _th.navigate(-1); 733 }); 734 this.previousLink.textContent = '<'; 735 } 736 737 if (this.currentPageNum >= this.maxPageNum) { 738 this.nextLink = document.createElement('span'); 739 this.nextLink.id = 'next'; 740 this.nextLink.textContent = '>'; 741 } else { 742 this.nextLink = document.createElement('a'); 743 this.nextLink.id = 'next'; 744 if (this.pageName) { 745 this.nextLink.href = `#${this.pageName}=${this.currentPageNum + 1}`; 746 } else { 747 this.nextLink.href = 'javascript:void(0);'; 748 } 749 this.nextLink.addEventListener('click', function (e) { 750 _th.navigate(1); 751 }); 752 this.nextLink.textContent = '>'; 753 } 754 755 while (this.paginationBlock.firstChild) { 756 this.paginationBlock.removeChild(this.paginationBlock.lastChild); 757 } 758 this.paginationBlock.appendChild(this.previousLink); 759 this.paginationBlock.appendChild(this.nextLink); 760 } 761 762 updateCurrentPageNumber() { 763 if (this.pageName) { 764 const regexp = new RegExp(`${this.pageName}=(\\d+)`); 765 const match = window.location.hash.match(regexp); 766 767 if (match) { 768 this.currentPageNum = parseInt(match[1]); 769 } 770 } 771 } 772 773 getContainer() { 774 return document.querySelector(this.parentBlockId).querySelector('.container-overflow-hidden'); 775 } 776 777 navigate(direction) { 778 this.updateCurrentPageNumber(); 779 780 this.currentPageNum += direction; 781 782 this.updateUrl(); 783 784 this.loadPageData(); 785 this.refreshLinks(); 786 } 787 788 loadPageData() { 789 this.hidePartners(); 790 791 const partners = this.chunkArray(Object.values(this.jsonPartners))[this.currentPageNum - 1]; 792 let key = 0; 793 794 const _th = this; 795
796 partners.forEach(function (partner) { 797 key++; 798 _th.generatePartnerBlock(partner, key); 799 }); 800 } 801 802 chunkArray(array) { 803 const chunks = []; 804 for (let i = 0; i < array.length; i += this.chunkSize) { 805 chunks.push(array.slice(i, i + this.chunkSize)); 806 } 807 return chunks; 808 } 809 810 hidePartners() { 811 this.removeGeneratedElements(); 812 const container = this.getContainer(); 813 container.querySelectorAll('.couple-item').forEach(function (elem) { 814 elem.style.display = 'none'; 815 }); 816 } 817 818 generatePartnerBlock(partner, key) { 819 const container = this.getContainer(); 820 const partnerBlock = this.defaultBlock.cloneNode(true); 821 822 partnerBlock.setAttribute('href', partner.url); 823 partnerBlock.setAttribute('data-appended', 'true'); 824 partnerBlock.setAttribute('data-block-id', this.getBlockId(partner)); 825 826 const imgTag1 = partnerBlock.querySelector('.albato-img1 img'); 827 imgTag1.setAttribute('data-original', this.currentPartner.logo); 828 imgTag1.setAttribute('src', this.currentPartner.logo); 829 imgTag1.setAttribute('alt', this.currentPartner.title + ' + ' + partner.title); 830 831 const imgTag2 = partnerBlock.querySelector('.albato-img2 img'); 832 imgTag2.setAttribute('data-original', partner.logo); 833 imgTag2.setAttribute('src', partner.logo); 834 imgTag2.setAttribute('alt', this.currentPartner.title + ' + ' + partner.title); 835 836 const linkTag = partnerBlock.querySelector('.albato-title div.tn-atom'); 837 linkTag.textContent = this.currentPartner.title + ' + ' + partner.title; 838 839 partnerBlock.style.display = 'block'; 840 841 container.querySelector('.tn-molecule').appendChild(partnerBlock); 842 } 843 844 removeGeneratedElements() { 845 const container = this.getContainer(); 846 container.querySelectorAll('[data-appended="true"]').forEach(function (elem) { 847 elem.remove(); 848 }); 849 } 850 851 getBlockId(partner) { 852 return partner['id'] || partner['partnerId'] || ''; 853 } 854 855 updateUrl() { 856 if (this.pageName) { 857 window.location.hash = `${this.pageName}=${this.currentPageNum}`; 858 } 859 } 860}
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.