diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index c32108695..6aab90cb5 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -4,6 +4,7 @@ import { derived, get } from 'svelte/store'; import { ThemeDefinition } from 'dbgate-types'; import ConnectionModal from '../modals/ConnectionModal.svelte'; import AboutModal from '../modals/AboutModal.svelte'; +import SettingsModal from '../settings/SettingsModal.svelte'; import ImportExportModal from '../modals/ImportExportModal.svelte'; import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte'; import { showModal } from '../modals/modalTools'; @@ -218,6 +219,14 @@ if (hasPermission('settings/change')) { }); }, }); + + registerCommand({ + id: 'settings.show', + category: 'Settings', + name: 'Change', + toolbarName: 'Change settings', + onClick: () => showModal(SettingsModal), + }); } export function registerFileCommands({ diff --git a/packages/web/src/datagrid/DataGrid.svelte b/packages/web/src/datagrid/DataGrid.svelte index 58618814b..87b8d0afa 100644 --- a/packages/web/src/datagrid/DataGrid.svelte +++ b/packages/web/src/datagrid/DataGrid.svelte @@ -66,6 +66,7 @@ import _ from 'lodash'; import registerCommand from '../commands/registerCommand'; import { registerMenu } from '../utility/contextMenu'; + import { useSettings } from '../utility/metadataLoaders'; export let config; export let setConfig; @@ -97,7 +98,13 @@ setContext('macroValues', macroValues); let managerSize; - let collapsedLeftColumnStore = writable(false); + let collapsedLeftColumnStore = writable(null); + + const settings = useSettings(); + + $: if ($collapsedLeftColumnStore == null && $settings) { + $collapsedLeftColumnStore = !!$settings['dataGrid.hideLeftColumn']; + } $: isFormView = !!(formDisplay && formDisplay.config && formDisplay.config.isFormView); $: isJsonView = !!config?.isJsonView; diff --git a/packages/web/src/datagrid/LoadingDataGridCore.svelte b/packages/web/src/datagrid/LoadingDataGridCore.svelte index 29414f998..cd4f2a782 100644 --- a/packages/web/src/datagrid/LoadingDataGridCore.svelte +++ b/packages/web/src/datagrid/LoadingDataGridCore.svelte @@ -1,5 +1,8 @@ + +{#if $settings} + + +
Settings
+ +
Data grid
+ + + +
+ + +
+
+
+{/if} + + diff --git a/packages/web/src/settings/settingsTools.ts b/packages/web/src/settings/settingsTools.ts new file mode 100644 index 000000000..8bf564fa2 --- /dev/null +++ b/packages/web/src/settings/settingsTools.ts @@ -0,0 +1,14 @@ +import _ from 'lodash'; + +export function getIntSettingsValue(settings, name, defaultValue, min = null, max = null) { + const parsed = parseInt(settings[name]); + if (_.isNaN(parsed)) { + return defaultValue; + } + if (_.isNumber(parsed)) { + if (min != null && parsed < min) return min; + if (max != null && parsed > max) return max; + return parsed; + } + return defaultValue; +} diff --git a/packages/web/src/widgets/WidgetIconPanel.svelte b/packages/web/src/widgets/WidgetIconPanel.svelte index a84469bba..637a541e9 100644 --- a/packages/web/src/widgets/WidgetIconPanel.svelte +++ b/packages/web/src/widgets/WidgetIconPanel.svelte @@ -59,7 +59,7 @@ const rect = domSettings.getBoundingClientRect(); const left = rect.right; const top = rect.top; - const items = [{ command: 'settings.commands' }, { command: 'theme.changeTheme' }]; + const items = [{ command: 'settings.commands' }, { command: 'theme.changeTheme' }, { command: 'settings.show' }]; currentDropDownMenu.set({ left, top, items }); }