From 33f58a7b3a793c0f9dba8b841eb696c41eab6f51 Mon Sep 17 00:00:00 2001 From: Nicholas Orlowsky Date: Tue, 13 Jan 2026 22:26:18 -0500 Subject: [PATCH] fix ordering --- api/src/controllers/stop.rs | 10 +++++++--- api/templates/stop.html | 4 ++-- libseptastic/src/stop_schedule.rs | 6 ++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/api/src/controllers/stop.rs b/api/src/controllers/stop.rs index 81ea372..37e97a9 100644 --- a/api/src/controllers/stop.rs +++ b/api/src/controllers/stop.rs @@ -2,7 +2,7 @@ use actix_web::{get, web::{self, Data}, HttpRequest, Responder}; use anyhow::anyhow; use chrono::Timelike; use chrono_tz::America::New_York; -use libseptastic::stop_schedule::{self, Trip}; +use libseptastic::stop_schedule::{self, LiveTrip, Trip, TripTracking}; use log::info; use std::{collections::HashSet, sync::Arc, time::Instant}; @@ -87,7 +87,7 @@ async fn get_stop_html(req: HttpRequest, state: Data>, path: web:: match &trip.tracking_data { libseptastic::stop_schedule::TripTracking::Tracked(live) => { - let actual_arrival_time = stop_schedule.arrival_time + (live.delay * 60 as f64) as i64; + let actual_arrival_time = stop_schedule.get_arrival_time(&live); est_arrival_time = stop_schedule.arrival_time; is_tracked = true; return @@ -122,7 +122,11 @@ async fn get_stop_html(req: HttpRequest, state: Data>, path: web:: } }).collect(); - filtered_trips.sort_by_key(|f| f.perspective_stop.arrival_time); + filtered_trips.sort_by_key(|f| + match &f.trip.tracking_data { + TripTracking::Tracked(live) => f.perspective_stop.get_arrival_time(&live), + _ => f.perspective_stop.arrival_time + }); Ok(crate::templates::ContentTemplate { page_title: Some(stop.name.clone()), diff --git a/api/templates/stop.html b/api/templates/stop.html index b45e398..e1bdb8c 100644 --- a/api/templates/stop.html +++ b/api/templates/stop.html @@ -51,8 +51,8 @@ {% if let Tracked(tracked_trip) = trip.trip.tracking_data %} -

{{ (trip.perspective_stop.arrival_time + (tracked_trip.delay * 60.0) as i64) | format_time }}

-

{{ ( (trip.perspective_stop.arrival_time + (tracked_trip.delay * 60.0) as i64) - current_time) / 60 }} mins

+

{{ &trip.perspective_stop.get_arrival_time(&tracked_trip) | format_time }}

+

{{ ( trip.perspective_stop.get_arrival_time(&tracked_trip) - current_time) / 60 }} mins

{% else %} diff --git a/libseptastic/src/stop_schedule.rs b/libseptastic/src/stop_schedule.rs index 28d8400..44c11ab 100644 --- a/libseptastic/src/stop_schedule.rs +++ b/libseptastic/src/stop_schedule.rs @@ -13,6 +13,12 @@ pub struct StopSchedule { pub platform: Arc } +impl StopSchedule { + pub fn get_arrival_time(&self, live_info: &LiveTrip) -> i64 { + return self.arrival_time + (live_info.delay * 60.0 as f64) as i64; + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Trip { pub service_id: String,