From c4e7d92cf5614dbd549da4414c4ccd1fc281a1b6 Mon Sep 17 00:00:00 2001 From: Jason Chuang Date: Sat, 8 Aug 2026 16:51:40 +0800 Subject: [PATCH] CR023 - application search with issues, no paging --- src/components/FiDataGrid.js | 35 ++++++++++++++----- .../PublicNotice/Search_GLD/SearchForm.js | 10 ++++-- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/components/FiDataGrid.js b/src/components/FiDataGrid.js index d64d9ec..f3d82b2 100644 --- a/src/components/FiDataGrid.js +++ b/src/components/FiDataGrid.js @@ -9,6 +9,12 @@ import { FormattedMessage, useIntl } from "react-intl"; import { TablePagination, Typography } from '@mui/material'; import { getSearchCriteria, checkSearchCriteriaPath } from "auth/utils"; +/** When Gazette Issue No. is selected, load all matching rows (no start/limit). */ +function hasGazetteIssueFilter(params) { + const issueId = params?.issueId; + return issueId != null && issueId !== ""; +} + // ==============================|| EVENT TABLE ||============================== // export function FiDataGrid({ rows, columns, sx, autoHeight = true, @@ -107,8 +113,13 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, delete params.sort; delete params.direction; } - params.start = 0; - params.limit = pageSize; + if (hasGazetteIssueFilter(params)) { + delete params.start; + delete params.limit; + } else { + params.start = 0; + params.limit = pageSize; + } if (applySearch != undefined) { applySearch(params); @@ -118,6 +129,9 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, } }; + const ignorePaging = hasGazetteIssueFilter(_doLoad?.params); + const effectivePagination = pagination && !ignorePaging; + useEffect(() => { getDataList(); }, [_doLoad, page]); @@ -201,8 +215,13 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, if (_doLoad.params == undefined) return; if (_doLoad.params.searchCriteria !== undefined) return; if (_doLoad.params == null) _doLoad.params = {}; - _doLoad.params.start = page * pageSize; - _doLoad.params.limit = pageSize; + if (hasGazetteIssueFilter(_doLoad.params)) { + delete _doLoad.params.start; + delete _doLoad.params.limit; + } else { + _doLoad.params.start = page * pageSize; + _doLoad.params.limit = pageSize; + } if(checkSearchCriteriaPath(window.location.pathname)){ if(window.location.pathname === "/publicNotice"){ if (tab != undefined && tab ==="application"){ @@ -289,13 +308,13 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, disableColumnMenu shrinkWrap rowModesModel={_rowModesModel} - pageSizeOptions={pagination ? _pageSizeOptions : []} + pageSizeOptions={effectivePagination ? _pageSizeOptions : []} editMode={_editMode} autoHeight={effectiveAutoHeight} hideFooterSelectedRowCount={myHideFooterSelectedRowCount} filterModel={{ items: _filterItems }} loading={loading} - paginationMode={pagination ? "server" : undefined} + paginationMode={effectivePagination ? "server" : undefined} sortingMode={serverSorting ? "server" : undefined} sortModel={serverSorting ? sortModel : undefined} onSortModelChange={serverSorting ? handleSortModelChange : undefined} @@ -306,7 +325,7 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, overflowX: height || maxHeight ? 'auto' : 'visible', }, // 👇 completely hide the footer when pagination is off - ...(pagination === false && { + ...(!effectivePagination && { '& .MuiDataGrid-footerContainer': { display: 'none', }, @@ -314,7 +333,7 @@ export function FiDataGrid({ rows, columns, sx, autoHeight = true, }} components={{ NoRowsOverlay: CustomNoRowsOverlay, - ...(pagination + ...(effectivePagination ? { Pagination: () => (