import { Popover, message, Row, Col, Button, Spin } from 'antd'; import React, { useEffect, useState } from 'react'; import { SemanticTypeEnum } from '../../../common/type'; import { queryMetricInfo } from '../../../service'; import SemanticTypeTag from './SemanticTypeTag'; import { isMobile } from '../../../utils/utils'; import { CLS_PREFIX } from '../../../common/constants'; type Props = { children: React.ReactNode; classId?: number; infoType?: SemanticTypeEnum; uniqueId: string | number; onDetailBtnClick?: (data: any) => void; }; const SemanticInfoPopover: React.FC = ({ classId, infoType, uniqueId, children, onDetailBtnClick, }) => { const [semanticInfo, setSemanticInfo] = useState(undefined); const [popoverVisible, setPopoverVisible] = useState(false); const [loading, setLoading] = useState(false); const prefixCls = `${CLS_PREFIX}-semantic-info-popover`; const text = ( {onDetailBtnClick && ( {semanticInfo && ( )} )} ); const content = loading ? (
) : (
{semanticInfo?.description || '暂无数据'}
); const getMetricInfo = async () => { setLoading(true); const { data: resData } = await queryMetricInfo({ classId, uniqueId, }); const { code, data, msg } = resData; setLoading(false); if (code === '0') { setSemanticInfo({ ...data, semanticInfoType: SemanticTypeEnum.METRIC, }); } else { message.error(msg); } }; useEffect(() => { if (popoverVisible && !semanticInfo) { getMetricInfo(); } }, [popoverVisible]); return ( { setPopoverVisible(visible); }} overlayClassName={prefixCls} > {children} ); }; export default SemanticInfoPopover;