Commit f558fa7a by zhaochengxiang

模型衍生表调整

parent 916534dc
......@@ -3,11 +3,4 @@ import React from 'react';
export const EditModelContext = React.createContext({
attrIsEditingFunction: null,
indexIsEditingFunction: null,
});
export const EditInheritedModelContext = React.createContext({
createHistoryModel: false,
createZipperModel: false,
setInheriteState: null,
setInheriteData: null,
});
\ No newline at end of file
});
\ No newline at end of file
import React, { useState, useEffect, useContext } from "react";
import { Modal, Space, Button, Form } from "antd";
import React, { useState, useEffect } from "react";
import { Modal, Space, Button, Form, Tabs, Checkbox } from "antd";
import ImportAction from "./ImportAction";
import { EditInheritedModelContext } from "./ContextManage";
import { inheritanceHistoricalType, inheritanceZipperType } from "./ImportActionInherited";
import { dispatch } from '../../../../model';
const FC = (props) => {
const { visible, modelerData, type, onCancel } = props;
const { visible, modelerData, onCancel } = props;
const [_modelerData, setModelerData] = useState(undefined);
const [modifyModelerData, setModifyModelerData] = useState(undefined);
const [form] = Form.useForm();
const { setInheriteData } = useContext(EditInheritedModelContext);
const [activeKey, setActiveKey] = useState(inheritanceHistoricalType);
const [historicalModelerData, setHistoricalModelerData] = useState(undefined);
const [zipperModelerData, setZipperModelerData] = useState(undefined);
const [createHistorical, setCreateHistorical] = useState(false);
const [createZipper, setCreateZipper] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const [historicalForm] = Form.useForm();
const [zipperForm] = Form.useForm();
useEffect(() => {
if (visible) {
setModelerData(modelerData);
} else {
setModelerData(undefined);
if (modelerData) {
setCreateHistorical((modelerData?.inheritedEasyDataModelerDataModels?.historical)?true:false);
setCreateZipper((modelerData?.inheritedEasyDataModelerDataModels?.zipper)?true:false);
if (modelerData.inheritedEasyDataModelerDataModels?.historical) {
setHistoricalModelerData(modelerData.inheritedEasyDataModelerDataModels?.historical);
} else {
getInheriteDataModel(inheritanceHistoricalType);
}
if (modelerData.inheritedEasyDataModelerDataModels?.zipper) {
setZipperModelerData(modelerData.inheritedEasyDataModelerDataModels?.zipper);
} else {
getInheriteDataModel(inheritanceZipperType);
}
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [visible])
}, [modelerData])
const onChange = (newModelerData) => {
setModifyModelerData(newModelerData);
const getInheriteDataModel = (type) => {
dispatch({
type: 'datamodel.inheriteDataModel',
payload: {
params: {
id: modelerData.id,
inheritanceTypeName: type
}
},
callback: data => {
if (type === inheritanceHistoricalType) {
setHistoricalModelerData(data);
} else if (type === inheritanceZipperType) {
setZipperModelerData(data);
}
}
})
}
const onHistoricalChange = (newModelerData) => {
setHistoricalModelerData(newModelerData);
}
const onOk = () => {
setInheriteData(type, modifyModelerData);
onCancel?.();
const onZipperChange = (newModelerData) => {
setZipperModelerData(newModelerData);
}
const onOk = async () => {
try {
await historicalForm.validateFields();
await zipperForm.validateFields();
const newModelerData = {...modelerData};
newModelerData.inheritedEasyDataModelerDataModels = {
...newModelerData.inheritedEasyDataModelerDataModels,
historical: createHistorical?historicalModelerData: null,
zipper: createZipper?zipperModelerData: null,
}
setConfirmLoading(true);
dispatch({
type: 'datamodel.saveDataModel',
payload: {
data: newModelerData
},
callback: data => {
setConfirmLoading(false);
reset();
window.location?.reload?.();
onCancel?.();
},
error: () => {
setConfirmLoading(false);
}
})
} catch (errInfo) {
console.log('Validate Failed:', errInfo);
}
}
const reset = () => {
setHistoricalModelerData(undefined);
setZipperModelerData(undefined);
}
return (
<Modal
title='编辑衍生表'
visible={visible}
onCancel={() => { onCancel?.(); }}
onCancel={() => {
reset();
onCancel?.();
}}
width='95%'
footer={
<Space>
<Button onClick={ () => { onCancel?.(); } }>取消</Button>
<Button type="primary" onClick={ onOk }>确定</Button>
<Button onClick={ () => {
reset();
onCancel?.();
}}>取消</Button>
<Button type="primary" onClick={ onOk } confirmLoading={confirmLoading}>确定</Button>
</Space>
}
maskClosable={false}
centered={true}
bodyStyle={{
height: '80vh',
overflow: 'auto'
}}
>
{ visible && _modelerData && <ImportAction form={form} action='edit-inherite-modal' roughModelerData={_modelerData} onChange={onChange} /> }
<Tabs
activeKey={activeKey}
onChange={(key) => { setActiveKey(key); }}
tabBarExtraContent={{
left: <span className='mr-5' style={{ fontSize: 16, fontWeight: 500 }}>编辑历史存储形式</span>
}}
>
<Tabs.TabPane
tab={
<span>
<Checkbox
className='mr-2'
checked={createHistorical}
onChange={(e) => {
setCreateHistorical(e.target.checked);
}}
>
</Checkbox>历史表
</span>
}
key={inheritanceHistoricalType}
>
<div style={{ height: '75vh', overflow: 'auto' }}>
{ historicalModelerData && <ImportAction form={historicalForm} action='edit-inherite-modal' roughModelerData={historicalModelerData} onChange={onHistoricalChange} /> }
</div>
</Tabs.TabPane>
<Tabs.TabPane
tab={
<span>
<Checkbox
className='mr-2'
checked={createZipper}
onChange={(e) => {
setCreateZipper(e.target.checked);
}}
></Checkbox>拉链表
</span>
}
key={inheritanceZipperType}
>
<div style={{ height: '75vh', overflow: 'auto' }}>
{ zipperModelerData && <ImportAction form={zipperForm} action='edit-inherite-modal' roughModelerData={zipperModelerData} onChange={onZipperChange} /> }
</div>
</Tabs.TabPane>
</Tabs>
</Modal>
)
}
......
......@@ -10,6 +10,7 @@ import { getQueryParam, showMessage, showNotifaction } from '../../../../util';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, VersionId, Holder, DDL, ReadOnly } from '../../../../util/constant';
import HistoryAndVersionDrawer from './HistoryAndVersionDrawer';
import { EditModelContext } from './ContextManage';
import EditInherited from './EditInherited';
import './EditModel.less';
......@@ -23,6 +24,7 @@ const EditModel = (props) => {
const [ catalogModalVisible, setCatalogModalVisible ] = useState(false);
const [ historyAndVersionDrawerVisible, setHistoryAndVersionDrawerVisible ] = useState(false);
const [ autoTabKey, setAutoTabKey ] = useState(null);
const [ editInheritedParam, setEditInheritedParms ] = useState({visible: false, modelerData: undefined});
const actionRef = useRef('');
const attrIsEditingRef = useRef(false);
......@@ -217,11 +219,6 @@ const EditModel = (props) => {
}
const editInherite = () => {
setActionData({ ...actionData, action: 'edit-inherite' });
actionRef.current = 'edit-inherite';
}
const edit = () => {
setActionData({ ...actionData, action: 'edit' });
actionRef.current = 'edit';
......@@ -312,8 +309,10 @@ const EditModel = (props) => {
{
readOnly!=='true' && <Space>
{
!modelerData?.inheritedFromEasyDataModelerDataModel && <Button type='primary' onClick={editInherite} danger >
编辑衍生表
!modelerData?.inheritedFromEasyDataModelerDataModel && <Button type='primary' onClick={() => {
setEditInheritedParms({visible: true, modelerData})
}} danger >
编辑历史存储形式
</Button>
}
<Tooltip title={editTip}>
......@@ -385,6 +384,13 @@ const EditModel = (props) => {
visible={historyAndVersionDrawerVisible}
onCancel={onHistoryAndVersionDrawerCancel}
/>
<EditInherited
visible={editInheritedParam.visible}
modelerData={editInheritedParam.modelerData}
onCancel={() => {
setEditInheritedParms({visible: false, modelerData: undefined});
}}
/>
</div>
</EditModelContext.Provider>
);
......
......@@ -3,12 +3,11 @@ import { Spin } from 'antd';
import LocalStorage from 'local-storage';
import ImportActionHeader from './ImportActionHeader';
import ImportActionInherited, { inheritanceHistoricalType, inheritanceZipperType } from './ImportActionInherited';
import ImportActionInherited from './ImportActionInherited';
import { ImportActionTable } from './ImportActionTable';
import ImportActionIndex from './ImportActionIndex';
import { getQueryParam } from '../../../../util';
import { Action } from '../../../../util/constant';
import { EditInheritedModelContext } from './ContextManage';
import { dispatch } from '../../../../model';
const ImportAction = (props) => {
......@@ -24,8 +23,6 @@ const ImportAction = (props) => {
const [ supportedIndextypes, setSupportedIndextypes ] = useState([]);
const [ validateReports, setValidateReports ] = useState([]);
const [ loading, setLoading ] = useState(false);
const [createHistoryModel, setCreateHistoryModel] = useState(false);
const [createZipperModel, setCreateZipperModel] = useState(false);
const mountRef = useRef(true);
const modelerDataRef = useRef(null);
......@@ -58,42 +55,38 @@ const ImportAction = (props) => {
modelerDataRef.current = newModelerData;
}
if (action !== 'edit-inherite') {
setLoading(true);
dispatch({
type: 'datamodel.getAllConstraints',
callback: data => {
setConstraints(data);
if (action === 'add') {
// setConstraint(data?.length>0?data[0]:{});
// setTemplate({});
if ((hints||[]).length>0) {
getDraft(data?.length>0?data[0]:{}, {} ,hints);
} else if ((ddl||'').length>0) {
getDraftUsingDDL(data?.length>0?data[0]:{}, {} ,ddl);
} else if ((modelerId||'')!=='') {
getCurrentDataModel();
} else if (roughModelerData) {
setLoading(false);
getExtraData(roughModelerData);
} else {
getDraft(data?.length>0?data[0]:{}, {} ,[]);
}
} else if(action === 'edit' || action === 'detail' || action ==='flow' || action === 'detail-version') {
setLoading(true);
dispatch({
type: 'datamodel.getAllConstraints',
callback: data => {
setConstraints(data);
if (action === 'add') {
// setConstraint(data?.length>0?data[0]:{});
// setTemplate({});
if ((hints||[]).length>0) {
getDraft(data?.length>0?data[0]:{}, {} ,hints);
} else if ((ddl||'').length>0) {
getDraftUsingDDL(data?.length>0?data[0]:{}, {} ,ddl);
} else if ((modelerId||'')!=='') {
getCurrentDataModel();
} else if (action === 'edit-inherite-modal') {
} else if (roughModelerData) {
setLoading(false);
getExtraData(roughModelerData);
} else {
getDraft(data?.length>0?data[0]:{}, {} ,[]);
}
},
error: () => {
} else if(action === 'edit' || action === 'detail' || action ==='flow' || action === 'detail-version') {
getCurrentDataModel();
} else if (action === 'edit-inherite-modal') {
setLoading(false);
getExtraData(roughModelerData);
}
})
} else {
setCreateHistoryModel((modelerData?.inheritedEasyDataModelerDataModels?.historical)?true:false);
setCreateZipperModel((modelerData?.inheritedEasyDataModelerDataModels?.zipper)?true:false);
}
},
error: () => {
setLoading(false);
}
})
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [action, hints, modelerId, ddl ]);
......@@ -539,102 +532,45 @@ const ImportAction = (props) => {
return { partition: newPartition, easyDataModelerDistributionKey: newDistribution, easyDataModelerPrimaryKey: newPrimary, easyDataModelerIndices: newEasyDataModelerIndices, easyDataModelerSemiPrimaryKey: newSemiPrimary};
}
const setInheriteState = (type, value) => {
if (type === inheritanceHistoricalType) {
setCreateHistoryModel(value);
const newModelerData = {...modelerData};
if (newModelerData.inheritedEasyDataModelerDataModels) {
newModelerData.inheritedEasyDataModelerDataModels = {...newModelerData.inheritedEasyDataModelerDataModels, historical: value?modelerData.inheritedEasyDataModelerDataModels?.historical:null, zipper: createZipperModel?modelerData.inheritedEasyDataModelerDataModels?.zipper:null}
onChange?.(newModelerData);
}
} else if (type === inheritanceZipperType) {
setCreateZipperModel(value);
const newModelerData = {...modelerData};
if (newModelerData.inheritedEasyDataModelerDataModels) {
newModelerData.inheritedEasyDataModelerDataModels = {...newModelerData.inheritedEasyDataModelerDataModels, historical: createHistoryModel?modelerData.inheritedEasyDataModelerDataModels?.historical:null, zipper: value?modelerData.inheritedEasyDataModelerDataModels?.zipper:null}
onChange?.(newModelerData);
}
}
}
const setInheriteData = (type, value) => {
if (type === inheritanceHistoricalType) {
const newModelerData = {...modelerDataRef.current};
const newRealModelerData = {...modelerDataRef.current};
if (newModelerData.inheritedEasyDataModelerDataModels) {
newModelerData.inheritedEasyDataModelerDataModels = {...newModelerData.inheritedEasyDataModelerDataModels, historical: value}
newRealModelerData.inheritedEasyDataModelerDataModels = {...newRealModelerData.inheritedEasyDataModelerDataModels, historical: createHistoryModel?value:null}
setModelerData(newModelerData);
modelerDataRef.current = newModelerData;
onChange?.(newRealModelerData);
}
} else if (type === inheritanceZipperType) {
const newModelerData = {...modelerDataRef.current};
const newRealModelerData = {...modelerDataRef.current};
if (newModelerData.inheritedEasyDataModelerDataModels) {
newModelerData.inheritedEasyDataModelerDataModels = {...newModelerData.inheritedEasyDataModelerDataModels, zipper: value};
newRealModelerData.inheritedEasyDataModelerDataModels = {...newRealModelerData.inheritedEasyDataModelerDataModels, zipper: createZipperModel?value:null};
setModelerData(newModelerData);
modelerDataRef.current = newModelerData;
onChange?.(newRealModelerData);
}
}
}
return (
<EditInheritedModelContext.Provider value={{
createHistoryModel,
createZipperModel,
setInheriteState,
setInheriteData,
}}>
<Spin spinning={loading}>
<ImportActionHeader
form={form}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
modelerData={modelerData||{}}
constraints={constraints}
templates={templates}
validateReports={validateReports}
onTemplateChange={onTemplateChange}
onConstraintChange={onConstraintChange}
onChange={onHeaderChange}
terms={terms}
supportedPartitionTypes={supportedPartitionTypes}
/>
<ImportActionInherited modelerData={modelerData} editable={action==='edit-inherite'} />
<ImportActionTable
modelerData={modelerData||{}}
constraint={constraint}
template={template}
validateReports={validateReports}
supportedDatatypes={supportedDatatypes}
onChange={onTableChange}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
action={action}
originAction={getQueryParam(Action, props?.location?.search)}
terms={terms}
/>
<ImportActionIndex
modelerData={modelerData||{}}
constraint={constraint}
template={template}
types={supportedIndextypes}
validateReports={validateReports}
onChange={onIndexChange}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
terms={terms}
/>
</Spin>
</EditInheritedModelContext.Provider>
<Spin spinning={loading}>
<ImportActionHeader
form={form}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
modelerData={modelerData||{}}
constraints={constraints}
templates={templates}
validateReports={validateReports}
onTemplateChange={onTemplateChange}
onConstraintChange={onConstraintChange}
onChange={onHeaderChange}
terms={terms}
supportedPartitionTypes={supportedPartitionTypes}
/>
<ImportActionInherited modelerData={modelerData} />
<ImportActionTable
modelerData={modelerData||{}}
constraint={constraint}
template={template}
validateReports={validateReports}
supportedDatatypes={supportedDatatypes}
onChange={onTableChange}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
action={action}
originAction={getQueryParam(Action, props?.location?.search)}
terms={terms}
/>
<ImportActionIndex
modelerData={modelerData||{}}
constraint={constraint}
template={template}
types={supportedIndextypes}
validateReports={validateReports}
onChange={onIndexChange}
editable={action!=='detail'&&action!=='flow'&&action!=='detail-version'&&action!=='edit-inherite'}
terms={terms}
/>
</Spin>
);
};
......
import React, { useState, useContext, useEffect, useRef } from "react";
import { Button, Tabs, Checkbox } from "antd";
import { DownOutlined, UpOutlined } from "@ant-design/icons";
import React, { useState, useEffect } from "react";
import Preview from './InheritedPreview';
import { EditInheritedModelContext } from "./ContextManage";
import { dispatch } from '../../../../model';
import { Action, ModelerId, PermitCheckOut, Editable, StateId, Holder, ReadOnly } from '../../../../util/constant';
export const inheritanceHistoricalType = 'historical';
export const inheritanceZipperType = 'zipper';
const FC = (props) => {
const { modelerData, editable } = props;
const [collapse, setCollapse] = useState(true);
const [activeKey, setActiveKey] = useState(inheritanceHistoricalType);
const { modelerData } = props;
const [relationModelerDatas, setRelationModelerDatas] = useState([]);
const [historicalModelerData, setHistoricalModelerData] = useState(undefined);
const [zipperModelerData, setZipperModelerData] = useState(undefined);
const { createHistoryModel, createZipperModel, setInheriteState, setInheriteData } = useContext(EditInheritedModelContext);
useEffect(() => {
if (!editable) {
if (modelerData?.inheritedFromEasyDataModelerDataModel) {
const newRelationModelerDatas = [];
newRelationModelerDatas.push(modelerData?.inheritedFromEasyDataModelerDataModel);
if (modelerData?.otherEasyDataModelerDataModelsInheritedFromSameOrigin) {
Object.keys(modelerData.otherEasyDataModelerDataModelsInheritedFromSameOrigin).forEach(key => {
newRelationModelerDatas.push(modelerData.otherEasyDataModelerDataModelsInheritedFromSameOrigin[key]);
})
}
setRelationModelerDatas(newRelationModelerDatas);
} else {
const newRelationModelerDatas = [];
if (modelerData?.inheritedEasyDataModelerDataModels?.historical) {
newRelationModelerDatas.push(modelerData?.inheritedEasyDataModelerDataModels?.historical);
}
if (modelerData?.inheritedEasyDataModelerDataModels?.zipper) {
newRelationModelerDatas.push(modelerData?.inheritedEasyDataModelerDataModels?.zipper);
}
setRelationModelerDatas(newRelationModelerDatas);
if (modelerData?.inheritedFromEasyDataModelerDataModel) {
const newRelationModelerDatas = [];
newRelationModelerDatas.push(modelerData?.inheritedFromEasyDataModelerDataModel);
if (modelerData?.otherEasyDataModelerDataModelsInheritedFromSameOrigin) {
Object.keys(modelerData.otherEasyDataModelerDataModelsInheritedFromSameOrigin).forEach(key => {
newRelationModelerDatas.push(modelerData.otherEasyDataModelerDataModelsInheritedFromSameOrigin[key]);
})
}
setRelationModelerDatas(newRelationModelerDatas);
} else {
if (modelerData) {
if (modelerData.inheritedEasyDataModelerDataModels?.historical) {
setHistoricalModelerData(modelerData.inheritedEasyDataModelerDataModels?.historical);
} else {
getInheriteDataModel(inheritanceHistoricalType);
}
if (modelerData.inheritedEasyDataModelerDataModels?.zipper) {
setZipperModelerData(modelerData.inheritedEasyDataModelerDataModels?.zipper);
} else {
getInheriteDataModel(inheritanceZipperType);
}
const newRelationModelerDatas = [];
if (modelerData?.inheritedEasyDataModelerDataModels?.historical) {
newRelationModelerDatas.push(modelerData?.inheritedEasyDataModelerDataModels?.historical);
}
if (modelerData?.inheritedEasyDataModelerDataModels?.zipper) {
newRelationModelerDatas.push(modelerData?.inheritedEasyDataModelerDataModels?.zipper);
}
setRelationModelerDatas(newRelationModelerDatas);
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [modelerData, editable])
const getInheriteDataModel = (type) => {
dispatch({
type: 'datamodel.inheriteDataModel',
payload: {
params: {
id: modelerData.id,
inheritanceTypeName: type
}
},
callback: data => {
if (type === inheritanceHistoricalType) {
setHistoricalModelerData(data);
setInheriteData(inheritanceHistoricalType, data);
} else if (type === inheritanceZipperType) {
setZipperModelerData(data);
setInheriteData(inheritanceZipperType, data);
}
}
})
}
}, [modelerData])
return (
<div className='model-import-action-inherited'>
<div className='mb-3'>
{
editable ? <Tabs
activeKey={activeKey}
onChange={(key) => { setActiveKey(key); }}
tabBarExtraContent={{
left: <div className='flex mr-6' style={{ alignItems: 'center' }}>
<h2 className='mr-3' style={{ marginBottom: 0 }}>历史存储形式</h2>
{
collapse ? <Button type='primary' size='small' onClick={() => { setCollapse(!collapse); }}>
展开<DownOutlined />
</Button> : <Button type='primary' size='small' onClick={() => { setCollapse(!collapse); }}>
收起<UpOutlined />
</Button>
}
</div>
}}
>
<Tabs.TabPane
tab={
<span>
<Checkbox
className='mr-2'
checked={createHistoryModel}
onChange={(e) => {
setInheriteState(inheritanceHistoricalType, e.target.checked);
}}
>
</Checkbox>历史表
</span>
}
key={inheritanceHistoricalType}
>
{ !collapse && <Preview modelerData={historicalModelerData} type={inheritanceHistoricalType} /> }
</Tabs.TabPane>
<Tabs.TabPane
tab={
<span>
<Checkbox
className='mr-2'
checked={createZipperModel}
onChange={(e) => {
setInheriteState(inheritanceZipperType, e.target.checked);
}}
></Checkbox>拉链表
</span>
}
key={inheritanceZipperType}
>
{ !collapse && <Preview modelerData={zipperModelerData} type={inheritanceZipperType} /> }
</Tabs.TabPane>
</Tabs> : <div className='flex' style={{ alignItems: 'center' }}>
<div className='flex' style={{ alignItems: 'center' }}>
<h2 className='mr-3' style={{ marginBottom: 0 }}>历史存储形式</h2>
{
relationModelerDatas?.length===0 ? <span>暂无信息</span> : relationModelerDatas?.map((item, index) => <a className='mr-3' key={index} onClick={() => {
......@@ -143,7 +47,6 @@ const FC = (props) => {
}}>{item.cnName}</a>)
}
</div>
}
</div>
</div>
)
......
import React, { useState, useMemo } from "react";
import { Row, Col, Tooltip, Typography, Button } from "antd";
import DataGrid from '../../VirtualTable';
import EditInherited from './EditInherited';
import './InheritedPreview.less';
const FC = (props) => {
const { modelerData, type } = props;
const [editInheritedParams, setEditInheritedParms] = useState({ visible: false, modelerData: undefined });
return (
<Row>
<Col span={12}>
<Basic modelerData={modelerData} />
</Col>
<Col span={12}>
<div className='flex'>
<div className='mr-3' style={{ flex: 1 }}>
<Table data={modelerData?.easyDataModelerDataModelAttributes} />
</div>
<Button type='primary' size='small' onClick={() => {
setEditInheritedParms({ visible: true, modelerData });
}}>编辑</Button>
</div>
</Col>
<EditInherited
visible={editInheritedParams.visible}
type={type}
modelerData={editInheritedParams.modelerData}
onCancel={() => {
setEditInheritedParms({ visible: false, modelerData: undefined });
}}
/>
</Row>
)
}
export default FC;
const Basic = ({ modelerData }) => {
const partitionsDescription = useMemo(() => {
let newPartitionsDescription = ''
if (modelerData?.partition?.keys) {
(modelerData?.partition?.keys||[]).forEach((item, index) => {
if (index > 0) {
newPartitionsDescription += ',';
}
newPartitionsDescription += item.name||'';
})
}
if (modelerData?.partition?.partitionType?.cnName) {
newPartitionsDescription += '/' + modelerData?.partition?.partitionType?.cnName||'';
}
return newPartitionsDescription;
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [modelerData])
const primaryDescription = useMemo(() => {
let newPrimaryDescription = ''
if (modelerData?.easyDataModelerPrimaryKey) {
(modelerData?.easyDataModelerPrimaryKey||[]).forEach((item, index) => {
if (index > 0) {
newPrimaryDescription += ',';
}
newPrimaryDescription += item.name||'';
})
}
return newPrimaryDescription;
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [modelerData])
return (
<Row gutter={10}>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
中文名称:&nbsp;<Typography.Text>{modelerData?.cnName}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
英文名称:&nbsp;<Typography.Text>{modelerData?.name}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
分区键:&nbsp;<Typography.Text>{partitionsDescription}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
技术主键:&nbsp;<Typography.Text>{primaryDescription}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
数据类型:&nbsp;<Typography.Text>{modelerData?.dataType}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
绑定加载范围:&nbsp;<Typography.Text>{modelerData?.bindingLoadRange}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
更新时间:&nbsp;<Typography.Text>{modelerData?.dataUpdatingTiming}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
<Col className='mb-4' span={12}>
<Tooltip title=''>
<Typography.Text ellipsis={true}>
数据情况:&nbsp;<Typography.Text>{modelerData?.dataCircumstances}</Typography.Text>
</Typography.Text>
</Tooltip>
</Col>
</Row>
)
}
const Table = ({ data }) => {
const cols = [
{
name: '序号',
key: 'index',
width: 60,
// resizable: true,
},
{
name: '中文名称',
key: 'cnName',
resizable: true,
formatter(props) {
return (
<Tooltip title={props.row.cnName||''}>
<Typography.Text ellipsis={true}>{props.row.cnName}</Typography.Text>
</Tooltip>
)
}
},
{
name: '英文名称',
key: 'name',
resizable: true,
formatter(props) {
return (
<Tooltip title={props.row.name||''}>
<Typography.Text ellipsis={true}>{props.row.name}</Typography.Text>
</Tooltip>
)
}
},
{
name: '类型',
key: 'datatype',
resizable: true,
formatter(props) {
if (props.row.datatype) {
let datatype = props.row.datatype;
if ((datatype.name==='Char'||datatype.name==='Varchar') && datatype.parameterValues?.length>0) {
return `${datatype.name||''}(${(datatype.parameterValues[0]?datatype.parameterValues[0]:0)})`;
} else if ((datatype.name==='Decimal'||datatype.name==='Numeric') && datatype.parameterValues?.length>1) {
return `${datatype.name||''}(${(datatype.parameterValues[0]?datatype.parameterValues[0]:0)},${(datatype.parameterValues[1]?datatype.parameterValues[1]:0)})`;
}
return datatype.name||'';
}
return '';
}
},
];
return (
<DataGrid
className='inherited-preview'
style={{ blockSize: 146 }}
columns={cols}
rows={data||[]}
headerHeight={30}
rowHeight={36}
rowClassName={(row) => {
if (row?.partOfPrimaryKeyLogically) {
return 'primary-row';
}
if (row?.provided || row?.inherited || row?.modelingTemplateTag?.id) {
return 'gray-row';
}
return ''
}}
/>
)
}
\ No newline at end of file
.inherited-preview {
.primary-row {
background-color: #d3ebff !important;
}
.gray-row {
background-color: #f7f7f7 !important;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment