also show train direction on departure

This commit is contained in:
Daniel Friesel 2019-08-03 12:35:47 +02:00
parent ff75b16bfc
commit a48352ada4
2 changed files with 62 additions and 4 deletions

View file

@ -1744,7 +1744,7 @@ sub startup {
my $journey = $db->select( my $journey = $db->select(
'in_transit_str', 'in_transit_str',
[ 'arr_ds100', 'route' ], [ 'arr_ds100', 'dep_ds100', 'route' ],
{ user_id => $uid } { user_id => $uid }
)->expand->hash; )->expand->hash;
@ -1911,6 +1911,27 @@ sub startup {
)->wait; )->wait;
} }
if ($is_departure) {
$self->get_dbdb_station_p( $journey->{dep_ds100} )->then(
sub {
my ($station_info) = @_;
my $res = $db->select( 'in_transit', ['data'],
{ user_id => $uid } );
my $res_h = $res->expand->hash;
my $data = $res_h->{data} // {};
$data->{stationinfo_dep} = $station_info;
$db->update(
'in_transit',
{ data => JSON->new->encode($data) },
{ user_id => $uid }
);
}
)->wait;
}
if ( $journey->{arr_ds100} and not $is_departure ) { if ( $journey->{arr_ds100} and not $is_departure ) {
$self->get_dbdb_station_p( $journey->{arr_ds100} )->then( $self->get_dbdb_station_p( $journey->{arr_ds100} )->then(
sub { sub {
@ -2271,8 +2292,12 @@ sub startup {
$self->helper( $self->helper(
'stationinfo_to_direction' => sub { 'stationinfo_to_direction' => sub {
my ( $self, $platform_info, $wagonorder, $prev_stop ) = @_; my ( $self, $platform_info, $wagonorder, $prev_stop, $next_stop )
= @_;
if ( $platform_info->{kopfgleis} ) { if ( $platform_info->{kopfgleis} ) {
if ($next_stop) {
return $platform_info->{direction} eq 'r' ? 'l' : 'r';
}
return $platform_info->{direction}; return $platform_info->{direction};
} }
elsif ( $prev_stop elsif ( $prev_stop
@ -2280,6 +2305,13 @@ sub startup {
{ {
return $platform_info->{direction_from}{$prev_stop}; return $platform_info->{direction_from}{$prev_stop};
} }
elsif ( $next_stop
and exists $platform_info->{direction_from}{$next_stop} )
{
return $platform_info->{direction_from}{$next_stop} eq 'r'
? 'l'
: 'r';
}
elsif ($wagonorder) { elsif ($wagonorder) {
my $wr; my $wr;
eval { eval {
@ -2349,6 +2381,7 @@ sub startup {
$is_after = 1; $is_after = 1;
} }
} }
my $stop_after_dep = $route_after[0][0];
my $ts = $in_transit->{checkout_ts} my $ts = $in_transit->{checkout_ts}
// $in_transit->{checkin_ts}; // $in_transit->{checkin_ts};
@ -2464,6 +2497,22 @@ sub startup {
$ret->{journey_completion} = 0; $ret->{journey_completion} = 0;
} }
my ($dep_platform_number)
= ( ( $ret->{dep_platform} // 0 ) =~ m{(\d+)} );
if ( $dep_platform_number
and exists $in_transit->{data}{stationinfo_dep}
{$dep_platform_number} )
{
$ret->{dep_direction}
= $self->stationinfo_to_direction(
$in_transit->{data}{stationinfo_dep}
{$dep_platform_number},
$in_transit->{data}{wagonorder_dep},
undef,
$stop_after_dep
);
}
my ($arr_platform_number) my ($arr_platform_number)
= ( ( $ret->{arr_platform} // 0 ) =~ m{(\d+)} ); = ( ( $ret->{arr_platform} // 0 ) =~ m{(\d+)} );
if ( $arr_platform_number if ( $arr_platform_number
@ -2475,7 +2524,8 @@ sub startup {
$in_transit->{data}{stationinfo_arr} $in_transit->{data}{stationinfo_arr}
{$arr_platform_number}, {$arr_platform_number},
$in_transit->{data}{wagonorder_arr}, $in_transit->{data}{wagonorder_arr},
$stop_before_dest $stop_before_dest,
undef
); );
} }

View file

@ -42,7 +42,15 @@
Ankunft in mehr als zwei Stunden Ankunft in mehr als zwei Stunden
% } % }
% if ($journey->{departure_countdown} > 0 and $journey->{dep_platform}) { % if ($journey->{departure_countdown} > 0 and $journey->{dep_platform}) {
<br/>von Gleis <%= $journey->{dep_platform} %> % if ($journey->{dep_direction} and $journey->{dep_direction} eq 'r') {
<br/>Gleis <%= $journey->{dep_platform} %> ▶
% }
% elsif ($journey->{dep_direction} and $journey->{dep_direction} eq 'l') {
<br/>◀ Gleis <%= $journey->{dep_platform} %>
% }
% else {
<br/>von Gleis <%= $journey->{dep_platform} %>
% }
% } % }
% if (my $wr = $journey->{wagonorder}) { % if (my $wr = $journey->{wagonorder}) {
<br/> <br/>