Commit cb9047b7 by zhaochengxiang

目录简称

parent ae7cf066
......@@ -348,7 +348,7 @@ const EditModel = (props) => {
</div> */}
<div className='edit-container'>
<div className='edit-container-card'>
<ImportAction hints={hints} onChange={onActionChange} action={action} modelerId={modelerId} ddl={ddl} form={form} terms={terms} roughModelerData={roughModelerData} permitCheckOut={permitCheckOut} stateId={stateId} versionId={versionId} autoTabKey={autoTabKey} logicId={logicId} metadataId={metadataId} {...props} />
<ImportAction hints={hints} onChange={onActionChange} action={action} modelerId={modelerId} ddl={ddl} form={form} terms={terms} roughModelerData={roughModelerData} permitCheckOut={permitCheckOut} stateId={stateId} versionId={versionId} autoTabKey={autoTabKey} logicId={logicId} metadataId={metadataId} catalogId={catalogId} {...props} />
</div>
</div>
<div className='edit-footer'>
......
......@@ -210,6 +210,9 @@ const ImportAction = React.forwardRef((props, ref) => {
dispatch({
type: 'datamodel.getDraftUsingMetadataId',
payload: {
params: {
dataCatalogId: catalogId,
},
data: {
metadataTableId: _metadataId,
modelerModelingConstraint: _constraint,
......
import React, { useState, useEffect, useMemo, useRef } from 'react';
import { Form, Input, Row, Col, Select, AutoComplete, Button, Divider, Tooltip, Checkbox, Space } from 'antd';
import { Form, Input, Row, Col, Select, AutoComplete, Button, Divider, Tooltip, Checkbox, Space, Typography } from 'antd';
import { DownOutlined, UpOutlined, ExclamationCircleFilled, WarningFilled, MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
import { Subject } from 'rxjs';
import classnames from 'classnames';
......@@ -49,6 +49,26 @@ const updateOptions = [
const dataTypeRemark = '描述ETL框架中目标表的数据类型';
const bindingLoadRemark = '描述ETL框架绑定加载列表,如chain、daily、current等';
const NameInput = ({ value, prefixName, onChange }) => {
const customName = useMemo(() => {
let _customName = (value??'')
if (prefixName) {
_customName = (value??'').slice(prefixName.length);
}
return _customName
}, [value, prefixName])
return (
<Input value={customName} onChange={(e) => {
onChange?.(`${prefixName??''}${e.target.value}`)
}}
addonBefore={prefixName&&<Tooltip title={`简称:${prefixName}`}>
<Typography.Text ellipsis={true} style={{ maxWidth: 150 }}>{prefixName}</Typography.Text>
</Tooltip>}
/>
)
}
const ImportActionHeader = (props) => {
const { editable, form, modelerData, constraints, templates, onConstraintChange, onTemplateChange, validateReports, onChange, terms, supportedPartitionTypes } = props;
......@@ -81,7 +101,6 @@ const ImportActionHeader = (props) => {
}, [modelerData?.dataType])
useEffect(() => {
setAutoTranslate((modelerData.name||'')==='');
if (modelerData) {
form?.setFieldsValue(modelerData);
......@@ -99,7 +118,6 @@ const ImportActionHeader = (props) => {
if (modelerData && modelerData.distributionKey) {
return (modelerData.distributionKey.keys??[]).map(item => item.name).toString()
}
return '';
}, [modelerData])
......@@ -553,27 +571,28 @@ const ImportActionHeader = (props) => {
onChange && onChange(changedValues, allValues);
//有手动编辑过英文名称并且有内容的情况下, 不能通过编辑中文名称自动翻译
if (changedValues.hasOwnProperty('name')) {
setAutoTranslate(changedValues.name==='');
} else if (changedValues.hasOwnProperty('cnName')) {
if (autoTranslate) {
dispatchLatest({
type: 'datamodel.translatePhase',
payload: {
params: {
phaseInChinese: changedValues.cnName,
}
},
callback: data => {
if ((data?.translated||'') !== '') {
form?.setFieldsValue({ name: data?.translated||'' });
onChange && onChange({...changedValues, ...{name: data?.translated||''}}, {...allValues, ...{name: data?.translated||''}});
}
}
})
}
} else if (changedValues.hasOwnProperty('dataType')) {
// //有手动编辑过英文名称并且有内容的情况下, 不能通过编辑中文名称自动翻译
// if (changedValues.hasOwnProperty('name')) {
// setAutoTranslate(changedValues.name==='');
// } else if (changedValues.hasOwnProperty('cnName')) {
// if (autoTranslate) {
// dispatchLatest({
// type: 'datamodel.translatePhase',
// payload: {
// params: {
// phaseInChinese: changedValues.cnName,
// }
// },
// callback: data => {
// if ((data?.translated||'') !== '') {
// form?.setFieldsValue({ name: data?.translated||'' });
// onChange && onChange({...changedValues, ...{name: data?.translated||''}}, {...allValues, ...{name: data?.translated||''}});
// }
// }
// })
// }
// }
if (changedValues.hasOwnProperty('dataType')) {
if (changedValues.dataType) {
onChange?.({...changedValues, bindingLoadRange: ''}, {...allValues, bindingLoadRange: ''});
} else {
......@@ -631,7 +650,9 @@ const ImportActionHeader = (props) => {
style={{ marginBottom }}
>
{
editable ? <AutoComplete options={options} onSearch={onSearch} /> : <span className='word-wrap'>{highlightSearchContentByTerms(modelerData?.name, terms)}</span>
editable ? <NameInput
prefixName={modelerData?.prefixName}
/> : <span className='word-wrap'>{highlightSearchContentByTerms(modelerData?.name, terms)}</span>
}
</Form.Item>
</Col>
......
......@@ -32,20 +32,8 @@ class UpdateTreeItemForm extends React.Component {
const { type, form } = this.props;
const { radioDisable } = this.state;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 18 },
},
};
return (
<Form
{...formItemLayout}
form={form}
>
{
......@@ -64,6 +52,20 @@ class UpdateTreeItemForm extends React.Component {
<Input />
</Form.Item>
<Form.Item
label="简称"
name="abbreviation"
rules={[{ required: true, message: '请输入简称!' }]}
>
<Input />
</Form.Item>
<Form.Item
label="范围"
name="rangeList"
rules={[{ required: true, message: '请输入范围!' }]}
>
<Input />
</Form.Item>
<Form.Item
label="描述"
name="remark"
rules={[{ required: true, message: '请输入描述!' }]}
......@@ -83,18 +85,15 @@ const UpdateTreeItemModal = (props) => {
useEffect(() => {
if (visible) {
let _action = '';
if (type === 'add') {
_action = item ? 'sub' : 'root';
}
form.setFields([{ name: 'name', errors: [] }, { name: 'remark', errors: [] }]);
if (type === 'add') {
form.setFieldsValue({ action: _action, name: '', remark: '' });
form.setFieldsValue({ action: _action });
} else {
form.setFieldsValue({ action: '', name: item?item.name:'', remark: item?item.remark:'' });
form.setFieldsValue({ action: '', ...item, rangeList: (item?.rangeList??[]).toString() });
}
}
//eslint-disable-next-line react-hooks/exhaustive-deps
......@@ -110,21 +109,21 @@ const UpdateTreeItemModal = (props) => {
let payload = null;
if (type === 'add' && values.action==='root') {
payload = {
name: values.name||'',
remark: values.remark||'',
...values,
rangeList: (values.rangeList??'').split(','),
parentId: rootId
};
} else if (type === 'add') {
payload = {
name: values.name||'',
remark: values.remark||'',
...values,
rangeList: (values.rangeList??'').split(','),
parentId: item.id
};
} else {
payload = {
...item,
name: values.name||'',
remark: values.remark||'',
...values,
rangeList: (values.rangeList??'').split(','),
}
}
......@@ -134,8 +133,8 @@ const UpdateTreeItemModal = (props) => {
data: payload
},
callback: id => {
setConfirmLoading(false);
form.resetFields();
if (onOk) {
onOk(id, payload);
......@@ -152,13 +151,14 @@ const UpdateTreeItemModal = (props) => {
return (
<Modal
forceRender
destroyOnClose
confirmLoading={confirmLoading}
visible={visible}
title={type==='add'?"新增目录":"更新目录"}
onOk={handleOk}
onCancel={() => {
setConfirmLoading(false);
form.resetFields();
onCancel && onCancel();
}}
>
......
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