import SvgIcon from '@/components/svg-icon'; import { useFetchSystemStatus } from '@/hooks/user-setting-hooks'; import { ISystemStatus, TaskExecutorElapsed, } from '@/interfaces/database/user-setting'; 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 { toFixed } from '@/utils/common-util'; import styles from './index.less'; import TaskBarChat from './task-bar-chat'; const { Text } = Typography; enum Status { 'green' = 'success', 'red' = 'error', 'yellow' = 'warning', } const TitleMap = { es: 'Elasticsearch', storage: 'Object Storage', redis: 'Redis', database: 'Database', task_executor: 'Task Executor', }; const IconMap = { es: 'es', storage: 'storage', redis: 'redis', 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' ? ( ) : ( )} {TitleMap[key as keyof typeof TitleMap]} } key={key} > {key === 'task_executor' ? ( info?.elapsed ? ( ) : ( {info.error} ) ) : ( 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;