summaryrefslogtreecommitdiff
path: root/lib/DBInfoscreen/Controller/Wagenreihung.pm
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2020-12-14 19:18:19 +0100
committerDaniel Friesel <derf@finalrewind.org>2020-12-14 19:18:19 +0100
commit4609b7312d67063b2cb0d5803260d7dc25475bc2 (patch)
tree5ef3cf76763c9bd883838bc2dd161fb565d86e2e /lib/DBInfoscreen/Controller/Wagenreihung.pm
parent3c85cd22395be60462959ee7d3cf59d0e939b6a3 (diff)
show expected wagon order whan real-time data is not available
work in progress.
Diffstat (limited to 'lib/DBInfoscreen/Controller/Wagenreihung.pm')
-rw-r--r--lib/DBInfoscreen/Controller/Wagenreihung.pm57
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');