summaryrefslogtreecommitdiff
path: root/lib/DBInfoscreen
diff options
context:
space:
mode:
Diffstat (limited to 'lib/DBInfoscreen')
-rw-r--r--lib/DBInfoscreen/Controller/Wagenreihung.pm61
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;