diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-09-07 21:19:43 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-09-07 21:19:43 +0200 |
commit | 2e14c2e3e4dafa976cecab2721682553d90eb01e (patch) | |
tree | 51f786b0738b3aea957e5ac6c79433fe6d09bc23 | |
parent | b410176e634559bda0ff5d1628d45dc6ed3df5e3 (diff) |
Fix intermediate stop display for journeys without real-time data, e.g. H-Bahn
-rwxr-xr-x | lib/Travelynx.pm | 26 | ||||
-rw-r--r-- | lib/Travelynx/Model/InTransit.pm | 12 | ||||
-rw-r--r-- | templates/_checked_in.html.ep | 36 | ||||
-rw-r--r-- | templates/_public_status_card.html.ep | 36 |
4 files changed, 55 insertions, 55 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 64a1e85..a6080b2 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1593,21 +1593,17 @@ sub startup { for my $station ( @{ $journey->{route_after} } ) { my $station_desc = $station->[0]; - if ( $station->[2]{sched_arr} and $station->[2]{rt_arr} ) { - $station_desc .= $station->[2]{sched_arr}->strftime(';%s'); - $station_desc .= $station->[2]{rt_arr}->strftime(';%s'); - if ( $station->[2]{sched_dep} and $station->[2]{rt_dep} ) { - $station_desc - .= $station->[2]{sched_dep}->strftime(';%s'); - $station_desc .= $station->[2]{rt_dep}->strftime(';%s'); - } - else { - $station_desc .= ';0;0'; - } - } - else { - $station_desc .= ';0;0;0;0'; - } + + my $sa = $station->[2]{sched_arr}; + my $ra = $station->[2]{rt_arr} || $station->[2]{sched_arr}; + my $sd = $station->[2]{sched_dep}; + my $rd = $station->[2]{rt_dep} || $station->[2]{sched_dep}; + + $station_desc .= $sa ? $sa->strftime(';%s') : ';0'; + $station_desc .= $ra ? $ra->strftime(';%s') : ';0'; + $station_desc .= $sd ? $sd->strftime(';%s') : ';0'; + $station_desc .= $rd ? $rd->strftime(';%s') : ';0'; + push( @route, $station_desc ); } diff --git a/lib/Travelynx/Model/InTransit.pm b/lib/Travelynx/Model/InTransit.pm index aec193f..d06b94e 100644 --- a/lib/Travelynx/Model/InTransit.pm +++ b/lib/Travelynx/Model/InTransit.pm @@ -270,9 +270,11 @@ sub postprocess { if ( $times->{rt_arr} ) { $times->{rt_arr} = epoch_to_dt( $times->{rt_arr} ); - $times->{rt_arr_countdown} - = $times->{rt_arr}->epoch - $epoch; + $times->{arr_delay} + = $times->{rt_arr}->epoch - $times->{sched_arr}->epoch; } + $times->{arr} = $times->{rt_arr} || $times->{sched_arr}; + $times->{arr_countdown} = $times->{arr}->epoch - $epoch; } if ( $times->{sched_dep} and ref( $times->{sched_dep} ) ne 'DateTime' ) @@ -282,9 +284,11 @@ sub postprocess { if ( $times->{rt_dep} ) { $times->{rt_dep} = epoch_to_dt( $times->{rt_dep} ); - $times->{rt_dep_countdown} - = $times->{rt_dep}->epoch - $epoch; + $times->{dep_delay} + = $times->{rt_dep}->epoch - $times->{sched_dep}->epoch; } + $times->{dep} = $times->{rt_dep} || $times->{sched_dep}; + $times->{dep_countdown} = $times->{dep}->epoch - $epoch; } } } diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep index 1377db4..e5e0baf 100644 --- a/templates/_checked_in.html.ep +++ b/templates/_checked_in.html.ep @@ -127,19 +127,19 @@ % if ($station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[2]{rt_arr_countdown} // 0) > 0 and $station->[2]{rt_arr}) { - <%= $station->[0] %><br/><%= $station->[2]{rt_arr}->strftime('%H:%M') %> - % if ($station->[2]{sched_arr} and $station->[2]{sched_arr}->epoch != $station->[2]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_arr}->epoch - $station->[2]{sched_arr}->epoch ) / 60); + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[2]{rt_dep_countdown} // 0) > 0 and $station->[2]{rt_arr} and $station->[2]{rt_dep}) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{arr} and $station->[2]{dep}) { <%= $station->[0] %><br/> - <%= $station->[2]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[2]{rt_dep}->strftime('%H:%M') %> - % if ($station->[2]{sched_dep} and $station->[2]{sched_dep}->epoch != $station->[2]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_dep}->epoch - $station->[2]{sched_dep}->epoch ) / 60); + <%= $station->[2]{arr}->strftime('%H:%M') %> → + <%= $station->[2]{dep}->strftime('%H:%M') %> + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_dely} / 60); % } % last; % } @@ -152,19 +152,19 @@ % if ($station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[2]{rt_arr_countdown} // 0) > 0 and $station->[2]{rt_arr}) { - <%= $station->[0] %><br/><%= $station->[2]{rt_arr}->strftime('%H:%M') %> - % if ($station->[2]{sched_arr} and $station->[2]{sched_arr}->epoch != $station->[2]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_arr}->epoch - $station->[2]{sched_arr}->epoch ) / 60); + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[2]{rt_dep_countdown} // 0) > 0 and $station->[2]{rt_arr} and $station->[2]{rt_dep}) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{arr} and $station->[2]{dep}) { <%= $station->[0] %><br/> - <%= $station->[2]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[2]{rt_dep}->strftime('%H:%M') %> - % if ($station->[2]{sched_dep} and $station->[2]{sched_dep}->epoch != $station->[2]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_dep}->epoch - $station->[2]{sched_dep}->epoch ) / 60); + <%= $station->[2]{arr}->strftime('%H:%M') %> → + <%= $station->[2]{dep}->strftime('%H:%M') %> + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_delay} / 60); % } % last; % } diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep index 0f7cacd..f031e15 100644 --- a/templates/_public_status_card.html.ep +++ b/templates/_public_status_card.html.ep @@ -88,19 +88,19 @@ % if ($journey->{arr_name} and $station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[2]{rt_arr_countdown} // 0) > 0 and $station->[2]{rt_arr}) { - <%= $station->[0] %><br/><%= $station->[2]{rt_arr}->strftime('%H:%M') %> - % if ($station->[2]{sched_arr} and $station->[2]{sched_arr}->epoch != $station->[2]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_arr}->epoch - $station->[2]{sched_arr}->epoch ) / 60); + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[2]{rt_dep_countdown} // 0) > 0 and $station->[2]{rt_arr} and $station->[2]{rt_dep}) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{arr} and $station->[2]{dep}) { <%= $station->[0] %><br/> - <%= $station->[2]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[2]{rt_dep}->strftime('%H:%M') %> - % if ($station->[2]{sched_dep} and $station->[2]{sched_dep}->epoch != $station->[2]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_dep}->epoch - $station->[2]{sched_dep}->epoch ) / 60); + <%= $station->[2]{arr}->strftime('%H:%M') %> → + <%= $station->[2]{dep}->strftime('%H:%M') %> + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_delay} / 60); % } % last; % } @@ -113,21 +113,21 @@ % if ($journey->{arr_name} and $station->[0] eq $journey->{arr_name}) { % last; % } - % if (($station->[2]{rt_arr_countdown} // 0) > 0 and $station->[2]{rt_arr}) { + % if (($station->[2]{arr_countdown} // 0) > 0 and $station->[2]{arr}) { Nächster Halt:<br/> - <%= $station->[0] %><br/><%= $station->[2]{rt_arr}->strftime('%H:%M') %> - % if ($station->[2]{sched_arr} and $station->[2]{sched_arr}->epoch != $station->[2]{rt_arr}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_arr}->epoch - $station->[2]{sched_arr}->epoch ) / 60); + <%= $station->[0] %><br/><%= $station->[2]{arr}->strftime('%H:%M') %> + % if ($station->[2]{arr_delay}) { + %= sprintf('(%+d)', $station->[2]{arr_delay} / 60); % } % last; % } - % if (($station->[2]{rt_dep_countdown} // 0) > 0 and $station->[2]{rt_arr} and $station->[2]{rt_dep}) { + % if (($station->[2]{dep_countdown} // 0) > 0 and $station->[2]{arr} and $station->[2]{dep}) { Aktueller Halt:<br/> <%= $station->[0] %><br/> - <%= $station->[2]{rt_arr}->strftime('%H:%M') %> → - <%= $station->[2]{rt_dep}->strftime('%H:%M') %> - % if ($station->[2]{sched_dep} and $station->[2]{sched_dep}->epoch != $station->[2]{rt_dep}->epoch) { - %= sprintf('(%+d)', ($station->[2]{rt_dep}->epoch - $station->[2]{sched_dep}->epoch ) / 60); + <%= $station->[2]{arr}->strftime('%H:%M') %> → + <%= $station->[2]{dep}->strftime('%H:%M') %> + % if ($station->[2]{dep_delay}) { + %= sprintf('(%+d)', $station->[2]{dep_delay} / 60); % } % last; % } |