database object context menu tidy up

This commit is contained in:
Jan Prochazka
2021-01-23 09:17:38 +01:00
parent 5935c9a9e7
commit 11f5bb8b93

View File

@@ -1,6 +1,6 @@
import _ from 'lodash'; import _ from 'lodash';
import React from 'react'; import React from 'react';
import { DropDownMenuItem } from '../modals/DropDownMenu'; import { DropDownMenuDivider, DropDownMenuItem } from '../modals/DropDownMenu';
import { getConnectionInfo } from '../utility/metadataLoaders'; import { getConnectionInfo } from '../utility/metadataLoaders';
import fullDisplayName from '../utility/fullDisplayName'; import fullDisplayName from '../utility/fullDisplayName';
import { filterName } from 'dbgate-datalib'; import { filterName } from 'dbgate-datalib';
@@ -43,8 +43,11 @@ const menus = {
tab: 'TableStructureTab', tab: 'TableStructureTab',
}, },
{ {
label: 'Show CREATE TABLE script', label: 'Query designer',
sqlTemplate: 'CREATE TABLE', isQueryDesigner: true,
},
{
isDivider: true,
}, },
{ {
label: 'Export', label: 'Export',
@@ -59,8 +62,11 @@ const menus = {
isActiveChart: true, isActiveChart: true,
}, },
{ {
label: 'Query designer', isDivider: true,
isQueryDesigner: true, },
{
label: 'SQL: CREATE TABLE',
sqlTemplate: 'CREATE TABLE',
}, },
], ],
views: [ views: [
@@ -70,12 +76,15 @@ const menus = {
forceNewTab: true, forceNewTab: true,
}, },
{ {
label: 'Show CREATE VIEW script', label: 'Open structure',
sqlTemplate: 'CREATE OBJECT', tab: 'TableStructureTab',
}, },
{ {
label: 'Show CREATE TABLE script', label: 'Query designer',
sqlTemplate: 'CREATE TABLE', isQueryDesigner: true,
},
{
isDivider: true,
}, },
{ {
label: 'Export', label: 'Export',
@@ -85,32 +94,35 @@ const menus = {
label: 'Open in free table editor', label: 'Open in free table editor',
isOpenFreeTable: true, isOpenFreeTable: true,
}, },
{
label: 'Open structure',
tab: 'TableStructureTab',
},
{ {
label: 'Open active chart', label: 'Open active chart',
isActiveChart: true, isActiveChart: true,
}, },
{ {
label: 'Query designer', isDivider: true,
isQueryDesigner: true, },
{
label: 'SQL: CREATE VIEW',
sqlTemplate: 'CREATE OBJECT',
},
{
label: 'SQL: CREATE TABLE',
sqlTemplate: 'CREATE TABLE',
}, },
], ],
procedures: [ procedures: [
{ {
label: 'Show CREATE PROCEDURE script', label: 'SQL: CREATE PROCEDURE',
sqlTemplate: 'CREATE OBJECT', sqlTemplate: 'CREATE OBJECT',
}, },
{ {
label: 'Show EXECUTE script', label: 'SQL: EXECUTE',
sqlTemplate: 'EXECUTE PROCEDURE', sqlTemplate: 'EXECUTE PROCEDURE',
}, },
], ],
functions: [ functions: [
{ {
label: 'Show CREATE FUNCTION script', label: 'SQL: CREATE FUNCTION',
sqlTemplate: 'CREATE OBJECT', sqlTemplate: 'CREATE OBJECT',
}, },
], ],
@@ -169,103 +181,107 @@ function Menu({ data }) {
return ( return (
<> <>
{menus[data.objectTypeField].map(menu => ( {menus[data.objectTypeField].map(menu =>
<DropDownMenuItem menu.isDivider ? (
key={menu.label} <DropDownMenuDivider />
onClick={async () => { ) : (
if (menu.isExport) { <DropDownMenuItem
showModal(modalState => ( key={menu.label}
<ImportExportModal onClick={async () => {
modalState={modalState} if (menu.isExport) {
initialValues={{ showModal(modalState => (
sourceStorageType: 'database', <ImportExportModal
sourceConnectionId: data.conid, modalState={modalState}
sourceDatabaseName: data.database, initialValues={{
sourceSchemaName: data.schemaName, sourceStorageType: 'database',
sourceList: [data.pureName], sourceConnectionId: data.conid,
}} sourceDatabaseName: data.database,
/> sourceSchemaName: data.schemaName,
)); sourceList: [data.pureName],
} else if (menu.isOpenFreeTable) { }}
const coninfo = await getConnectionInfo(data); />
openNewTab({ ));
title: data.pureName, } else if (menu.isOpenFreeTable) {
icon: 'img free-table', const coninfo = await getConnectionInfo(data);
tabComponent: 'FreeTableTab', openNewTab({
props: { title: data.pureName,
initialArgs: { icon: 'img free-table',
functionName: 'tableReader', tabComponent: 'FreeTableTab',
props: { props: {
connection: { initialArgs: {
...coninfo, functionName: 'tableReader',
database: data.database, props: {
connection: {
...coninfo,
database: data.database,
},
schemaName: data.schemaName,
pureName: data.pureName,
}, },
schemaName: data.schemaName,
pureName: data.pureName,
}, },
}, },
}, });
}); } else if (menu.isActiveChart) {
} else if (menu.isActiveChart) { const driver = await getDriver();
const driver = await getDriver(); const dmp = driver.createDumper();
const dmp = driver.createDumper(); dmp.put('^select * from %f', data);
dmp.put('^select * from %f', data); openNewTab(
openNewTab( {
{ title: data.pureName,
title: data.pureName, icon: 'img chart',
icon: 'img chart', tabComponent: 'ChartTab',
tabComponent: 'ChartTab', props: {
props: { conid: data.conid,
conid: data.conid, database: data.database,
database: data.database, },
}, },
}, {
{ editor: {
editor: { config: { chartType: 'bar' },
config: { chartType: 'bar' }, sql: dmp.s,
sql: dmp.s, },
}
);
} else if (menu.isQueryDesigner) {
openNewTab(
{
title: data.pureName,
icon: 'img query-design',
tabComponent: 'QueryDesignTab',
props: {
conid: data.conid,
database: data.database,
},
}, },
} {
); editor: {
} else if (menu.isQueryDesigner) { tables: [
openNewTab( {
{ ...data,
title: data.pureName, designerId: uuidv1(),
icon: 'img query-design', left: 50,
tabComponent: 'QueryDesignTab', top: 50,
props: { },
conid: data.conid, ],
database: data.database, },
}, }
}, );
{ } else {
editor: { openDatabaseObjectDetail(
tables: [ openNewTab,
{ menu.tab,
...data, menu.sqlTemplate,
designerId: uuidv1(), data,
left: 50, menu.forceNewTab,
top: 50, menu.initialData
}, );
], }
}, }}
} >
); {menu.label}
} else { </DropDownMenuItem>
openDatabaseObjectDetail( )
openNewTab, )}
menu.tab,
menu.sqlTemplate,
data,
menu.forceNewTab,
menu.initialData
);
}
}}
>
{menu.label}
</DropDownMenuItem>
))}
</> </>
); );
} }