diff --git a/packages/web/src/modals/FavoriteModal.svelte b/packages/web/src/modals/FavoriteModal.svelte
index 9b7777949..a065cd8e2 100644
--- a/packages/web/src/modals/FavoriteModal.svelte
+++ b/packages/web/src/modals/FavoriteModal.svelte
@@ -15,7 +15,7 @@
import FormSelectField from '../forms/FormSelectField.svelte';
import FormSubmit from '../forms/FormSubmit.svelte';
import FormButton from '../forms/FormButton.svelte';
-import { apiCall } from '../utility/api';
+ import { apiCall } from '../utility/api';
export let editingData;
export let savingTab;
@@ -29,8 +29,8 @@ import { apiCall } from '../utility/api';
urlPath: _.kebabCase(_.deburr(savingTab.title)),
}
: editingData
- ? _.pick(editingData, savedProperties)
- : {};
+ ? _.pick(editingData, savedProperties)
+ : {};
$: savedFile = savingTab && savingTab.props && savingTab.props.savedFile;
diff --git a/packages/web/src/modals/SwitchDatabaseModal.svelte b/packages/web/src/modals/SwitchDatabaseModal.svelte
new file mode 100644
index 000000000..33662e717
--- /dev/null
+++ b/packages/web/src/modals/SwitchDatabaseModal.svelte
@@ -0,0 +1,61 @@
+
+
+
+
+ Switch database
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/web/src/tabpanel/TabsPanel.svelte b/packages/web/src/tabpanel/TabsPanel.svelte
index b3e8537c2..0bd36b16b 100644
--- a/packages/web/src/tabpanel/TabsPanel.svelte
+++ b/packages/web/src/tabpanel/TabsPanel.svelte
@@ -292,6 +292,7 @@
import { useConnectionColorFactory } from '../utility/useConnectionColor';
import TabCloseButton from '../elements/TabCloseButton.svelte';
import CloseTabModal from '../modals/CloseTabModal.svelte';
+ import SwitchDatabaseModal from '../modals/SwitchDatabaseModal.svelte';
export let multiTabIndex;
export let shownTab;
@@ -304,8 +305,8 @@
$currentDatabase && $currentDatabase.name && $currentDatabase.connection
? `database://${$currentDatabase.name}-${$currentDatabase.connection._id}`
: $currentDatabase && $currentDatabase.connection
- ? `server://${$currentDatabase.connection._id}`
- : '_no';
+ ? `server://${$currentDatabase.connection._id}`
+ : '_no';
$: tabsWithDb = $openedTabs.filter(showTabFilterFunc).map(tab => ({
...tab,
@@ -372,6 +373,16 @@
onClick: () => showModal(FavoriteModal, { savingTab: tab }),
},
],
+ tabComponent &&
+ tabs[tabComponent] &&
+ tabs[tabComponent].allowSwitchDatabase &&
+ tabs[tabComponent].allowSwitchDatabase(props) && [
+ { divider: true },
+ {
+ text: 'Switch database',
+ onClick: () => showModal(SwitchDatabaseModal, { callingTab: tab }),
+ },
+ ],
{ divider: true },
appobj &&
appobj.createAppObjectMenu &&
diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte
index d24f0233e..8927dc79f 100644
--- a/packages/web/src/tabs/QueryTab.svelte
+++ b/packages/web/src/tabs/QueryTab.svelte
@@ -51,6 +51,8 @@
getCurrentEditor() != null && !getCurrentEditor()?.isBusy() && getCurrentEditor()?.hasConnection(),
onClick: () => getCurrentEditor().executeCurrent(),
});
+
+ export const allowSwitchDatabase = props => true;
diff --git a/packages/web/src/tabs/TableDataTab.svelte b/packages/web/src/tabs/TableDataTab.svelte
index 7126703fe..5d133f993 100644
--- a/packages/web/src/tabs/TableDataTab.svelte
+++ b/packages/web/src/tabs/TableDataTab.svelte
@@ -57,6 +57,7 @@
export const matchingProps = ['conid', 'database', 'schemaName', 'pureName'];
export const allowAddToFavorites = props => true;
+ export const allowSwitchDatabase = props => true;