diff options
Diffstat (limited to 'lib/DBInfoscreen')
-rw-r--r-- | lib/DBInfoscreen/Controller/Wagenreihung.pm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/DBInfoscreen/Controller/Wagenreihung.pm b/lib/DBInfoscreen/Controller/Wagenreihung.pm index 4707d03..073d762 100644 --- a/lib/DBInfoscreen/Controller/Wagenreihung.pm +++ b/lib/DBInfoscreen/Controller/Wagenreihung.pm @@ -5,6 +5,8 @@ package DBInfoscreen::Controller::Wagenreihung; # SPDX-License-Identifier: BSD-2-Clause use Mojo::Base 'Mojolicious::Controller'; +use Mojo::JSON qw(decode_json encode_json); +use Mojo::Util qw(b64_encode b64_decode); use utf8; @@ -99,6 +101,7 @@ sub wagenreihung { wr_error => scalar $@, train_no => $train, wr => undef, + wref => undef, hide_opts => 1, ); } @@ -114,6 +117,14 @@ sub wagenreihung { } } + my $wref = { + tt => $wr->train_type, + tn => $train, + s => $wr->station_name, + p => $wr->platform + }; + $wref = b64_encode( encode_json($wref) ); + $self->render( 'wagenreihung', wr_error => undef, @@ -121,6 +132,7 @@ sub wagenreihung { map { $wr->train_type . ' ' . $_ } $wr->train_numbers ), train_no => $train, wr => $wr, + wref => $wref, hide_opts => 1, ); } @@ -133,6 +145,7 @@ sub wagenreihung { wr_error => scalar $err, train_no => $train, wr => undef, + wref => undef, hide_opts => 1, ); } @@ -140,4 +153,52 @@ sub wagenreihung { } +sub wagen { + my ($self) = @_; + my $wagon_id = $self->stash('wagon'); + my $wagon_no = $self->param('n'); + my $section = $self->param('s'); + my $wref = $self->param('r'); + + if ( not $self->app->dbdb_wagon->{$wagon_id} ) { + $self->render( + 'not_found', + message => "Keine Daten zu Wagentyp \"${wagon_id}\" vorhanden", + hide_opts => 1 + ); + return; + } + + eval { $wref = decode_json( b64_decode($wref) ); }; + if ($@) { + $wref = {}; + } + + $wref->{wn} = $wagon_no; + $wref->{ws} = $section; + + my $wagon_file + = "https://lib.finalrewind.org/dbdb/db_wagen/${wagon_id}.png"; + + my $title = "Wagen $wagon_id"; + + if ( $wref->{tt} and $wref->{tn} ) { + $title = sprintf( '%s %s', $wref->{tt}, $wref->{tn} ); + if ($wagon_no) { + $title .= " Wagen $wagon_no"; + } + else { + $title .= " Wagen $wagon_id"; + } + } + + $self->render( + 'wagen', + title => $title, + wagon_file => $wagon_file, + wref => $wref, + hide_opts => 1, + ); +} + 1; |