start some change on sending data to local storage

This commit is contained in:
2024-07-08 12:27:06 +03:30
parent fa8caad7ef
commit 37dccc5ec3
9 changed files with 192 additions and 60 deletions

View File

@@ -6,6 +6,8 @@ import {flattenArrayOfObjects} from "@/core/utils/flattenArrayOfObjects";
import Toolbar from "@/components/home/Toolbar";
import useDataTable from "@/lib/hooks/useDataTable";
import {useMemo, useState} from "react";
import {toast} from "react-toastify";
import AskForKeepSort from "@/core/components/NotificationDesign/AskForKeepSort";
const data = [
{
@@ -76,11 +78,33 @@ const data = [
];
const DataTable_Main = (props) => {
const {filterData} = useDataTable();
const {filterData, sortData, setSortData} = useDataTable();
const {table_url, user_id, page_name, table_name, columns, initialStateProps} = props
const flatColumns = flattenArrayOfObjects(columns, 'columns')
const {settingStore, hideAction, sortAction} = useTableSetting();
const [pagination, setPagination] = useState({pageIndex: 0, pageSize: 10});
const onColumnVisibilityChange = (event) => {
const settingValue = event();
hideAction(user_id, page_name, table_name, settingValue, flatColumns);
};
const onSortingChange = (event) => {
toast.dismiss({containerId: "datatable", id: "sort"});
setSortData(event);
setTimeout(() => {
toast(<AskForKeepSort event={event} user_id={user_id} page_name={page_name} table_name={table_name}
columns={columns} flatColumns={flatColumns}/>, {
containerId: "datatable",
toastId: "sort",
className: "filter-toast",
position: "bottom-left",
draggable: true,
autoClose: false,
});
}, 1000);
}
const filters = Object.keys(filterData)
.map(key => {
const value = filterData[key].value;
@@ -102,34 +126,19 @@ const DataTable_Main = (props) => {
return `${table_url}?${params}`;
}, [table_url, finalFilters, pagination, columns]);
const onColumnVisibilityChange = (event) => {
const settingValue = event();
hideAction(user_id, page_name, table_name, settingValue, flatColumns);
};
const onSortingChange = (event) => {
const settingValue = event(settingStore?.[user_id]?.[page_name]?.[table_name]?.['sorts'] || []);
sortAction(user_id, page_name, table_name, settingValue, flatColumns);
}
const table = useMaterialReactTable({
localization: FA_DATATABLE_LOCALIZATION,
columns,
data: data,
// manualSorting: true,
renderTopToolbarCustomActions: ({table}) => (<>
<Toolbar
columns={flatColumns}
/>
</>),
initialState: {
density: 'compact',
columnVisibility: settingStore?.[user_id]?.[page_name]?.[table_name]?.['hides'],
sorting: settingStore?.[user_id]?.[page_name]?.[table_name]?.['sorts'] || [],
sorting: sortData,
...initialStateProps
},
state: {
columnVisibility: settingStore?.[user_id]?.[page_name]?.[table_name]?.['hides'],
sorting: settingStore?.[user_id]?.[page_name]?.[table_name]?.['sorts'] || [],
sorting: sortData,
pagination
},
muiTableHeadProps: {
@@ -157,10 +166,15 @@ const DataTable_Main = (props) => {
},
manualFiltering: true,
manualPagination: true,
onPaginationChange: setPagination,
manualSorting: true,
onPaginationChange: setPagination,
onColumnVisibilityChange: onColumnVisibilityChange,
onSortingChange: onSortingChange,
renderTopToolbarCustomActions: ({table}) => (<>
<Toolbar
columns={flatColumns}
/>
</>),
...props
})