/** * Comparison table component with Material-UI - displays analytical vs simulation comparison. */ import { Box, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Typography, Stack, } from '@mui/material'; import type { NetworkComparison, QueueComparison } from '../../types/simulation'; interface ComparisonTableProps { comparison: NetworkComparison; } interface ComparisonRowProps { label: string; analytical: number; simulation: number; diffPercent: number; decimals?: number; } function ComparisonRow({ label, analytical, simulation, diffPercent, decimals = 4, }: ComparisonRowProps) { const absDiff = Math.abs(diffPercent); const isGoodMatch = absDiff < 5; // Less than 5% difference is good const isOkMatch = absDiff < 10; // Less than 10% is acceptable const color = isGoodMatch ? 'success.main' : isOkMatch ? 'warning.main' : 'error.main'; return ( {label} {analytical.toFixed(decimals)} {simulation.toFixed(decimals)} {diffPercent >= 0 ? '+' : ''} {diffPercent.toFixed(2)}% ); } function QueueComparisonSection({ queueName, queueComparison, }: { queueName: string; queueComparison: QueueComparison; }) { return ( <> {queueName} ); } export default function ComparisonTable({ comparison }: ComparisonTableProps) { return ( Métrique Analytique Simulation Différence {/* System totals */} Système total {/* Coordinator */} {/* Servers */} {Object.entries(comparison.servers).map(([serverId, serverComparison]) => ( ))}
{/* Legend */} < 5% (excellent) 5-10% (acceptable) > 10% (important)
); }