diff options
author | Daniel Friesel <derf@finalrewind.org> | 2019-08-03 11:11:27 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2019-08-03 11:14:29 +0200 |
commit | ff75b16bfc7123210517e52951856e92ff661398 (patch) | |
tree | 54221e5cdcc12ad0baf9eb5004e2cc7e052f1cbc | |
parent | 90dd96e08fcac4c1d4e8761a108553d3e039f52a (diff) |
move exit direction calculation to a helper function
-rwxr-xr-x | lib/Travelynx.pm | 99 |
1 files changed, 52 insertions, 47 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 2bc151d..82fa373 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -2270,6 +2270,51 @@ sub startup { ); $self->helper( + 'stationinfo_to_direction' => sub { + my ( $self, $platform_info, $wagonorder, $prev_stop ) = @_; + if ( $platform_info->{kopfgleis} ) { + return $platform_info->{direction}; + } + elsif ( $prev_stop + and exists $platform_info->{direction_from}{$prev_stop} ) + { + return $platform_info->{direction_from}{$prev_stop}; + } + elsif ($wagonorder) { + my $wr; + eval { + $wr + = Travel::Status::DE::DBWagenreihung->new( + from_json => $wagonorder ); + }; + if ( $wr + and $wr->sections + and defined $wr->direction ) + { + my $section_0 = ( $wr->sections )[0]; + my $direction = $wr->direction; + if ( $section_0->name eq 'A' + and $direction == 0 ) + { + return $platform_info->{direction}; + } + elsif ( $section_0->name ne 'A' + and $direction == 100 ) + { + return $platform_info->{direction}; + } + elsif ( $platform_info->{direction} ) { + return $platform_info->{direction} eq 'r' + ? 'l' + : 'r'; + } + return; + } + } + } + ); + + $self->helper( 'get_user_status' => sub { my ( $self, $uid ) = @_; @@ -2425,53 +2470,13 @@ sub startup { and exists $in_transit->{data}{stationinfo_arr} {$arr_platform_number} ) { - my $platform_info = $in_transit->{data}{stationinfo_arr} - {$arr_platform_number}; - if ( $platform_info->{kopfgleis} ) { - $ret->{arr_direction} = $platform_info->{direction}; - } - elsif ( $stop_before_dest - and exists $platform_info->{direction_from} - {$stop_before_dest} ) - { - $ret->{arr_direction} - = $platform_info->{direction_from} - {$stop_before_dest}; - } - elsif ( $in_transit->{data}{wagonorder_arr} ) { - my $wr; - eval { - $wr - = Travel::Status::DE::DBWagenreihung->new( - from_json => - $in_transit->{data}{wagonorder_arr} ); - }; - if ( $wr - and $wr->sections - and defined $wr->direction ) - { - my $section_0 = ( $wr->sections )[0]; - my $direction = $wr->direction; - if ( $section_0->name eq 'A' - and $direction == 0 ) - { - $ret->{arr_direction} - = $platform_info->{direction}; - } - elsif ( $section_0->name ne 'A' - and $direction == 100 ) - { - $ret->{arr_direction} - = $platform_info->{direction}; - } - else { - $ret->{arr_direction} - = $platform_info->{direction} eq 'r' - ? 'l' - : 'r'; - } - } - } + $ret->{arr_direction} + = $self->stationinfo_to_direction( + $in_transit->{data}{stationinfo_arr} + {$arr_platform_number}, + $in_transit->{data}{wagonorder_arr}, + $stop_before_dest + ); } } |