diff options
-rwxr-xr-x | lib/Travelynx.pm | 30 | ||||
-rw-r--r-- | templates/_connections.html.ep | 6 |
2 files changed, 35 insertions, 1 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index edb4637..281a9a0 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -1446,6 +1446,7 @@ sub startup { my ( $eva, $exclude_via, $exclude_train_id, $exclude_before ); my $now = $self->now->epoch; + my ( $stationinfo, $arr_epoch, $arr_platform ); if ( $opt{eva} ) { if ( $use_history & 0x01 ) { @@ -1461,8 +1462,11 @@ sub startup { $eva = $status->{arr_eva}; $exclude_via = $status->{dep_name}; $exclude_train_id = $status->{train_id}; + $arr_platform = $status->{arr_platform}; + $stationinfo = $status->{extra_data}{stationinfo_arr}; if ( $status->{real_arrival} ) { - $exclude_before = $status->{real_arrival}->epoch; + $exclude_before = $arr_epoch + = $status->{real_arrival}->epoch; } } } @@ -1578,6 +1582,30 @@ sub startup { my @message_ids = List::Util::uniq map { $_->[1] } $train->raw_messages; $train->{message_id} = { map { $_ => 1 } @message_ids }; + my $interchange_duration; + if ( exists $stationinfo->{i} ) { + $interchange_duration + = $stationinfo->{i}{$arr_platform}{ $train->platform }; + $interchange_duration //= $stationinfo->{i}{"*"}; + } + if ( defined $interchange_duration ) { + my $interchange_time + = ( $train->departure->epoch - $arr_epoch ) / 60; + if ( $interchange_time < $interchange_duration ) { + $train->{interchange_text} = 'Anschluss knapp'; + $train->{interchange_icon} = 'warning'; + } + elsif ( $interchange_time == $interchange_duration ) { + $train->{interchange_text} + = 'Anschluss könnte knapp werden'; + $train->{interchange_icon} = 'directions_run'; + } + + #else { + # $train->{interchange_text} = 'Anschluss wird voraussichtlich erreicht'; + # $train->{interchange_icon} = 'check'; + #} + } } return ( @results, @cancellations ); diff --git a/templates/_connections.html.ep b/templates/_connections.html.ep index b44841b..d09f0c0 100644 --- a/templates/_connections.html.ep +++ b/templates/_connections.html.ep @@ -50,6 +50,9 @@ % if ($train->departure_delay) { %= sprintf('(%+d)', $train->departure_delay) % } + % if ($train->{interchange_icon}) { + <i class="material-icons tiny" aria-label="<%= $train->{interchange_text} %>"><%= $train->{interchange_icon} %></i> + % } % if ($train->platform) { <br/>Gleis <%= $train->platform %> % } @@ -108,6 +111,9 @@ % if ($train->departure_delay) { %= sprintf('(%+d)', $train->departure_delay) % } + % if ($train->{interchange_icon}) { + <i class="material-icons tiny" aria-label="<%= $train->{interchange_text} %>"><%= $train->{interchange_icon} %></i> + % } % } </td><td> % if ($train->platform and not $train->departure_is_cancelled) { |