Commit a4fb5a9b by zhaochengxiang

增加规则切换

parent b7b38364
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect, useRef } from 'react';
import { Alert } from 'antd'; import { Alert, Select } from 'antd';
import ImportActionHeader from './ImportActionHeader'; import ImportActionHeader from './ImportActionHeader';
import ImportActionTable from './ImportActionTable'; import ImportActionTable from './ImportActionTable';
...@@ -7,11 +7,14 @@ import ImportActionTable from './ImportActionTable'; ...@@ -7,11 +7,14 @@ import ImportActionTable from './ImportActionTable';
import { dispatchLatest, dispatch } from '../../../../model'; import { dispatchLatest, dispatch } from '../../../../model';
const { Option } = Select;
const ImportAction = (props) => { const ImportAction = (props) => {
const { action, hints, onChange, form } = props; const { action, hints, onChange, form } = props;
const [ constraints, setConstraints ] = useState([]); const [ constraints, setConstraints ] = useState([]);
const [ modelerData, setModelerData ] = useState({}); const [ constraint, setConstraint ] = useState({});
const [ modelerData, setModelerData ] = useState(null);
const [ supportedDatatypes, setSupportedDatatypes ] = useState([]); const [ supportedDatatypes, setSupportedDatatypes ] = useState([]);
const mountRef = useRef(); const mountRef = useRef();
...@@ -26,7 +29,8 @@ const ImportAction = (props) => { ...@@ -26,7 +29,8 @@ const ImportAction = (props) => {
type: 'datamodel.getAllConstraints', type: 'datamodel.getAllConstraints',
callback: data => { callback: data => {
setConstraints(data||[]); setConstraints(data||[]);
getDraft((data||[]).length>0?data[0]:{}); setConstraint((data||[]).length>0?data[0]:{});
getDraft((data||[]).length>0?data[0]:{}, hints);
} }
}) })
} }
...@@ -34,23 +38,45 @@ const ImportAction = (props) => { ...@@ -34,23 +38,45 @@ const ImportAction = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, []);
const getDraft = (constraint) => { const getDraft = (_constraint, _hints) => {
dispatchLatest({ dispatchLatest({
type: 'datamodel.getDraft', type: 'datamodel.getDraft',
payload: { payload: {
data: { data: {
hints, hints,
modelerModelingConstraint: constraint modelerModelingConstraint: _constraint
} }
}, },
callback: data => { callback: data => {
if (!modelerData) {
setModelerData(data||{}); setModelerData(data||{});
} else {
//切换规则,更新数据表结构
setModelerData({...modelerData, easyDataModelerDataModelAttributes: [...data.easyDataModelerDataModelAttributes] })
}
onChange && onChange(data||{}); onChange && onChange(data||{});
getSupportedDatatypes(); getSupportedDatatypes();
} }
}) })
} }
const onConstraintChange = (value) => {
let currentConstraint = null, _hints = [];
(constraints||[]).forEach((_constraint, index) => {
if (_constraint.id === value) {
currentConstraint = _constraint;
}
});
(modelerData.easyDataModelerDataModelAttributes||[]).forEach((_attribute, index) => {
_hints.push(_attribute.cnName||'');
});
setConstraint(currentConstraint);
getDraft(currentConstraint, _hints);
}
const getSupportedDatatypes = () => { const getSupportedDatatypes = () => {
dispatch({ dispatch({
type: 'datamodel.getSupportedDatatypes', type: 'datamodel.getSupportedDatatypes',
...@@ -70,6 +96,17 @@ const ImportAction = (props) => { ...@@ -70,6 +96,17 @@ const ImportAction = (props) => {
return ( return (
<> <>
<div className='d-flex mb-3'>
<Select value={constraint.id?constraint.id:''} style={{ marginLeft: 'auto' }} onChange={onConstraintChange}>
{
(constraints||[]).map((constraint, index) => {
return (
<Option key={index} value={constraint.id}>{ constraint.name||'' }</Option>
)
})
}
</Select>
</div>
<ImportActionHeader <ImportActionHeader
form={form} form={form}
editable={action!=='detail'} editable={action!=='detail'}
...@@ -85,6 +122,7 @@ const ImportAction = (props) => { ...@@ -85,6 +122,7 @@ const ImportAction = (props) => {
} }
<ImportActionTable <ImportActionTable
modelerData={modelerData||{}} modelerData={modelerData||{}}
constraint={constraint}
supportedDatatypes={supportedDatatypes} supportedDatatypes={supportedDatatypes}
onChange={onTableChange} onChange={onTableChange}
editable={action!=='detail'} /> editable={action!=='detail'} />
......
...@@ -4,9 +4,21 @@ import { Form, Input, Row, Col } from 'antd'; ...@@ -4,9 +4,21 @@ import { Form, Input, Row, Col } from 'antd';
const ImportActionHeader = (props) => { const ImportActionHeader = (props) => {
const { editable, modelerData, form } = props; const { editable, modelerData, form } = props;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 4 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 },
},
};
return ( return (
<Form <Form
form={form} form={form}
{...formItemLayout}
name="basic" name="basic"
initialValues={{ initialValues={{
cnName: modelerData.cnName||'', cnName: modelerData.cnName||'',
...@@ -19,6 +31,7 @@ const ImportActionHeader = (props) => { ...@@ -19,6 +31,7 @@ const ImportActionHeader = (props) => {
<Form.Item <Form.Item
label="中文名称" label="中文名称"
name="cnName" name="cnName"
labelAlign="left"
rules={[{ required: true, message: '请输入中文名称!' }]} rules={[{ required: true, message: '请输入中文名称!' }]}
> >
<Input disabled={!editable} /> <Input disabled={!editable} />
...@@ -28,6 +41,7 @@ const ImportActionHeader = (props) => { ...@@ -28,6 +41,7 @@ const ImportActionHeader = (props) => {
<Form.Item <Form.Item
label="英文名称" label="英文名称"
name="name" name="name"
labelAlign="left"
rules={[{ required: true, message: '请输入英文名称!' }]} rules={[{ required: true, message: '请输入英文名称!' }]}
> >
<Input disabled={!editable} /> <Input disabled={!editable} />
...@@ -39,6 +53,7 @@ const ImportActionHeader = (props) => { ...@@ -39,6 +53,7 @@ const ImportActionHeader = (props) => {
<Form.Item <Form.Item
label="描述" label="描述"
name="remark" name="remark"
labelAlign="left"
disabled={!editable} disabled={!editable}
rules={[{ required: true, message: '请输入描述!' }]} rules={[{ required: true, message: '请输入描述!' }]}
> >
......
import React, { useState, useCallback, useRef } from 'react'; import React, { useState, useCallback, useRef, useEffect } from 'react';
import { Table, Input, InputNumber, Form, Typography, Radio, Divider, Button, Popconfirm, Select, Row, Col } from 'antd'; import { Table, Input, InputNumber, Form, Typography, Radio, Divider, Button, Popconfirm, Select, Row, Col } from 'antd';
import { DndProvider, useDrag, useDrop } from 'react-dnd'; import { DndProvider, useDrag, useDrop } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend'; import { HTML5Backend } from 'react-dnd-html5-backend';
...@@ -211,12 +211,17 @@ const DragableBodyRow = ({ index, moveRow, className, style, ...restProps }) => ...@@ -211,12 +211,17 @@ const DragableBodyRow = ({ index, moveRow, className, style, ...restProps }) =>
}; };
const ImportActionTable = (props) => { const ImportActionTable = (props) => {
const { modelerData, onChange, editable, supportedDatatypes } = props; const { modelerData, onChange, editable, supportedDatatypes, constraint } = props;
const data = modelerData.easyDataModelerDataModelAttributes||[]; const data = modelerData.easyDataModelerDataModelAttributes||[];
const [form] = Form.useForm(); const [form] = Form.useForm();
const [editingKey, setEditingKey] = useState(''); const [editingKey, setEditingKey] = useState('');
const [suggests, setSuggests] = useState([]); const [suggests, setSuggests] = useState([]);
//规则改变的时候 数据表为可编辑状态
useEffect(() => {
setEditingKey('');
}, [constraint])
const isEditing = (record) => record.iid === editingKey; const isEditing = (record) => record.iid === editingKey;
const onAddClick = () => { const onAddClick = () => {
......
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