import { router, useLocalSearchParams } from 'expo-router'; import { Pressable, ScrollView, Text } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { ASSET_STATUS_LABELS } from '@siop/shared'; import { useAsset, useWorkOrders } from '@/api/exploitation'; import { Carte, ChipStatut, EnteteFiche, LigneInfo } from '@/composants/ui'; import { triJournee } from '@/lib/journee'; import { useTokens } from '@/theme/tokens'; /** Écran 5 de la maquette R4 : tout ce qu'il faut DEVANT la machine. * Consultation seule (D3) — l'historique montre ce que le rôle a le droit * de voir (invariant « voir autre », même règle que partout). */ export default function PageAscenseur() { const t = useTokens(); const { id } = useLocalSearchParams<{ id: string }>(); const { data: appareil } = useAsset(id); const { data: workOrders } = useWorkOrders(); if (!appareil) return null; const interventions = (workOrders ?? []) .filter((w) => w.assetId === appareil.id) .sort((a, b) => Date.parse(b.createdAt) - Date.parse(a.createdAt)); const enCours = triJournee(interventions); const statut = ASSET_STATUS_LABELS[appareil.status]; return ( {statut} } /> {appareil.brand} {appareil.model ? ` ${appareil.model}` : ''} — {appareil.siteName} {appareil.serialNumber ? ( ) : null} {appareil.components.length ? ( appareil.components.map((c) => ( )) ) : ( Aucun organe déclaré. )} {interventions.slice(0, 6).map((w) => ( router.push(`/ot/${w.id}`)} style={{ flexDirection: 'row', alignItems: 'center', gap: 8, paddingVertical: 3 }} > {w.reference} {w.title} ))} {!interventions.length ? ( Aucune intervention visible pour votre rôle. ) : null} {enCours.length ? ( router.push(`/ot/${enCours[0]!.id}`)} style={{ backgroundColor: t.primaire, borderRadius: 10, padding: 12, alignItems: 'center' }} > Ouvrir l’OT en cours ({enCours[0]!.reference}) ) : null} ); }