persist and set paging clientside
This commit is contained in:
parent
1979928d59
commit
1ec580be5d
@ -32,9 +32,26 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
Object.assign({}, defaultFilterValues, queryFilterValues)
|
Object.assign({}, defaultFilterValues, queryFilterValues)
|
||||||
);
|
);
|
||||||
const debouncedFilterValues = useDebounce(filterValues, 500);
|
const debouncedFilterValues = useDebounce(filterValues, 500);
|
||||||
|
const { resultsPerPage, pageNumber } = filterValues;
|
||||||
// ~ Rows & Studies
|
// ~ Rows & Studies
|
||||||
const [expandedRows, setExpandedRows] = useState([]);
|
const [expandedRows, setExpandedRows] = useState([]);
|
||||||
const numOfStudies = studies.length;
|
const numOfStudies = studies.length;
|
||||||
|
const totalPages = Math.floor(numOfStudies / resultsPerPage);
|
||||||
|
|
||||||
|
const onPageNumberChange = newPageNumber => {
|
||||||
|
if (newPageNumber > totalPages) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setFilterValues({ ...filterValues, pageNumber: newPageNumber });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onResultsPerPageChange = newResultsPerPage => {
|
||||||
|
setFilterValues({
|
||||||
|
...filterValues,
|
||||||
|
pageNumber: 1,
|
||||||
|
resultsPerPage: Number(newResultsPerPage),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Set body style
|
// Set body style
|
||||||
useEffect(()=> {
|
useEffect(()=> {
|
||||||
@ -284,22 +301,6 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
|
||||||
const [perPage, setPerPage] = useState(25);
|
|
||||||
const totalPages = Math.floor(numOfStudies / perPage);
|
|
||||||
|
|
||||||
const onChangePage = page => {
|
|
||||||
if (page > totalPages) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setCurrentPage(page);
|
|
||||||
};
|
|
||||||
|
|
||||||
const onChangePerPage = perPage => {
|
|
||||||
setPerPage(perPage);
|
|
||||||
setCurrentPage(1);
|
|
||||||
};
|
|
||||||
|
|
||||||
const hasStudies = numOfStudies > 0;
|
const hasStudies = numOfStudies > 0;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -343,17 +344,17 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
<>
|
<>
|
||||||
<StudyListTable
|
<StudyListTable
|
||||||
tableDataSource={tableDataSource.slice(
|
tableDataSource={tableDataSource.slice(
|
||||||
(currentPage - 1) * perPage,
|
(pageNumber - 1) * resultsPerPage,
|
||||||
(currentPage - 1) * perPage + perPage
|
(pageNumber - 1) * resultsPerPage + resultsPerPage
|
||||||
)}
|
)}
|
||||||
numOfStudies={numOfStudies}
|
numOfStudies={numOfStudies}
|
||||||
filtersMeta={filtersMeta}
|
filtersMeta={filtersMeta}
|
||||||
/>
|
/>
|
||||||
<StudyListPagination
|
<StudyListPagination
|
||||||
onChangePage={onChangePage}
|
onChangePage={onPageNumberChange}
|
||||||
onChangePerPage={onChangePerPage}
|
onChangePerPage={onResultsPerPageChange}
|
||||||
currentPage={currentPage}
|
currentPage={pageNumber}
|
||||||
perPage={perPage}
|
perPage={resultsPerPage}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
@ -388,7 +389,7 @@ const defaultFilterValues = {
|
|||||||
accession: '',
|
accession: '',
|
||||||
sortBy: '',
|
sortBy: '',
|
||||||
sortDirection: 'none',
|
sortDirection: 'none',
|
||||||
page: 0,
|
pageNumber: 1,
|
||||||
resultsPerPage: 25,
|
resultsPerPage: 25,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -407,7 +408,7 @@ function _getQueryFilterValues(query) {
|
|||||||
accession: query.get('accession'),
|
accession: query.get('accession'),
|
||||||
sortBy: query.get('soryBy'),
|
sortBy: query.get('soryBy'),
|
||||||
sortDirection: query.get('sortDirection'),
|
sortDirection: query.get('sortDirection'),
|
||||||
page: _tryParseInt(query.get('page'), undefined),
|
pageNumber: _tryParseInt(query.get('pageNumber'), undefined),
|
||||||
resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined),
|
resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user