From 81e6046357e3a96cccac382177f7486dd1152f6c Mon Sep 17 00:00:00 2001 From: Hanzo_dev <2002samudiojohan@gmail.com> Date: Sun, 29 Mar 2026 07:45:31 -0500 Subject: [PATCH] fix: extend past bus window to 90min and compact card layout --- frontend/src/components/map/ETACard.vue | 55 ++++++++++++++----------- frontend/src/composables/useETA.ts | 8 ++-- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/map/ETACard.vue b/frontend/src/components/map/ETACard.vue index fe4f7fc..fcce6cd 100644 --- a/frontend/src/components/map/ETACard.vue +++ b/frontend/src/components/map/ETACard.vue @@ -78,7 +78,7 @@ -
+
@@ -100,61 +100,66 @@
-
+
- {{ bus.estado === 'pasó' ? 'history' : 'directions_bus' }} + {{ bus.estado === 'pasó' ? 'history' : 'directions_bus' }}
- + {{ bus.label }} -
- - schedule - {{ (bus.estado === 'en_camino' || bus.estado === 'pasó') ? 'Salió a las' : 'Sale a las' }} {{ bus.hora_salida }} +
+ + schedule + {{ (bus.estado === 'en_camino' || bus.estado === 'pasó') ? 'Salió' : 'Sale' }} {{ bus.hora_salida }} - - Pasó por tu parada a las - Llega a tu parada ~ + + Pasó ~ + Llega ~ {{ bus.horaLlegadaParada }}
-
- -
+
+ +
~{{ formatDurationMinutes(bus.etaMinutos) }} - min + min +
+ +
+ {{ Math.abs(bus.etaMinutos) }} + min
-
- +
+ En Vía - + Programado - - Ya pasó + + Hace poco
@@ -197,8 +202,8 @@ const showTooltip = ref(false); const upcomingBuses = computed(() => props.buses.filter(b => b.estado !== 'pasó')); const lastPastBus = computed(() => { const pastBuses = props.buses.filter(b => b.estado === 'pasó'); - // useETA ordena por etaMinutos asc, así que en negativos (-20, -10, -5) el último es el más reciente - return pastBuses.length > 0 ? pastBuses[pastBuses.length - 1] : null; + // useETA ordena pasó descendente (más reciente primero), tomamos [0] + return pastBuses.length > 0 ? pastBuses[0] : null; }); const displayBuses = computed(() => { diff --git a/frontend/src/composables/useETA.ts b/frontend/src/composables/useETA.ts index 4812d87..f74d6f0 100644 --- a/frontend/src/composables/useETA.ts +++ b/frontend/src/composables/useETA.ts @@ -159,9 +159,9 @@ export function useETA() { estado = 'pasó'; } - // Conservar buses que pasaron hace poco (ej: últimos 30 minutos) - // para que el usuario sepa que acaba de perder uno - if (etaMinutos < -30) continue; + // Conservar buses que pasaron en la última hora y media + // para que el usuario siempre vea el bus anterior + if (etaMinutos < -90) continue; resultados.push({ horario_id: h.id, @@ -175,6 +175,8 @@ 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; });