From 2c0b76fb3fc842067e1ea6a87322be804ee928b4 Mon Sep 17 00:00:00 2001 From: Jeremy <32719032+dataspun@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:20:44 -0700 Subject: [PATCH 1/7] Update drivers.js add geometry to spatial types --- plugins/dbgate-plugin-postgres/src/frontend/drivers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js index 7dd8d1297..c88384fbd 100644 --- a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js @@ -2,7 +2,7 @@ const { driverBase } = global.DBGATE_PACKAGES['dbgate-tools']; const Dumper = require('./Dumper'); const { postgreSplitterOptions } = require('dbgate-query-splitter/lib/options'); -const spatialTypes = ['GEOGRAPHY']; +const spatialTypes = ['GEOGRAPHY','GEOMETRY']; /** @type {import('dbgate-types').SqlDialect} */ const dialect = { From fc3664571b31524f78159ef42d0e96d80e7e00fb Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 20 Nov 2024 10:18:54 +0100 Subject: [PATCH 2/7] fixed resolving plugin --- packages/api/src/utility/directories.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/api/src/utility/directories.js b/packages/api/src/utility/directories.js index 0d5c70bf2..99617c1a2 100644 --- a/packages/api/src/utility/directories.js +++ b/packages/api/src/utility/directories.js @@ -110,7 +110,12 @@ function getPluginBackendPath(packageName) { return path.join(packagedPluginsDir(), packageName, 'dist', 'backend.js'); } - return path.join(pluginsdir(), packageName, 'dist', 'backend.js'); + const res = path.join(pluginsdir(), packageName, 'dist', 'backend.js') + if (fs.existsSync(res)) { + return res; + } + + return require.resolve(packageName); } let archiveLinksCache = {}; From 4b2f762200fa42b36acb2154d706d6983de9c71b Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 20 Nov 2024 10:19:40 +0100 Subject: [PATCH 3/7] v5.5.7-alpha.60 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b9299fc40..f1d3b51ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.5.7-beta.59", + "version": "5.5.7-alpha.60", "name": "dbgate-all", "workspaces": [ "packages/*", From 77414ba934c4fde040d67d5377d1b9c238670170 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 11:17:51 +0100 Subject: [PATCH 4/7] feat: add word wrap option #823 --- packages/web/src/query/SqlEditor.svelte | 1 + packages/web/src/settings/SettingsModal.svelte | 9 +++++++++ packages/web/src/stores.ts | 3 +++ packages/web/src/tabs/QueryTab.svelte | 9 ++++++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/web/src/query/SqlEditor.svelte b/packages/web/src/query/SqlEditor.svelte index b7870756f..e86623835 100644 --- a/packages/web/src/query/SqlEditor.svelte +++ b/packages/web/src/query/SqlEditor.svelte @@ -59,6 +59,7 @@ on:blur bind:this={domEditor} options={{ + ...$$props.options, enableBasicAutocompletion: true, }} /> diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte index 45ffc7fac..fc4ba2773 100644 --- a/packages/web/src/settings/SettingsModal.svelte +++ b/packages/web/src/settings/SettingsModal.svelte @@ -21,6 +21,7 @@ import SqlEditor from '../query/SqlEditor.svelte'; import { currentEditorFontSize, + currentEditorWrapEnabled, currentEditorTheme, currentEditorKeybindigMode, extensions, @@ -162,6 +163,14 @@ ORDER BY /> +
+ + ($currentEditorWrapEnabled = e.target.checked)} + /> + +
diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 9d2ca81f6..5f9abcd6a 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -106,6 +106,9 @@ export const currentEditorTheme = getElectron() export const currentEditorKeybindigMode = getElectron() ? writableSettingsValue(null, 'currentEditorKeybindigMode') : writableWithStorage(null, 'currentEditorKeybindigMode'); +export const currentEditorWrapEnabled = getElectron() + ? writableSettingsValue(false, 'currentEditorWrapEnabled') + : writableWithStorage(false, 'currentEditorWrapEnabled'); export const currentEditorFontSize = getElectron() ? writableSettingsValue(null, 'currentEditorFontSize') : writableWithStorage(null, 'currentEditorFontSize'); diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index d081ac586..9c4c78658 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -62,7 +62,7 @@ import VerticalSplitter from '../elements/VerticalSplitter.svelte'; import SqlEditor from '../query/SqlEditor.svelte'; import useEditorData from '../query/useEditorData'; - import { extensions } from '../stores'; + import { currentEditorWrapEnabled, extensions } from '../stores'; import applyScriptTemplate from '../utility/applyScriptTemplate'; import { changeTab, markTabUnsaved } from '../utility/common'; import { getDatabaseInfo, useConnectionInfo } from '../utility/metadataLoaders'; @@ -154,6 +154,7 @@ $: connection = useConnectionInfo({ conid }); $: driver = findEngineDriver($connection, $extensions); + $: enableWrap = $currentEditorWrapEnabled || false; $: effect = useEffect(() => { return onSession(sessionId); @@ -427,6 +428,9 @@ {conid} {database} splitterOptions={driver?.getQuerySplitterOptions('editor')} + options={{ + wrap: enableWrap, + }} value={$editorState.value || ''} menu={createMenu()} on:input={e => { @@ -453,6 +457,9 @@ mode={driver?.editorMode || 'text'} value={$editorState.value || ''} splitterOptions={driver?.getQuerySplitterOptions('editor')} + options={{ + wrap: enableWrap, + }} menu={createMenu()} on:input={e => setEditorData(e.detail)} on:focus={() => { From 83ac45f8cf8c2371db038cfd29d556264b092b9a Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 14:32:05 +0100 Subject: [PATCH 5/7] feat: invalidate commands on modal show/close --- packages/web/src/modals/modalTools.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web/src/modals/modalTools.ts b/packages/web/src/modals/modalTools.ts index 83bdee52f..3c3f4a3d8 100644 --- a/packages/web/src/modals/modalTools.ts +++ b/packages/web/src/modals/modalTools.ts @@ -2,18 +2,22 @@ import { openedModals } from '../stores'; import { get } from 'svelte/store'; import uuidv1 from 'uuid/v1'; import _ from 'lodash'; +import invalidateCommands from '../commands/invalidateCommands'; export function showModal(component, props = {}) { const modalId = uuidv1(); openedModals.update(x => [...x, { component, modalId, props }]); + invalidateCommands(); } export function closeModal(modalId) { openedModals.update(x => x.filter(y => y.modalId != modalId)); + invalidateCommands(); } export function closeCurrentModal() { openedModals.update(modals => modals.slice(0, modals.length - 1)); + invalidateCommands(); } export function getActiveModalId() { From e1d759041d34b769f026cf274c29cbd4ba22ae78 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 14:32:18 +0100 Subject: [PATCH 6/7] feat: prevent closing tab if any modal is open --- packages/web/src/stores.ts | 6 ++++++ packages/web/src/tabpanel/TabsPanel.svelte | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 5f9abcd6a..98d7ae912 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -323,3 +323,9 @@ appliedCurrentSchema.subscribe(value => { appliedCurrentSchemaValue = value; }); export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue; + +let openedModalsValue = []; +openedModals.subscribe(value => { + openedModalsValue = value; +}); +export const getOpenedModals = () => openedModalsValue; diff --git a/packages/web/src/tabpanel/TabsPanel.svelte b/packages/web/src/tabpanel/TabsPanel.svelte index 2ab5a20be..d18e0c906 100644 --- a/packages/web/src/tabpanel/TabsPanel.svelte +++ b/packages/web/src/tabpanel/TabsPanel.svelte @@ -224,7 +224,12 @@ category: 'Tabs', name: 'Close tab', keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : null, - testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1, + testEnabled: () => { + const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1; + const hasAnyModalOpen = getOpenedModals().length > 0; + + return hasAnyOtherTab && !hasConfirmModalOpen; + }, onClick: closeCurrentTab, }); @@ -283,6 +288,7 @@ draggingDbGroupTarget, draggingTab, draggingTabTarget, + getOpenedModals, } from '../stores'; import tabs from '../tabs'; import { setSelectedTab, switchCurrentDatabase } from '../utility/common'; From 80e841a43d1f17c25336e8c5173ff7a30e904859 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Fri, 22 Nov 2024 02:18:01 +0100 Subject: [PATCH 7/7] feat: add reopen closed tab command --- packages/web/src/tabpanel/TabsPanel.svelte | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/web/src/tabpanel/TabsPanel.svelte b/packages/web/src/tabpanel/TabsPanel.svelte index 2ab5a20be..522fca4a6 100644 --- a/packages/web/src/tabpanel/TabsPanel.svelte +++ b/packages/web/src/tabpanel/TabsPanel.svelte @@ -155,6 +155,19 @@ ); const closeOthersInMultiTab = multiTabIndex => closeTabFunc((x, active) => x.tabid != active.tabid && (x.multiTabIndex || 0) == multiTabIndex); + const reopenClosedTab = () => { + const lastClosedTabId = getOpenedTabs() + .filter(x => x.closedTime) + .sort((a, b) => b.closedTime - a.closedTime)[0]?.tabid; + + if (!lastClosedTabId) return; + + openedTabs.update(x => + x.map(tab => + tab.tabid === lastClosedTabId ? { ...tab, selected: true, closedTime: null } : { ...tab, selected: false } + ) + ); + }; function getTabDbName(tab, connectionList) { if (tab.tabComponent == 'ConnectionTab') return 'Connections'; @@ -244,6 +257,15 @@ onClick: closeTabsButCurrentDb, }); + registerCommand({ + id: 'tabs.reopenClosedTab', + category: 'Tabs', + name: 'Reopen closed tab', + keyText: 'CtrlOrCommand+Shift+T', + testEnabled: () => getOpenedTabs().filter(x => x.closedTime).length >= 1, + onClick: reopenClosedTab, + }); + registerCommand({ id: 'tabs.addToFavorites', category: 'Tabs',