diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 481438db6..5932cff45 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -23,6 +23,8 @@ import _ from 'lodash'; import { findEngineDriver } from 'dbgate-tools'; import { openArchiveFolder } from '../utility/openArchiveFolder'; import InputTextModal from '../modals/InputTextModal.svelte'; +import { removeLocalStorage } from '../utility/storageCache'; +import { showSnackbarSuccess } from '../utility/snackbar'; const electron = getElectron(); @@ -275,6 +277,33 @@ registerCommand({ }), }); +registerCommand({ + id: 'view.reset', + category: 'View', + name: 'Reset view', + onClick: () => { + const keys = [ + 'leftPanelWidth', + 'visibleToolbar', + 'zoomKoef', + 'selectedWidget', + 'currentTheme', + 'connectionsWidget', + 'dbObjectsWidget', + 'favoritesWidget', + 'savedFilesWidget', + 'closedTabsWidget', + 'queryHistoryWidget', + 'archiveFoldersWidget', + 'archiveFilesWidget', + 'installedPluginsWidget', + 'allPluginsWidget', + ]; + for (const key of keys) removeLocalStorage(key); + showSnackbarSuccess('Restart DbGate (or reload on web) for applying changes'); + }, +}); + registerCommand({ id: 'sql.generator', category: 'SQL', diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 524508d5a..9cad98d09 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -30,7 +30,7 @@ function subscribeCssVariable(store, transform, cssVariable) { store.subscribe(value => document.documentElement.style.setProperty(cssVariable, transform(value))); } -export const selectedWidget = writable('database'); +export const selectedWidget = writableWithStorage('database', 'selectedWidget'); export const openedConnections = writable([]); export const currentDatabase = writable(null); export const openedTabs = writableWithStorage([], 'openedTabs'); @@ -54,7 +54,7 @@ export const commandsCustomized = derived([commands, commandsSettings], ([$comma export const visibleToolbar = writableWithStorage(true, 'visibleToolbar'); export const zoomKoef = writableWithStorage(1, 'zoomKoef'); -export const leftPanelWidth = writable(300); +export const leftPanelWidth = writableWithStorage(300, 'leftPanelWidth'); export const currentDropDownMenu = writable(null); export const openedModals = writable([]); export const openedSnackbars = writable([]); diff --git a/packages/web/src/widgets/ArchiveWidget.svelte b/packages/web/src/widgets/ArchiveWidget.svelte index b326dd424..f26f1794c 100644 --- a/packages/web/src/widgets/ArchiveWidget.svelte +++ b/packages/web/src/widgets/ArchiveWidget.svelte @@ -8,10 +8,10 @@ - + - + diff --git a/packages/web/src/widgets/DatabaseWidget.svelte b/packages/web/src/widgets/DatabaseWidget.svelte index ba9802e80..fe9abb455 100644 --- a/packages/web/src/widgets/DatabaseWidget.svelte +++ b/packages/web/src/widgets/DatabaseWidget.svelte @@ -19,11 +19,15 @@ {#if !$config?.singleDatabase} - + {/if} - + diff --git a/packages/web/src/widgets/FilesWidget.svelte b/packages/web/src/widgets/FilesWidget.svelte index ea4717951..a232fd1da 100644 --- a/packages/web/src/widgets/FilesWidget.svelte +++ b/packages/web/src/widgets/FilesWidget.svelte @@ -20,14 +20,14 @@ {#if hasPermission('files/favorites/read')} - + {/if} - + diff --git a/packages/web/src/widgets/HistoryWidget.svelte b/packages/web/src/widgets/HistoryWidget.svelte index 36a1c1692..a5210f26f 100644 --- a/packages/web/src/widgets/HistoryWidget.svelte +++ b/packages/web/src/widgets/HistoryWidget.svelte @@ -19,7 +19,7 @@ - + - + diff --git a/packages/web/src/widgets/PluginsWidget.svelte b/packages/web/src/widgets/PluginsWidget.svelte index 78c0af287..a44880f1f 100644 --- a/packages/web/src/widgets/PluginsWidget.svelte +++ b/packages/web/src/widgets/PluginsWidget.svelte @@ -7,10 +7,10 @@ - + - + diff --git a/packages/web/src/widgets/WidgetColumnBarItem.svelte b/packages/web/src/widgets/WidgetColumnBarItem.svelte index c9e23424b..55861682a 100644 --- a/packages/web/src/widgets/WidgetColumnBarItem.svelte +++ b/packages/web/src/widgets/WidgetColumnBarItem.svelte @@ -7,6 +7,7 @@ import WidgetTitle from './WidgetTitle.svelte'; import splitterDrag from '../utility/splitterDrag'; + import { getLocalStorage, setLocalStorage } from '../utility/storageCache'; export let title; export let name; @@ -15,6 +16,8 @@ export let height = null; export let collapsed = null; + export let storageName = null; + let size = 0; const dynamicProps = writable({ @@ -37,14 +40,28 @@ $: setInitialSize(height, $widgetColumnBarHeight); + $: if (storageName && $widgetColumnBarHeight > 0) { + setLocalStorage(storageName, { relativeHeight: size / $widgetColumnBarHeight, visible }); + } + function setInitialSize(initialSize, parentHeight) { + if (storageName) { + const storage = getLocalStorage(storageName); + if (storage) { + size = parentHeight * storage.relativeHeight; + return; + } + } if (_.isString(initialSize) && initialSize.endsWith('px')) size = parseInt(initialSize.slice(0, -2)); else if (_.isString(initialSize) && initialSize.endsWith('%')) size = (parentHeight * parseFloat(initialSize.slice(0, -1))) / 100; else size = parentHeight / 3; } - let visible = !collapsed; + let visible = + storageName && getLocalStorage(storageName) && getLocalStorage(storageName).visible != null + ? getLocalStorage(storageName).visible + : !collapsed; {#if !skip && show}