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]}
);
}