import { Alert, Button, Card, Col, Row, Statistic, Typography } from 'antd'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import React, { FC, useContext } from 'react'; import { ServerStatusContext } from '../../utils/server-status-context'; // Lazy loaded components const CheckCircleOutlined = dynamic(() => import('@ant-design/icons/CheckCircleOutlined'), { ssr: false, }); const ExclamationCircleOutlined = dynamic( () => import('@ant-design/icons/ExclamationCircleOutlined'), { ssr: false, }, ); export type StreamHealthOverviewProps = { showTroubleshootButton?: Boolean; }; export const StreamHealthOverview: FC = ({ showTroubleshootButton }) => { const serverStatusData = useContext(ServerStatusContext); const { health } = serverStatusData; if (!health) { return null; } const { healthy, healthPercentage, message, representation } = health; let color = '#3f8600'; let icon: 'success' | 'info' | 'warning' | 'error' = 'info'; if (healthPercentage < 80) { color = '#cf000f'; icon = 'error'; } else if (healthPercentage < 30) { color = '#f0ad4e'; icon = 'error'; } return (
: } /> Stream health represents {representation}% of all known players. Other player status is unknown. ) } />
); }; StreamHealthOverview.defaultProps = { showTroubleshootButton: true, };