diff options
author | Daniel Friesel <derf@finalrewind.org> | 2020-12-25 17:27:57 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2020-12-25 17:27:57 +0100 |
commit | 0f9dde3810a3b86e0769e6013a19ccf0faeba0a3 (patch) | |
tree | cd2c4a5f2b9914f1e6d335f00038c12ebe66d209 /lib/DBInfoscreen.pm | |
parent | 7d29c0f25f4d7e4e47ea726bcdac1985da866126 (diff) |
add wagon images for IC and ICE 1/2/4
IC2, ICE 3 and ICE T will follow soon.
Diffstat (limited to 'lib/DBInfoscreen.pm')
-rw-r--r-- | lib/DBInfoscreen.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/DBInfoscreen.pm b/lib/DBInfoscreen.pm index 54078ea..a0e027d 100644 --- a/lib/DBInfoscreen.pm +++ b/lib/DBInfoscreen.pm @@ -123,6 +123,13 @@ sub startup { } ); + $self->attr( + dbdb_wagon => sub { + return JSON->new->utf8->decode( + scalar read_file('share/dbdb_wagen.json') ); + } + ); + $self->helper( hafas => sub { my ($self) = @_; @@ -166,6 +173,32 @@ sub startup { ); $self->helper( + wagon_image => sub { + my ( $self, $train_type, $wagon_type, $uic ) = @_; + my $ret; + if ( $train_type =~ m{IC(?!E)} + and $wagon_type + =~ m{ ^ [AB] R? k? [ipv] m m? b? d? s? z f? $ }x ) + { + $ret = $wagon_type; + } + elsif ( not $uic ) { + return; + } + elsif ( $train_type =~ m{ICE [12]} and $wagon_type !~ m{^I} ) { + $ret = substr( $uic, 5, 4 ); + } + elsif ( $train_type =~ m{ICE 4} ) { + $ret = substr( $uic, 4, 5 ); + } + if ( $ret and $self->app->dbdb_wagon->{$ret} ) { + return $ret; + } + return; + } + ); + + $self->helper( 'handle_no_results' => sub { my ( $self, $backend, $station, $errstr ) = @_; @@ -418,6 +451,7 @@ sub startup { $r->get('/_wr/:train/:departure')->to('wagenreihung#wagenreihung'); $r->get('/wr/:train')->to('wagenreihung#zugbildung_db'); + $r->get('/w/:wagon')->to('wagenreihung#wagen'); $r->get('/_ajax_mapinfo/:tripid/:lineno')->to('map#ajax_route'); $r->get('/map/:tripid/:lineno')->to('map#route'); |