Sunday, November 11, 2012

Logic for Pagination.

// mainData    : list of items.
// pageSize    : number of items per page.
// totalPage   : finding the pagecount.
// currentPage : current page of the navigation.
// startIndex  : item start index for the current page.
// endIndex    : item end index for the current page.
// isIncompletePage : flag to indicate the incomplete page.

// Calculating total pages.

if ((mainData.length % pageZize) == 0) {
 totalPage = mainData.length / pageZize;
} else {
 totalPage = (mainData.length - (mainData.length % pageZize)) / pageZize;
 totalPage = totalPage + 1;
 isIncompletePage = true;
}

// initially first page.
startIndex = (currentPage * pageZize) - pageZize;
endIndex = (currentPage * pageZize) - 1;
if (endIndex >= mainData.length) {
 endIndex = mainData.length - 1;
}

// previous button.
function previous() {
 if (currentPage != 1) {
  currentPage = currentPage - 1;
  startIndex = (currentPage * pageZize) - pageZize;
  endIndex = (currentPage * pageZize) - 1;
 }
}

// next button
function next() {
 if (currentPage != totalPage) {
  currentPage = currentPage + 1;
  startIndex = (currentPage * pageZize) - pageZize;
  
  if (currentPage == totalPage) {
   if (isIncompletePage) {
    endIndex = ((currentPage * pageZize) - pageZize) + ((mainData.length % pageZize) - 1);
   } else {
    endIndex = (currentPage * pageZize) - 1;
   }
  } else {
   endIndex = (currentPage * pageZize) - 1;
  }
 }
}