fix: always include most recent past bus regardless of upcoming count

This commit is contained in:
2026-03-29 09:11:47 -05:00
parent 81e6046357
commit a9b906099e
2 changed files with 14 additions and 9 deletions

View File

@ -7,7 +7,7 @@
<!-- Bottom Sheet container --> <!-- Bottom Sheet container -->
<div <div
ref="sheetRef" ref="sheetRef"
class="relative bg-white dark:bg-gray-900 rounded-t-3xl shadow-2xl p-5 transform flex flex-col gap-4 max-h-[85vh] overflow-y-auto" class="relative bg-white dark:bg-gray-900 rounded-t-3xl shadow-2xl p-5 transform flex flex-col gap-4 max-h-[92vh] overflow-y-auto"
:style="{ :style="{
transform: `translateY(${dragY}px)`, transform: `translateY(${dragY}px)`,
transition: isDragging ? 'none' : 'transform 0.3s ease-out' transition: isDragging ? 'none' : 'transform 0.3s ease-out'

View File

@ -172,15 +172,20 @@ export function useETA() {
}); });
} }
resultados.sort((a, b) => { // Ordenar: en_camino primero, luego próximo, luego pasó
const prioridad = { 'en_camino': 0, 'próximo': 1, 'pasó': 2 }; // Dentro de cada grupo: por etaMinutos asc (salvo pasó que va desc = más reciente primero)
if (prioridad[a.estado] !== prioridad[b.estado]) return prioridad[a.estado] - prioridad[b.estado]; const upcoming = resultados
// Para pasó: ordenar descendente (menos negativo primero = más reciente primero) .filter(r => r.estado !== 'pasó')
if (a.estado === 'pasó') return b.etaMinutos - a.etaMinutos; .sort((a, b) => a.etaMinutos - b.etaMinutos);
return a.etaMinutos - b.etaMinutos;
});
busesActivos.value = resultados.slice(0, 5); const pastBuses = resultados
.filter(r => r.estado === 'pasó')
.sort((a, b) => b.etaMinutos - a.etaMinutos); // desc → [0] es el más reciente
// CRÍTICO: siempre incluir el bus más reciente que pasó (independientemente
// de cuántos buses próximos haya). Máx 4 próximos + 1 pasado.
const mostRecentPast: BusETA[] = pastBuses.length > 0 ? [pastBuses[0] as BusETA] : [];
busesActivos.value = [...upcoming.slice(0, 4), ...mostRecentPast];
} catch (e) { } catch (e) {
console.error('SIB | Error calculando ETA:', e); console.error('SIB | Error calculando ETA:', e);
} finally { } finally {