mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
@@ -29,8 +29,7 @@ pagination.create = function (currentPage, pageCount, queryObj) {
|
||||
if (startPage > pageCount - 5) {
|
||||
startPage -= 2 - (pageCount - currentPage);
|
||||
}
|
||||
let i;
|
||||
for (i = 0; i < 5; i += 1) {
|
||||
for (let i = 0; i < 5; i += 1) {
|
||||
pagesToShow.push(startPage + i);
|
||||
}
|
||||
|
||||
@@ -45,10 +44,11 @@ pagination.create = function (currentPage, pageCount, queryObj) {
|
||||
return { page: page, active: page === currentPage, qs: qs.stringify(queryObj) };
|
||||
});
|
||||
|
||||
for (i = pages.length - 1; i > 0; i -= 1) {
|
||||
for (let i = pages.length - 1; i > 0; i -= 1) {
|
||||
const prevPage = pages[i].page - 1;
|
||||
if (pages[i].page - 2 === pages[i - 1].page) {
|
||||
pages.splice(i, 0, { page: pages[i].page - 1, active: false, qs: qs.stringify(queryObj) });
|
||||
} else if (pages[i].page - 1 !== pages[i - 1].page) {
|
||||
pages.splice(i, 0, { page: prevPage, active: false, qs: qs.stringify({ ...queryObj, page: prevPage }) });
|
||||
} else if (prevPage !== pages[i - 1].page) {
|
||||
pages.splice(i, 0, { separator: true });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,18 @@ describe('Pagination', () => {
|
||||
done();
|
||||
});
|
||||
|
||||
it('should create pagination for 18 pages and should not turn page 3 into separator', (done) => {
|
||||
const data = pagination.create(6, 18);
|
||||
// [1, 2, 3, 4, 5, (6), 7, 8, seperator, 17, 18]
|
||||
assert.equal(data.pages.length, 11);
|
||||
assert.equal(data.rel.length, 2);
|
||||
assert.strictEqual(data.pages[2].qs, 'page=3');
|
||||
assert.equal(data.pageCount, 18);
|
||||
assert.equal(data.prev.page, 5);
|
||||
assert.equal(data.next.page, 7);
|
||||
done();
|
||||
});
|
||||
|
||||
it('should create pagination for 3 pages with query params', (done) => {
|
||||
const data = pagination.create(1, 3, { key: 'value' });
|
||||
assert.equal(data.pages.length, 3);
|
||||
|
||||
Reference in New Issue
Block a user