diff --git a/packages/web/src/commands/changeDatabaseStatusCommand.ts b/packages/web/src/commands/changeDatabaseStatusCommand.ts new file mode 100644 index 000000000..cb1b59cee --- /dev/null +++ b/packages/web/src/commands/changeDatabaseStatusCommand.ts @@ -0,0 +1,43 @@ +import _ from 'lodash'; +import { currentDatabase, getCurrentDatabase } from '../stores'; +import getElectron from '../utility/getElectron'; +import registerCommand from './registerCommand'; +import axiosInstance from '../utility/axiosInstance'; + +const electron = getElectron(); + +registerCommand({ + id: 'database.changeState', + category: 'Database', + name: 'Change status', + getSubCommands: () => { + const current = getCurrentDatabase(); + if (!current) return []; + const { connection, name } = current; + const dbid = { + conid: connection._id, + database: name, + }; + return [ + { + text: 'Sync model', + onClick: () => { + axiosInstance.post('database-connections/sync-model', dbid); + }, + }, + { + text: 'Reopen', + onClick: () => { + axiosInstance.post('database-connections/refresh', dbid); + }, + }, + { + text: 'Disconnect', + onClick: () => { + if (electron) axiosInstance.post('database-connections/disconnect', dbid); + currentDatabase.set(null); + }, + }, + ]; + }, +}); diff --git a/packages/web/src/commands/runCommand.ts b/packages/web/src/commands/runCommand.ts index 871f12ecc..760f24c7c 100644 --- a/packages/web/src/commands/runCommand.ts +++ b/packages/web/src/commands/runCommand.ts @@ -26,3 +26,9 @@ export function runGroupCommand(group) { const real = values.find(x => x.group == group && !x.isGroupCommand && x.enabled); if (real && real.onClick) real.onClick(); } + +export function findCommand(id) { + const commandsValue = getCommands(); + const command = commandsValue[id]; + return command; +} diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 2b1b689cd..d884e6578 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -16,6 +16,7 @@ import { openElectronFile } from '../utility/openElectronFile'; import { getDefaultFileFormat } from '../plugins/fileformats'; import { getCurrentConfig, getCurrentDatabase } from '../stores'; import './recentDatabaseSwitch'; +import './changeDatabaseStatusCommand'; import hasPermission from '../utility/hasPermission'; import axiosInstance from '../utility/axiosInstance'; import _ from 'lodash'; diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte index c5021f700..040cb35c8 100644 --- a/packages/web/src/widgets/StatusBar.svelte +++ b/packages/web/src/widgets/StatusBar.svelte @@ -7,7 +7,6 @@ [tabid]: info, })); } -
@@ -64,7 +63,7 @@
{/if} {#if connection && $status} -
+
visibleCommandPalette.set(findCommand('database.changeState'))}> {#if $status.name == 'pending'} Loading {:else if $status.name == 'checkStructure'} @@ -94,7 +93,9 @@ {#if $status?.analysedTime}
@@ -144,5 +145,4 @@ .clickable:hover { background-color: var(--theme-bg-statusbar-inv-hover); } -