From 4f99d66a26ac2da55b05b7ae7895e3b8ca134884 Mon Sep 17 00:00:00 2001 From: Alexey Safronov Date: Tue, 30 Jul 2019 17:00:56 +0300 Subject: [PATCH] web: People: Changed filter work --- .../pages/Home/Section/Paging/index.js | 54 +++++--- .../ASC.People/Client/src/helpers/filter.js | 118 +++++++----------- 2 files changed, 78 insertions(+), 94 deletions(-) diff --git a/products/ASC.People/Client/src/components/pages/Home/Section/Paging/index.js b/products/ASC.People/Client/src/components/pages/Home/Section/Paging/index.js index fdc63abb5d..cc2129be58 100644 --- a/products/ASC.People/Client/src/components/pages/Home/Section/Paging/index.js +++ b/products/ASC.People/Client/src/components/pages/Home/Section/Paging/index.js @@ -32,61 +32,75 @@ import Filter from '../../../../../helpers/filter'; } ];*/ - const SectionPagingContent = ({ fetchPeople, filter }) => { const onNextClick = useCallback(e => { - if(!filter.hasNext) { + if(!filter.hasNext()) { e.preventDefault(); return; } console.log("Next Clicked", e); - const newFilter = Filter.nextPage(filter); + + const newFilter = filter.clone(); + newFilter.page++; fetchPeople(newFilter); + }, [filter, fetchPeople]); const onPrevClick = useCallback(e => { - if(!filter.hasPrev) { + if(!filter.hasPrev()) { e.preventDefault(); return; } + console.log("Prev Clicked", e); - const newFilter = Filter.prevPage(filter); + + const newFilter = filter.clone(); + newFilter.page--; fetchPeople(newFilter); + }, [filter, fetchPeople]); - const onChangePageSize = useCallback(pageCount => { - const newFilter = new Filter(0, pageCount, filter.total, filter.sortby, filter.sortorder, filter.employeestatus, filter.activationstatus); + const onChangePageSize = useCallback(pageItem => { + console.log("Paging onChangePageSize", pageItem); + + const newFilter = filter.clone(); + newFilter.page = 0; + newFilter.pageCount = pageItem.key; fetchPeople(newFilter); + }, [filter, fetchPeople]); + /*const onChangePage = useCallback(pageItem => { + console.log("Paging onChangePage", pageItem); + }, []);*/ + const perPageItems = useMemo(() => [ { - key: "25", - label: "25 per page", - onClick: () => onChangePageSize(25) + key: 25, + label: "25 per page" }, { - key: "50", - label: "50 per page", - onClick: () => onChangePageSize(50) + key: 50, + label: "50 per page" }, { - key: "100", - label: "100 per page", - onClick: () => onChangePageSize(100) + key: 100, + label: "100 per page" } - ], [onChangePageSize]); + ], []); console.log("SectionPagingContent render", filter); return ( pageCount; - this.hasPrev = page > 0; } + getStartIndex = () => { + return this.page * this.pageCount; + }; + + hasNext = () => { + return this.total - this.getStartIndex() > this.pageCount; + }; + + hasPrev = () => { + return this.page > 0; + }; + toDto = () => { const { - startIndex, pageCount, - sortby, - sortorder, - employeestatus, - activationstatus + sortBy, + sortOrder, + employeeStatus, + activationStatus } = this; return { - StartIndex: startIndex, + StartIndex: this.getStartIndex(), Count: pageCount, - sortby, - sortorder, - employeestatus, - activationstatus + sortby: sortBy, + sortorder: sortOrder, + employeestatus: employeeStatus, + activationstatus: activationStatus }; }; toUrlParams = () => { - return toUrlParams(this.toDto(), true); + const dtoFilter = this.toDto(); + const str = toUrlParams(dtoFilter, true); + return str; }; + + clone() { + return new Filter( + this.page, + this.pageCount, + this.total, + this.sortBy, + this.sortOrder, + this.employeeStatus, + this.activationStatus + ); + } } export default Filter;