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

View File

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