import SvgIcon from '@/components/svg-icon'; import { useFetchSystemStatus } from '@/hooks/user-setting-hooks'; import { ISystemStatus } from '@/interfaces/database/user-setting'; import { toFixed } from '@/utils/common-util'; import { Badge, Card, Flex, Spin, Typography } from 'antd'; import classNames from 'classnames'; import lowerCase from 'lodash/lowerCase'; import upperFirst from 'lodash/upperFirst'; import { useEffect } from 'react'; import styles from './index.less'; const { Text } = Typography; enum Status { 'green' = 'success', 'red' = 'error', 'yellow' = 'warning', } const TitleMap = { doc_engine: 'Doc Engine', storage: 'Object Storage', redis: 'Redis', database: 'Database', }; const IconMap = { doc_engine: 'storage', redis: 'redis', storage: 'minio', database: 'database', }; const SystemInfo = () => { const { systemStatus, fetchSystemStatus, loading: statusLoading, } = useFetchSystemStatus(); useEffect(() => { fetchSystemStatus(); }, [fetchSystemStatus]); return (
{Object.keys(systemStatus).map((key) => { const info = systemStatus[key as keyof ISystemStatus]; return ( {key === 'task_executor_heartbeats' ? (
) : ( // // 各组件Icon )} {TitleMap[key as keyof typeof TitleMap]}
} key={key} > {key === 'task_executor_heartbeats' ? (
) : ( Object.keys(info) .filter((x) => x !== 'status') .map((x) => { return ( {upperFirst(lowerCase(x))}: {/* 卡片具体文字数值 */} {toFixed((info as Record)[x]) as any} {x === 'elapsed' && ' ms'} ); }) )} ); })}
); }; export default SystemInfo;