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 });
}