O3 Framework / useOpenmrsPagination
useOpenmrsPagination<
T>(url,pageSize,options):object
Defined in: packages/framework/esm-react-utils/src/useOpenmrsPagination.ts:59
Most OpenMRS REST endpoints that return a list of objects, such as getAll or search, are server-side paginated. The server limits the max number of results being returned, and multiple requests are needed to get the full data set if its size exceeds this limit. The max number of results per request is configurable server-side with the key “webservices.rest.maxResultsDefault”. See: https://openmrs.atlassian.net/wiki/spaces/docs/pages/25469882/REST+Module
For any UI that displays a paginated view of the full data set, we MUST handle the server-side pagination properly, or else the UI does not correctly display the full data set. This hook does that by providing callback functions for navigating to different pages of the results, and lazy-loads the data on each page as needed.
Note that this hook is not suitable for use for situations that require client-side sorting or filtering of the data set. In that case, all data must be loaded onto client-side first.
T
The URL of the paginated rest endpoint.
It should be populated with any needed GET params, except limit, startIndex or totalCount,
which will be overridden and manipulated by the goTo* callbacks.
Similar to useSWR, this param can be null to disable fetching.
string |
URL |
number
The number of results to return per page / fetch. Note that this value MUST NOT exceed “webservices.rest.maxResultsAbsolute”, which should be reasonably high by default (1000).
UseServerPaginationOptions<OpenMRSPaginatedResponse<T>> = {}
The options object
currentPage:
number
currentPageSize:
MutableRefObject<number>
data:
undefined|T[]
error:
any
The error object thrown by the fetcher function.
goTo: (
page) =>void
number
void
goToNext: () =>
void
void
goToPrevious: () =>
void
void
isLoading:
boolean
isValidating:
boolean
mutate:
KeyedMutator<FetchResponse<OpenMRSPaginatedResponse<T>>>
paginated:
boolean
showNextButton:
boolean
showPreviousButton:
boolean
totalCount:
number=totalCount.current
totalPages:
number
useOpenmrsInfiniteuseOpenmrsFetchAllusePagination for pagination of client-side data
@see useFhirPagination``