import React, { useState, useEffect } from 'react'; import { useHistory, useParams } from 'react-router-dom'; import { Tabs, Utils, Drawer, Tag, AppContainer, SearchInput, notification } from 'knowdesign'; import Api from '@src/api'; import BrokersDetail from './BrokersDetail'; import Messages from './Messages'; import ConsumerGroups from './ConsumerGroups'; import ACLs from './ACLs'; import Configuration from './Configuration'; import Consumers from '@src/pages/Consumers'; import './index.less'; import TopicDetailHealthCheck from '@src/components/CardBar/TopicDetailHealthCheck'; import { hashDataParse } from '@src/constants/common'; const { TabPane } = Tabs; const OperationsSlot: any = { // eslint-disable-next-line react/display-name // ['Partitions']: (arg: any) => { // return ( // // ); // }, // eslint-disable-next-line react/display-name ['Configuration']: (arg: any) => { return ( ); }, // eslint-disable-next-line react/display-name ['ACLs']: (arg: any) => { return ( ); }, // eslint-disable-next-line react/display-name ['ConsumerGroups']: (arg: any) => { return ( ); }, }; const TopicDetail = (props: any) => { const [global] = AppContainer.useGlobalValue(); const urlParams = useParams<{ clusterId: string }>(); const history = useHistory(); const [positionType, setPositionType] = useState('Partitions'); const [searchKeywords, setSearchKeywords] = useState(''); const [searchValue, setSearchValue] = useState(''); const [visible, setVisible] = useState(false); const [hashData, setHashData] = useState({}); const callback = (key: any) => { setSearchValue(''); setSearchKeywords(''); setPositionType(key); }; const onClose = () => { setVisible(false); setPositionType('Partitions'); history.push(`/cluster/${urlParams?.clusterId}/topic/list`); }; useEffect(() => { setSearchValue(''); setSearchKeywords(''); }, [positionType]); // useEffect(() => { // urlParams.clusterId && setVisible(true); // }, [urlParams]); useEffect(() => { global?.clusterInfo?.id && hashDataParse(location.hash).topicName ? Utils.request(Api.getTopicMetadata(+global?.clusterInfo?.id, hashDataParse(location.hash)?.topicName), { init: { errorNoTips: true, }, }) .then((topicData: any) => { if (topicData?.exist && !hashDataParse(location.hash).groupName) { setHashData(topicData); setVisible(true); } else { history.replace(`/cluster/${urlParams?.clusterId}/topic/list`); // history.push(`/`); setVisible(false); } }) .catch((err) => { history.replace(`/cluster/${urlParams?.clusterId}/topic/list`); setVisible(false); notification.error({ message: '错误', duration: 3, description: `${'Topic不存在或Topic名称有误'}`, }); }) : setVisible(false); }, [hashDataParse(location.hash).topicName, global?.clusterInfo]); return ( {hashData?.topicName} {global?.clusterInfo?.name && ( {global?.clusterInfo?.name} )} } width={1080} placement="right" onClose={onClose} visible={visible} className={'topic-detail-drawer'} destroyOnClose maskClosable={false} > {/* */} {positionType === 'Partitions' && } {positionType === 'Messages' && } {positionType === 'ACLs' && } {positionType === 'Configuration' && ( )} ); }; export default TopicDetail;