mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 09:03:58 +00:00
save widget state & size
This commit is contained in:
@@ -23,6 +23,8 @@ import _ from 'lodash';
|
|||||||
import { findEngineDriver } from 'dbgate-tools';
|
import { findEngineDriver } from 'dbgate-tools';
|
||||||
import { openArchiveFolder } from '../utility/openArchiveFolder';
|
import { openArchiveFolder } from '../utility/openArchiveFolder';
|
||||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||||
|
import { removeLocalStorage } from '../utility/storageCache';
|
||||||
|
import { showSnackbarSuccess } from '../utility/snackbar';
|
||||||
|
|
||||||
const electron = getElectron();
|
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({
|
registerCommand({
|
||||||
id: 'sql.generator',
|
id: 'sql.generator',
|
||||||
category: 'SQL',
|
category: 'SQL',
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ function subscribeCssVariable(store, transform, cssVariable) {
|
|||||||
store.subscribe(value => document.documentElement.style.setProperty(cssVariable, transform(value)));
|
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 openedConnections = writable([]);
|
||||||
export const currentDatabase = writable(null);
|
export const currentDatabase = writable(null);
|
||||||
export const openedTabs = writableWithStorage<TabDefinition[]>([], 'openedTabs');
|
export const openedTabs = writableWithStorage<TabDefinition[]>([], 'openedTabs');
|
||||||
@@ -54,7 +54,7 @@ export const commandsCustomized = derived([commands, commandsSettings], ([$comma
|
|||||||
|
|
||||||
export const visibleToolbar = writableWithStorage(true, 'visibleToolbar');
|
export const visibleToolbar = writableWithStorage(true, 'visibleToolbar');
|
||||||
export const zoomKoef = writableWithStorage(1, 'zoomKoef');
|
export const zoomKoef = writableWithStorage(1, 'zoomKoef');
|
||||||
export const leftPanelWidth = writable(300);
|
export const leftPanelWidth = writableWithStorage(300, 'leftPanelWidth');
|
||||||
export const currentDropDownMenu = writable(null);
|
export const currentDropDownMenu = writable(null);
|
||||||
export const openedModals = writable([]);
|
export const openedModals = writable([]);
|
||||||
export const openedSnackbars = writable([]);
|
export const openedSnackbars = writable([]);
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Archive folders, DB models" name="folders" height="50%">
|
<WidgetColumnBarItem title="Archive folders, DB models" name="folders" height="50%" storageName='archiveFoldersWidget'>
|
||||||
<ArchiveFolderList />
|
<ArchiveFolderList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
<WidgetColumnBarItem title="Files, Tables, Views, Functions" name="files">
|
<WidgetColumnBarItem title="Files, Tables, Views, Functions" name="files" storageName='archiveFilesWidget'>
|
||||||
<ArchiveFilesList />
|
<ArchiveFilesList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -19,11 +19,15 @@
|
|||||||
|
|
||||||
<WidgetColumnBar {hidden}>
|
<WidgetColumnBar {hidden}>
|
||||||
{#if !$config?.singleDatabase}
|
{#if !$config?.singleDatabase}
|
||||||
<WidgetColumnBarItem title="Connections" name="connections" height="50%">
|
<WidgetColumnBarItem title="Connections" name="connections" height="35%" storageName="connectionsWidget">
|
||||||
<ConnectionList />
|
<ConnectionList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
{/if}
|
{/if}
|
||||||
<WidgetColumnBarItem title={driver?.dialect?.nosql ? 'Collections' : 'Tables, views, functions'} name="dbObjects">
|
<WidgetColumnBarItem
|
||||||
|
title={driver?.dialect?.nosql ? 'Collections' : 'Tables, views, functions'}
|
||||||
|
name="dbObjects"
|
||||||
|
storageName="dbObjectsWidget"
|
||||||
|
>
|
||||||
<SqlObjectListWrapper />
|
<SqlObjectListWrapper />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -20,14 +20,14 @@
|
|||||||
|
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
{#if hasPermission('files/favorites/read')}
|
{#if hasPermission('files/favorites/read')}
|
||||||
<WidgetColumnBarItem title="Favorites" name="favorites" height="20%">
|
<WidgetColumnBarItem title="Favorites" name="favorites" height="20%" storageName="favoritesWidget">
|
||||||
<WidgetsInnerContainer>
|
<WidgetsInnerContainer>
|
||||||
<AppObjectList list={$favorites || []} module={favoriteFileAppObject} />
|
<AppObjectList list={$favorites || []} module={favoriteFileAppObject} />
|
||||||
</WidgetsInnerContainer>
|
</WidgetsInnerContainer>
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<WidgetColumnBarItem title="Saved files" name="files">
|
<WidgetColumnBarItem title="Saved files" name="files" storageName="savedFilesWidget">
|
||||||
<SavedFilesList />
|
<SavedFilesList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Recently closed tabs" name="closedTabs">
|
<WidgetColumnBarItem title="Recently closed tabs" name="closedTabs" storageName='closedTabsWidget'>
|
||||||
<WidgetsInnerContainer>
|
<WidgetsInnerContainer>
|
||||||
<AppObjectList
|
<AppObjectList
|
||||||
list={_.sortBy(
|
list={_.sortBy(
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
/>
|
/>
|
||||||
</WidgetsInnerContainer>
|
</WidgetsInnerContainer>
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
<WidgetColumnBarItem title="Query history" name="queryHistory">
|
<WidgetColumnBarItem title="Query history" name="queryHistory" storageName='queryHistoryWidget'>
|
||||||
<QueryHistoryList />
|
<QueryHistoryList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Installed extensions" name="installed" height="50%">
|
<WidgetColumnBarItem title="Installed extensions" name="installed" height="50%" storageName='installedPluginsWidget'>
|
||||||
<InstalledPluginsList />
|
<InstalledPluginsList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
<WidgetColumnBarItem title="Available extensions" name="all">
|
<WidgetColumnBarItem title="Available extensions" name="all" storageName='allPluginsWidget'>
|
||||||
<AvailablePluginsList />
|
<AvailablePluginsList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
import WidgetTitle from './WidgetTitle.svelte';
|
import WidgetTitle from './WidgetTitle.svelte';
|
||||||
import splitterDrag from '../utility/splitterDrag';
|
import splitterDrag from '../utility/splitterDrag';
|
||||||
|
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
||||||
|
|
||||||
export let title;
|
export let title;
|
||||||
export let name;
|
export let name;
|
||||||
@@ -15,6 +16,8 @@
|
|||||||
export let height = null;
|
export let height = null;
|
||||||
export let collapsed = null;
|
export let collapsed = null;
|
||||||
|
|
||||||
|
export let storageName = null;
|
||||||
|
|
||||||
let size = 0;
|
let size = 0;
|
||||||
|
|
||||||
const dynamicProps = writable({
|
const dynamicProps = writable({
|
||||||
@@ -37,14 +40,28 @@
|
|||||||
|
|
||||||
$: setInitialSize(height, $widgetColumnBarHeight);
|
$: setInitialSize(height, $widgetColumnBarHeight);
|
||||||
|
|
||||||
|
$: if (storageName && $widgetColumnBarHeight > 0) {
|
||||||
|
setLocalStorage(storageName, { relativeHeight: size / $widgetColumnBarHeight, visible });
|
||||||
|
}
|
||||||
|
|
||||||
function setInitialSize(initialSize, parentHeight) {
|
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));
|
if (_.isString(initialSize) && initialSize.endsWith('px')) size = parseInt(initialSize.slice(0, -2));
|
||||||
else if (_.isString(initialSize) && initialSize.endsWith('%'))
|
else if (_.isString(initialSize) && initialSize.endsWith('%'))
|
||||||
size = (parentHeight * parseFloat(initialSize.slice(0, -1))) / 100;
|
size = (parentHeight * parseFloat(initialSize.slice(0, -1))) / 100;
|
||||||
else size = parentHeight / 3;
|
else size = parentHeight / 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
let visible = !collapsed;
|
let visible =
|
||||||
|
storageName && getLocalStorage(storageName) && getLocalStorage(storageName).visible != null
|
||||||
|
? getLocalStorage(storageName).visible
|
||||||
|
: !collapsed;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if !skip && show}
|
{#if !skip && show}
|
||||||
|
|||||||
Reference in New Issue
Block a user