Commit 3feb6361 by zhaochengxiang

调整模型编辑

parent e048963b
import React, { useState, useCallback, useRef, useEffect } from 'react'; import React, { useState, useCallback, useRef, useEffect } from 'react';
import { Input, Form, Typography, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Table } from 'antd'; import { Input, Form, Typography, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Table, Space } from 'antd';
import { DeleteOutlined, CloseOutlined, CheckOutlined } from '@ant-design/icons'; import { DeleteOutlined, CloseOutlined, CheckOutlined, PlusOutlined, MinusOutlined } from '@ant-design/icons';
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';
import update from 'immutability-helper'; import update from 'immutability-helper';
...@@ -275,6 +275,7 @@ const ImportActionIndex = (props) => { ...@@ -275,6 +275,7 @@ const ImportActionIndex = (props) => {
const [ keyword, setKeyword ] = useState(''); const [ keyword, setKeyword ] = useState('');
const [ filterData, setFilterData ] = useState([]); const [ filterData, setFilterData ] = useState([]);
const [ insertIndex, setInsertIndex ] = useState(0);
const dataRef = useRef(); const dataRef = useRef();
dataRef.current = data; dataRef.current = data;
...@@ -312,8 +313,21 @@ const ImportActionIndex = (props) => { ...@@ -312,8 +313,21 @@ const ImportActionIndex = (props) => {
const newFilterData = [...filterData, {name: ''}]; const newFilterData = [...filterData, {name: ''}];
setFilterData(newFilterData); setFilterData(newFilterData);
setInsertIndex(newFilterData.length-1);
edit(newFilterData[newFilterData.length-1]); edit(newFilterData[newFilterData.length-1]);
}
const insert = (record) => {
const newData = [...data];
const index = newData.findIndex((item) => record.name === item.name);
newData.splice(index+1, 0, {name: ''});
setFilterData(newData);
setInsertIndex(index+1);
edit(newData[index+1]);
} }
const edit = (record) => { const edit = (record) => {
...@@ -390,7 +404,7 @@ const ImportActionIndex = (props) => { ...@@ -390,7 +404,7 @@ const ImportActionIndex = (props) => {
if (index === -1) { if (index === -1) {
newData.push({ newData.splice(insertIndex, 0 , {
name: row.name, name: row.name,
unique: row.unique, unique: row.unique,
indexedEasyDataModelAttributes: _indexedEasyDataModelAttributes, indexedEasyDataModelAttributes: _indexedEasyDataModelAttributes,
...@@ -503,21 +517,48 @@ const ImportActionIndex = (props) => { ...@@ -503,21 +517,48 @@ const ImportActionIndex = (props) => {
return isEditing(record) ? ( return isEditing(record) ? (
<> <>
<Typography.Link className='mr-3' disabled={editingKey===null} onClick={() => save()}> <Typography.Link className='mr-3' disabled={editingKey===null} onClick={(event) => {
event.preventDefault();
event.stopPropagation();
save();
}}>
保存 保存
</Typography.Link> </Typography.Link>
<Typography.Link disabled={editingKey===null} onClick={() => {cancel()}}> <Typography.Link disabled={editingKey===null} onClick={(event) => {
event.preventDefault();
event.stopPropagation();
cancel();
}}>
取消 取消
</Typography.Link> </Typography.Link>
</> </>
) : ( ) : (
<> <>
<Typography.Link className='mr-3' disabled={editingKey!==null} onClick={() => edit(record)}> <Button
编辑 className='mr-3'
</Typography.Link> size='small'
<Typography.Link className='mr-3' disabled={editingKey!==null} onClick={() => remove(record)}> type='text'
删除 icon={<PlusOutlined />}
</Typography.Link> disabled={editingKey !== null}
onClick={(event) => {
event.preventDefault();
event.stopPropagation();
insert(record);
}}
/>
<Button
className='mr-3'
size='small'
type='text'
icon={<MinusOutlined />}
disabled={editingKey !== null}
onClick={(event) => {
event.preventDefault();
event.stopPropagation();
remove(record);
}}
/>
</> </>
); );
}, },
...@@ -572,7 +613,6 @@ const ImportActionIndex = (props) => { ...@@ -572,7 +613,6 @@ const ImportActionIndex = (props) => {
</div> </div>
} }
title="规则详情" title="规则详情"
trigger="click"
> >
<a href="">详情</a> <a href="">详情</a>
</Popover> </Popover>
...@@ -642,6 +682,10 @@ const ImportActionIndex = (props) => { ...@@ -642,6 +682,10 @@ const ImportActionIndex = (props) => {
setKeyword(e.target.value||''); setKeyword(e.target.value||'');
} }
const onClickRowTriggerEdit = (record) => {
edit(record);
}
let disableAdd = false, addTip = ''; let disableAdd = false, addTip = '';
if (editingKey!==null || keyword!=='') { if (editingKey!==null || keyword!=='') {
disableAdd = true; disableAdd = true;
...@@ -650,22 +694,24 @@ const ImportActionIndex = (props) => { ...@@ -650,22 +694,24 @@ const ImportActionIndex = (props) => {
return ( return (
<div className='model-import-action-index'> <div className='model-import-action-index'>
<h2>数据表索引</h2> <div className='d-flex mb-3' style={{ justifyContent: 'space-between' }}>
<div className='d-flex mb-3' style={{ justifyContent: editable?'space-between':'flex-end' }}> <h2 style={{ marginBottom: 0 }}>数据表索引</h2>
{ <Space>
editable && <Tooltip title={addTip}> {
<Button onClick={onAddClick} disabled={disableAdd} >新建</Button> editable && <Tooltip title={addTip}>
</Tooltip> <Button onClick={onAddClick} disabled={disableAdd} >新建</Button>
} </Tooltip>
<div className='d-flex' style={{ alignItems: 'center' }}> }
<Input <div className='d-flex' style={{ alignItems: 'center' }}>
placeholder="请输入索引名称" <Input
allowClear placeholder="请输入索引名称"
value={keyword} allowClear
onChange={onSearchInputChange} value={keyword}
style={{ width: inputWidth }} onChange={onSearchInputChange}
/> style={{ width: inputWidth }}
</div> />
</div>
</Space>
</div> </div>
<div className='mb-3' id="containerId"> <div className='mb-3' id="containerId">
<DndProvider backend={HTML5Backend} > <DndProvider backend={HTML5Backend} >
...@@ -683,6 +729,9 @@ const ImportActionIndex = (props) => { ...@@ -683,6 +729,9 @@ const ImportActionIndex = (props) => {
return { return {
index, index,
onClick: (event) => {
onClickRowTriggerEdit(record);
},
moveRow moveRow
} }
}} }}
......
...@@ -405,14 +405,14 @@ const ImportActionPartition = (props) => { ...@@ -405,14 +405,14 @@ const ImportActionPartition = (props) => {
return ( return (
<div className='model-import-action-index'> <div className='model-import-action-index'>
<h2>数据表分区</h2> <div className='d-flex mb-3' style={{ justifyContent: 'space-between' }}>
{ <h2 style={{ marginBottom: 0 }}>数据表分区</h2>
editable && <div className='d-flex mb-3'> {
<Tooltip title={addTip}> editable && <Tooltip title={addTip}>
<Button onClick={onAddClick} disabled={disableAdd} >新建</Button> <Button onClick={onAddClick} disabled={disableAdd} >新建</Button>
</Tooltip> </Tooltip>
</div> }
} </div>
<div className='mb-3' id="containerId"> <div className='mb-3' id="containerId">
<Form form={form} component={false} onValuesChange={onValuesChange}> <Form form={form} component={false} onValuesChange={onValuesChange}>
<Table <Table
......
import React, { useState, useCallback, useRef, useEffect } from 'react'; import React, { useState, useCallback, useRef, useEffect } from 'react';
import { Input, Form, Typography, Radio, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Table, Pagination } from 'antd'; import { Input, Form, Typography, Radio, Button, Select, Row, Col, Popover, Checkbox, Tooltip, Table, Pagination, Space } from 'antd';
import { CloseOutlined, CheckOutlined, PlusOutlined, MinusOutlined } from '@ant-design/icons'; import { CloseOutlined, CheckOutlined, PlusOutlined, MinusOutlined } from '@ant-design/icons';
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';
...@@ -941,7 +941,6 @@ const ImportActionTable = (props) => { ...@@ -941,7 +941,6 @@ const ImportActionTable = (props) => {
</div> </div>
} }
title="规则详情" title="规则详情"
trigger="click"
> >
<a href="">详情</a> <a href="">详情</a>
</Popover> </Popover>
...@@ -1066,8 +1065,9 @@ const ImportActionTable = (props) => { ...@@ -1066,8 +1065,9 @@ const ImportActionTable = (props) => {
return ( return (
<div className='model-import-action-table'> <div className='model-import-action-table'>
<h2>数据表结构</h2> <div className='d-flex mb-3' style={{ justifyContent: 'space-between', alignItems: 'center' }}>
<div className='d-flex mb-3' style={{ justifyContent: editable?'space-between':'flex-end' }}> <h2 style={{ marginBottom: 0 }}>数据表结构</h2>
<Space>
{ {
editable && <Tooltip title={addTip}> editable && <Tooltip title={addTip}>
<Button onClick={onAddClick} disabled={disableAdd} >新建</Button> <Button onClick={onAddClick} disabled={disableAdd} >新建</Button>
...@@ -1082,6 +1082,7 @@ const ImportActionTable = (props) => { ...@@ -1082,6 +1082,7 @@ const ImportActionTable = (props) => {
style={{ width: inputWidth }} style={{ width: inputWidth }}
/> />
</div> </div>
</Space>
</div> </div>
<div className='mb-3' id="containerId"> <div className='mb-3' id="containerId">
<DndProvider backend={HTML5Backend} > <DndProvider backend={HTML5Backend} >
......
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