From 3113818a9199b0e8e7ed7245baf184eb4cccd8c5 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Tue, 28 Apr 2026 16:44:23 -0700 Subject: [PATCH] IO-3650 Pagination Corrections Signed-off-by: Allan Carr --- .../owners-list/owners-list.component.jsx | 17 +++++++++------ .../owners-list/owners-list.container.jsx | 11 +++++++--- .../parts-queue.list.component.jsx | 18 +++++++++++----- .../vehicles-list/vehicles-list.component.jsx | 17 +++++++++------ .../vehicles-list/vehicles-list.container.jsx | 10 ++++++--- .../export-logs.page.component.jsx | 21 +++++++++++++------ 6 files changed, 65 insertions(+), 29 deletions(-) diff --git a/client/src/components/owners-list/owners-list.component.jsx b/client/src/components/owners-list/owners-list.component.jsx index eefec34ca..e6fe1efb9 100644 --- a/client/src/components/owners-list/owners-list.component.jsx +++ b/client/src/components/owners-list/owners-list.component.jsx @@ -11,12 +11,13 @@ import ResponsiveTable from "../responsive-table/responsive-table.component"; export default function OwnersListComponent({ loading, owners, total, refetch }) { const search = queryString.parse(useLocation().search); - const { - page - // sortcolumn, sortorder - } = search; + const { page, pageSize } = search; const history = useNavigate(); + const currentPage = Number.parseInt(page || "1", 10); + const parsedPageSize = Number.parseInt(pageSize || String(pageLimit), 10); + const currentPageSize = Number.isNaN(parsedPageSize) ? pageLimit : parsedPageSize; + const [state, setState] = useState({ sortedInfo: {}, filteredInfo: { text: "" } @@ -71,10 +72,14 @@ export default function OwnersListComponent({ loading, owners, total, refetch }) ]; const handleTableChange = (pagination, filters, sorter) => { + const nextPageSize = pagination?.pageSize || currentPageSize; + const pageSizeChanged = nextPageSize !== currentPageSize; + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); const updatedSearch = { ...search, - page: pagination.current, + pageSize: nextPageSize, + page: pageSizeChanged ? 1 : pagination.current, sortcolumn: sorter.columnKey, sortorder: sorter.order }; @@ -119,7 +124,7 @@ export default function OwnersListComponent({ loading, owners, total, refetch }) > { - // searchParams.page = pagination.current; + const nextPageSize = pagination?.pageSize || currentPageSize; + const pageSizeChanged = nextPageSize !== currentPageSize; + + searchParams.pageSize = nextPageSize; + searchParams.page = pageSizeChanged ? 1 : pagination.current; searchParams.sortcolumn = sorter.columnKey; searchParams.sortorder = sorter.order; @@ -315,9 +322,10 @@ export function PartsQueueListComponent({ bodyshop }) { loading={loading} pagination={{ placement: "top", - pageSize: pageLimit - // current: parseInt(page || 1), - // total: data && data.jobs_aggregate.aggregate.count, + pageSize: currentPageSize, + current: currentPage, + showSizeChanger: true, + total: jobs.length }} columns={columns} mobileColumnKeys={["ro_number", "ownr_ln", "status", "vehicle", "partsstatus"]} diff --git a/client/src/components/vehicles-list/vehicles-list.component.jsx b/client/src/components/vehicles-list/vehicles-list.component.jsx index 41cc1d764..5d6b33fc8 100644 --- a/client/src/components/vehicles-list/vehicles-list.component.jsx +++ b/client/src/components/vehicles-list/vehicles-list.component.jsx @@ -11,12 +11,13 @@ import ResponsiveTable from "../responsive-table/responsive-table.component"; export default function VehiclesListComponent({ loading, vehicles, total, refetch, basePath = "/manage" }) { const search = queryString.parse(useLocation().search); - const { - page - //sortcolumn, sortorder, - } = search; + const { page, pageSize } = search; const history = useNavigate(); + const currentPage = Number.parseInt(page || "1", 10); + const parsedPageSize = Number.parseInt(pageSize || String(pageLimit), 10); + const currentPageSize = Number.isNaN(parsedPageSize) ? pageLimit : parsedPageSize; + const [state, setState] = useState({ sortedInfo: {}, filteredInfo: { text: "" } @@ -62,10 +63,14 @@ export default function VehiclesListComponent({ loading, vehicles, total, refetc ]; const handleTableChange = (pagination, filters, sorter) => { + const nextPageSize = pagination?.pageSize || currentPageSize; + const pageSizeChanged = nextPageSize !== currentPageSize; + setState({ ...state, filteredInfo: filters, sortedInfo: sorter }); const updatedSearch = { ...search, - page: pagination.current, + pageSize: nextPageSize, + page: pageSizeChanged ? 1 : pagination.current, sortcolumn: sorter.columnKey, sortorder: sorter.order }; @@ -106,7 +111,7 @@ export default function VehiclesListComponent({ loading, vehicles, total, refetc > ; const handleTableChange = (pagination, filters, sorter) => { - searchParams.page = pagination.current; + const nextPageSize = pagination?.pageSize || currentPageSize; + const pageSizeChanged = nextPageSize !== currentPageSize; + + searchParams.pageSize = nextPageSize; + searchParams.page = pageSizeChanged ? 1 : pagination.current; searchParams.sortcolumn = sorter.columnKey; searchParams.sortorder = sorter.order; if (filters.status) { @@ -191,8 +199,9 @@ export function ExportLogsPageComponent() { loading={loading} pagination={{ placement: "top", - pageSize: pageLimit, - current: parseInt(page || 1, 10), + pageSize: currentPageSize, + current: currentPage, + showSizeChanger: true, total: data && data.search_exportlog_aggregate.aggregate.count }} columns={columns}