Skip to content

Instantly share code, notes, and snippets.

@Steven24K
Created February 18, 2021 15:59
Show Gist options
  • Save Steven24K/801781a7ad970f05fa11170a6aebebea to your computer and use it in GitHub Desktop.
Save Steven24K/801781a7ad970f05fa11170a6aebebea to your computer and use it in GitHub Desktop.
A basic paginator written in Typescript. This is usefull when the backend does not support pagination, but you still need some sort of pagination functionality.
export interface Page<T> {
items: T[]
index: number
total_pages: number
page_size: number
current_page: number
}
export const getPage = <T>(list: T[], page_index: number, page_size: number): Page<T> => {
let imList = List(list)
let res = imList.skip(page_index * page_size).take(page_size).toArray()
//let res = list.splice(page_index * page_size).slice(0, page_size) // When immutable js is not available
let total_items = list.length
let total_pages = Math.ceil(total_items / page_size)
if (total_items < page_size) total_pages = 1
return ({ index: page_index, items: res, total_pages: total_pages, current_page: page_index, page_size: page_size })
}
Copy link

ghost commented May 3, 2021

This code snippet has dependency on immutable.js in order to make skip and take work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment