import { useMemo } from 'react'; import { ChartRow, AllModelsData, ModelMetrics } from '../types'; export function useChartData( data: AllModelsData | null, selectedModel: string, selectedModels: string[], selectedMetric: string, comparisonMode: boolean, metrics: string[] ) { const barChartData: ChartRow[] = useMemo(() => { if (!data || (!selectedModel && selectedModels.length === 0)) return []; const languagePairs = selectedModel && data[selectedModel] ? Object.keys(data[selectedModel]).filter(k => k !== 'averages') : []; return languagePairs.map(pair => { const row: any = { name: pair.toUpperCase() }; if (comparisonMode) { selectedModels.forEach(model => { row[model] = data[model]?.[pair]?.[selectedMetric as keyof ModelMetrics] ?? 0; }); } else { row[selectedMetric] = data[selectedModel]?.[pair]?.[selectedMetric as keyof ModelMetrics] ?? 0; } return row; }); }, [data, selectedModel, selectedModels, selectedMetric, comparisonMode]); const radarData: ChartRow[] = useMemo(() => { if (!data || (!selectedModel && selectedModels.length === 0)) return []; return metrics.map(metric => { const point: any = { metric: metric.toUpperCase() }; if (comparisonMode) { selectedModels.forEach(model => { point[model] = data[model]?.averages?.[metric as keyof ModelMetrics] ?? 0; }); } else { point.value = data[selectedModel]?.averages?.[metric as keyof ModelMetrics] ?? 0; } return point; }); }, [data, selectedModel, selectedModels, comparisonMode]); return { barChartData, radarData }; }