Is it possible calculate two pages with the same indexes of items. Because I have a big table and I need to split it to left and right page. Left and right page have to have the same indexes of items. It's needed to split it, because it will be printing to pdf.
Example:
itemsPerPage = 5
totalItems = 16
totalPages = 8
__________________
page: indexOfItems
__________________
0: 0,1,2,3,4
1: 0,1,2,3,4
2: 5,6,7,8,9
3: 5,6,7,8,9
4: 10,11,12,13,14
5: 10,11,12,13,14
6: 15
7: 15
This should be console written:
_______________________________
"Current page 0: 0 - 4."
"Current page 1: 0 - 4."
"Current page 2: 5 - 9."
"Current page 3: 5 - 9."
"Current page 4: 10 - 14."
"Current page 5: 10 - 14."
"Current page 6: 15 - 15."
"Current page 7: 15 - 15."
const paginate = (totalItems: number, currentPage: number, pageSize: number) => {
let startIndex: number = 0;
let endIndex: number = 0;
if (currentPage % 2 === 0) {
// even page
startIndex = (currentPage - 1) * pageSize;
endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
} else {
// odd page
startIndex = (currentPage) * pageSize;
endIndex = (currentPage * itemsPerPage) < totalItems ? (currentPage * itemsPerPage) : totalItems;
}
return {
totalItems: totalItems,
currentPage: currentPage,
itemsPerPage: pageSize,
startIndex: startIndex,
endIndex: endIndex
};
}
const numberOfItems:number = 16;
const itemsPerPage:number = 5;
const numberOfPages:number = Math.ceil(numberOfItems / itemsPerPage) * 2;
let pg: any = {};
for (let i = 0; i < numberOfPages; i++) {
pg = paginate(numberOfItems, i, itemsPerPage);
console.log(`Current page ${pg.currentPage}: ${pg.startIndex} - ${pg.endIndex}.`)
// next code...
}
Any idea for algorithm?