From df74dd5cf97b73cfb6c63fd7399eb273c92f661f Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 9 Nov 2022 19:28:48 +0100 Subject: [PATCH] route: handle stops without real-time data --- lib/Travelynx.pm | 27 ++++++++++++++++----------- templates/_checked_in.html.ep | 6 ++++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 9121cd9..f6e47a3 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1528,29 +1528,34 @@ sub startup { for my $station (@route_after) { if ( @{$station} > 1 ) { - # Note: $station->[1]{sched_arr} may already have been - # converted to a DateTime object in $station->[1] is - # $dep_info. This can happen when a station is present - # several times in a train's route, e.g. for Frankfurt - # Flughafen in some nightly connections. + # Note: $station->[1]{sched_arr} may already have been + # converted to a DateTime object. This can happen when a + # station is present several times in a train's route, e.g. + # for Frankfurt Flughafen in some nightly connections. my $times = $station->[1]; if ( $times->{sched_arr} and ref( $times->{sched_arr} ) ne 'DateTime' ) { $times->{sched_arr} = epoch_to_dt( $times->{sched_arr} ); - $times->{rt_arr} = epoch_to_dt( $times->{rt_arr} ); - $times->{rt_arr_countdown} - = $times->{rt_arr}->epoch - $epoch; + if ( $times->{rt_arr} ) { + $times->{rt_arr} + = epoch_to_dt( $times->{rt_arr} ); + $times->{rt_arr_countdown} + = $times->{rt_arr}->epoch - $epoch; + } } if ( $times->{sched_dep} and ref( $times->{sched_dep} ) ne 'DateTime' ) { $times->{sched_dep} = epoch_to_dt( $times->{sched_dep} ); - $times->{rt_dep} = epoch_to_dt( $times->{rt_dep} ); - $times->{rt_dep_countdown} - = $times->{rt_dep}->epoch - $epoch; + if ( $times->{rt_dep} ) { + $times->{rt_dep} + = epoch_to_dt( $times->{rt_dep} ); + $times->{rt_dep_countdown} + = $times->{rt_dep}->epoch - $epoch; + } } } } diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep index dcf9ddc..2a6ac1d 100644 --- a/templates/_checked_in.html.ep +++ b/templates/_checked_in.html.ep @@ -225,6 +225,9 @@ % elsif ($station->[1]{rt_arr}) { <%= $station->[1]{rt_arr}->strftime('%H:%M') %> % } + % elsif ($station->[1]{sched_arr}) { + <%= $station->[1]{sched_arr}->strftime('%H:%M') %> + % } % elsif ($station->[2] and $station->[2] eq 'additional') { Zusatzhalt % } @@ -331,6 +334,9 @@ % elsif ($station->[1]{rt_arr}) { <%= $station->[1]{rt_arr}->strftime('%H:%M') %> % } + % elsif ($station->[1]{sched_arr}) { + <%= $station->[1]{sched_arr}->strftime('%H:%M') %> + % } % elsif ($station->[2] and $station->[2] eq 'additional') { Zusatzhalt % }