fix(eta): update to 12h format and ensure ETA always shows in minutes (e.g., 70 min)
This commit is contained in:
@ -126,10 +126,21 @@ export function useETA() {
|
||||
|
||||
const [hStr, mStr] = salida.split(':');
|
||||
const minutosSalida = parseInt(hStr) * 60 + parseInt(mStr);
|
||||
const minutosLlegadaParada = minutosSalida + minutosHastaParada;
|
||||
const etaMinutos = minutosLlegadaParada - minutosAhora;
|
||||
const horaLlegada = minutosAHora(minutosLlegadaParada);
|
||||
const horaSalidaFormato = `${hStr.padStart(2, '0')}:${mStr.padStart(2, '0')}`;
|
||||
|
||||
// Cálculo explícito: tiempo que falta para salir + tiempo de trayecto hasta la parada
|
||||
// Si el bus ya salió, el tiempo de espera para salir es 0 y el tiempo de trayecto se reduce
|
||||
const minutosEsperaSalida = Math.max(0, minutosSalida - minutosAhora);
|
||||
const minutosTransitoBase = minutosHastaParada;
|
||||
const minutosTranscurridosDesdeSalida = Math.max(0, minutosAhora - minutosSalida);
|
||||
|
||||
// Si ya salió, el trayecto restante es base - transcurrido. Si no ha salido, es el base completo.
|
||||
const minutosTransitoRestante = Math.max(0, minutosTransitoBase - minutosTranscurridosDesdeSalida);
|
||||
|
||||
const etaMinutos = minutosEsperaSalida + minutosTransitoRestante;
|
||||
const minutosLlegadaEstablecidos = minutosSalida + minutosTransitoBase;
|
||||
|
||||
const horaLlegada = format12h(minutosLlegadaEstablecidos);
|
||||
const horaSalidaFormato = format12h(minutosSalida);
|
||||
|
||||
let estado: BusETA['estado'];
|
||||
if (etaMinutos > 5) {
|
||||
@ -165,13 +176,15 @@ export function useETA() {
|
||||
}
|
||||
};
|
||||
|
||||
// Helper: convierte minutos desde medianoche a "HH:mm"
|
||||
function minutosAHora(minutos: number): string {
|
||||
// Helper: convierte minutos desde medianoche a formato 12h (hh:mm am/pm)
|
||||
function format12h(minutos: number): string {
|
||||
const totalMinutes = Math.round(minutos);
|
||||
const m = ((totalMinutes % 1440) + 1440) % 1440; // normalizar 0-1439
|
||||
const h = Math.floor(m / 60);
|
||||
let h = Math.floor(m / 60);
|
||||
const min = Math.floor(m % 60);
|
||||
return `${String(h).padStart(2, '0')}:${String(min).padStart(2, '0')}`;
|
||||
const ampm = h >= 12 ? 'PM' : 'AM';
|
||||
const h12 = h % 12 || 12;
|
||||
return `${h12}:${String(min).padStart(2, '0')} ${ampm}`;
|
||||
}
|
||||
|
||||
return { calcularETA, busesActivos, cargando };
|
||||
|
||||
Reference in New Issue
Block a user