mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-03 01:23:57 +00:00
database object context menu tidy up
This commit is contained in:
@@ -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>
|
|
||||||
))}
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user