diff options
Diffstat (limited to 'lib/DBInfoscreen/Controller')
-rw-r--r-- | lib/DBInfoscreen/Controller/Wagenreihung.pm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/DBInfoscreen/Controller/Wagenreihung.pm b/lib/DBInfoscreen/Controller/Wagenreihung.pm index ebda6f3..92af5f3 100644 --- a/lib/DBInfoscreen/Controller/Wagenreihung.pm +++ b/lib/DBInfoscreen/Controller/Wagenreihung.pm @@ -1,4 +1,5 @@ package DBInfoscreen::Controller::Wagenreihung; + # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause @@ -6,11 +7,67 @@ package DBInfoscreen::Controller::Wagenreihung; use Mojo::Base 'Mojolicious::Controller'; use Travel::Status::DE::DBWagenreihung; +use Travel::Status::DE::DBWagenreihung::Wagon; my $dbf_version = qx{git describe --dirty} || 'experimental'; chomp $dbf_version; +sub zugbildung_db { + my ($self) = @_; + + my $train_no = $self->param('train'); + + 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; + } + + my @wagons; + + for my $wagon_number ( sort { $a <=> $b } keys %{ $details->{wagon} } ) { + my %wagon = ( + fahrzeugnummer => "", + fahrzeugtyp => $details->{wagon}{$wagon_number}, + kategorie => "", + train_no => $train_no, + wagenordnungsnummer => $wagon_number, + positionamhalt => { + startprozent => 0, + endeprozent => 0, + startmeter => 0, + endemeter => 0, + } + ); + my $wagon = Travel::Status::DE::DBWagenreihung::Wagon->new(%wagon); + + if ( $details->{type} ) { + $wagon->set_traintype( $details->{type} ); + } + push( @wagons, $wagon ); + } + + my $pos = 0; + for my $wagon (@wagons) { + $wagon->{position}{start_percent} = $pos; + $wagon->{position}{end_percent} = $pos + 4; + $pos += 4; + } + + $self->render( + 'zugbildung_db', + wr_error => undef, + title => $details->{raw} . ' ' . $train_no, + zb => $details, + train_no => $train_no, + wagons => [@wagons], + hide_opts => 1, + ); +} + sub wagenreihung { my ($self) = @_; my $train = $self->stash('train'); |