'use client'; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, } from 'recharts'; import { DailyMetrics } from '@/services/analytics/metrics'; import { parseDate, formatDateShort } from '@/lib/date-utils'; interface CompletionRateChartProps { data: DailyMetrics[]; className?: string; } export function CompletionRateChart({ data, className, }: CompletionRateChartProps) { // Transformer les données pour le graphique const chartData = data.map((day) => ({ day: day.dayName.substring(0, 3), // Lun, Mar, etc. date: formatDateShort(parseDate(day.date)), completionRate: day.completionRate, completed: day.completed, total: day.totalTasks, })); const CustomTooltip = ({ active, payload, label, }: { active?: boolean; payload?: Array<{ payload: { day: string; date: string; completionRate: number; completed: number; total: number; }; }>; label?: string; }) => { if (active && payload && payload.length) { const data = payload[0].payload; return (

{`${label} (${data.date})`}

Taux de completion: {data.completionRate.toFixed(1)}%

{data.completed} / {data.total} tâches

); } return null; }; // Calculer la moyenne pour la ligne de référence const averageRate = data.reduce((sum, day) => sum + day.completionRate, 0) / data.length; return (
`${value}%`} /> } /> {/* Ligne de moyenne */} averageRate} stroke="#94a3b8" strokeWidth={1} strokeDasharray="5 5" dot={false} activeDot={false} /> {/* Légende */}
Taux quotidien
Moyenne ({averageRate.toFixed(1)}%)
); }