getPages method

dynamic getPages(
  1. num page,
  2. num length,
  3. num resultsPerPage
)

@param{page} current page number @param{numberOfResults} number of query results @param{resultsPerPage} number of result we want to show in one time @return array of numbers, which will be dsplayed as pages in the pagination widget, for instance: 4, 5, 6, 7, 8

Implementation

getPages(num page, num length, num resultsPerPage) {
  List result = [];
  if (page > 3) {
    if (length == resultsPerPage) {
      for (num i = page - 2; i <= page + 2; i++) {
        result.add(i);
      }
      return result;
    } else {
      num start = page == 4 ? page - 2 : page - 3;
      num end = page == 4 ? page + 1 : page;
      for (num i = start; i <= end; i++) {
        result.add(i);
      }
      return result;
    }
  }

  if (page <= 3) {
    for (num i = 2; i < 6; i++) {
      result.add(i);
    }
    return result;
  }

  return [];
}