Loading lib/DBInfoscreen.pm +45 −0 Original line number Diff line number Diff line package DBInfoscreen; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading @@ -7,6 +8,7 @@ use Mojo::Base 'Mojolicious'; use Cache::File; use DBInfoscreen::Helper::HAFAS; use DBInfoscreen::Helper::Marudor; use DBInfoscreen::Helper::Wagonorder; use File::Slurp qw(read_file); use JSON; Loading Loading @@ -113,6 +115,20 @@ sub startup { } ); $self->helper( marudor => sub { my ($self) = @_; state $hafas = DBInfoscreen::Helper::Marudor->new( log => $self->app->log, main_cache => $self->app->cache_iris_main, realtime_cache => $self->app->cache_iris_rt, root_url => $self->url_for('/')->to_abs, user_agent => $self->ua, version => $VERSION, ); } ); $self->helper( wagonorder => sub { my ($self) = @_; Loading Loading @@ -315,6 +331,35 @@ sub startup { } ); $self->helper( 'utilization_icon' => sub { my ( $self, $utilization ) = @_; my ( $first, $second ) = @{ $utilization // [ 0, 0 ] }; my $sum = ( $first + $second ) / 2; my @symbols = ( qw(hourglass_empty person_outline people priority_high not_interested) ); my $text = 'Auslastung unbekannt'; if ( $sum > 3.5 ) { $text = 'Zug ist ausgebucht'; } elsif ( $sum >= 2.5 ) { $text = 'Sehr hohe Auslastung'; } elsif ( $sum >= 1.5 ) { $text = 'Hohe Auslastung'; } elsif ( $sum >= 1 ) { $text = 'Geringe Auslastung'; } return ( $text, $symbols[$first], $symbols[$second] ); } ); $self->helper( 'numeric_platform_part' => sub { my ( $self, $platform ) = @_; Loading lib/DBInfoscreen/Controller/Stationboard.pm +21 −1 Original line number Diff line number Diff line package DBInfoscreen::Controller::Stationboard; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading Loading @@ -457,6 +458,7 @@ sub render_train { $self->render_later; my $wagonorder_req = Mojo::Promise->new; my $utilization_req = Mojo::Promise->new; my $stationinfo_req = Mojo::Promise->new; my $route_req = Mojo::Promise->new; Loading @@ -477,9 +479,26 @@ sub render_train { return; } )->wait; $self->marudor->get_train_utilization( train => $result )->then( sub { my ( $first, $second ) = @_; $departure->{utilization} = [ $first, $second ]; return; }, sub { $departure->{utilization} = undef; return; } )->finally( sub { $utilization_req->resolve; return; } )->wait; } else { $wagonorder_req->resolve; $utilization_req->resolve; } $self->wagonorder->get_stationinfo_p( $result->station_uic )->then( Loading Loading @@ -646,7 +665,8 @@ sub render_train { )->wait; # Defer rendering until all requests have completed Mojo::Promise->all( $wagonorder_req, $stationinfo_req, $route_req )->then( Mojo::Promise->all( $wagonorder_req, $utilization_req, $stationinfo_req, $route_req )->then( sub { $self->render( $template // '_train_details', Loading lib/DBInfoscreen/Helper/HAFAS.pm +5 −0 Original line number Diff line number Diff line package DBInfoscreen::Helper::HAFAS; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading Loading @@ -36,6 +37,8 @@ sub get_json_p { return $promise->resolve($content); } $self->{log}->debug("get_json_p($url)"); $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) ->then( sub { Loading Loading @@ -85,6 +88,8 @@ sub get_xml_p { return $promise->resolve($content); } $self->{log}->debug("get_xml_p($url)"); $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) ->then( sub { Loading templates/_train_details.html.ep +7 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,13 @@ % } </div> % if (my $u = $departure->{utilization}) { <div class="verbose"> % my ($text, $icon1, $icon2) = utilization_icon($u); <%= $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> % } % if ($departure->{moreinfo} and @{$departure->{moreinfo}}) { Meldungen: <ul> Loading templates/about.html.ep +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ Wagenreihung: <a href="https://finalrewind.org/projects/Travel-Status-DE-DBWagenreihung/">Travel::Status::DE::DBWagenreihung</a> v<%= $Travel::Status::DE::DBWagenreihung::VERSION %><br/> Karte: <a href="https://v5.db.transport.rest/">transport.rest</a> von <a href="https://github.com/derhuerst">@derhuerst</a><br/> Zugauslastung: <a href="https://docs.marudor.de/">marudor.de</a><br/> <br/> Grundlage der <a href="https://data.deutschebahn.com/dataset/zugbildungsplanzugbildungsplan-zpar">Wagengattungsdaten</a> © DB Fernverkehr AG, lizensiert unter CC-BY 4.0 <br/> Loading Loading
lib/DBInfoscreen.pm +45 −0 Original line number Diff line number Diff line package DBInfoscreen; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading @@ -7,6 +8,7 @@ use Mojo::Base 'Mojolicious'; use Cache::File; use DBInfoscreen::Helper::HAFAS; use DBInfoscreen::Helper::Marudor; use DBInfoscreen::Helper::Wagonorder; use File::Slurp qw(read_file); use JSON; Loading Loading @@ -113,6 +115,20 @@ sub startup { } ); $self->helper( marudor => sub { my ($self) = @_; state $hafas = DBInfoscreen::Helper::Marudor->new( log => $self->app->log, main_cache => $self->app->cache_iris_main, realtime_cache => $self->app->cache_iris_rt, root_url => $self->url_for('/')->to_abs, user_agent => $self->ua, version => $VERSION, ); } ); $self->helper( wagonorder => sub { my ($self) = @_; Loading Loading @@ -315,6 +331,35 @@ sub startup { } ); $self->helper( 'utilization_icon' => sub { my ( $self, $utilization ) = @_; my ( $first, $second ) = @{ $utilization // [ 0, 0 ] }; my $sum = ( $first + $second ) / 2; my @symbols = ( qw(hourglass_empty person_outline people priority_high not_interested) ); my $text = 'Auslastung unbekannt'; if ( $sum > 3.5 ) { $text = 'Zug ist ausgebucht'; } elsif ( $sum >= 2.5 ) { $text = 'Sehr hohe Auslastung'; } elsif ( $sum >= 1.5 ) { $text = 'Hohe Auslastung'; } elsif ( $sum >= 1 ) { $text = 'Geringe Auslastung'; } return ( $text, $symbols[$first], $symbols[$second] ); } ); $self->helper( 'numeric_platform_part' => sub { my ( $self, $platform ) = @_; Loading
lib/DBInfoscreen/Controller/Stationboard.pm +21 −1 Original line number Diff line number Diff line package DBInfoscreen::Controller::Stationboard; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading Loading @@ -457,6 +458,7 @@ sub render_train { $self->render_later; my $wagonorder_req = Mojo::Promise->new; my $utilization_req = Mojo::Promise->new; my $stationinfo_req = Mojo::Promise->new; my $route_req = Mojo::Promise->new; Loading @@ -477,9 +479,26 @@ sub render_train { return; } )->wait; $self->marudor->get_train_utilization( train => $result )->then( sub { my ( $first, $second ) = @_; $departure->{utilization} = [ $first, $second ]; return; }, sub { $departure->{utilization} = undef; return; } )->finally( sub { $utilization_req->resolve; return; } )->wait; } else { $wagonorder_req->resolve; $utilization_req->resolve; } $self->wagonorder->get_stationinfo_p( $result->station_uic )->then( Loading Loading @@ -646,7 +665,8 @@ sub render_train { )->wait; # Defer rendering until all requests have completed Mojo::Promise->all( $wagonorder_req, $stationinfo_req, $route_req )->then( Mojo::Promise->all( $wagonorder_req, $utilization_req, $stationinfo_req, $route_req )->then( sub { $self->render( $template // '_train_details', Loading
lib/DBInfoscreen/Helper/HAFAS.pm +5 −0 Original line number Diff line number Diff line package DBInfoscreen::Helper::HAFAS; # Copyright (C) 2011-2020 Daniel Friesel # # SPDX-License-Identifier: BSD-2-Clause Loading Loading @@ -36,6 +37,8 @@ sub get_json_p { return $promise->resolve($content); } $self->{log}->debug("get_json_p($url)"); $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) ->then( sub { Loading Loading @@ -85,6 +88,8 @@ sub get_xml_p { return $promise->resolve($content); } $self->{log}->debug("get_xml_p($url)"); $self->{user_agent}->request_timeout(5)->get_p( $url => $self->{header} ) ->then( sub { Loading
templates/_train_details.html.ep +7 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,13 @@ % } </div> % if (my $u = $departure->{utilization}) { <div class="verbose"> % my ($text, $icon1, $icon2) = utilization_icon($u); <%= $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> % } % if ($departure->{moreinfo} and @{$departure->{moreinfo}}) { Meldungen: <ul> Loading
templates/about.html.ep +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ Wagenreihung: <a href="https://finalrewind.org/projects/Travel-Status-DE-DBWagenreihung/">Travel::Status::DE::DBWagenreihung</a> v<%= $Travel::Status::DE::DBWagenreihung::VERSION %><br/> Karte: <a href="https://v5.db.transport.rest/">transport.rest</a> von <a href="https://github.com/derhuerst">@derhuerst</a><br/> Zugauslastung: <a href="https://docs.marudor.de/">marudor.de</a><br/> <br/> Grundlage der <a href="https://data.deutschebahn.com/dataset/zugbildungsplanzugbildungsplan-zpar">Wagengattungsdaten</a> © DB Fernverkehr AG, lizensiert unter CC-BY 4.0 <br/> Loading