fix: always include most recent past bus regardless of upcoming count
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
<!-- Bottom Sheet container -->
|
||||
<div
|
||||
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="{
|
||||
transform: `translateY(${dragY}px)`,
|
||||
transition: isDragging ? 'none' : 'transform 0.3s ease-out'
|
||||
|
||||
@ -172,15 +172,20 @@ export function useETA() {
|
||||
});
|
||||
}
|
||||
|
||||
resultados.sort((a, b) => {
|
||||
const prioridad = { 'en_camino': 0, 'próximo': 1, 'pasó': 2 };
|
||||
if (prioridad[a.estado] !== prioridad[b.estado]) return prioridad[a.estado] - prioridad[b.estado];
|
||||
// Para pasó: ordenar descendente (menos negativo primero = más reciente primero)
|
||||
if (a.estado === 'pasó') return b.etaMinutos - a.etaMinutos;
|
||||
return a.etaMinutos - b.etaMinutos;
|
||||
});
|
||||
// Ordenar: en_camino primero, luego próximo, luego pasó
|
||||
// Dentro de cada grupo: por etaMinutos asc (salvo pasó que va desc = más reciente primero)
|
||||
const upcoming = resultados
|
||||
.filter(r => r.estado !== 'pasó')
|
||||
.sort((a, b) => 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) {
|
||||
console.error('SIB | Error calculando ETA:', e);
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user