diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2020-04-14 17:45:09 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2020-04-14 17:45:09 +0200 | 
| commit | 6826c033868ac03d91e20eafe94fbb9b0c88b73c (patch) | |
| tree | 55c2e7c6b7d6a3f9683532a1134101aa0c55e67b | |
| parent | caf97d9cd063ebc98df80293f6d3d6c64471766d (diff) | |
show select past departures in checkin suggestion list
Previously, for each destination, up to two departures between now and
now + 40 minutes were shown.
When performing a fresh checkin (i.e., the has not logged a journey in the
past few minutes and is not currently checked in), the departure list now
additionally contains all departures between now - 5 minutes and now.
When checking in from a train (i.e., the user has recently checked out at
the station or is still checked in), it additionally contains all departures
between arrival time and now.
Closes #33
| -rwxr-xr-x | lib/Travelynx.pm | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index aea9ac8..7c9e723 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -2703,7 +2703,7 @@ sub startup {  		'get_connection_targets' => sub {  			my ( $self, %opt ) = @_; -			my $uid       = $opt{uid} //= $self->current_user->{id}; +			my $uid = $opt{uid} //= $self->current_user->{id};  			my $threshold = $opt{threshold}  			  // DateTime->now( time_zone => 'Europe/Berlin' )  			  ->subtract( months => 4 ); @@ -2738,7 +2738,7 @@ sub startup {  			);  			my @destinations  			  = $res->hashes->grep( sub { shift->{count} >= $min_count } ) -			  ->map( sub                { shift->{dest} } )->each; +			  ->map( sub { shift->{dest} } )->each;  			@destinations  			  = grep { $self->app->station_by_eva->{$_} } @destinations;  			@destinations @@ -2755,6 +2755,7 @@ sub startup {  			my $use_history = $self->account_use_history($uid);  			my ( $eva, $exclude_via, $exclude_train_id, $exclude_before ); +			my $now = $self->now->epoch;  			if ( $opt{eva} ) {  				if ( $use_history & 0x01 ) { @@ -2776,6 +2777,8 @@ sub startup {  				}  			} +			$exclude_before //= $now - 300; +  			if ( not $eva ) {  				return;  			} @@ -2790,13 +2793,13 @@ sub startup {  				return;  			} -			my $stationboard = $self->get_departures( $eva, 0, 40, 1 ); +			my $stationboard = $self->get_departures( $eva, 10, 40, 1 );  			if ( $stationboard->{errstr} ) {  				return;  			}  			@{ $stationboard->{results} } = map { $_->[0] }  			  sort { $a->[1] <=> $b->[1] } -			  map { [ $_, $_->departure ? $_->departure->epoch : 0 ] } +			  map  { [ $_, $_->departure ? $_->departure->epoch : 0 ] }  			  @{ $stationboard->{results} };  			my @results;  			my @cancellations; @@ -2850,7 +2853,13 @@ sub startup {  							and List::Util::any { $_ eq $dest } @via )  						{  							push( @results, [ $train, $dest ] ); -							$via_count{$dest}++; + +                 # Show all past and up to two future departures per destination +							if ( not $train->departure +								or $train->departure->epoch >= $now ) +							{ +								$via_count{$dest}++; +							}  							next;  						}  					} | 
