From 78a5d3917e69cd15da6a5975872a347266b139ae Mon Sep 17 00:00:00 2001 From: Alex Cheung Date: Fri, 9 May 2025 00:19:40 +0800 Subject: [PATCH] update public search criteria save --- src/auth/utils.js | 2 + .../Announcement/Search_Public/SearchForm.js | 20 ++++- src/pages/Announcement/Search_Public/index.js | 24 ++++-- src/pages/Message/Search/DataGrid.js | 51 +++++++----- src/pages/Message/Search/SearchForm.js | 7 +- src/pages/Message/Search/index.js | 69 ++++++++++------ src/pages/Payment/Search_Public/SearchForm.js | 3 +- src/pages/Payment/Search_Public/index.js | 18 ++++- src/pages/Proof/Search_GLD/SearchForm.js | 10 ++- src/pages/Proof/Search_Public/SearchForm.js | 9 ++- src/pages/Proof/Search_Public/index.js | 7 ++ .../ListPanel/SearchPublicNoticeForm.js | 16 ++++ .../ListPanel/SearchPublicNoticeTab.js | 80 ++++++++++++------- 13 files changed, 232 insertions(+), 84 deletions(-) diff --git a/src/auth/utils.js b/src/auth/utils.js index 28e527a..8c046b0 100644 --- a/src/auth/utils.js +++ b/src/auth/utils.js @@ -140,6 +140,8 @@ export const getSearchCriteria = (path) =>{ searchCriteria = JSON.parse(localStorage.getItem("searchCriteria")) if (searchCriteria.path === path){ return searchCriteria.data + } else { + return "" } } } \ No newline at end of file diff --git a/src/pages/Announcement/Search_Public/SearchForm.js b/src/pages/Announcement/Search_Public/SearchForm.js index 9fd286c..ad249d1 100644 --- a/src/pages/Announcement/Search_Public/SearchForm.js +++ b/src/pages/Announcement/Search_Public/SearchForm.js @@ -39,6 +39,22 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, onGridReady }) => setToDateValue(maxDate); }, [maxDate]); + const _sx = { + padding: "4 2 4 2", + boxShadow: 1, + border: 1, + borderColor: '#DDD', + '& .MuiDataGrid-cell': { + borderTop: 1, + borderBottom: 1, + borderColor: "#EEE" + }, + '& .MuiDataGrid-footerContainer': { + border: 1, + borderColor: "#EEE" + } + } + const marginBottom = 2.5; const { reset, register, handleSubmit } = useForm() const onSubmit = (data) => { @@ -61,6 +77,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, onGridReady }) => setMinDate(DateUtils.dateValue(new Date().setDate(new Date().getDate()-14))) setMaxDate(DateUtils.dateValue(new Date())) reset(); + localStorage.setItem('searchCriteria',"") } @@ -68,7 +85,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, onGridReady }) =>
@@ -187,6 +204,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, onGridReady }) => variant="contained" type="submit" disabled={onGridReady} + aria-label={intl.formatMessage({id: 'submit'})} > diff --git a/src/pages/Announcement/Search_Public/index.js b/src/pages/Announcement/Search_Public/index.js index 780d302..cece798 100644 --- a/src/pages/Announcement/Search_Public/index.js +++ b/src/pages/Announcement/Search_Public/index.js @@ -14,6 +14,7 @@ const SearchForm = Loadable(React.lazy(() => import('./SearchForm'))); const EventTable = Loadable(React.lazy(() => import('./DataGrid'))); import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import { FormattedMessage } from "react-intl"; +import { getSearchCriteria } from "auth/utils"; const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -29,21 +30,32 @@ const BackgroundHead = { const UserSearchPage_Individual = () => { - const [searchCriteria, setSearchCriteria] = React.useState({ - dateTo: DateUtils.dateValue(new Date()), - dateFrom: DateUtils.dateValue(new Date().setDate(new Date().getDate() - 90)), - }); + const [searchCriteria, setSearchCriteria] = React.useState({}); const [onReady, setOnReady] = React.useState(false); const [onGridReady, setGridOnReady] = React.useState(false); React.useEffect(() => { - setOnReady(true); + if (Object.keys(getSearchCriteria(window.location.pathname)).length>0){ + setSearchCriteria(getSearchCriteria(window.location.pathname)) + }else{ + localStorage.setItem('searchCriteria',"") + setSearchCriteria({ + dateTo: DateUtils.dateValue(new Date()), + dateFrom: DateUtils.dateValue(new Date().setDate(new Date().getDate()-14)), + }) + } + }, []); + + React.useEffect(() => { + if(Object.keys(searchCriteria).length>0){ + setOnReady(true); + } }, [searchCriteria]); function applySearch(input) { - setGridOnReady(true) setSearchCriteria(input); + localStorage.setItem('searchCriteria', JSON.stringify({path:window.location.pathname,data:input})) } function applyGridOnReady(input) { diff --git a/src/pages/Message/Search/DataGrid.js b/src/pages/Message/Search/DataGrid.js index 9c04a2e..60c4a1f 100644 --- a/src/pages/Message/Search/DataGrid.js +++ b/src/pages/Message/Search/DataGrid.js @@ -5,13 +5,21 @@ import { useNavigate } from "react-router-dom"; import { FiDataGrid } from "components/FiDataGrid"; import {useIntl} from "react-intl"; import { clickableLink } from 'utils/CommonFunction'; +import {GET_MSG_LIST} from "utils/ApiPathConst"; + // ==============================|| EVENT TABLE ||============================== // -export default function MsgTable({ recordList }) { - const [rows, setRows] = React.useState(recordList); +export default function MsgTable({ searchCriteria, applyGridOnReady }) { + const navigate = useNavigate() const intl = useIntl(); + const [_searchCriteria, set_searchCriteria] = React.useState(searchCriteria); + + React.useEffect(() => { + set_searchCriteria(searchCriteria); + }, [searchCriteria]); + const _sx = { padding: "4 2 4 2", boxShadow: 1, @@ -25,25 +33,24 @@ export default function MsgTable({ recordList }) { '& .MuiDataGrid-footerContainer': { border: 1, borderColor: "#EEE" - } + }, + "& .MuiDataGrid-columnHeaderTitle": { + whiteSpace: "normal", + lineHeight: "normal" + }, + "& .MuiDataGrid-columnHeader": { + // Forced to use important since overriding inline styles + height: "unset !important" + }, } - - React.useEffect(() => { - setRows(recordList); - }, [recordList]); - - const handleEditClick = (params) => () => { - navigate('/msg/details/' + params.row.id); - }; - const columns = [ { id: 'sentDate', field: 'sentDate', headerName: intl.formatMessage({id: 'date'}), width: 170, - renderCell: (params) => { - return DateUtils.datetimeStr(params.row.sentDate); + valueGetter: (params) => { + return DateUtils.datetimeStr(params?.value); }, }, { @@ -57,16 +64,24 @@ export default function MsgTable({ recordList }) { }, ]; + function handleEditClick(params) { + navigate('/msg/details/' + params.row.id); + } + return ( -
+
'auto'} onRowDoubleClick={handleEditClick} + applyGridOnReady={applyGridOnReady} + doLoad={React.useMemo(() => ({ + url: GET_MSG_LIST, + params: _searchCriteria, + }), [_searchCriteria])} />
); diff --git a/src/pages/Message/Search/SearchForm.js b/src/pages/Message/Search/SearchForm.js index f53b157..06123b9 100644 --- a/src/pages/Message/Search/SearchForm.js +++ b/src/pages/Message/Search/SearchForm.js @@ -21,7 +21,7 @@ import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; // ==============================|| DASHBOARD - DEFAULT ||============================== // -const SearchForm = ({ applySearch, searchCriteria }) => { +const SearchForm = ({ applySearch, searchCriteria, onGridReady }) => { const intl = useIntl(); const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); @@ -64,7 +64,7 @@ const SearchForm = ({ applySearch, searchCriteria }) => { sentDateTo = DateUtils.dateValue(toDateValue) } const temp = { - keywork: data.keywork, + keyword: data.keyword, dateFrom: sentDateFrom, dateTo: sentDateTo, }; @@ -75,6 +75,8 @@ const SearchForm = ({ applySearch, searchCriteria }) => { setMinDate(DateUtils.dateValue(new Date().setDate(new Date().getDate()-14))) setMaxDate(DateUtils.dateValue(new Date())) reset(); + localStorage.setItem('searchCriteria',"") + } @@ -196,6 +198,7 @@ const SearchForm = ({ applySearch, searchCriteria }) => {