summaryrefslogtreecommitdiff
path: root/lib/DBInfoscreen
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-04-28 15:57:40 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2024-04-28 15:57:40 +0200
commit8a9ba07442a192bb83d079d1b6ff8b9087756588 (patch)
tree9ed548cf43bcd9cd38308c462fc162487ae4b9ab /lib/DBInfoscreen
parentfa0624eb41d0daf889e987ceab729c19b544a2bb (diff)
move coach sequence preview generation from template into Controller
Diffstat (limited to 'lib/DBInfoscreen')
-rw-r--r--lib/DBInfoscreen/Controller/Stationboard.pm37
1 files changed, 34 insertions, 3 deletions
diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm
index b566efa..2aac171 100644
--- a/lib/DBInfoscreen/Controller/Stationboard.pm
+++ b/lib/DBInfoscreen/Controller/Stationboard.pm
@@ -749,8 +749,38 @@ sub render_train {
from_json => $wr_json );
$departure->{wr} = $wr;
$departure->{wr_text} = join( q{ • },
- map { $_->{short} }
- grep { $_->{short} } $wr->train_descriptions );
+ map { $_->desc_short }
+ grep { $_->desc_short } $wr->groups );
+ my $first = 0;
+ for my $group ( $wr->groups ) {
+ for my $wagon ( $group->wagons ) {
+ if (
+ not( $wagon->is_locomotive
+ or $wagon->is_powercar )
+ )
+ {
+ if ($first) {
+ push( @{ $departure->{wr_preview} }, '•' );
+ $first = 0;
+ }
+ my $entry;
+ if ( $wagon->is_closed ) {
+ $entry = 'X';
+ }
+ else {
+ $entry = $wagon->number
+ || (
+ $wagon->type =~ m{AB} ? '½'
+ : $wagon->type =~ m{A} ? '1.'
+ : $wagon->type =~ m{B} ? '2.'
+ : $wagon->type
+ );
+ }
+ push( @{ $departure->{wr_preview} }, $entry );
+ }
+ }
+ $first = 1;
+ }
};
$departure->{wr_text} ||= 'Wagen';
return;
@@ -826,7 +856,8 @@ sub render_train {
}
if ($direction) {
- $departure->{direction} = $direction;
+ $departure->{direction} = $direction;
+ $departure->{direction_num} = $direction eq 'l' ? 0 : 100;
}
elsif ( $platform_info->{direction} ) {
$departure->{direction} = 'a' . $platform_info->{direction};