diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2021-01-31 12:02:18 +0100 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2021-01-31 12:02:31 +0100 | 
| commit | 67c4ab8bdffeae89e5f96e3f1cf35f565c02fad7 (patch) | |
| tree | b749e049a9ae87f0edd158d215a1f651d3728cab /lib/DBInfoscreen | |
| parent | 1c03a3fd6e6a377d7e79cf33b2556c671fd6e494 (diff) | |
wagonorder: show plan data if realtime data request failed3.10.3
Diffstat (limited to 'lib/DBInfoscreen')
| -rw-r--r-- | lib/DBInfoscreen/Controller/Wagenreihung.pm | 88 | 
1 files changed, 62 insertions, 26 deletions
| diff --git a/lib/DBInfoscreen/Controller/Wagenreihung.pm b/lib/DBInfoscreen/Controller/Wagenreihung.pm index a64cca6..d99a71c 100644 --- a/lib/DBInfoscreen/Controller/Wagenreihung.pm +++ b/lib/DBInfoscreen/Controller/Wagenreihung.pm @@ -13,16 +13,14 @@ use utf8;  use Travel::Status::DE::DBWagenreihung;  use Travel::Status::DE::DBWagenreihung::Wagon; -sub zugbildung_db { -	my ($self) = @_; +sub get_zugbildung_db { +	my ( $self, $train_no ) = @_; -	my $train_no = $self->param('train'); +	say $train_no;  	my $details = $self->app->train_details_db->{$train_no};  	if ( not $details ) { -		$self->render( 'not_found', -			message => "Keine Daten zu Zug ${train_no} bekannt" );  		return;  	} @@ -66,18 +64,69 @@ sub zugbildung_db {  	my $route_end   = $details->{route}{end}   // $details->{route}{postEnd};  	my $route       = "${route_start} → ${route_end}"; +	return { +		route      => $route, +		train_type => $train_type, +		wagons     => [@wagons] +	}; +} + +sub zugbildung_db { +	my ($self) = @_; + +	my $train_no = $self->param('train'); + +	my $details = $self->get_zugbildung_db($train_no); + +	if ( not $details ) { +		$self->render( 'not_found', +			message => "Keine Daten zu Zug ${train_no} bekannt" ); +		return; +	} +  	$self->render(  		'zugbildung_db',  		wr_error  => undef, -		title     => $train_type . ' ' . $train_no, -		route     => $route, +		title     => $details->{train_type} . ' ' . $train_no, +		route     => $details->{route},  		zb        => $details,  		train_no  => $train_no, -		wagons    => [@wagons], +		wagons    => $details->{wagons},  		hide_opts => 1,  	);  } +sub handle_wagenreihung_error { +	my ( $self, $train_no, $err ) = @_; + +	my $details = $self->get_zugbildung_db($train_no); +	if ( $details and @{ $details->{wagons} } ) { +		my $wr_error +		  = "${err}. Ersatzweise werden die Solldaten laut Fahrplan angezeigt."; +		$self->render( +			'zugbildung_db', +			wr_error  => $wr_error, +			title     => $details->{train_type} . ' ' . $train_no, +			route     => $details->{route}, +			zb        => $details, +			train_no  => $train_no, +			wagons    => $details->{wagons}, +			hide_opts => 1, +		); +	} +	else { +		$self->render( +			'wagenreihung', +			title     => "Zug $train_no", +			wr_error  => $err, +			train_no  => $train_no, +			wr        => undef, +			wref      => undef, +			hide_opts => 1, +		); +	} +} +  sub wagenreihung {  	my ($self)    = @_;  	my $train     = $self->stash('train'); @@ -96,15 +145,8 @@ sub wagenreihung {  					from_json => $json );  			};  			if ($@) { -				$self->render( -					'wagenreihung', -					title     => "Zug $train", -					wr_error  => scalar $@, -					train_no  => $train, -					wr        => undef, -					wref      => undef, -					hide_opts => 1, -				); +				$self->handle_wagenreihung_error( $train, scalar $@ ); +				return;  			}  			if ( $exit_side and $exit_side =~ m{^a} ) { @@ -234,15 +276,9 @@ sub wagenreihung {  	)->catch(  		sub {  			my ($err) = @_; -			$self->render( -				'wagenreihung', -				title     => "Zug $train", -				wr_error  => scalar $err, -				train_no  => $train, -				wr        => undef, -				wref      => undef, -				hide_opts => 1, -			); + +			$self->handle_wagenreihung_error( $train, scalar $err ); +			return;  		}  	)->wait; | 
