Commit b6eaec39 by zhaochengxiang

优化代码

parent 88059818
import React from 'react';
export const DatasourceContext = React.createContext();
\ No newline at end of file
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useContext } from 'react';
import { Row, Col, Typography, Divider, Spin, Empty } from 'antd'; import { Row, Col, Typography, Divider, Spin, Empty } from 'antd';
import TaskItem from './TaskItem'; import TaskItem from './TaskItem';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { DatasourceContext } from './ContextManager';
import './DatasourceItem.less'; import './DatasourceItem.less';
const DatasourceItem = (props) => { const DatasourceItem = (props) => {
const { data, onStartTask, onEditTask, onLogTask, onDeleteTask, expanded, refresh, refreshSuccess, scope } = props; const { data, expanded, refresh, scope } = props;
const [ tasks, setTasks ] = useState(null); const [ tasks, setTasks ] = useState(null);
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const { refreshTasksSuccess } = useContext(DatasourceContext);
useEffect(() => { useEffect(() => {
if (expanded && !tasks) { if (expanded && !tasks) {
getTasks(); getTasks();
...@@ -42,7 +45,7 @@ const DatasourceItem = (props) => { ...@@ -42,7 +45,7 @@ const DatasourceItem = (props) => {
callback: data => { callback: data => {
setLoading(false); setLoading(false);
setTasks(data); setTasks(data);
refresh && refreshSuccess && refreshSuccess(); refresh && refreshTasksSuccess && refreshTasksSuccess();
}, },
error: () => { error: () => {
setLoading(false); setLoading(false);
...@@ -93,10 +96,6 @@ const DatasourceItem = (props) => { ...@@ -93,10 +96,6 @@ const DatasourceItem = (props) => {
<TaskItem <TaskItem
key={index} key={index}
data={task} data={task}
onStart={onStartTask}
onEdit={onEditTask}
onLog={onLogTask}
onDelete={onDeleteTask}
/> />
</Col> </Col>
); );
......
...@@ -6,7 +6,7 @@ import DatasourceItem from './DatasourceItem'; ...@@ -6,7 +6,7 @@ import DatasourceItem from './DatasourceItem';
const DatasourceList = (props) => { const DatasourceList = (props) => {
const { loading, data, onEdit, onAddTask, onDelete, onStartTask, onEditTask, onLogTask, onDeleteTask, idBindTasksNeedRefresh, refreshTasksSuccess, scope } = props; const { loading, data, onEdit, onAddTask, onDelete, idBindTasksNeedRefresh, scope } = props;
const [ expandedBindId, setExpandedBindId ] = useState({}); const [ expandedBindId, setExpandedBindId ] = useState({});
...@@ -69,7 +69,7 @@ const DatasourceList = (props) => { ...@@ -69,7 +69,7 @@ const DatasourceList = (props) => {
</Space> </Space>
</div> </div>
} }
description={ <DatasourceItem data={item} scope={scope} expanded={expanded} refresh={idBindTasksNeedRefresh===item.id} onStartTask={onStartTask} onEditTask={onEditTask} onLogTask={onLogTask} onDeleteTask={onDeleteTask} refreshSuccess={refreshTasksSuccess} /> } description={ <DatasourceItem data={item} scope={scope} expanded={expanded} refresh={idBindTasksNeedRefresh===item.id} /> }
/> />
</List.Item> </List.Item>
); );
......
import React from 'react'; import React, { useContext } from 'react';
import { Card, Typography, Space, Button, Tooltip } from 'antd'; import { Card, Typography, Space, Button, Tooltip } from 'antd';
import { EditOutlined, DeleteOutlined, DatabaseOutlined, FileOutlined } from '@ant-design/icons'; import { EditOutlined, DeleteOutlined, DatabaseOutlined, FileOutlined } from '@ant-design/icons';
import { DatasourceContext } from './ContextManager';
import './TaskItem.less'; import './TaskItem.less';
const TaskItem = (props) => { const TaskItem = (props) => {
const { data, onStart, onEdit, onDelete, onLog } = props; const { data } = props;
const { onStartTask, onLogTask, onEditTask, onDeleteTask } = useContext(DatasourceContext);
return ( return (
<Card className='task-item'> <Card className='task-item'>
<div style={{ height: 80, overflow: 'auto' }}> <div style={{ height: 80, overflow: 'auto' }}>
...@@ -23,16 +26,16 @@ const TaskItem = (props) => { ...@@ -23,16 +26,16 @@ const TaskItem = (props) => {
<div className='d-flex mt-2'> <div className='d-flex mt-2'>
<Space style={{ marginLeft: 'auto' }}> <Space style={{ marginLeft: 'auto' }}>
<Tooltip placement='bottom' title='抽取'> <Tooltip placement='bottom' title='抽取'>
<Button icon={<DatabaseOutlined />} size='small' onClick={() => { onStart && onStart(data); }} /> <Button icon={<DatabaseOutlined />} size='small' onClick={() => { onStartTask && onStartTask(data); }} />
</Tooltip> </Tooltip>
<Tooltip placement='bottom' title='日志'> <Tooltip placement='bottom' title='日志'>
<Button icon={<FileOutlined />} size='small' onClick={() => { onLog && onLog(data); }} /> <Button icon={<FileOutlined />} size='small' onClick={() => { onLogTask && onLogTask(data); }} />
</Tooltip> </Tooltip>
<Tooltip placement='bottom' title='修改'> <Tooltip placement='bottom' title='修改'>
<Button icon={<EditOutlined />} size='small' onClick={() => { onEdit && onEdit(data); }} /> <Button icon={<EditOutlined />} size='small' onClick={() => { onEditTask && onEditTask(data); }} />
</Tooltip> </Tooltip>
<Tooltip placement='bottom' title='删除'> <Tooltip placement='bottom' title='删除'>
<Button icon={<DeleteOutlined />} size='small' onClick={() => { onDelete && onDelete(data); }} /> <Button icon={<DeleteOutlined />} size='small' onClick={() => { onDeleteTask && onDeleteTask(data); }} />
</Tooltip> </Tooltip>
</Space> </Space>
</div> </div>
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Table, Typography, Spin, Empty, Button, DatePicker } from 'antd'; import { Modal, Table, Typography, Spin, Empty, Button } from 'antd';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
......
...@@ -8,6 +8,7 @@ import TaskLogModal from './Component/TaskLogModal'; ...@@ -8,6 +8,7 @@ import TaskLogModal from './Component/TaskLogModal';
import UpdateTaskModal from './Component/UpdateTaskModal'; import UpdateTaskModal from './Component/UpdateTaskModal';
import { dispatch } from '../../../model'; import { dispatch } from '../../../model';
import { showMessage } from '../../../util'; import { showMessage } from '../../../util';
import { DatasourceContext } from './Component/ContextManager.js';
import './index.less'; import './index.less';
...@@ -265,6 +266,13 @@ const DatasourceManage = () => { ...@@ -265,6 +266,13 @@ const DatasourceManage = () => {
} }
return ( return (
<DatasourceContext.Provider value={{
refreshTasksSuccess: refreshTasksSuccess,
onStartTask: startTask,
onLogTask: logTask,
onEditTask: editTask,
onDeleteTask: deleteTask,
}}>
<div className='datasource-manage' style={{ backgroundColor: '#fff' }}> <div className='datasource-manage' style={{ backgroundColor: '#fff' }}>
<div <div
className='d-flex p-3' className='d-flex p-3'
...@@ -313,11 +321,6 @@ const DatasourceManage = () => { ...@@ -313,11 +321,6 @@ const DatasourceManage = () => {
onEdit={editDatasource} onEdit={editDatasource}
onAddTask={addTask} onAddTask={addTask}
onDelete={deleteDatasource} onDelete={deleteDatasource}
onStartTask={startTask}
onEditTask={editTask}
onLogTask={logTask}
onDeleteTask={deleteTask}
refreshTasksSuccess={refreshTasksSuccess}
/> />
</div> </div>
...@@ -353,6 +356,7 @@ const DatasourceManage = () => { ...@@ -353,6 +356,7 @@ const DatasourceManage = () => {
{contextHolder} {contextHolder}
</div> </div>
</DatasourceContext.Provider>
); );
} }
......
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