diff --git a/src/main/ipc-handlers/tables.js b/src/main/ipc-handlers/tables.js
index 56705fb0..8c9799c2 100644
--- a/src/main/ipc-handlers/tables.js
+++ b/src/main/ipc-handlers/tables.js
@@ -29,7 +29,7 @@ export default (connections) => {
if (sortParams && sortParams.field && sortParams.dir)
query.orderBy({ [sortParams.field]: sortParams.dir.toUpperCase() });
- const result = await query.run({ details: true });
+ const result = await query.run({ details: true, schema });
return { status: 'success', response: result };
}
diff --git a/src/main/libs/clients/MySQLClient.js b/src/main/libs/clients/MySQLClient.js
index 8402145e..ff22a255 100644
--- a/src/main/libs/clients/MySQLClient.js
+++ b/src/main/libs/clients/MySQLClient.js
@@ -1419,7 +1419,7 @@ export class MySQLClient extends AntaresCore {
name: field.orgName,
alias: field.name,
orgName: field.orgName,
- schema: field.schema,
+ schema: field.schema || args.schema,
table: field.table,
tableAlias: field.table,
orgTable: field.orgTable,
diff --git a/src/renderer/components/Workspace.vue b/src/renderer/components/Workspace.vue
index 271a9e61..b1e0561f 100644
--- a/src/renderer/components/Workspace.vue
+++ b/src/renderer/components/Workspace.vue
@@ -91,7 +91,11 @@
-
+
{{ tab.table }}
@@ -102,6 +106,18 @@
/>
+
+
+
+
+ {{ tab.table }}
+
+
+
{
- if (e.deltaY > 0) this.$refs.tabWrap.scrollLeft += 50;
- else this.$refs.tabWrap.scrollLeft -= 50;
- });
- this.hasWheelEvent = true;
- }
+ this.addWheelEvent();
+ },
+ openAsDataTab (tab) {
+ this.newTab({ uid: this.connection.uid, schema: tab.schema, table: tab.table, type: 'data' });
+ this.addWheelEvent();
},
closeTab (tab) {
if (tab.type === 'query' && this.queryTabs.length === 1) return;
@@ -328,6 +341,15 @@ export default {
},
hideProcessesModal () {
this.isProcessesModal = false;
+ },
+ addWheelEvent () {
+ if (!this.hasWheelEvent) {
+ this.$refs.tabWrap.addEventListener('wheel', e => {
+ if (e.deltaY > 0) this.$refs.tabWrap.scrollLeft += 50;
+ else this.$refs.tabWrap.scrollLeft -= 50;
+ });
+ this.hasWheelEvent = true;
+ }
}
}
};
diff --git a/src/renderer/components/WorkspaceExploreBarSchema.vue b/src/renderer/components/WorkspaceExploreBarSchema.vue
index 00065bd7..8aec5de8 100644
--- a/src/renderer/components/WorkspaceExploreBarSchema.vue
+++ b/src/renderer/components/WorkspaceExploreBarSchema.vue
@@ -20,6 +20,7 @@
class="menu-item"
:class="{'text-bold': breadcrumbs.schema === database.name && [breadcrumbs.table, breadcrumbs.view].includes(table.name)}"
@click="selectTable({schema: database.name, table})"
+ @dblclick="openDataTab({schema: database.name, table})"
@contextmenu.prevent="showTableContext($event, table)"
>
@@ -281,8 +282,12 @@ export default {
this.changeBreadcrumbs({ schema, table: null });
},
selectTable ({ schema, table }) {
- this.setBreadcrumbs({ schema, [table.type]: table.name });
this.newTab({ uid: this.connection.uid, table: table.name, schema: this.database.name, type: 'temp-data' });
+ this.setBreadcrumbs({ schema, [table.type]: table.name });
+ },
+ openDataTab ({ schema, table }) {
+ this.newTab({ uid: this.connection.uid, table: table.name, schema: this.database.name, type: 'data' });
+ this.setBreadcrumbs({ schema, [table.type]: table.name });
},
showSchemaContext (event, schema) {
this.selectSchema(schema);
diff --git a/src/renderer/components/WorkspaceTableTab.vue b/src/renderer/components/WorkspaceTableTab.vue
index c9c8e5d4..bc6d0812 100644
--- a/src/renderer/components/WorkspaceTableTab.vue
+++ b/src/renderer/components/WorkspaceTableTab.vue
@@ -187,7 +187,7 @@ export default {
},
data () {
return {
- tabUid: 'data',
+ tabUid: 'data', // ???
isQuering: false,
isPageMenu: false,
results: [],
diff --git a/src/renderer/store/modules/workspaces.store.js b/src/renderer/store/modules/workspaces.store.js
index 731dc5a6..7c66644a 100644
--- a/src/renderer/store/modules/workspaces.store.js
+++ b/src/renderer/store/modules/workspaces.store.js
@@ -493,14 +493,44 @@ export default {
},
newTab ({ state, commit }, { uid, content, type, autorun, schema, table }) {
let tabUid;
+ const workspaceTabs = state.workspaces.find(workspace => workspace.uid === uid);
+
if (type === 'temp-data') {
- const workspaceTabs = state.workspaces.find(workspace => workspace.uid === uid);
- const tempTabs = workspaceTabs ? workspaceTabs.tabs.filter(tab => tab.type === 'temp-data') : false;
- if (tempTabs && tempTabs.length) { // id temp table already opened
- for (const tab of tempTabs) {
- commit('REPLACE_TAB', { uid, tab: tab.uid, type, schema, table });
- tabUid = tab.uid;
+ const existentTab = workspaceTabs
+ ? workspaceTabs.tabs.find(tab =>
+ tab.schema === schema &&
+ tab.table === table &&
+ ['temp-data', 'data'].includes(tab.type))
+ : false;
+
+ if (existentTab) { // if data tab exists
+ tabUid = existentTab.uid;
+ }
+ else {
+ const tempTabs = workspaceTabs ? workspaceTabs.tabs.filter(tab => tab.type === 'temp-data') : false;
+ if (tempTabs && tempTabs.length) { // if temp table already opened
+ for (const tab of tempTabs) {
+ commit('REPLACE_TAB', { uid, tab: tab.uid, type, schema, table });
+ tabUid = tab.uid;
+ }
}
+ else {
+ tabUid = uidGen('T');
+ commit('NEW_TAB', { uid, tab: tabUid, content, type, autorun, schema, table });
+ }
+ }
+ }
+ else if (type === 'data') {
+ const existentTab = workspaceTabs
+ ? workspaceTabs.tabs.find(tab =>
+ tab.schema === schema &&
+ tab.table === table &&
+ ['temp-data', 'data'].includes(tab.type))
+ : false;
+
+ if (existentTab) {
+ commit('REPLACE_TAB', { uid, tab: existentTab.uid, type, schema, table });
+ tabUid = existentTab.uid;
}
else {
tabUid = uidGen('T');