Merge branch 'feature/rest_dataTable_cache' into 'develop'

add reset button for reset local storage and update state renamed

See merge request witel-front-end/rms!11
This commit is contained in:
AmirHossein Mahmoodi
2024-07-14 12:55:22 +00:00
5 changed files with 54 additions and 11 deletions

View File

@@ -0,0 +1,22 @@
"use client";
import { IconButton, Tooltip } from "@mui/material";
import AutorenewIcon from "@mui/icons-material/Autorenew";
import useTableSetting from "@/lib/hooks/useTableSetting";
function ResetStorage({ user_id, page_name, table_name }) {
const { resetAction } = useTableSetting();
const reset = () => {
resetAction(user_id, page_name, table_name);
};
return (
<Tooltip title="بازنشانی اطلاعات">
<IconButton onClick={reset} aria-label="reset table data">
<AutorenewIcon />
</IconButton>
</Tooltip>
);
}
export default ResetStorage;

View File

@@ -4,7 +4,8 @@ import DataTable_LinearProgressBar from "./LinearProgressBar";
import DataTable_TablePagination from "./TablePagination"; import DataTable_TablePagination from "./TablePagination";
import DataTable_ToolbarInternalButtons from "./ToolbarInternalButtons"; import DataTable_ToolbarInternalButtons from "./ToolbarInternalButtons";
import FilterColumn from "@/core/components/DataTable/filter"; import FilterColumn from "@/core/components/DataTable/filter";
import RefactorTable from "@/core/components/DataTable/refactor/RefactorTable"; import UpdateTable from "@/core/components/DataTable/update/UpdateTable";
import ResetStorage from "@/core/components/DataTable/reset/ResetStorage";
const DataTable_TopToolbar = ({ mutate, need_filter, table, columns, table_url, user_id, page_name, table_name }) => { const DataTable_TopToolbar = ({ mutate, need_filter, table, columns, table_url, user_id, page_name, table_name }) => {
const { const {
@@ -69,7 +70,10 @@ const DataTable_TopToolbar = ({ mutate, need_filter, table, columns, table_url,
justifyContent: "flex-end", justifyContent: "flex-end",
}} }}
> >
<RefactorTable mutate={mutate} /> <ResetStorage user_id={user_id}
page_name={page_name}
table_name={table_name} />
<UpdateTable mutate={mutate} />
{need_filter && ( {need_filter && (
<FilterColumn <FilterColumn
columns={columns} columns={columns}

View File

@@ -2,18 +2,18 @@
import { IconButton, Tooltip } from "@mui/material"; import { IconButton, Tooltip } from "@mui/material";
import RestartAltIcon from "@mui/icons-material/RestartAlt"; import RestartAltIcon from "@mui/icons-material/RestartAlt";
function RefactorTable({ mutate }) { function UpdateTable({ mutate }) {
const refactor = () => { const update = () => {
mutate(); mutate();
}; };
return ( return (
<Tooltip title=ازنشانی اطلاعات"> <Tooltip title=روزرسانی اطلاعات">
<IconButton onClick={refactor} aria-label="refactor table"> <IconButton onClick={update} aria-label="refactor table">
<RestartAltIcon /> <RestartAltIcon />
</IconButton> </IconButton>
</Tooltip> </Tooltip>
); );
} }
export default RefactorTable; export default UpdateTable;

View File

@@ -21,6 +21,23 @@ export const TableSettingProvider = ({ children }) => {
const filterAction = (user_id, page_name, table_name, settingValue, columns) => { const filterAction = (user_id, page_name, table_name, settingValue, columns) => {
updateSettingStorage(user_id, page_name, table_name, "filters", settingValue, columns); updateSettingStorage(user_id, page_name, table_name, "filters", settingValue, columns);
}; };
const resetAction = (user_id, page_name, table_name) => {
const prevLocalStorage = JSON.parse(localStorage.getItem("_setting-app")) || {};
const userSettings = prevLocalStorage[user_id] || {};
const pageSettings = userSettings[page_name] || {};
const resetData = {
...prevLocalStorage,
[user_id]: {
...userSettings,
[page_name]: {
...pageSettings,
[table_name]: {},
},
},
};
localStorage.setItem("_setting-app", JSON.stringify(resetData));
setSettingStore(resetData);
};
const updateSettingStorage = (user_id, page_name, table_name, settingType, settingValue, columns) => { const updateSettingStorage = (user_id, page_name, table_name, settingType, settingValue, columns) => {
const prevLocalStorage = JSON.parse(localStorage.getItem("_setting-app")) || {}; const prevLocalStorage = JSON.parse(localStorage.getItem("_setting-app")) || {};
const userSettings = prevLocalStorage[user_id] || {}; const userSettings = prevLocalStorage[user_id] || {};
@@ -46,7 +63,7 @@ export const TableSettingProvider = ({ children }) => {
...tableSettings, ...tableSettings,
[settingType]: Array.isArray(settingValue) ? [...newSettings] : { ...newSettings }, [settingType]: Array.isArray(settingValue) ? [...newSettings] : { ...newSettings },
}, },
columns columns,
), ),
}, },
}, },
@@ -117,7 +134,7 @@ export const TableSettingProvider = ({ children }) => {
}; };
return ( return (
<TableSettingContext.Provider value={{ settingStore, hideAction, sortAction, filterAction }}> <TableSettingContext.Provider value={{ settingStore, hideAction, sortAction, filterAction, resetAction }}>
{children} {children}
</TableSettingContext.Provider> </TableSettingContext.Provider>
); );

View File

@@ -2,8 +2,8 @@ import { useContext } from "react";
import { TableSettingContext } from "../contexts/tableSetting"; import { TableSettingContext } from "../contexts/tableSetting";
const useTableSetting = () => { const useTableSetting = () => {
const { settingStore, hideAction, sortAction, filterAction } = useContext(TableSettingContext); const { settingStore, hideAction, sortAction, filterAction, resetAction } = useContext(TableSettingContext);
return { settingStore, hideAction, sortAction, filterAction }; return { settingStore, hideAction, sortAction, filterAction, resetAction };
}; };
export default useTableSetting; export default useTableSetting;