Browse Source

CR023 - application search with issues, no paging

CR023
Jason Chuang 12 hours ago
parent
commit
c4e7d92cf5
2 changed files with 35 additions and 10 deletions
  1. +27
    -8
      src/components/FiDataGrid.js
  2. +8
    -2
      src/pages/PublicNotice/Search_GLD/SearchForm.js

+ 27
- 8
src/components/FiDataGrid.js View File

@@ -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: () => (
<TablePagination


+ 8
- 2
src/pages/PublicNotice/Search_GLD/SearchForm.js View File

@@ -170,9 +170,15 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData, o
groupNo: data.groupNo,
gazettGroup: groupSelected?.title,
mode: (data.mode === '' || data.mode?.includes("all")) ? "" : data.mode,
start:0,
limit:10
};
// Gazette Issue No. search loads all matching rows (no paging)
if (issueSelected?.id) {
delete temp.start;
delete temp.limit;
} else {
temp.start = 0;
temp.limit = 10;
}
if (searchCriteria?.sort && searchCriteria?.direction) {
temp.sort = searchCriteria.sort;
temp.direction = searchCriteria.direction;


Loading…
Cancel
Save