fix: always include most recent past bus regardless of upcoming count
This commit is contained in:
@ -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'
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user