diff options
| author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-02-08 14:41:01 +0100 | 
|---|---|---|
| committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-02-08 14:41:01 +0100 | 
| commit | f7cbdd5e9de6ab5004c0983ff1fe2a61a28ae499 (patch) | |
| tree | cb612c809f30af5e96b3b166d6107197a5e77a5a | |
| parent | 442b0e8db87cda064af2111e8283ad5d87555e0e (diff) | |
EFA: show candidates on ambiguous input
| -rw-r--r-- | cpanfile | 2 | ||||
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 32 | 
2 files changed, 23 insertions, 11 deletions
| @@ -11,7 +11,7 @@ requires 'LWP::UserAgent';  requires 'LWP::Protocol::https';  requires 'Mojolicious';  requires 'Travel::Status::DE::DBRIS::Formation', '>= 0.04'; -requires 'Travel::Status::DE::EFA',              '>= 3.06'; +requires 'Travel::Status::DE::EFA',              '>= 3.08';  requires 'Travel::Status::DE::HAFAS',            '>= 5.06';  requires 'Travel::Status::DE::IRIS';  requires 'XML::LibXML'; diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index 1bdb00c..4b63924 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -50,12 +50,22 @@ sub handle_no_results {  	my $errstr = $data->{errstr};  	if ($efa) { -		$self->render( -			'landingpage', -			error     => ( $errstr // "Keine Abfahrten an '$station'" ), -			hide_opts => 0, -			status    => $data->{status} // 404, -		); +		if ( $errstr =~ m{ambiguous} and $efa->name_candidates ) { +			$self->render( +				'landingpage', +				stationlist => [ $efa->name_candidates ], +				hide_opts   => 0, +				status      => $data->{status} // 300, +			); +		} +		else { +			$self->render( +				'landingpage', +				error     => ( $errstr // "Keine Abfahrten an '$station'" ), +				hide_opts => 0, +				status    => $data->{status} // 404, +			); +		}  		return;  	}  	elsif ($hafas) { @@ -579,13 +589,14 @@ sub handle_request {  		}  	)->catch(  		sub { -			my ($err) = @_; +			my ( $err, $status ) = @_;  			if ( $template eq 'json' ) {  				$self->handle_no_results_json(  					$station,  					{  						errstr => $err, -						status => ( $err =~ m{Ambiguous|LOCATION} ? 300 : 500 ), +						status => +						  ( $err =~ m{[Aa]mbiguous|LOCATION} ? 300 : 500 ),  					},  					$api_version  				); @@ -595,9 +606,10 @@ sub handle_request {  				$station,  				{  					errstr => $err, -					status => ( $err =~ m{Ambiguous|LOCATION} ? 300 : 500 ), +					status => ( $err =~ m{[Aa]mbiguous|LOCATION} ? 300 : 500 ),  				}, -				$hafas, $efa +				$hafas, +				$efa ? $status : undef  			);  			return;  		} | 
