Commit 07835ae0 by zhaochengxiang

展开任务

parent ba18cb0d
...@@ -7,13 +7,16 @@ import { dispatch } from '../../../../model'; ...@@ -7,13 +7,16 @@ import { dispatch } from '../../../../model';
import './DatasourceItem.less'; import './DatasourceItem.less';
const DatasourceItem = (props) => { const DatasourceItem = (props) => {
const { data, onStartTask, onEditTask, onDeleteTask } = props; const { data, onStartTask, onEditTask, onDeleteTask, expanded } = props;
const [ expanded, setExpanded ] = useState(false);
const [ tasks, setTasks ] = useState(null); const [ tasks, setTasks ] = useState(null);
useEffect(() => { useEffect(() => {
getTasks(); if (expanded && !tasks) {
}, []) getTasks();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [expanded])
const getTasks = () => { const getTasks = () => {
dispatch({ dispatch({
...@@ -54,24 +57,28 @@ const DatasourceItem = (props) => { ...@@ -54,24 +57,28 @@ const DatasourceItem = (props) => {
}) })
} }
</Row> </Row>
<Divider />
<Row gutter={10}>
{ {
(tasks||[]).map((task, index) => { expanded && <>
return ( <Divider />
<Col key={index} md={8}> <Row gutter={10}>
<TaskItem {
key={index} (tasks||[]).map((task, index) => {
data={task} return (
onStart={onStartTask} <Col key={index} md={8}>
onEdit={onEditTask} <TaskItem
onDelete={onDeleteTask} key={index}
/> data={task}
</Col> onStart={onStartTask}
); onEdit={onEditTask}
}) onDelete={onDeleteTask}
/>
</Col>
);
})
}
</Row>
</>
} }
</Row>
</div> </div>
); );
} }
......
import React from 'react'; import React, { useState } from 'react';
import { List, Space, Button, Tooltip } from "antd"; import { List, Space, Button, Tooltip } from "antd";
import { EditOutlined, DiffOutlined, DeleteOutlined } from '@ant-design/icons'; import { EditOutlined, DiffOutlined, DeleteOutlined, DatabaseOutlined } from '@ant-design/icons';
import DatasourceItem from './DatasourceItem'; import DatasourceItem from './DatasourceItem';
...@@ -8,6 +8,18 @@ const DatasourceList = (props) => { ...@@ -8,6 +8,18 @@ const DatasourceList = (props) => {
const { loading, data, onEdit, onAddTask, onDelete, onStartTask, onEditTask, onDeleteTask } = props; const { loading, data, onEdit, onAddTask, onDelete, onStartTask, onEditTask, onDeleteTask } = props;
const [ expandedBindId, setExpandedBindId ] = useState({});
const onExpanded = (item) => {
if (expandedBindId.hasOwnProperty(item.id)) {
expandedBindId[item.id] = !expandedBindId[item.id];
} else {
expandedBindId[item.id] = true;
}
setExpandedBindId({...expandedBindId});
}
return ( return (
<List <List
loading={loading} loading={loading}
...@@ -16,13 +28,17 @@ const DatasourceList = (props) => { ...@@ -16,13 +28,17 @@ const DatasourceList = (props) => {
footer={null} footer={null}
renderItem={(item, index) => { renderItem={(item, index) => {
let title = ''; let title = '', expanded = false;
(item.targetParameters||[]).forEach(item => { (item.targetParameters||[]).forEach(item => {
if (item.name === 'name') { if (item.name === 'name') {
title = item.value||''; title = item.value||'';
} }
}) })
if (expandedBindId.hasOwnProperty(item.id)) {
expanded = expandedBindId[item.id];
}
return ( return (
<List.Item key={index}> <List.Item key={index}>
<List.Item.Meta <List.Item.Meta
...@@ -41,10 +57,13 @@ const DatasourceList = (props) => { ...@@ -41,10 +57,13 @@ const DatasourceList = (props) => {
<Tooltip placement='bottom' title={'删除'}> <Tooltip placement='bottom' title={'删除'}>
<Button icon={<DeleteOutlined />} size='small' onClick={() => { onDelete && onDelete(item); }} /> <Button icon={<DeleteOutlined />} size='small' onClick={() => { onDelete && onDelete(item); }} />
</Tooltip> </Tooltip>
<Tooltip placement='bottom' title={'任务列表'}>
<Button icon={<DatabaseOutlined />} size='small' onClick={() => { onExpanded(item); }} />
</Tooltip>
</Space> </Space>
</div> </div>
} }
description={ <DatasourceItem data={item} onStartTask={onStartTask} onEditTask={onEditTask} onDeleteTask={onDeleteTask} /> } description={ <DatasourceItem data={item} expanded={expanded} onStartTask={onStartTask} onEditTask={onEditTask} onDeleteTask={onDeleteTask} /> }
/> />
</List.Item> </List.Item>
); );
......
...@@ -150,7 +150,7 @@ const UpdateDatasourceModal = (props) => { ...@@ -150,7 +150,7 @@ const UpdateDatasourceModal = (props) => {
}, },
callback: data => { callback: data => {
setConfirmLoading(false); setConfirmLoading(false);
onCancel && onCancel(); onCancel && onCancel(true);
}, },
error: () => { error: () => {
setConfirmLoading(false); setConfirmLoading(false);
......
...@@ -16,6 +16,7 @@ const DatasourceManage = () => { ...@@ -16,6 +16,7 @@ const DatasourceManage = () => {
const [ rawSupportDatabases, setRawSupportDatabases ] = useState([]); const [ rawSupportDatabases, setRawSupportDatabases ] = useState([]);
const [ supportDatabases, setSupportDatabases ] = useState([]); const [ supportDatabases, setSupportDatabases ] = useState([]);
const [ datasources, setDatasources ] = useState([]); const [ datasources, setDatasources ] = useState([]);
const [ filterDatasources, setFilterDatasources ] = useState([]);
const [ selectedDatabaseKey, setSelectedDatabaseKey ] = useState(''); const [ selectedDatabaseKey, setSelectedDatabaseKey ] = useState('');
const [ loadingDatabases, setLoadingDatabases ] = useState(false); const [ loadingDatabases, setLoadingDatabases ] = useState(false);
const [ loadingDatasources, setLoadingDatasources ] = useState(false); const [ loadingDatasources, setLoadingDatasources ] = useState(false);
...@@ -43,7 +44,7 @@ const DatasourceManage = () => { ...@@ -43,7 +44,7 @@ const DatasourceManage = () => {
setRawSupportDatabases(data||[]); setRawSupportDatabases(data||[]);
setSupportDatabases([{ targetType: 'all', targetName: '全部类型' }, ...(data||[])]); setSupportDatabases([{ targetType: 'all', targetName: '全部类型' }, ...(data||[])]);
setSelectedDatabaseKey('all'); setSelectedDatabaseKey('all');
getAllDatasources(); getAllDatasources('all');
}, },
error: () => { error: () => {
setLoadingDatabases(false); setLoadingDatabases(false);
...@@ -51,7 +52,7 @@ const DatasourceManage = () => { ...@@ -51,7 +52,7 @@ const DatasourceManage = () => {
}) })
} }
const getAllDatasources = () => { const getAllDatasources = (dbKey = selectedDatabaseKey) => {
setLoadingDatasources(true); setLoadingDatasources(true);
dispatch({ dispatch({
type: 'datasource.getAllDatasources', type: 'datasource.getAllDatasources',
...@@ -61,6 +62,7 @@ const DatasourceManage = () => { ...@@ -61,6 +62,7 @@ const DatasourceManage = () => {
callback: data => { callback: data => {
setLoadingDatasources(false); setLoadingDatasources(false);
setDatasources(data); setDatasources(data);
setFilterDatasources((data||[]).filter(item=>dbKey==='all'||item.type===dbKey));
}, },
error: () => { error: () => {
setLoadingDatasources(false); setLoadingDatasources(false);
...@@ -70,6 +72,7 @@ const DatasourceManage = () => { ...@@ -70,6 +72,7 @@ const DatasourceManage = () => {
const onDatabaseChange = (value) => { const onDatabaseChange = (value) => {
setSelectedDatabaseKey(value); setSelectedDatabaseKey(value);
setFilterDatasources((datasources||[]).filter(item=>value==='all'||item.type===value));
} }
const addDatasource = () => { const addDatasource = () => {
...@@ -95,14 +98,16 @@ const DatasourceManage = () => { ...@@ -95,14 +98,16 @@ const DatasourceManage = () => {
}, },
callback: () => { callback: () => {
showMessage('success', '删除数据源成功'); showMessage('success', '删除数据源成功');
getAllDatasources();
} }
}); });
} }
}); });
} }
const onUpdateDatasourceModalCancel = () => { const onUpdateDatasourceModalCancel = (refresh = false) => {
setUpdateDatasourceModalVisible(false); setUpdateDatasourceModalVisible(false);
refresh && getAllDatasources();
} }
const addTask = (datasource) => { const addTask = (datasource) => {
...@@ -193,7 +198,7 @@ const DatasourceManage = () => { ...@@ -193,7 +198,7 @@ const DatasourceManage = () => {
<div className='list-container p-3'> <div className='list-container p-3'>
<DatasourceList <DatasourceList
loading={loadingDatasources} loading={loadingDatasources}
data={datasources||[]} data={filterDatasources||[]}
onEdit={editDatasource} onEdit={editDatasource}
onAddTask={addTask} onAddTask={addTask}
onDelete={deleteDatasource} onDelete={deleteDatasource}
......
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