force new tab, if Open data from menu

This commit is contained in:
Jan Prochazka
2021-01-05 17:13:39 +01:00
parent 463b179a6b
commit 162874f383
2 changed files with 28 additions and 18 deletions

View File

@@ -25,6 +25,7 @@ const menus = {
{ {
label: 'Open data', label: 'Open data',
tab: 'TableDataTab', tab: 'TableDataTab',
forceNewTab: true,
}, },
{ {
label: 'Open structure', label: 'Open structure',
@@ -55,6 +56,7 @@ const menus = {
{ {
label: 'Open data', label: 'Open data',
tab: 'ViewDataTab', tab: 'ViewDataTab',
forceNewTab: true,
}, },
{ {
label: 'Show CREATE VIEW script', label: 'Show CREATE VIEW script',
@@ -112,7 +114,8 @@ export async function openDatabaseObjectDetail(
openNewTab, openNewTab,
tabComponent, tabComponent,
sqlTemplate, sqlTemplate,
{ schemaName, pureName, conid, database, objectTypeField } { schemaName, pureName, conid, database, objectTypeField },
forceNewTab
) { ) {
const connection = await getConnectionInfo({ conid }); const connection = await getConnectionInfo({ conid });
const tooltip = `${connection.displayName || connection.server}\n${database}\n${fullDisplayName({ const tooltip = `${connection.displayName || connection.server}\n${database}\n${fullDisplayName({
@@ -120,20 +123,24 @@ export async function openDatabaseObjectDetail(
pureName, pureName,
})}`; })}`;
openNewTab({ openNewTab(
title: pureName, {
tooltip, title: pureName,
icon: sqlTemplate ? 'img sql-file' : icons[objectTypeField], tooltip,
tabComponent: sqlTemplate ? 'QueryTab' : tabComponent, icon: sqlTemplate ? 'img sql-file' : icons[objectTypeField],
props: { tabComponent: sqlTemplate ? 'QueryTab' : tabComponent,
schemaName, props: {
pureName, schemaName,
conid, pureName,
database, conid,
objectTypeField, database,
initialArgs: sqlTemplate ? { sqlTemplate } : null, objectTypeField,
initialArgs: sqlTemplate ? { sqlTemplate } : null,
},
}, },
}); undefined,
{ forceNewTab }
);
} }
function Menu({ data }) { function Menu({ data }) {
@@ -233,7 +240,7 @@ function Menu({ data }) {
} }
); );
} else { } else {
openDatabaseObjectDetail(openNewTab, menu.tab, menu.sqlTemplate, data); openDatabaseObjectDetail(openNewTab, menu.tab, menu.sqlTemplate, data, menu.forceNewTab);
} }
}} }}
> >
@@ -258,7 +265,8 @@ function DatabaseObjectAppObject({ data, commonProps }) {
conid, conid,
database, database,
objectTypeField, objectTypeField,
} },
false
); );
}; };

View File

@@ -11,7 +11,7 @@ export default function useOpenNewTab() {
const openedTabs = useOpenedTabs(); const openedTabs = useOpenedTabs();
const openNewTab = React.useCallback( const openNewTab = React.useCallback(
async (newTab, initialData = undefined) => { async (newTab, initialData = undefined, options) => {
let existing = null; let existing = null;
const { savedFile } = newTab.props || {}; const { savedFile } = newTab.props || {};
@@ -22,8 +22,10 @@ export default function useOpenNewTab() {
); );
} }
const { forceNewTab } = options || {};
const component = tabs[newTab.tabComponent]; const component = tabs[newTab.tabComponent];
if (!existing && component && component.matchingProps) { if (!existing && !forceNewTab && component && component.matchingProps) {
const testString = stableStringify(_.pick(newTab.props || {}, component.matchingProps)); const testString = stableStringify(_.pick(newTab.props || {}, component.matchingProps));
existing = openedTabs.find( existing = openedTabs.find(
(x) => (x) =>