get_connecting_trains_p: remove trains with identical routes to current one

This commit is contained in:
Daniel Friesel 2022-09-05 21:06:05 +02:00
parent 0a7188d2e2
commit ffeeb11e5a
No known key found for this signature in database
GPG key ID: 100D5BFB5166E005

View file

@ -99,6 +99,7 @@ sub get_connecting_trains_p {
@{ $stationboard->{results} };
my @results;
my @cancellations;
my $excluded_train;
my %via_count = map { $_ => 0 } @destinations;
for my $train ( @{ $stationboard->{results} } ) {
if ( not $train->departure ) {
@ -113,6 +114,7 @@ sub get_connecting_trains_p {
if ( $exclude_train_id
and $train->train_id eq $exclude_train_id )
{
$excluded_train = $train;
next;
}
@ -167,13 +169,27 @@ sub get_connecting_trains_p {
map {
[
$_,
$_->[0]->departure->epoch // $_->[0]->sched_departure->epoch
$_->[0]->departure->epoch
// $_->[0]->sched_departure->epoch
]
} @results;
@cancellations = map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, $_->[0]->sched_departure->epoch ] } @cancellations;
# remove trains whose route matches the excluded one's
if ($excluded_train) {
my $route_pre = join( '|', reverse $excluded_train->route_pre );
@results
= grep { join( '|', $_->[0]->route_post ) ne $route_pre }
@results;
my $route_post = join( '|', $excluded_train->route_post );
@results
= grep { join( '|', $_->[0]->route_post ) ne $route_post }
@results;
}
# add message IDs and 'transfer short' hints
for my $result (@results) {
my $train = $result->[0];
my @message_ids