'use client'; import { ProcessInfo, ProcessState } from '@/lib/supervisor/types'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend } from 'recharts'; import { chartColors } from '@/lib/utils/chartColors'; interface GroupStatisticsProps { processes: ProcessInfo[]; } export function GroupStatistics({ processes }: GroupStatisticsProps) { // Group processes and count states const groupData = processes.reduce((acc, proc) => { const group = proc.group; if (!acc[group]) { acc[group] = { name: group, running: 0, stopped: 0, fatal: 0, total: 0 }; } acc[group].total++; if (proc.state === ProcessState.RUNNING) acc[group].running++; else if (proc.state === ProcessState.STOPPED || proc.state === ProcessState.EXITED) acc[group].stopped++; else if (proc.state === ProcessState.FATAL) acc[group].fatal++; return acc; }, {} as Record); const data = Object.values(groupData).sort((a, b) => b.total - a.total); if (data.length === 0) { return ( Process Groups Overview
No process groups
); } return ( Process Groups Overview ); }