Commit 1e0e1b61 by zhaochengxiang

增加模型索引

parent 5736f07a
......@@ -9,7 +9,7 @@ import AssetModal from "./AssetModal"
import AssetDetail from "./AssetDetail"
import AssetItem from './AssetItem';
import { dispatch } from '../../../../model';
import { showMessage } from '../../../../util';
import { showMessage, showNotifaction } from '../../../../util';
import "./AssetTable.less";
......@@ -205,8 +205,12 @@ const AssetTable = (props) =>{
refresh && getTable();
}
const onImportElementVisibleChange = (visible = false) => {
const onImportElementVisibleChange = (visible = false, tip = '') => {
setImportElementVisible(visible);
if (tip && tip!== '') {
showNotifaction('导入提示', tip, 5);
}
}
const onFilterElementVisibleChange = (visible = false, refresh = false) => {
......
......@@ -46,7 +46,7 @@ const ImportElement = (props) => {
callback: data => {
setConfirmLoading(false);
reset();
onCancel && onCancel();
onCancel && onCancel(false, data);
},
error: () => {
setConfirmLoading(false);
......
......@@ -3,7 +3,7 @@ import { Select } from 'antd';
import ImportActionHeader from './ImportActionHeader';
import ImportActionTable from './ImportActionTable';
// import ImportActionIndex from './ImportActionIndex';
import ImportActionIndex from './ImportActionIndex';
import { dispatchLatest, dispatch } from '../../../../model';
......@@ -82,8 +82,11 @@ const ImportAction = (props) => {
data
},
callback: data => {
setModelerData({...modelerData, easyDataModelerDataModelAttributes: [...data.easyDataModelerDataModelAttributes] })
onChange && onChange(data||{});
let newModelerData = {...(data||{})};
newModelerData = { ...newModelerData, easyDataModelerIndices: getIndicesWhenTableChange(newModelerData) }
setModelerData(newModelerData)
onChange && onChange(newModelerData);
}
})
}
......@@ -149,6 +152,7 @@ const ImportAction = (props) => {
});
const newModelerData = {...modelerData, easyDataModelerModelingTemplate: currentTemplate };
setModelerData(newModelerData)
onChange && onChange(newModelerData);
......@@ -168,8 +172,10 @@ const ImportAction = (props) => {
//validate 是否需要对字段进行校验
const onTableChange = (data, validate=false) => {
const newModelerData = {...modelerData, easyDataModelerDataModelAttributes: data};
let newModelerData = {...modelerData, ...{easyDataModelerDataModelAttributes: data}};
newModelerData = { ...newModelerData, easyDataModelerIndices: getIndicesWhenTableChange(newModelerData) };
setModelerData(newModelerData);
onChange && onChange(newModelerData);
......@@ -190,6 +196,35 @@ const ImportAction = (props) => {
})
}
const onIndexChange = (data) => {
const newModelerData = {...modelerData, easyDataModelerIndices: data};
setModelerData(newModelerData);
onChange && onChange(newModelerData);
}
const getIndicesWhenTableChange = (newModelerData) => {
const newEasyDataModelerIndices = [...(newModelerData.easyDataModelerIndices||[])];
(newModelerData.easyDataModelerIndices||[]).forEach((easyDataModelerIndex, index) => {
const newIndexedEasyDataModelAttributes = [], newIndexedAttributeOrders = [];
(easyDataModelerIndex.indexedEasyDataModelAttributes||[]).forEach((indexedEasyDataModelAttribute, _index) => {
const __index = (newModelerData.easyDataModelerDataModelAttributes||[]).findIndex(item => item.iid === indexedEasyDataModelAttribute.iid);
if (__index !== -1) {
newIndexedEasyDataModelAttributes.push({...newModelerData.easyDataModelerDataModelAttributes[__index]});
newIndexedAttributeOrders.push(easyDataModelerIndex.indexedAttributeOrders[_index]);
}
})
const item = newEasyDataModelerIndices[index];
newEasyDataModelerIndices.splice(index, 1, {...item, ...{ indexedEasyDataModelAttributes: newIndexedEasyDataModelAttributes, indexedAttributeOrders: newIndexedAttributeOrders }} )
})
return newEasyDataModelerIndices.filter(item => (item.indexedEasyDataModelAttributes||[]).length > 0);
}
return (
<>
{
......@@ -219,8 +254,15 @@ const ImportAction = (props) => {
validateReports={validateReports}
supportedDatatypes={supportedDatatypes}
onChange={onTableChange}
editable={action!=='detail'} />
{/* <ImportActionIndex data={indexData} fileds={fileds} onChange={onIndexChange} editable={action!=='detail'} /> */}
editable={action!=='detail'}
/>
<ImportActionIndex
modelerData={modelerData||{}}
constraint={constraint}
template={template}
onChange={onIndexChange}
editable={action!=='detail'}
/>
</>
);
};
......
......@@ -220,7 +220,7 @@ const DragableBodyRow = ({ index, moveRow, className, style, ...restProps }) =>
const ImportActionTable = (props) => {
const { modelerData, onChange, editable, supportedDatatypes, constraint, template, validateReports } = props;
const data = modelerData.easyDataModelerDataModelAttributes||[];
const [ data, setData ] = useState([]);
const [ form ] = Form.useForm();
const [ editingKey, setEditingKey ] = useState('');
......@@ -228,6 +228,9 @@ const ImportActionTable = (props) => {
const [ keyword, setKeyword ] = useState('');
const [ filterData, setFilterData ] = useState([]);
const onChangeRef = useRef();
onChangeRef.current = onChange;
//规则改变的时候 数据表为可编辑状态
useEffect(() => {
......@@ -236,6 +239,7 @@ const ImportActionTable = (props) => {
useEffect(() => {
setData(modelerData.easyDataModelerDataModelAttributes||[]);
setFilterData((modelerData.easyDataModelerDataModelAttributes||[]).filter(item => (item.name||'').indexOf(keyword)!==-1 || (item.cnName).indexOf(keyword)!==-1));
}, [modelerData, keyword])
......@@ -287,14 +291,17 @@ const ImportActionTable = (props) => {
try {
const row = await form.validateFields();
if ((row.datatype.name||'')==='') {
form.setFields([{ name: 'datatype', errors: ['必须选择类型'] }]);
return;
}
(row.datatype.parameterNames||[]).forEach((parameterName, index) => {
if (!row.datatype.parameterValues[index] || row.datatype.parameterValues[index]==='') {
row.datatype.parameterValues[index] = 0;
}
})
// console.log('row', row);
const newData = [...data];
const index = newData.findIndex((item) => editingKey === item.iid);
......@@ -392,7 +399,7 @@ const ImportActionTable = (props) => {
dataIndex: 'nullable',
editable: true,
render: (nullable, record, index) => {
if (nullable === false) {
if (!nullable) {
return '否';
} else if (nullable === true) {
return '是';
......@@ -407,7 +414,7 @@ const ImportActionTable = (props) => {
dataIndex: 'partOfPrimaryKey',
editable: true,
render: (partOfPrimaryKey, record, index) => {
if (partOfPrimaryKey === false) {
if (!partOfPrimaryKey) {
return '否';
} else if (partOfPrimaryKey === true) {
return '是';
......@@ -422,7 +429,7 @@ const ImportActionTable = (props) => {
dataIndex: 'partOfDistributionKey',
editable: true,
render: (partOfDistributionKey, record, index) => {
if (partOfDistributionKey === false) {
if (!partOfDistributionKey) {
return '否';
} else if (partOfDistributionKey === true) {
return '是';
......@@ -574,7 +581,7 @@ const ImportActionTable = (props) => {
],
});
onChange && onChange(newData);
onChangeRef.current && onChangeRef.current(newData);
},
//eslint-disable-next-line react-hooks/exhaustive-deps
[data],
......@@ -665,7 +672,7 @@ const ImportActionTable = (props) => {
</>
),
expandIcon: ({ expanded, onExpand, record }) => {
return <></>;
return null;
},
rowExpandable: record => (editingKey!==''&&(suggests||[]).length>0),
expandedRowKeys: [editingKey]
......
......@@ -110,7 +110,7 @@ const ImportModal = (props) => {
const cancel = () => {
reset();
onCancel && onCancel(true);
onCancel && onCancel();
}
const save = async () => {
......
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