/**
* 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)
);
}