warn if a connecting train may not be reached

This commit is contained in:
Daniel Friesel 2020-12-07 19:44:18 +01:00
parent c509703ce5
commit 2ee5332ee5
2 changed files with 35 additions and 1 deletions

View file

@ -1446,6 +1446,7 @@ sub startup {
my ( $eva, $exclude_via, $exclude_train_id, $exclude_before ); my ( $eva, $exclude_via, $exclude_train_id, $exclude_before );
my $now = $self->now->epoch; my $now = $self->now->epoch;
my ( $stationinfo, $arr_epoch, $arr_platform );
if ( $opt{eva} ) { if ( $opt{eva} ) {
if ( $use_history & 0x01 ) { if ( $use_history & 0x01 ) {
@ -1461,8 +1462,11 @@ sub startup {
$eva = $status->{arr_eva}; $eva = $status->{arr_eva};
$exclude_via = $status->{dep_name}; $exclude_via = $status->{dep_name};
$exclude_train_id = $status->{train_id}; $exclude_train_id = $status->{train_id};
$arr_platform = $status->{arr_platform};
$stationinfo = $status->{extra_data}{stationinfo_arr};
if ( $status->{real_arrival} ) { 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 my @message_ids
= List::Util::uniq map { $_->[1] } $train->raw_messages; = List::Util::uniq map { $_->[1] } $train->raw_messages;
$train->{message_id} = { map { $_ => 1 } @message_ids }; $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 ); return ( @results, @cancellations );

View file

@ -50,6 +50,9 @@
% if ($train->departure_delay) { % if ($train->departure_delay) {
%= sprintf('(%+d)', $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) { % if ($train->platform) {
<br/>Gleis <%= $train->platform %> <br/>Gleis <%= $train->platform %>
% } % }
@ -108,6 +111,9 @@
% if ($train->departure_delay) { % if ($train->departure_delay) {
%= sprintf('(%+d)', $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> </td><td>
% if ($train->platform and not $train->departure_is_cancelled) { % if ($train->platform and not $train->departure_is_cancelled) {