import { Link, useParams } from "react-router-dom"; import useSWR from "swr"; interface StopDetails { stop: { id: number; name: string; latitude: number; longitude: number; } estimates: [{ line: string; route: string; minutes: number; meters: number; }] } export function Stop(): JSX.Element { const params = useParams(); const { data, error, isLoading } = useSWR(`stop-${params.stopId}`, async () => { let response; try { response = await fetch(`/api/GetStopEstimates?id=${params.stopId}`) return response.json() } catch (error) { console.error(error) throw new Error(`Failed to fetch data, status ${response!.status}, body: ${await response!.text()}`) } }); const absoluteArrivalTime = (minutes: number) => { const now = new Date() const arrival = new Date(now.getTime() + minutes * 60000) return Intl.DateTimeFormat(navigator.language, { hour: '2-digit', minute: '2-digit' }).format(arrival) } if (isLoading) return

Loading...

if (error) return

Error: {JSON.stringify(error)}

if (data === undefined) return

No data

return ( <>

{data?.stop.name} ({data?.stop.id})

Volver al listado de paradas {data.estimates .sort((a, b) => a.minutes - b.minutes) .map((estimate, idx) => ( ))}
Estimaciones de llegadas
LĂ­nea Ruta Minutos Metros
{estimate.line} {estimate.route} {estimate.minutes} ({absoluteArrivalTime(estimate.minutes)}) {estimate.meters > -1 ? `${estimate.meters} metros` : "No disponible" }

Volver al inicio

) }