mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 09:56:01 +00:00
open related datble column menu #41
This commit is contained in:
@@ -79,7 +79,7 @@ const defaultTabs = {
|
|||||||
views: 'ViewDataTab',
|
views: 'ViewDataTab',
|
||||||
};
|
};
|
||||||
|
|
||||||
async function openObjectDetail(
|
export async function openDatabaseObjectDetail(
|
||||||
setOpenedTabs,
|
setOpenedTabs,
|
||||||
tabComponent,
|
tabComponent,
|
||||||
sqlTemplate,
|
sqlTemplate,
|
||||||
@@ -128,7 +128,7 @@ function Menu({ data, makeAppObj, setOpenedTabs, showModal }) {
|
|||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
openObjectDetail(setOpenedTabs, menu.tab, menu.sqlTemplate, data);
|
openDatabaseObjectDetail(setOpenedTabs, menu.tab, menu.sqlTemplate, data);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -147,7 +147,7 @@ const databaseObjectAppObject = () => (
|
|||||||
const key = title;
|
const key = title;
|
||||||
const Icon = (props) => getIconImage(icons[objectTypeField], props);
|
const Icon = (props) => getIconImage(icons[objectTypeField], props);
|
||||||
const onClick = ({ schemaName, pureName }) => {
|
const onClick = ({ schemaName, pureName }) => {
|
||||||
openObjectDetail(
|
openDatabaseObjectDetail(
|
||||||
setOpenedTabs,
|
setOpenedTabs,
|
||||||
defaultTabs[objectTypeField],
|
defaultTabs[objectTypeField],
|
||||||
defaultTabs[objectTypeField] ? null : 'CREATE OBJECT',
|
defaultTabs[objectTypeField] ? null : 'CREATE OBJECT',
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ import ColumnLabel from './ColumnLabel';
|
|||||||
import DropDownButton from '../widgets/DropDownButton';
|
import DropDownButton from '../widgets/DropDownButton';
|
||||||
import { DropDownMenuItem, DropDownMenuDivider } from '../modals/DropDownMenu';
|
import { DropDownMenuItem, DropDownMenuDivider } from '../modals/DropDownMenu';
|
||||||
import { useSplitterDrag } from '../widgets/Splitter';
|
import { useSplitterDrag } from '../widgets/Splitter';
|
||||||
import { FontIcon } from '../icons';
|
import { FontIcon, TableIcon } from '../icons';
|
||||||
import { isTypeDateTime } from '@dbgate/tools';
|
import { isTypeDateTime } from '@dbgate/tools';
|
||||||
|
import { openNewTab } from '../utility/common';
|
||||||
|
import { openDatabaseObjectDetail } from '../appobj/databaseObjectAppObject';
|
||||||
|
import { useSetOpenedTabs } from '../utility/globalState';
|
||||||
|
|
||||||
const HeaderDiv = styled.div`
|
const HeaderDiv = styled.div`
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -37,8 +40,44 @@ const GroupingLabel = styled.span`
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default function ColumnHeaderControl({ column, setSort, onResize, order, setGrouping, grouping }) {
|
export default function ColumnHeaderControl({
|
||||||
|
column,
|
||||||
|
setSort,
|
||||||
|
onResize,
|
||||||
|
order,
|
||||||
|
setGrouping,
|
||||||
|
grouping,
|
||||||
|
conid,
|
||||||
|
database,
|
||||||
|
}) {
|
||||||
const onResizeDown = useSplitterDrag('clientX', onResize);
|
const onResizeDown = useSplitterDrag('clientX', onResize);
|
||||||
|
const { foreignKey } = column;
|
||||||
|
const setOpenedTabs = useSetOpenedTabs();
|
||||||
|
|
||||||
|
const openReferencedTable = () => {
|
||||||
|
openDatabaseObjectDetail(setOpenedTabs, 'TableDataTab', null, {
|
||||||
|
schemaName: foreignKey.refSchemaName,
|
||||||
|
pureName: foreignKey.refTableName,
|
||||||
|
conid,
|
||||||
|
database,
|
||||||
|
objectTypeField: 'tables',
|
||||||
|
});
|
||||||
|
// openNewTab(setOpenedTabs, {
|
||||||
|
// title: foreignKey.refTableName,
|
||||||
|
// tooltip,
|
||||||
|
// icon: sqlTemplate ? 'sql.svg' : icons[objectTypeField],
|
||||||
|
// tabComponent: sqlTemplate ? 'QueryTab' : tabComponent,
|
||||||
|
// props: {
|
||||||
|
// schemaName,
|
||||||
|
// pureName,
|
||||||
|
// conid,
|
||||||
|
// database,
|
||||||
|
// objectTypeField,
|
||||||
|
// initialArgs: sqlTemplate ? { sqlTemplate } : null,
|
||||||
|
// },
|
||||||
|
// });
|
||||||
|
};
|
||||||
|
console.log('COLUMN', column);
|
||||||
return (
|
return (
|
||||||
<HeaderDiv>
|
<HeaderDiv>
|
||||||
<LabelDiv>
|
<LabelDiv>
|
||||||
@@ -63,6 +102,12 @@ export default function ColumnHeaderControl({ column, setSort, onResize, order,
|
|||||||
<DropDownMenuItem onClick={() => setSort('ASC')}>Sort ascending</DropDownMenuItem>
|
<DropDownMenuItem onClick={() => setSort('ASC')}>Sort ascending</DropDownMenuItem>
|
||||||
<DropDownMenuItem onClick={() => setSort('DESC')}>Sort descending</DropDownMenuItem>
|
<DropDownMenuItem onClick={() => setSort('DESC')}>Sort descending</DropDownMenuItem>
|
||||||
<DropDownMenuDivider />
|
<DropDownMenuDivider />
|
||||||
|
{foreignKey && (
|
||||||
|
<DropDownMenuItem onClick={openReferencedTable}>
|
||||||
|
Open table <strong>{foreignKey.refTableName}</strong>
|
||||||
|
</DropDownMenuItem>
|
||||||
|
)}
|
||||||
|
{foreignKey && <DropDownMenuDivider />}
|
||||||
<DropDownMenuItem onClick={() => setGrouping('GROUP')}>Group by</DropDownMenuItem>
|
<DropDownMenuItem onClick={() => setGrouping('GROUP')}>Group by</DropDownMenuItem>
|
||||||
<DropDownMenuItem onClick={() => setGrouping('MAX')}>MAX</DropDownMenuItem>
|
<DropDownMenuItem onClick={() => setGrouping('MAX')}>MAX</DropDownMenuItem>
|
||||||
<DropDownMenuItem onClick={() => setGrouping('MIN')}>MIN</DropDownMenuItem>
|
<DropDownMenuItem onClick={() => setGrouping('MIN')}>MIN</DropDownMenuItem>
|
||||||
|
|||||||
@@ -1174,6 +1174,8 @@ export default function DataGridCore(props) {
|
|||||||
>
|
>
|
||||||
<ColumnHeaderControl
|
<ColumnHeaderControl
|
||||||
column={col}
|
column={col}
|
||||||
|
conid={conid}
|
||||||
|
database={database}
|
||||||
setSort={display.sortable ? (order) => display.setSort(col.uniqueName, order) : null}
|
setSort={display.sortable ? (order) => display.setSort(col.uniqueName, order) : null}
|
||||||
order={display.getSortOrder(col.uniqueName)}
|
order={display.getSortOrder(col.uniqueName)}
|
||||||
onResize={(diff) => display.resizeColumn(col.uniqueName, col.widthNumber, diff)}
|
onResize={(diff) => display.resizeColumn(col.uniqueName, col.widthNumber, diff)}
|
||||||
|
|||||||
Reference in New Issue
Block a user