Created
February 18, 2021 15:59
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This code snippet has dependency on immutable.js in order to make skip and take work.