diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2023-02-13 17:38:32 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2023-02-13 17:38:32 +0100 | 
| commit | af27fd6e4bd42be60ed55b5824954325ef5a45b1 (patch) | |
| tree | f52bedd787381b1ac40710186a471bbc9e0898ed /lib/DBInfoscreen | |
| parent | 6ac744630c2d10b285a6683af0504ccdfaee036e (diff) | |
hafas backend: add admode=arr support
Diffstat (limited to 'lib/DBInfoscreen')
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 38 | 
1 files changed, 25 insertions, 13 deletions
| diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index fbb8e4f..bbd9eee 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -322,6 +322,7 @@ sub get_results_p {  	if ( $opt{hafas} ) {  		return Travel::Status::DE::HAFAS->new_p(  			station     => $station, +			arrivals    => $opt{arrivals},  			cache       => $opt{cache_iris_rt},  			lwp_options => {  				timeout => 10, @@ -395,6 +396,10 @@ sub handle_request {  		$opt{lookahead} += 60;  	} +	if ( $self->param('admode') and $self->param('admode') eq 'arr' ) { +		$opt{arrivals} = 1; +	} +  	my $api_version = $Travel::Status::DE::IRIS::VERSION;  	$self->stash( departures => [] ); @@ -1317,6 +1322,7 @@ sub handle_result {  	my $apiver       = $self->param('version')  // 0;  	my $callback     = $self->param('callback');  	my $via          = $self->param('via'); +	my $hafas        = $self->param('hafas');  	my $now = DateTime->now( time_zone => 'Europe/Berlin' ); @@ -1348,7 +1354,7 @@ sub handle_result {  	}  	if ($show_realtime) { -		if ( $self->param('hafas') ) { +		if ($hafas) {  			@results = sort { $a->datetime <=> $b->datetime } @results;  		}  		elsif ( $admode eq 'arr' ) { @@ -1370,10 +1376,11 @@ sub handle_result {  	for my $result (@results) {  		my $platform = ( split( qr{ }, $result->platform // '' ) )[0];  		my $delay    = $result->delay; -		if ( $admode eq 'arr' and not $result->arrival ) { +		if ( $admode eq 'arr' and not $hafas and not $result->arrival ) {  			next;  		} -		if ( $admode eq 'dep' +		if (    $admode eq 'dep' +			and not $hafas  			and not $result->departure )  		{  			next; @@ -1422,12 +1429,12 @@ sub handle_result {  		# ->time defaults to dep, so we only need to overwrite $time  		# if we want arrival times -		if ( $admode eq 'arr' ) { +		if ( $admode eq 'arr' and not $hafas ) {  			$time = $result->sched_arrival->strftime('%H:%M');  		}  		if ($show_realtime) { -			if ( $self->param('hafas') ) { +			if ($hafas) {  				$time = $result->datetime->strftime('%H:%M');  			}  			elsif ( ( $admode eq 'arr' and $result->arrival ) @@ -1625,10 +1632,12 @@ sub handle_result {  					@departures,  					{  						time            => $time, -						sched_departure => $result->sched_datetime +						sched_departure => +						  ( $result->sched_datetime and $admode ne 'arr' )  						? $result->sched_datetime->strftime('%H:%M')  						: undef, -						departure => $result->rt_datetime +						departure => +						  ( $result->rt_datetime and $admode ne 'arr' )  						? $result->rt_datetime->strftime('%H:%M')  						: undef,  						train      => $result->name, @@ -1640,9 +1649,9 @@ sub handle_result {  							map { $_->{name} =~ s{,$city}{}r }  							  $result->route_interesting(3)  						], -						destination => $result->destination =~ s{,$city}{}r, -						origin      => $result->origin, -						platform    => $result->platform, +						destination => $result->route_end =~ s{,$city}{}r, +						origin      => $result->route_end =~ s{,$city}{}r, +						platform           => $result->platform,  						scheduled_platform => $result->sched_platform,  						info               => $info,  						is_cancelled       => $result->is_cancelled, @@ -1652,9 +1661,12 @@ sub handle_result {  						delay              => $delay,  						replaced_by        => [],  						replacement_for    => [], -						route_pre          => [], -						route_post => [ map { $_->{name} } $result->route ], -						wr_link    => $result->sched_datetime +						route_pre          => $admode eq 'arr' +						? [ map { $_->{name} } $result->route ] +						: [], +						route_post => $admode eq 'arr' ? [] +						: [ map { $_->{name} } $result->route ], +						wr_link => $result->sched_datetime  						? $result->sched_datetime->strftime('%Y%m%d%H%M')  						: undef,  					} | 
