diff --git a/src/core/components/DataTable/reset/ResetStorage.jsx b/src/core/components/DataTable/reset/ResetStorage.jsx new file mode 100644 index 0000000..6d8a534 --- /dev/null +++ b/src/core/components/DataTable/reset/ResetStorage.jsx @@ -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 ( + + + + + + ); +} + +export default ResetStorage; \ No newline at end of file diff --git a/src/core/components/DataTable/toolbar/TopToolbar.js b/src/core/components/DataTable/toolbar/TopToolbar.js index 88ad219..09836e2 100644 --- a/src/core/components/DataTable/toolbar/TopToolbar.js +++ b/src/core/components/DataTable/toolbar/TopToolbar.js @@ -4,7 +4,8 @@ import DataTable_LinearProgressBar from "./LinearProgressBar"; import DataTable_TablePagination from "./TablePagination"; import DataTable_ToolbarInternalButtons from "./ToolbarInternalButtons"; 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 { @@ -69,7 +70,10 @@ const DataTable_TopToolbar = ({ mutate, need_filter, table, columns, table_url, justifyContent: "flex-end", }} > - + + {need_filter && ( { +function UpdateTable({ mutate }) { + const update = () => { mutate(); }; return ( - - + + ); } -export default RefactorTable; +export default UpdateTable; diff --git a/src/lib/contexts/tableSetting.js b/src/lib/contexts/tableSetting.js index b5b63d9..bef09c8 100644 --- a/src/lib/contexts/tableSetting.js +++ b/src/lib/contexts/tableSetting.js @@ -21,6 +21,23 @@ export const TableSettingProvider = ({ children }) => { const filterAction = (user_id, page_name, table_name, 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 prevLocalStorage = JSON.parse(localStorage.getItem("_setting-app")) || {}; const userSettings = prevLocalStorage[user_id] || {}; @@ -46,7 +63,7 @@ export const TableSettingProvider = ({ children }) => { ...tableSettings, [settingType]: Array.isArray(settingValue) ? [...newSettings] : { ...newSettings }, }, - columns + columns, ), }, }, @@ -117,7 +134,7 @@ export const TableSettingProvider = ({ children }) => { }; return ( - + {children} ); diff --git a/src/lib/hooks/useTableSetting.js b/src/lib/hooks/useTableSetting.js index e9e6cef..c841ffc 100644 --- a/src/lib/hooks/useTableSetting.js +++ b/src/lib/hooks/useTableSetting.js @@ -2,8 +2,8 @@ import { useContext } from "react"; import { TableSettingContext } from "../contexts/tableSetting"; const useTableSetting = () => { - const { settingStore, hideAction, sortAction, filterAction } = useContext(TableSettingContext); - return { settingStore, hideAction, sortAction, filterAction }; + const { settingStore, hideAction, sortAction, filterAction, resetAction } = useContext(TableSettingContext); + return { settingStore, hideAction, sortAction, filterAction, resetAction }; }; export default useTableSetting;