import React, { useMemo } from 'react'; import { trpc } from '../../api/trpc'; import { useCurrentWorkspaceId } from '../../store/user'; import { ErrorTip } from '../ErrorTip'; import { Loading } from '../Loading'; import { getMonitorProvider } from './provider'; import { MonitorStatsBlock } from './MonitorStatsBlock'; import { useTranslation } from '@i18next-toolkit/react'; export const MonitorDataMetrics: React.FC<{ monitorId: string; monitorType: string; currectResponse?: number; }> = React.memo((props) => { const { t } = useTranslation(); const workspaceId = useCurrentWorkspaceId(); const { monitorId, monitorType, currectResponse } = props; const { data, isLoading } = trpc.monitor.dataMetrics.useQuery({ workspaceId, monitorId, }); const provider = useMemo( () => getMonitorProvider(monitorType), [monitorType] ); const providerOverview = useMemo(() => { if (!provider || !provider.overview) { return null; } return ( <> {provider.overview.map((Component) => ( ))} ); }, [monitorId, provider]); const formatterFn = provider?.valueFormatter ? provider?.valueFormatter : (value: number) => `${value}ms`; if (isLoading) { return ; } if (!data) { return ; } return (
{typeof currectResponse === 'number' && ( )} {providerOverview}
); }); MonitorDataMetrics.displayName = 'MonitorDataMetrics';