import { useTranslation } from "react-i18next"; import { type StopDetails } from "../routes/estimates-$id"; import LineIcon from "./LineIcon"; interface RegularTableProps { data: StopDetails; dataDate: Date | null; } export const RegularTable: React.FC = ({ data, dataDate }) => { const { t } = useTranslation(); 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) } const formatDistance = (meters: number) => { if (meters > 1024) { return `${(meters / 1000).toFixed(1)} km`; } else { return `${meters} ${t('estimates.meters', 'm')}`; } } return {data.estimates .sort((a, b) => a.minutes - b.minutes) .map((estimate, idx) => ( ))} {data?.estimates.length === 0 && ( )}
{t('estimates.caption', 'Estimaciones de llegadas a las {{time}}', { time: dataDate?.toLocaleTimeString() })}
{t('estimates.line', 'LĂ­nea')} {t('estimates.route', 'Ruta')} {t('estimates.arrival', 'Llegada')} {t('estimates.distance', 'Distancia')}
{estimate.route} {estimate.minutes > 15 ? absoluteArrivalTime(estimate.minutes) : `${estimate.minutes} ${t('estimates.minutes', 'min')}`} {estimate.meters > -1 ? formatDistance(estimate.meters) : t('estimates.not_available', 'No disponible') }
{t('estimates.none', 'No hay estimaciones disponibles')}
}