Loading lib/DBInfoscreen.pm +22 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,28 @@ sub startup { } ); $self->helper( 'occupancy_icon' => sub { my ( $self, $occupancy ) = @_; my @symbols = (qw(help_outline person_outline people priority_high)); my $text = 'Auslastung unbekannt'; if ( $occupancy > 2 ) { $text = 'Sehr hohe Auslastung'; } elsif ( $occupancy > 1 ) { $text = 'Hohe Auslastung'; } elsif ( $occupancy > 0 ) { $text = 'Geringe Auslastung'; } return ( $text, $symbols[$occupancy] ); } ); $self->helper( 'utilization_icon' => sub { my ( $self, $utilization ) = @_; Loading lib/DBInfoscreen/Controller/Stationboard.pm +25 −2 Original line number Diff line number Diff line Loading @@ -557,11 +557,14 @@ sub render_train { my $wagonorder_req = Mojo::Promise->new; my $utilization_req = Mojo::Promise->new; my $occupancy_req = Mojo::Promise->new; my $stationinfo_req = Mojo::Promise->new; my $route_req = Mojo::Promise->new; my @requests = ( $wagonorder_req, $utilization_req, $stationinfo_req, $route_req ); my @requests = ( $wagonorder_req, $utilization_req, $occupancy_req, $stationinfo_req, $route_req ); if ( $departure->{wr_link} ) { $self->wagonorder->is_available_p( $result, $departure->{wr_link} ) Loading Loading @@ -606,6 +609,26 @@ sub render_train { $utilization_req->resolve; } $self->marudor->get_efa_occupancy( eva => $result->station_uic, train_no => $result->train_no )->then( sub { my ($occupancy) = @_; $departure->{occupancy} = $occupancy; return; }, sub { $departure->{occupancy} = undef; return; } )->finally( sub { $occupancy_req->resolve; return; } )->wait; $self->wagonorder->get_stationinfo_p( $result->station_uic )->then( sub { my ($station_info) = @_; Loading lib/DBInfoscreen/Helper/Marudor.pm +29 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,35 @@ sub get_json_p { return $promise; } sub get_efa_occupancy { my ( $self, %opt ) = @_; my $eva = $opt{eva}; my $train_no = $opt{train_no}; my $promise = Mojo::Promise->new; $self->get_json_p( $self->{realtime_cache}, "https://vrrf.finalrewind.org/_eva/${eva}.json" )->then( sub { my ($utilization_json) = @_; if ( $utilization_json->{$train_no}{occupancy} ) { $promise->resolve( $utilization_json->{$train_no}{occupancy} ); return; } $promise->reject; return; } )->catch( sub { $promise->reject; return; } )->wait; return $promise; } sub get_train_utilization { my ( $self, %opt ) = @_; Loading templates/_train_details.html.ep +6 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ <%= $text %><span style="padding-right: 0.5em;">.</span> 1. <i class="material-icons" aria-hidden="true" style="padding-right: 0.5em; vertical-align: bottom;"><%= $icon1 %></i> 2. <i class="material-icons" aria-hidden="true" style="vertical-align: bottom;"><%= $icon2 %></i> </div> % } % elsif (my $o = $departure->{occupancy}) { <div class="verbose"> % my ($text, $icon) = occupancy_icon($o); <%= $text %><span style="padding-right: 0.5em;">.</span> <i class="material-icons" aria-hidden="true" style="padding-right: 0.5em; vertical-align: bottom;"><%= $icon %></i></i> </div> % } % if ($departure->{moreinfo} and @{$departure->{moreinfo}}) { Meldungen: Loading Loading
lib/DBInfoscreen.pm +22 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,28 @@ sub startup { } ); $self->helper( 'occupancy_icon' => sub { my ( $self, $occupancy ) = @_; my @symbols = (qw(help_outline person_outline people priority_high)); my $text = 'Auslastung unbekannt'; if ( $occupancy > 2 ) { $text = 'Sehr hohe Auslastung'; } elsif ( $occupancy > 1 ) { $text = 'Hohe Auslastung'; } elsif ( $occupancy > 0 ) { $text = 'Geringe Auslastung'; } return ( $text, $symbols[$occupancy] ); } ); $self->helper( 'utilization_icon' => sub { my ( $self, $utilization ) = @_; Loading
lib/DBInfoscreen/Controller/Stationboard.pm +25 −2 Original line number Diff line number Diff line Loading @@ -557,11 +557,14 @@ sub render_train { my $wagonorder_req = Mojo::Promise->new; my $utilization_req = Mojo::Promise->new; my $occupancy_req = Mojo::Promise->new; my $stationinfo_req = Mojo::Promise->new; my $route_req = Mojo::Promise->new; my @requests = ( $wagonorder_req, $utilization_req, $stationinfo_req, $route_req ); my @requests = ( $wagonorder_req, $utilization_req, $occupancy_req, $stationinfo_req, $route_req ); if ( $departure->{wr_link} ) { $self->wagonorder->is_available_p( $result, $departure->{wr_link} ) Loading Loading @@ -606,6 +609,26 @@ sub render_train { $utilization_req->resolve; } $self->marudor->get_efa_occupancy( eva => $result->station_uic, train_no => $result->train_no )->then( sub { my ($occupancy) = @_; $departure->{occupancy} = $occupancy; return; }, sub { $departure->{occupancy} = undef; return; } )->finally( sub { $occupancy_req->resolve; return; } )->wait; $self->wagonorder->get_stationinfo_p( $result->station_uic )->then( sub { my ($station_info) = @_; Loading
lib/DBInfoscreen/Helper/Marudor.pm +29 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,35 @@ sub get_json_p { return $promise; } sub get_efa_occupancy { my ( $self, %opt ) = @_; my $eva = $opt{eva}; my $train_no = $opt{train_no}; my $promise = Mojo::Promise->new; $self->get_json_p( $self->{realtime_cache}, "https://vrrf.finalrewind.org/_eva/${eva}.json" )->then( sub { my ($utilization_json) = @_; if ( $utilization_json->{$train_no}{occupancy} ) { $promise->resolve( $utilization_json->{$train_no}{occupancy} ); return; } $promise->reject; return; } )->catch( sub { $promise->reject; return; } )->wait; return $promise; } sub get_train_utilization { my ( $self, %opt ) = @_; Loading
templates/_train_details.html.ep +6 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ <%= $text %><span style="padding-right: 0.5em;">.</span> 1. <i class="material-icons" aria-hidden="true" style="padding-right: 0.5em; vertical-align: bottom;"><%= $icon1 %></i> 2. <i class="material-icons" aria-hidden="true" style="vertical-align: bottom;"><%= $icon2 %></i> </div> % } % elsif (my $o = $departure->{occupancy}) { <div class="verbose"> % my ($text, $icon) = occupancy_icon($o); <%= $text %><span style="padding-right: 0.5em;">.</span> <i class="material-icons" aria-hidden="true" style="padding-right: 0.5em; vertical-align: bottom;"><%= $icon %></i></i> </div> % } % if ($departure->{moreinfo} and @{$departure->{moreinfo}}) { Meldungen: Loading