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