import { useState } from 'react'; import { Pressable, ScrollView, Text, View } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useAnalyticsSummary } from '@/api/pilotage'; import { Carte, EnteteFiche, LigneInfo } from '@/composants/ui'; import { useTokens } from '@/theme/tokens'; const fmtMAD = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'MAD', maximumFractionDigits: 0 }); const PERIODES = [3, 6, 12] as const; /** Statistiques — R6.4 (Pilotage). Maquette écran 7 : les mêmes chiffres * que `/analytics/summary` (web), en cartes plutôt qu'en graphes denses * (D4) — coût du mois, taux préventif, pannes par organe. */ export default function PageStatistiques() { const t = useTokens(); const [periode, setPeriode] = useState<(typeof PERIODES)[number]>(12); const { data } = useAnalyticsSummary(periode); return ( {PERIODES.map((p) => ( setPeriode(p)} style={{ flex: 1, paddingVertical: 8, borderRadius: 8, alignItems: 'center', backgroundColor: periode === p ? t.primaire : t.surface, borderWidth: 1, borderColor: periode === p ? t.primaire : t.bordure, }} > {p} mois ))} {data ? ( <> {fmtMAD.format(data.monthCost)} Coût du mois {data.preventiveRate != null ? `${Math.round(data.preventiveRate * 100)} %` : '—'} Taux préventif {data.failuresByComponent.slice(0, 5).map((f) => ( ))} {!data.failuresByComponent.length ? ( Aucune panne codée sur la période. ) : null} {data.topAssets.slice(0, 5).map((a) => ( ))} {!data.topAssets.length ? ( Aucune donnée sur la période. ) : null} ) : null} ); }