// src/components/weather/WeatherAverageBar.tsx import { getAverageEmoji, getEmojiScore } from '@/lib/weather-utils'; interface WeatherEntry { performanceEmoji: string | null; moralEmoji: string | null; fluxEmoji: string | null; valueCreationEmoji: string | null; } interface WeatherAverageBarProps { entries: WeatherEntry[]; previousAverages?: { performance: number | null; moral: number | null; flux: number | null; valueCreation: number | null; } | null; } const AXES = [ { key: 'performanceEmoji' as const, scoreKey: 'performance' as const, label: 'Performance' }, { key: 'moralEmoji' as const, scoreKey: 'moral' as const, label: 'Moral' }, { key: 'fluxEmoji' as const, scoreKey: 'flux' as const, label: 'Flux' }, { key: 'valueCreationEmoji' as const, scoreKey: 'valueCreation' as const, label: 'Création de valeur', }, ]; function getAverageScore(emojis: (string | null)[]): number | null { const scores = emojis.map(getEmojiScore).filter((score): score is number => score !== null); if (scores.length === 0) return null; return scores.reduce((sum, score) => sum + score, 0) / scores.length; } function AverageEvolutionIndicator({ currentScore, previousScore, }: { currentScore: number | null; previousScore: number | null | undefined; }) { if (currentScore === null || previousScore === null || previousScore === undefined) return null; const delta = currentScore - previousScore; if (delta < 0) { return ( ); } if (delta > 0) { return ( ); } return ( ); } export function WeatherAverageBar({ entries, previousAverages }: WeatherAverageBarProps) { if (entries.length === 0) return null; return (
Moyenne équipe {AXES.map(({ key, scoreKey, label }) => { const currentScore = getAverageScore(entries.map((e) => e[key])); const avg = getAverageEmoji(entries.map((e) => e[key])); return (
{avg ?? '—'} {label}
); })}
); }