persist and set paging clientside

This commit is contained in:
dannyrb 2020-05-12 12:38:22 -04:00 committed by James A. Petts
parent 1979928d59
commit 1ec580be5d

View File

@ -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),
}; };