templates/ProfileList/_show_more.profiles.html.twig line 1

Open in your IDE?
  1. {% set totalPages = (profiles.totalCount / profiles.currentLimit)|round(0, 'ceil') %}
  2. <div class="d-flex justify-content-center" id="showmore_container">
  3.     <button class="show-more btn btn-danger align-items-center justify-content-center{{ totalPages == 0 or totalPages == 1 or totalPages == profiles.currentPage ? ' d-none' : '' }} rounding  mb-1"
  4.         type="button" id="showMoreBtnShowMore" data-show-ignore>Показать еще</button>
  5. </div>
  6. <script type="text/javascript">
  7.     document.addEventListener('DOMContentLoaded', function() {
  8.         window.moreLoader = new MoreLoader({
  9.             'btnMoreSelector': '#showMoreBtnShowMore',
  10.             'containerSelector': '#profile-list',
  11.             'receiveRenderedResponse': true,
  12.             'responseCallback': function(response) {
  13.                 const profileListRoot = document.getElementById('profile-list');
  14.                 const existIdSet = new Set([...profileListRoot.querySelectorAll('.models-item-col')].map(el => {
  15.                     const id = +el.dataset.profileId;
  16.                     return isNaN(id) ? null : id;
  17.                 }).filter(id => id !== null));
  18.                 const div = document.createElement('div');
  19.                 div.innerHTML = response;
  20.                 const profileListResponse = [...div.querySelectorAll('.models-item-col')];
  21.                 const responseIdList = [];
  22.                 {# // Добавляем только новые элементы и собираем их ID #}
  23.                 profileListResponse.forEach(el => {
  24.                     const profileId = +el.dataset.profileId;
  25.                     if (!isNaN(profileId) && !existIdSet.has(profileId)) {
  26.                         profileListRoot.appendChild(el);
  27.                         responseIdList.push(profileId);
  28.                     }
  29.                 });
  30.                 if (responseIdList.length < 4) {
  31.                     setTimeout(()=>{
  32.                         window.moreLoader.showMore();
  33.                     }, 10)
  34.                 }
  35.                 document.querySelectorAll('.pagination').forEach(function (el) {
  36.                     el.style.display = 'none';
  37.                 });
  38.                 document.querySelectorAll('img.lazy').forEach(function (el) {
  39.                     if (el.hasAttribute('data-src'))
  40.                         el.src = el.dataset.src;
  41.                 });
  42.                 document.dispatchEvent(new Event("filter:load:finish"));
  43.             },
  44.             'templateSelector': null,
  45.             'url': '{{ app.request.requestUri }}',
  46.             'urlCity': '{{ app.request.attributes.get('city').uriIdentity }}',
  47.             'urlPagePartTemplate': 'page%N%/',
  48.             'currentPage': {{ profiles.currentPage }},
  49.             'totalPages': {{ (profiles.totalCount / profiles.currentLimit)|round(0, 'ceil') }},
  50.             'perPage': 5,
  51.             'itemsInRow': 2,
  52.             'recordsArrayName': 'profiles',
  53.         });
  54.     });
  55. </script>
  56. {% include 'ShowMore/_show_more.base.html.twig' %}