Commit aa9e5512 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

request EFA occupancy data (works for some VRR trains)

parent 67c73499
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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 ) = @_;
+25 −2
Original line number Diff line number Diff line
@@ -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} )
@@ -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)    = @_;
+29 −0
Original line number Diff line number Diff line
@@ -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 ) = @_;

+6 −0
Original line number Diff line number Diff line
@@ -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: