diff --git a/packages/web/src/datagrid/TableDataGrid.js b/packages/web/src/datagrid/TableDataGrid.js index aa6d75b22..685465fe6 100644 --- a/packages/web/src/datagrid/TableDataGrid.js +++ b/packages/web/src/datagrid/TableDataGrid.js @@ -42,29 +42,28 @@ export default function TableDataGrid({ setCache = undefined, masterLoadedTime = undefined, }) { - const [myConfig, setMyConfig] = React.useState(createGridConfig()); // const [childConfig, setChildConfig] = React.useState(createGridConfig()); const [myCache, setMyCache] = React.useState(createGridCache()); const [childCache, setChildCache] = React.useState(createGridCache()); const [refReloadToken, setRefReloadToken] = React.useState(0); const [myLoadedTime, setMyLoadedTime] = React.useState(0); - const { childConfig } = config || myConfig; + const { childConfig } = config; const setChildConfig = (value, reference = undefined) => { if (_.isFunction(value)) { - (setConfig || setMyConfig)((x) => ({ + setConfig((x) => ({ ...x, childConfig: value(x.childConfig), })); } else { - (setConfig || setMyConfig)((x) => ({ + setConfig((x) => ({ ...x, childConfig: value, reference: reference === undefined ? x.reference : reference, })); } }; - const { reference } = config || myConfig; + const { reference } = config; const connection = useConnectionInfo({ conid }); const dbinfo = useDatabaseInfo({ conid, database }); @@ -75,8 +74,8 @@ export default function TableDataGrid({ ? new TableGridDisplay( { schemaName, pureName }, engines(connection), - config || myConfig, - setConfig || setMyConfig, + config, + setConfig, cache || myCache, setCache || setMyCache, dbinfo @@ -95,7 +94,7 @@ export default function TableDataGrid({ const newDisplay = createDisplay(); if (display && display.isLoadedCorrectly && !newDisplay.isLoadedCorrectly) return; setDisplay(newDisplay); - }, [connection, config || myConfig, cache || myCache, conid, database, schemaName, pureName, dbinfo]); + }, [connection, config, cache || myCache, conid, database, schemaName, pureName, dbinfo]); const handleDatabaseStructureChanged = React.useCallback(() => { (setCache || setMyCache)(createGridCache()); diff --git a/packages/web/src/tabs/TableDataTab.js b/packages/web/src/tabs/TableDataTab.js index 5dc8914f7..09664f7bc 100644 --- a/packages/web/src/tabs/TableDataTab.js +++ b/packages/web/src/tabs/TableDataTab.js @@ -4,16 +4,18 @@ import useUndoReducer from '../utility/useUndoReducer'; import usePropsCompare from '../utility/usePropsCompare'; import { useUpdateDatabaseForTab } from '../utility/globalState'; import TableDataGrid from '../datagrid/TableDataGrid'; +import useGridConfig from '../utility/useGridConfig'; export default function TableDataTab({ conid, database, schemaName, pureName, tabVisible, toolbarPortalRef, tabid }) { const [changeSetState, dispatchChangeSet] = useUndoReducer(createChangeSet()); useUpdateDatabaseForTab(tabVisible, conid, database); - // const [config, setConfig] = React.useState(createGridConfig()); + const [config, setConfig] = useGridConfig(tabid); return ( viewInfo && connection - ? new ViewGridDisplay(viewInfo, engines(connection), config, setConfig, cache, setCache) + ? new ViewGridDisplay( + viewInfo, + engines(connection), + //@ts-ignore + config, + setConfig, + cache, + setCache + ) : null, [viewInfo, connection, config, cache] ); diff --git a/packages/web/src/utility/useGridConfig.js b/packages/web/src/utility/useGridConfig.js new file mode 100644 index 000000000..b1d859001 --- /dev/null +++ b/packages/web/src/utility/useGridConfig.js @@ -0,0 +1,18 @@ +import { createGridConfig } from '@dbgate/datalib'; +import React from 'react'; + +const loadGridConfigFunc = (tabid) => () => { + const existing = localStorage.getItem(`grid_${tabid}`); + if (existing) return JSON.parse(existing); + return createGridConfig(); +}; + +export default function useGridConfig(tabid) { + const [config, setConfig] = React.useState(loadGridConfigFunc(tabid)); + + React.useEffect(() => { + localStorage.setItem(`grid_${tabid}`, JSON.stringify(config)); + }, [config]); + + return [config, setConfig]; +} diff --git a/packages/web/src/widgets/FilesWidget.js b/packages/web/src/widgets/FilesWidget.js index 32ee28f21..ef36bb221 100644 --- a/packages/web/src/widgets/FilesWidget.js +++ b/packages/web/src/widgets/FilesWidget.js @@ -19,7 +19,7 @@ function OpenedTabsList() { return ( <> - Opened tabs + Recently closed tabs