violet-paginator
Version:
Display, paginate, sort, filter, and update items from the server. violet-paginator is a complete list management library for react/redux applications.
105 lines (88 loc) • 1.45 kB
JavaScript
let [
pageParam,
pageSizeParam,
sortParam,
sortOrderParam,
useBooleanOrdering,
totalCountProp,
resultsProp,
idProp
] = [
'page',
'pageSize',
'sort',
'sortOrder',
false,
'total_count',
'results',
'id'
]
export function responseProps() {
return [totalCountProp, resultsProp]
}
export function recordProps() {
return { identifier: idProp }
}
export function configurePageParams({
page,
perPage,
sort,
sortOrder,
sortReverse,
totalCount,
results,
id
}) {
if (page) {
pageParam = page
}
if (perPage) {
pageSizeParam = perPage
}
if (sort) {
sortParam = sort
}
if (sortOrder) {
sortOrderParam = sortOrder
}
if (totalCount) {
totalCountProp = totalCount
}
if (results) {
resultsProp = results
}
if (id) {
idProp = id
}
useBooleanOrdering = !!sortReverse
}
function sortDirection(value) {
if (useBooleanOrdering) {
return value
}
return value ? 'desc' : 'asc'
}
function sortParams(paginator) {
if (paginator.get('sort')) {
return {
[sortParam]: paginator.get('sort'),
[sortOrderParam]: sortDirection(paginator.get('sortReverse'))
}
}
return {}
}
export function translate(paginator) {
const {
page,
pageSize,
filters
} = paginator.toJS()
return {
query: {
[pageParam]: page,
[pageSizeParam]: pageSize,
...sortParams(paginator),
...filters
}
}
}