Pagination with the same indexes of items in two pages

Viewed 32

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?

0 Answers
Related