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, type AssetStatus } from '@siop/shared'; import { useAssets, useLocations } from '@/api/exploitation'; import { Carte, EnteteFiche, LigneInfo } from '@/composants/ui'; import { useTokens, type Tokens } from '@/theme/tokens'; /** Fiche site — R6.2. Consultation seule (D4) : identité, zones, ascenseurs * du site. Pas de carte interactive ni d'édition sur mobile pour l'instant * (réservé au web) — même filtre appareils↔site que fiche-site.tsx (web) : * par nom, la liste étant déjà plate côté serveur. */ export default function PageFicheSite() { const t = useTokens(); const { id } = useLocalSearchParams<{ id: string }>(); const { data: locations } = useLocations(); const { data: assets } = useAssets(); const site = (locations ?? []).find((l) => l.id === id); if (!site) return null; const zones = (locations ?? []).filter((l) => l.parentId === site.id); const appareils = (assets ?? []).filter((a) => a.siteName === site.name); return ( {site.guardianPhone ? : null} {zones.length ? ( {zones.map((z) => ( a.locationId === z.id).map((a) => a.reference).join(' · ') || '—'} /> ))} ) : null} {appareils.map((a) => ( router.push(`/ascenseur/${a.id}`)} style={{ flexDirection: 'row', alignItems: 'center', gap: 8, paddingVertical: 3 }} > {a.reference} {a.brand} {a.model ?? ''} ))} {!appareils.length ? ( Aucun appareil rattaché. ) : null} ); } function ChipStatutAppareil({ statut, t }: { statut: AssetStatus; t: Tokens }) { const enService = statut === 'IN_SERVICE'; return ( {ASSET_STATUS_LABELS[statut]} ); }