Advertisement
akozhomka

JS (protected/modules/profile/widgets/assets/js/pagination.js)

Feb 23rd, 2022
440
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. document.querySelector(document).addEventListener('ready', function() {
  2.     let addMoreBtn = document.querySelector('#add-more');
  3.     let pager = document.querySelector('.pager__list');
  4.     const animationClass = 'rotate';
  5.     var clicks = clicks ? clicks : 1;
  6.  
  7.     addMoreBtn.addEventListener('click', (e) => {
  8.         let btn = document.querySelector(e.currentTarget);
  9.         if (btn.classList.contains(animationClass)) {
  10.             return;
  11.         }
  12.         btn.classList.add(animationClass);
  13.  
  14.         let url = pager.querySelector('.pager-list__item_active:last + li a').attr('href')
  15.         let ajax = new AppSendAJAX({
  16.             'method': 'get',
  17.             'serverScriptUrl': url
  18.         });
  19.  
  20.         ajax.sendData().then((responseJson) => {
  21.             let type = '';
  22.             if (responseJson.hasOwnProperty('type')) {
  23.                 type = responseJson['type'];
  24.             }
  25.  
  26.             let count = 0;
  27.             if (responseJson.hasOwnProperty('gaData')) {
  28.                 responseJson['gaData'].forEach((e) => {
  29.                     gaWrapper.ga('ec:addImpression', e);
  30.                     cartRes.push(e);
  31.                 });
  32.  
  33.                 count = clicks * 20 + responseJson['gaData'].length;
  34.             }
  35.  
  36.             if (responseJson.hasOwnProperty('items')) {
  37.                 document.querySelector('.pagination-container').insertAdjacentHTML("beforeend",responseJson['items']);
  38.                 transformPaginationItems(++clicks, pager)
  39.             }
  40.             if (responseJson.hasOwnProperty('items_count')) {
  41.                 let showOnPageBlock = document.querySelector('.n-profile-paginator__text span')
  42.                 showOnPageBlock.text(Number.parseInt(showOnPageBlock.text()) + responseJson['items_count']);
  43.             }
  44.             document.querySelector(window).lazyLoadXT();
  45.  
  46.             modifyContent(type);
  47.  
  48.             if (count === 0) {
  49.                 count = document.querySelector('.pagination-item').length;
  50.             }
  51.             sendShowMoreGa(count, type);
  52.         }).always(() => {
  53.             btn.removeClass(animationClass);
  54.         });
  55.     });
  56.  
  57.     function transformPaginationItems(selectedPages, pager) {
  58.         let currentPageNumber = pager.attr('data-current-page');
  59.         let totalPageCount = pager.attr('data-last-page');
  60.         let count = ((currentPageNumber - 1) + selectedPages) * parseInt(addMoreBtn.attr('data-limit'));
  61.         let areMoreItems = count < parseInt(addMoreBtn.attr('data-items-count'));
  62.  
  63.         let pagination = new PaginationHelper(currentPageNumber, totalPageCount, undefined, selectedPages);
  64.         pager.html(pagination.getHtml());
  65.  
  66.         if (!areMoreItems) {
  67.             addMoreBtn.hide();
  68.         }
  69.     }
  70.  
  71.     function modifyContent(type) {
  72.         if (type === 'products') {
  73.             fillFavoritesHearts();
  74.  
  75.             return;
  76.         }
  77.  
  78.         //Скрываем лишние названия месяцев
  79.         let currId = '0';
  80.         document.querySelector('div.n-profile-orders-list__date[data-id]').each(function () {
  81.             document.querySelector(this).hide();
  82.             let id = document.querySelector(this).attr('data-id');
  83.             if (id !== currId) {
  84.                 document.querySelector(this).show();
  85.                 currId = id;
  86.             }
  87.         });
  88.  
  89.         newprofileOrdersUI._rebuildCartPictures();
  90.     }
  91. });
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement