diff --git a/app/src/mainMenuDefinition.js b/app/src/mainMenuDefinition.js index a02ea0512..3cfa0bec9 100644 --- a/app/src/mainMenuDefinition.js +++ b/app/src/mainMenuDefinition.js @@ -22,8 +22,10 @@ module.exports = [ { label: 'Window', submenu: [ - { command: 'tabs.closeTab', hideDisabled: true }, - { command: 'tabs.closeAll', hideDisabled: true }, + { command: 'tabs.closeTab', hideDisabled: false }, + { command: 'tabs.closeAll', hideDisabled: false }, + { command: 'tabs.closeTabsWithCurrentDb', hideDisabled: false }, + { command: 'tabs.closeTabsButCurrentDb', hideDisabled: false }, { divider: true }, { command: 'app.zoomIn', hideDisabled: true }, { command: 'app.zoomOut', hideDisabled: true }, diff --git a/packages/web/src/widgets/TabsPanel.svelte b/packages/web/src/widgets/TabsPanel.svelte index 5effbd1fc..b82fedd82 100644 --- a/packages/web/src/widgets/TabsPanel.svelte +++ b/packages/web/src/widgets/TabsPanel.svelte @@ -53,6 +53,18 @@ })) ); }; + const closeTabsWithCurrentDb = () => { + const db = getCurrentDatabase(); + closeMultipleTabs(tab => { + return db?.connection?._id == tab?.props?.conid && db?.name == tab?.props?.database; + }); + }; + const closeTabsButCurrentDb = () => { + const db = getCurrentDatabase(); + closeMultipleTabs(tab => { + return db?.connection?._id != tab?.props?.conid || db?.name != tab?.props?.database; + }); + }; const closeCurrentTab = () => { closeTab(getActiveTabId()); }; @@ -117,6 +129,22 @@ onClick: closeCurrentTab, }); + registerCommand({ + id: 'tabs.closeTabsWithCurrentDb', + category: 'Tabs', + name: 'Close tabs with current DB', + testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(), + onClick: closeTabsWithCurrentDb, + }); + + registerCommand({ + id: 'tabs.closeTabsButCurrentDb', + category: 'Tabs', + name: 'Close tabs but current DB', + testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(), + onClick: closeTabsButCurrentDb, + }); + registerCommand({ id: 'tabs.addToFavorites', category: 'Tabs', @@ -143,7 +171,15 @@ import { showModal } from '../modals/modalTools'; import newQuery from '../query/newQuery'; - import { currentDatabase, getActiveTab, getOpenedTabs, openedTabs, activeTabId, getActiveTabId } from '../stores'; + import { + currentDatabase, + getActiveTab, + getOpenedTabs, + openedTabs, + activeTabId, + getActiveTabId, + getCurrentDatabase, + } from '../stores'; import tabs from '../tabs'; import { setSelectedTab } from '../utility/common'; import contextMenu from '../utility/contextMenu';