diff --git a/web-v2/src/pages/FieldBriefingsPage.tsx b/web-v2/src/pages/FieldBriefingsPage.tsx index f85ff0d..d502614 100644 --- a/web-v2/src/pages/FieldBriefingsPage.tsx +++ b/web-v2/src/pages/FieldBriefingsPage.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; -import { Link } from 'react-router'; +import { Link, useSearchParams } from 'react-router'; import { SearchableSelect } from '../components/SearchableSelect'; import { Alert, EmptyState, LoadingBlock } from '../components/Feedback'; import { formatDate, formatDateOnly } from '../lib/format'; @@ -17,6 +17,7 @@ interface VisitOption { code: string; status: string; plannedStartAt: string | null; + scopeAsset?: { name: string; typeName?: string } | null; operationalArea: { name: string } | null; operatorCompany: { name: string } | null; } @@ -116,8 +117,10 @@ function findingAction(finding: BriefingFinding, act: BriefingAct, plannedOn: st } export function FieldBriefingsPage() { + const [searchParams] = useSearchParams(); + const requestedInspectionId = searchParams.get('inspectionId') ?? ''; const [visits, setVisits] = useState([]); - const [visitId, setVisitId] = useState(''); + const [visitId, setVisitId] = useState(requestedInspectionId); const [briefing, setBriefing] = useState(null); const [loadingVisits, setLoadingVisits] = useState(true); const [loading, setLoading] = useState(false); @@ -132,12 +135,15 @@ export function FieldBriefingsPage() { const all = [...planned.data, ...drafts.data] .sort((a, b) => String(a.plannedStartAt ?? '').localeCompare(String(b.plannedStartAt ?? ''))); setVisits(all); - const onlyVisit = all[0]; - if (all.length === 1 && onlyVisit) setVisitId(onlyVisit.id); + if (requestedInspectionId && all.some((visit) => visit.id === requestedInspectionId)) { + setVisitId(requestedInspectionId); + } else if (all.length === 1 && all[0]) { + setVisitId(all[0].id); + } }).catch((cause) => { setError(cause instanceof Error ? cause.message : String(cause)); }).finally(() => setLoadingVisits(false)); - }, []); + }, [requestedInspectionId]); useEffect(() => { if (!visitId) { @@ -158,11 +164,12 @@ export function FieldBriefingsPage() { ); return
+
Inspecciones/Preparación para campo
- ANTES DE SALIR A CAMPO -

Preparación de campo

-

Seleccioná la inspección y revisá los pendientes de Actas anteriores del mismo Área/Yacimiento y Operadora.

+ ETAPA DE LA INSPECCIÓN +

Preparación para campo

+

Revisá antecedentes y pendientes antes de iniciar la Inspección desde la APK.

{briefing &&
- + {loadingVisits ? : setVisitId(event.target.value)} - searchPlaceholder="Buscar por código, Área u Operadora…" + searchPlaceholder="Buscar por código, Yacimiento, Área u Operadora…" > {visits.map((visit) => )} } {selected?.plannedStartAt && Salida prevista: {formatDate(selected.plannedStartAt)}} @@ -189,18 +196,18 @@ export function FieldBriefingsPage() { {!loading && !briefing && !error && } {!loading && briefing && <>
{briefing.inspection.code} -

{briefing.inspection.area?.name ?? 'Área sin definir'} · {briefing.inspection.operatorCompany?.name ?? 'Operadora sin definir'}

-

Fecha de referencia: {formatDateOnly(briefing.plannedOn)}

+

{selected?.scopeAsset?.name ?? 'Yacimiento sin definir'} · {briefing.inspection.area?.name ?? 'Área sin definir'}

+

{briefing.inspection.operatorCompany?.name ?? 'Operadora sin definir'} · Fecha de referencia: {formatDateOnly(briefing.plannedOn)}

- Abrir planificación + Volver a la inspección