import React, { useState, useEffect } from 'react'; import { Drawer, Utils, AppContainer, ProTable, Tabs, Empty, Spin } from 'knowdesign'; import API from '@src/api'; import MirrorMakerDetailCard from '@src/components/CardBar/MirrorMakerDetailCard'; import { defaultPagination, getMM2DetailColumns } from './config'; import notification from '@src/components/Notification'; import './index.less'; const { TabPane } = Tabs; const prefix = 'mm2-detail'; const { request } = Utils; const DetailTable = ({ loading, retryOption, data }: { loading: boolean; retryOption: any; data: any[] }) => { const [pagination, setPagination] = useState(defaultPagination); const onTableChange = (pagination: any, filters: any, sorter: any) => { setPagination(pagination); }; return ( {data.length ? ( ) : ( )} ); }; const MM2Detail = (props: any) => { const { visible, setVisible, record } = props; const [global] = AppContainer.useGlobalValue(); const [loading, setLoading] = useState(false); const [data, setData] = useState([]); const [tabSelectType, setTabSelectType] = useState('MirrorSource'); const onClose = () => { setVisible(false); setTabSelectType('MirrorSource'); // setPagination(defaultPagination); // clean hash }; const callback = (key: any) => { setTabSelectType(key); }; const genData: any = { MirrorSource: async () => { if (global?.clusterInfo?.id === undefined) return; setData([]); setLoading(true); if (record.connectorName) { request(API.getConnectDetailTasks(record.connectorName, record.connectClusterId)) .then((res: any) => { setData(res || []); setLoading(false); }) .catch((err) => { setLoading(false); }); } else { setLoading(false); } }, MirrorCheckpoint: async () => { if (global?.clusterInfo?.id === undefined) return; setData([]); setLoading(true); if (record.checkpointConnector) { request(API.getConnectDetailTasks(record.checkpointConnector, record.connectClusterId)) .then((res: any) => { setData(res || []); setLoading(false); }) .catch((err) => { setLoading(false); }); } else { setLoading(false); } }, MirrorHeatbeat: async () => { if (global?.clusterInfo?.id === undefined) return; setData([]); setLoading(true); if (record.heartbeatConnector) { request(API.getConnectDetailTasks(record.heartbeatConnector, record.connectClusterId)) .then((res: any) => { setData(res || []); setLoading(false); }) .catch((err) => { setLoading(false); }); } else { setLoading(false); } }, }; const retryOption = (taskId: any) => { const params = { action: 'restart', connectClusterId: record?.connectClusterId, connectorName: record?.connectorName, taskId, }; // 需要区分 tabSelectType request(API.optionTasks(), { method: 'PUT', data: params }).then((res: any) => { if (res === null) { notification.success({ message: `任务重试成功`, }); genData[tabSelectType](); } else { notification.error({ message: `任务重试失败`, }); } }); }; useEffect(() => { visible && record && genData[tabSelectType](); }, [visible, tabSelectType]); return ( {record.connectorName ?? '-'} } width={1080} placement="right" onClose={onClose} visible={visible} className={`${prefix}-drawer`} destroyOnClose maskClosable={false} > {/* {global.isShowControl && global.isShowControl(ControlStatusMap.BROKER_DETAIL_CONFIG) ? ( ) : ( )} */} {/* */} ); }; export default MM2Detail;