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;