From e59eb4b8e6c6eaea819ca8cb2789623503ed7a38 Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 19 May 2022 08:26:51 +0200 Subject: [PATCH] connection tab --- packages/api/src/controllers/plugins.js | 1 + packages/tools/src/driverBase.ts | 2 + packages/web/src/commands/stdCommands.ts | 8 +- packages/web/src/elements/TabControl.svelte | 11 +- packages/web/src/icons/FontIcon.svelte | 1 + .../web/src/modals/ConnectionModal.svelte | 4 +- .../modals/ConnectionModalDriverFields.svelte | 50 ++--- packages/web/src/tabs/ConnectionTab.svelte | 175 ++++++++++++++++++ packages/web/src/tabs/index.js | 2 + 9 files changed, 224 insertions(+), 30 deletions(-) create mode 100644 packages/web/src/tabs/ConnectionTab.svelte diff --git a/packages/api/src/controllers/plugins.js b/packages/api/src/controllers/plugins.js index 65d1a1051..3e494afcc 100644 --- a/packages/api/src/controllers/plugins.js +++ b/packages/api/src/controllers/plugins.js @@ -162,6 +162,7 @@ module.exports = { authTypes_meta: true, async authTypes({ engine }) { const packageName = extractPackageName(engine); + if (!packageName) return null; const content = requirePlugin(packageName); const driver = content.drivers.find(x => x.engine == engine); if (!driver || !driver.getAuthTypes) return null; diff --git a/packages/tools/src/driverBase.ts b/packages/tools/src/driverBase.ts index a35cf2ab9..9037df9b2 100644 --- a/packages/tools/src/driverBase.ts +++ b/packages/tools/src/driverBase.ts @@ -111,4 +111,6 @@ export const driverBase = { dumpSqlSelect(dmp, select); return this.readQuery(pool, dmp.s, structure); }, + showConnectionField: (field, values) => false, + showConnectionTab: (field) => true, }; diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 297ecf155..4bd0e058b 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -87,7 +87,13 @@ registerCommand({ toolbarOrder: 1, name: 'Connection', testEnabled: () => !getCurrentConfig()?.runAsPortal, - onClick: () => showModal(ConnectionModal), + onClick: () => { + openNewTab({ + title: 'New Connection', + icon: 'img connection', + tabComponent: 'ConnectionTab', + }); + }, }); registerCommand({ diff --git a/packages/web/src/elements/TabControl.svelte b/packages/web/src/elements/TabControl.svelte index 38bae2213..f6e09b1ee 100644 --- a/packages/web/src/elements/TabControl.svelte +++ b/packages/web/src/elements/TabControl.svelte @@ -13,6 +13,8 @@ export let value = 0; export let menu = null; export let isInline = false; + export let containerMaxWidth = undefined; + export let flex1 = true; export function setValue(index) { value = index; @@ -22,7 +24,7 @@ } -
+
{#each _.compact(tabs) as tab, index}
(value = index)}> @@ -38,7 +40,7 @@
{#each _.compact(tabs) as tab, index} -
+
{#if tab.slot != null} {#if tab.slot == 0} @@ -59,10 +61,13 @@ diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js index eabdc6a53..e629a1fbf 100644 --- a/packages/web/src/tabs/index.js +++ b/packages/web/src/tabs/index.js @@ -23,6 +23,7 @@ import * as ChangelogTab from './ChangelogTab.svelte'; import * as DiagramTab from './DiagramTab.svelte'; import * as DbKeyDetailTab from './DbKeyDetailTab.svelte'; import * as QueryDataTab from './QueryDataTab.svelte'; +import * as ConnectionTab from './ConnectionTab.svelte'; export default { TableDataTab, @@ -50,4 +51,5 @@ export default { DiagramTab, DbKeyDetailTab, QueryDataTab, + ConnectionTab, };