export function listPageOptions()

in frontend/src/components/paginator/index.js [3:35]


export function listPageOptions(page, lastPage) {
  let pageOptions = [1];
  if (lastPage === 0) {
    return pageOptions;
  }
  if (page === 0 || page > lastPage) {
    return pageOptions.concat([2, '...', lastPage]);
  }
  if (lastPage > 5) {
    if (page < 3) {
      return pageOptions.concat([2, 3, '...', lastPage]);
    }
    if (page === 3) {
      return pageOptions.concat([2, 3, 4, '...', lastPage]);
    }
    if (page === lastPage) {
      return pageOptions.concat(['...', page - 2, page - 1, lastPage]);
    }
    if (page === lastPage - 1) {
      return pageOptions.concat(['...', page - 1, page, lastPage]);
    }
    if (page === lastPage - 2) {
      return pageOptions.concat(['...', page - 1, page, page + 1, lastPage]);
    }
    return pageOptions.concat(['...', page - 1, page, page + 1, '...', lastPage]);
  } else {
    let range = [];
    for (let i = 1; i <= lastPage; i++) {
      range.push(i);
    }
    return range;
  }
}