mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 23:45:59 +00:00
force new tab, if Open data from menu
This commit is contained in:
@@ -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
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -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) =>
|
||||
|
||||
Reference in New Issue
Block a user