{% set totalPages = (profiles.totalCount / profiles.currentLimit)|round(0, 'ceil') %}
<div class="d-flex justify-content-center" id="showmore_container">
<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"
type="button" id="showMoreBtnShowMore" data-show-ignore>Показать еще</button>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
window.moreLoader = new MoreLoader({
'btnMoreSelector': '#showMoreBtnShowMore',
'containerSelector': '#profile-list',
'receiveRenderedResponse': true,
'responseCallback': function(response) {
const profileListRoot = document.getElementById('profile-list');
const existIdSet = new Set([...profileListRoot.querySelectorAll('.models-item-col')].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('.models-item-col')];
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';
});
document.querySelectorAll('img.lazy').forEach(function (el) {
if (el.hasAttribute('data-src'))
el.src = el.dataset.src;
});
document.dispatchEvent(new Event("filter:load:finish"));
},
'templateSelector': null,
'url': '{{ app.request.requestUri }}',
'urlCity': '{{ app.request.attributes.get('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' %}