import { CardWrapper } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import { Col, Progress, Row, Tag } from 'antd'; import { round } from 'lodash'; import React, { useEffect } from 'react'; import styled from 'styled-components'; import { useClusterSystemLoad } from '../../services/use-cluster-detail'; const Container = styled.div` display: flex; flex-direction: column; height: 86px; gap: 16px; .title { display: flex; align-items: center; justify-content: space-between; font-size: 14px; font-weight: 400; color: var(--ant-color-text-tertiary); } .value-wrapper { display: flex; align-items: center; justify-content: space-between; .value { display: flex; flex: 1; gap: 12px; flex-direction: column; align-items: flex-start; justify-content: center; font-size: 20px; font-weight: 600; } } `; const ClusterSystemLoad: React.FC<{ clusterId: number }> = ({ clusterId }) => { const { systemLoad, fetchClusterSystemLoad } = useClusterSystemLoad(); const intl = useIntl(); useEffect(() => { if (clusterId) { fetchClusterSystemLoad({ cluster_id: clusterId }); } }, [clusterId]); const generateStrokeColor = (percent: number) => { if (percent <= 50) { return 'var(--ant-color-success)'; } if (percent <= 80) { return 'var(--ant-color-warning)'; } return 'var(--ant-color-error)'; }; const renderStepsProgress = ( percent: number, tag: { color: string; text: string } ) => { const strokeColor = generateStrokeColor(percent); return ( ( {tag?.text || ''} )} > ); }; console.log('systemLoad', systemLoad); return (
{intl.formatMessage({ id: 'dashboard.gpuutilization' })}
{`${round(systemLoad.current.gpu, 1)}%`}
{renderStepsProgress(round(systemLoad.current.gpu, 1), { color: 'magenta', text: 'GPU' })}
{intl.formatMessage({ id: 'dashboard.vramutilization' })}
{`${round(systemLoad.current.vram, 1)}%`}
{renderStepsProgress(round(systemLoad.current.vram, 1), { color: 'purple', text: intl.formatMessage({ id: 'dashboard.vram' }) })}
{intl.formatMessage({ id: 'dashboard.cpuutilization' })}
{`${round(systemLoad.current.cpu, 1)}%`}
{renderStepsProgress(round(systemLoad.current.cpu, 1), { color: 'cyan', text: 'CPU' })}
{intl.formatMessage({ id: 'dashboard.memoryutilization' })}
{`${round(systemLoad.current.ram, 1)}%`}
{renderStepsProgress(round(systemLoad.current.ram, 1), { color: 'green', text: intl.formatMessage({ id: 'dashboard.memory' }) })}
); }; export default ClusterSystemLoad;