الرئيسية
▾
اللعبة
تجربة
خدماتنا
دليل الألعاب
من نحن
صورة اليوم من ناسا
اللعبة
' + total + ' صفحة · ' + grid._allFiltered.length + ' بطاقة'; var btns = '
‹ السابق
'; var maxButtons = 7; var pages = []; if (total <= maxButtons) { for (var i = 1; i <= total; i++) pages.push(i); } else { pages.push(1); if (current > 3) pages.push('...'); var s = Math.max(2, current - 1); var e = Math.min(total - 1, current + 1); for (var i = s; i <= e; i++) pages.push(i); if (current < total - 2) pages.push('...'); pages.push(total); } pages.forEach(function(p) { if (p === '...') { btns += '
…
'; } else { btns += '
' + p + '
'; } }); btns += '
التالي ›
'; container.innerHTML = info + btns; } function applyOne(grid) { var filters = readFilters(); var allCards = Array.from(grid.querySelectorAll('[data-bp-card]')); var filtered = allCards.filter(function(c) { return matchesFilters(c, filters); }); grid._allFiltered = filtered; var size = grid._pageSize; var total = size === -1 ? 1 : Math.max(1, Math.ceil(filtered.length / size)); if (grid._currentPage > total) grid._currentPage = 1; var start = size === -1 ? 0 : (grid._currentPage - 1) * size; var end = size === -1 ? filtered.length : start + size; allCards.forEach(function(c) { var idxInFiltered = filtered.indexOf(c); var visible = idxInFiltered !== -1 && idxInFiltered >= start && idxInFiltered < end; c.style.display = visible ? '' : 'none'; }); renderPaginationButtons(grid, total, grid._currentPage); } function applyAll() { grids.forEach(applyOne); } document.querySelectorAll('[data-bp-cards-grid]').forEach(function(grid) { grids.push(grid); grid._currentPage = 1; var def = parseInt(grid.getAttribute('data-bp-page-size-default') || '9', 10); grid._pageSize = def; var ps = grid.querySelector('[data-bp-page-size]'); if (ps) { ps.addEventListener('change', function() { grid._pageSize = parseInt(ps.value, 10); grid._currentPage = 1; applyOne(grid); }); } var pgContainer = grid.querySelector('[data-bp-pagination]'); if (pgContainer) { pgContainer.addEventListener('click', function(e) { var t = e.target; if (t.hasAttribute('data-bp-pg-prev') && grid._currentPage > 1) { grid._currentPage--; applyOne(grid); window.scrollTo({ top: grid.offsetTop - 80, behavior: 'smooth' }); } else if (t.hasAttribute('data-bp-pg-next')) { grid._currentPage++; applyOne(grid); window.scrollTo({ top: grid.offsetTop - 80, behavior: 'smooth' }); } else if (t.hasAttribute('data-bp-pg-num')) { grid._currentPage = parseInt(t.getAttribute('data-bp-pg-num'), 10); applyOne(grid); window.scrollTo({ top: grid.offsetTop - 80, behavior: 'smooth' }); } }); } }); document.querySelectorAll('[data-bp-filter-field]').forEach(function(el) { var ev = el.tagName === 'INPUT' && el.type === 'text' ? 'input' : 'change'; el.addEventListener(ev, function() { grids.forEach(function(g) { g._currentPage = 1; }); applyAll(); }); }); applyAll(); })();