diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2024-04-28 15:57:40 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2024-04-28 15:57:40 +0200 |
commit | 8a9ba07442a192bb83d079d1b6ff8b9087756588 (patch) | |
tree | 9ed548cf43bcd9cd38308c462fc162487ae4b9ab | |
parent | fa0624eb41d0daf889e987ceab729c19b544a2bb (diff) |
move coach sequence preview generation from template into Controller
-rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 37 | ||||
-rw-r--r-- | templates/_train_details.html.ep | 25 |
2 files changed, 40 insertions, 22 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}; diff --git a/templates/_train_details.html.ep b/templates/_train_details.html.ep index d70ef30..1b7bfce 100644 --- a/templates/_train_details.html.ep +++ b/templates/_train_details.html.ep @@ -118,31 +118,18 @@ </div> <!-- dataline --> % if (my $wr = $departure->{wr}) { <div class="wagonorder-preview"> -% my @wagons = $wr->wagons; % my $direction = defined $wr->direction ? $wr->direction == 100 ? '→' : '←' : q{}; % if ($departure->{direction}) { % $direction = $departure->{direction} eq 'l' ? '◀' : '▶'; -% if (($departure->{direction} eq 'l' ? 0 : 100) != $wr->direction) { -% @wagons = reverse @wagons; -% } % } <a href="/_wr/<%= $departure->{train_no} %>/<%= $departure->{wr_link} %>?e=<%= $departure->{direction} // '' %>"> %= $direction -% my $gi; -% for my $wagon (@wagons) { -% if (not ($wagon->is_locomotive or $wagon->is_powercar)) { -% if (defined $gi and $gi != $wagon->group_index) { - • -% } -% if ($wagon->is_closed) { - X -% } -% else { -%= $wagon->number || ($wagon->type =~ m{AB} ? '½' : $wagon->type =~ m{A} ? '1.' : $wagon->type =~ m{B} ? '2.' : $wagon->type ) -% } -% } -% $gi = $wagon->group_index; -% } + % if (defined $departure->{direction_num} and $departure->{direction_num} != $wr->direction) { + %= join(q{ }, reverse @{$departure->{wr_preview} // []}) + % } + % else { + %= join(q{ }, @{$departure->{wr_preview} // []}) + % } %= $direction </a> </div> |