From a73a2f483ef6927def4ba635e306277c34ae4b53 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Tue, 20 Jul 2021 19:19:54 +0200 Subject: [PATCH] feat: option to select schema in query tabs --- .../components/WorkspaceEmptyState.vue | 11 +++-- src/renderer/components/WorkspaceQueryTab.vue | 43 +++++++++++++------ src/renderer/i18n/en-US.js | 3 +- .../store/modules/workspaces.store.js | 11 +---- 4 files changed, 41 insertions(+), 27 deletions(-) diff --git a/src/renderer/components/WorkspaceEmptyState.vue b/src/renderer/components/WorkspaceEmptyState.vue index cfb20dd3..77b9fd11 100644 --- a/src/renderer/components/WorkspaceEmptyState.vue +++ b/src/renderer/components/WorkspaceEmptyState.vue @@ -21,11 +21,16 @@ export default { name: 'WorkspaceEmptyState', computed: { ...mapGetters({ - applicationTheme: 'settings/getApplicationTheme' - }) + applicationTheme: 'settings/getApplicationTheme', + getWorkspace: 'workspaces/getWorkspace', + selectedWorkspace: 'workspaces/getSelected' + }), + workspace () { + return this.getWorkspace(this.selectedWorkspace); + } }, created () { - this.changeBreadcrumbs({}); + this.changeBreadcrumbs({ schema: this.workspace.breadcrumbs.schema }); }, methods: { ...mapActions({ diff --git a/src/renderer/components/WorkspaceQueryTab.vue b/src/renderer/components/WorkspaceQueryTab.vue index b9081b89..4feb7923 100644 --- a/src/renderer/components/WorkspaceQueryTab.vue +++ b/src/renderer/components/WorkspaceQueryTab.vue @@ -14,7 +14,7 @@ :auto-focus="true" :value.sync="query" :workspace="workspace" - :schema="schema" + :schema="breadcrumbsSchema" :is-selected="isSelected" :height="editorHeight" /> @@ -86,12 +86,16 @@
{{ $t('message.affectedRows') }}: {{ affectedCount }}
-
- {{ workspace.breadcrumbs.schema }} +
+ +
@@ -142,6 +146,7 @@ export default { lastQuery: '', isQuering: false, results: [], + selectedSchema: null, resultsCount: 0, durationsCount: 0, affectedCount: 0, @@ -156,9 +161,15 @@ export default { workspace () { return this.getWorkspace(this.connection.uid); }, - schema () { + breadcrumbsSchema () { return this.workspace.breadcrumbs.schema; }, + databaseSchemas () { + return this.workspace.structure.reduce((acc, curr) => { + acc.push(curr.name); + return acc; + }, []); + }, isWorkspaceSelected () { return this.workspace.uid === this.selectedWorkspace; } @@ -166,12 +177,16 @@ export default { watch: { isSelected (val) { if (val) - this.changeBreadcrumbs({ schema: this.schema, query: `Query #${this.tab.index}` }); + this.changeBreadcrumbs({ schema: this.selectedSchema, query: `Query #${this.tab.index}` }); + }, + selectedSchema () { + this.changeBreadcrumbs({ schema: this.selectedSchema, query: `Query #${this.tab.index}` }); } }, created () { this.query = this.tab.content; - this.changeBreadcrumbs({ schema: this.schema, query: `Query #${this.tab.index}` }); + this.selectedSchema = this.breadcrumbsSchema; + this.changeBreadcrumbs({ schema: this.selectedSchema, query: `Query #${this.tab.index}` }); window.addEventListener('keydown', this.onKey); }, @@ -205,7 +220,7 @@ export default { try { // Query Data const params = { uid: this.connection.uid, - schema: this.schema, + schema: this.selectedSchema, query }; @@ -314,8 +329,10 @@ export default { align-items: center; height: 42px; - .workspace-query-buttons { + .workspace-query-buttons, + .workspace-query-info { display: flex; + align-items: center; .btn { display: flex; @@ -325,7 +342,7 @@ export default { } .workspace-query-info { - display: flex; + overflow: visible; > div + div { padding-left: 0.6rem; diff --git a/src/renderer/i18n/en-US.js b/src/renderer/i18n/en-US.js index a1133229..57bfd092 100644 --- a/src/renderer/i18n/en-US.js +++ b/src/renderer/i18n/en-US.js @@ -225,7 +225,8 @@ module.exports = { enableSsh: 'Enable SSH', pageNumber: 'Page number', duplicateTable: 'Duplicate table', - noOpenTabs: 'There are no open tabs, navigate on the left bar or:' + noOpenTabs: 'There are no open tabs, navigate on the left bar or:', + noSchema: 'No schema' }, faker: { address: 'Address', diff --git a/src/renderer/store/modules/workspaces.store.js b/src/renderer/store/modules/workspaces.store.js index 89089855..c6181c00 100644 --- a/src/renderer/store/modules/workspaces.store.js +++ b/src/renderer/store/modules/workspaces.store.js @@ -4,7 +4,6 @@ import Schema from '@/ipc-api/Schema'; import Users from '@/ipc-api/Users'; import { uidGen } from 'common/libs/uidGen'; const tabIndex = []; -let lastBreadcrumbs = {}; export default { namespaced: true, @@ -503,6 +502,7 @@ export default { schema: null, table: null, trigger: null, + triggerFunction: null, procedure: null, function: null, scheduler: null, @@ -510,16 +510,7 @@ export default { query: null }; - const hasLastChildren = Object.keys(lastBreadcrumbs).filter(b => b !== 'schema').some(b => lastBreadcrumbs[b]); - const hasChildren = Object.keys(payload).filter(b => b !== 'schema').some(b => payload[b]); - - if (lastBreadcrumbs.schema === payload.schema && hasLastChildren && !hasChildren) return; - - if (lastBreadcrumbs.schema !== payload.schema) - Schema.useSchema({ uid: getters.getSelected, schema: payload.schema }); - commit('CHANGE_BREADCRUMBS', { uid: getters.getSelected, breadcrumbs: { ...breadcrumbsObj, ...payload } }); - lastBreadcrumbs = { ...breadcrumbsObj, ...payload }; if (payload.schema) commit('ADD_LOADED_SCHEMA', { uid: getters.getSelected, schema: payload.schema });