{% set totalPages = (profiles.totalCount / profiles.currentLimit)|round(0, 'ceil') %}
{% set innerText = innerText is defined ? innerText : 'Показать ещё' %}
<div class="load-more-container d-flex-c mb-4" id="showmore_container">
<button class="load-more btn btn-main{{ totalPages == 1 or totalPages == profiles.currentPage ? ' d-none' : '' }}"
type="button"
id="load-more-btn"
data-currentPage="{{ profiles.currentPage }}"
data-totalPages="{{ totalPages }}"
data-perPage="{{ profiles.currentLimit }}"
data-itemsInRow="{{ profiles.currentLimit >= 3 ? 3 : profiles.currentLimit }}"
data-url="{{ app.request.requestUri }}"
{# data-filter-url="{{ path('profile_list.filter_list', {city: app.request.attributes.get('city').uriIdentity}) }}" #}
>{{ innerText }}</button>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
window.moreLoader = new MoreLoader({
'btnMoreSelector': '#load-more-btn',
'containerSelector': '#profile-list',
'receiveRenderedResponse': true,
'responseCallback': function(response) {
const profileListRoot = document.getElementById('profile-list');
const existIdSet = new Set([...profileListRoot.querySelectorAll('.profile-card')].map(el => {
const id = +el.dataset.profileId;
return isNaN(id) ? null : id;
}).filter(id => id !== null));
const div = document.createElement('div');
div.innerHTML = response;
const profileListResponse = [...div.querySelectorAll('.profile-card')];
const responseIdList = [];
{# // Добавляем только новые элементы и собираем их ID #}
profileListResponse.forEach(el => {
const profileId = +el.dataset.profileId;
if (!isNaN(profileId) && !existIdSet.has(profileId)) {
profileListRoot.appendChild(el);
responseIdList.push(profileId);
}
});
if (responseIdList.length < 4) {
setTimeout(()=>{
window.moreLoader.showMore();
}, 10)
}
document.querySelectorAll('.pagination').forEach(function (el) {
el.style.display = 'none';
});
},
'templateSelector': null,
{% set route = app.request.get('_route') is null and "massagers" in app.request.pathInfo ? 'masseur_list.page' : app.request.get('_route') %}
{% set urlPath = '._pagination' in route ? route : route ~ '._pagination' %}
{% set routeParams = app.request.get('_route_params') ?? [] %}
'url': '{{ path(urlPath, routeParams|merge({city: city.uriIdentity, page: profiles.currentPage + 1})) }}',
'urlCity': '{{ city.uriIdentity }}',
'urlPagePartTemplate': 'page%N%/',
'currentPage': {{ profiles.currentPage }},
'totalPages': {{ (profiles.totalCount / profiles.currentLimit)|round(0, 'ceil') }},
'perPage': 5,
'itemsInRow': 2,
'recordsArrayName': 'profiles',
});
});
</script>
{% include 'ShowMore/_show_more.base.html.twig' %}