Loading lib/Travelynx.pm +114 −44 Original line number Diff line number Diff line Loading @@ -1537,6 +1537,39 @@ sub startup { } ); $self->helper( 'get_dbdb_station_p' => sub { my ( $self, $ds100 ) = @_; my $url = "https://lib.finalrewind.org/dbdb/s/${ds100}.json"; my $cache = $self->app->cache_iris_main; my $promise = Mojo::Promise->new; if ( my $content = $cache->thaw($url) ) { $promise->resolve($content); return $promise; } $self->ua->request_timeout(5)->get_p($url)->then( sub { my ($tx) = @_; my $body = decode( 'utf-8', $tx->res->body ); my $json = JSON->new->decode($body); $cache->freeze( $url, $json ); $promise->resolve($json); } )->catch( sub { my ($err) = @_; $promise->reject($err); } )->wait; return $promise; } ); $self->helper( 'get_wagonorder_p' => sub { my ( $self, $ts, $train_no ) = @_; Loading Loading @@ -1688,14 +1721,18 @@ sub startup { my $db = $self->pg->db; my $journey = $db->select( 'in_transit', ['route'], { user_id => $uid } ) ->expand->hash; my $journey = $db->select( 'in_transit_str', [ 'arr_ds100', 'route' ], { user_id => $uid } )->expand->hash; if ( not $journey ) { return; } my ($platform) = ( ( $train->platform // 0 ) =~ m{(\d+)} ); my $route = $journey->{route}; my $base Loading @@ -1706,14 +1743,6 @@ sub startup { $self->app->log->debug("add_route_timestamps"); my $extra_data = { delay_msg => [ map { [ $_->[0]->epoch, $_->[1] ] } $train->delay_messages ], qos_msg => [ map { [ $_->[0]->epoch, $_->[1] ] } $train->qos_messages ], }; my ( $trainlink, $route_data ); $self->get_hafas_json_p( Loading Loading @@ -1803,50 +1832,77 @@ sub startup { = $route_data->{ $station->[0] }; } $extra_data->{him_msg} = $traininfo2->{messages}; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; #my $res = $db->select( 'in_transit', ['data'], # { user_id => $uid } ); #my $res_h = $res->expand->hash; #if ( $res_h # and $res_h->{data} # and $res_h->{data}{wagonorder} ) #{ # $extra_data->{wagonorder} = $res_h->{data}{wagonorder}; #} $data->{delay_msg} = [ map { [ $_->[0]->epoch, $_->[1] ] } $train->delay_messages ]; $data->{qos_msg} = [ map { [ $_->[0]->epoch, $_->[1] ] } $train->qos_messages ]; return $db->update_p( $data->{him_msg} = $traininfo2->{messages}; $db->update( 'in_transit', { route => JSON->new->encode($route), data => JSON->new->encode($extra_data) data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; if ( $train->type =~ m{[EI]C} and $train->sched_departure ) { $self->get_wagonorder_p( $train->sched_departure, $train->train_no )->then( sub { my ($wagonorder) = @_; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; if ($is_departure) { $data->{wagonorder_dep} = $wagonorder; } else { $data->{wagonorder_arr} = $wagonorder; } $db->update( 'in_transit', { data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; } #)->then( # sub { # if ($is_departure) { # return $self->get_wagonorder_p( $train->sched_departure, # $train->train_no ); # } # return Mojo::Promise->reject; # } #)->then( # sub { # my ($wagonorder) = @_; if ( $journey->{arr_ds100} and not $is_departure ) { $self->get_dbdb_station_p( $journey->{arr_ds100} )->then( sub { my ($station_info) = @_; # $extra_data->{wagonorder} = $wagonorder; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; $data->{stationinfo_arr} = $station_info; # $db->update( # 'in_transit', # { data => JSON->new->encode($extra_data) }, # { user_id => $uid } # ); # } $db->update( 'in_transit', { data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; } } ); $self->helper( Loading Loading @@ -2307,6 +2363,20 @@ sub startup { elsif ( $ret->{journey_completion} < 0 ) { $ret->{journey_completion} = 0; } my ($arr_platform_number) = ( ( $ret->{arr_platform} // 0 ) =~ m{(\d+)} ); if ( $arr_platform_number 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}; } } } else { $ret->{arrival_countdown} = undef; Loading templates/_checked_in.html.ep +9 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,17 @@ Ziel erreicht % } % if ($journey->{arrival_countdown} < (60 * 15) and $journey->{arr_platform}) { % if ($journey->{arr_direction} and $journey->{arr_direction} eq 'r') { <br/>Gleis <%= $journey->{arr_platform} %> ▶ % } % elsif ($journey->{arr_direction} and $journey->{arr_direction} eq 'l') { <br/>◀ Gleis <%= $journey->{arr_platform} %> % } % else { <br/>auf Gleis <%= $journey->{arr_platform} %> % } % } % } % elsif ($journey->{arr_name}) { Ankunft in mehr als zwei Stunden % } Loading Loading
lib/Travelynx.pm +114 −44 Original line number Diff line number Diff line Loading @@ -1537,6 +1537,39 @@ sub startup { } ); $self->helper( 'get_dbdb_station_p' => sub { my ( $self, $ds100 ) = @_; my $url = "https://lib.finalrewind.org/dbdb/s/${ds100}.json"; my $cache = $self->app->cache_iris_main; my $promise = Mojo::Promise->new; if ( my $content = $cache->thaw($url) ) { $promise->resolve($content); return $promise; } $self->ua->request_timeout(5)->get_p($url)->then( sub { my ($tx) = @_; my $body = decode( 'utf-8', $tx->res->body ); my $json = JSON->new->decode($body); $cache->freeze( $url, $json ); $promise->resolve($json); } )->catch( sub { my ($err) = @_; $promise->reject($err); } )->wait; return $promise; } ); $self->helper( 'get_wagonorder_p' => sub { my ( $self, $ts, $train_no ) = @_; Loading Loading @@ -1688,14 +1721,18 @@ sub startup { my $db = $self->pg->db; my $journey = $db->select( 'in_transit', ['route'], { user_id => $uid } ) ->expand->hash; my $journey = $db->select( 'in_transit_str', [ 'arr_ds100', 'route' ], { user_id => $uid } )->expand->hash; if ( not $journey ) { return; } my ($platform) = ( ( $train->platform // 0 ) =~ m{(\d+)} ); my $route = $journey->{route}; my $base Loading @@ -1706,14 +1743,6 @@ sub startup { $self->app->log->debug("add_route_timestamps"); my $extra_data = { delay_msg => [ map { [ $_->[0]->epoch, $_->[1] ] } $train->delay_messages ], qos_msg => [ map { [ $_->[0]->epoch, $_->[1] ] } $train->qos_messages ], }; my ( $trainlink, $route_data ); $self->get_hafas_json_p( Loading Loading @@ -1803,50 +1832,77 @@ sub startup { = $route_data->{ $station->[0] }; } $extra_data->{him_msg} = $traininfo2->{messages}; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; #my $res = $db->select( 'in_transit', ['data'], # { user_id => $uid } ); #my $res_h = $res->expand->hash; #if ( $res_h # and $res_h->{data} # and $res_h->{data}{wagonorder} ) #{ # $extra_data->{wagonorder} = $res_h->{data}{wagonorder}; #} $data->{delay_msg} = [ map { [ $_->[0]->epoch, $_->[1] ] } $train->delay_messages ]; $data->{qos_msg} = [ map { [ $_->[0]->epoch, $_->[1] ] } $train->qos_messages ]; return $db->update_p( $data->{him_msg} = $traininfo2->{messages}; $db->update( 'in_transit', { route => JSON->new->encode($route), data => JSON->new->encode($extra_data) data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; if ( $train->type =~ m{[EI]C} and $train->sched_departure ) { $self->get_wagonorder_p( $train->sched_departure, $train->train_no )->then( sub { my ($wagonorder) = @_; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; if ($is_departure) { $data->{wagonorder_dep} = $wagonorder; } else { $data->{wagonorder_arr} = $wagonorder; } $db->update( 'in_transit', { data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; } #)->then( # sub { # if ($is_departure) { # return $self->get_wagonorder_p( $train->sched_departure, # $train->train_no ); # } # return Mojo::Promise->reject; # } #)->then( # sub { # my ($wagonorder) = @_; if ( $journey->{arr_ds100} and not $is_departure ) { $self->get_dbdb_station_p( $journey->{arr_ds100} )->then( sub { my ($station_info) = @_; # $extra_data->{wagonorder} = $wagonorder; my $res = $db->select( 'in_transit', ['data'], { user_id => $uid } ); my $res_h = $res->expand->hash; my $data = $res_h->{data} // {}; $data->{stationinfo_arr} = $station_info; # $db->update( # 'in_transit', # { data => JSON->new->encode($extra_data) }, # { user_id => $uid } # ); # } $db->update( 'in_transit', { data => JSON->new->encode($data) }, { user_id => $uid } ); } )->wait; } } ); $self->helper( Loading Loading @@ -2307,6 +2363,20 @@ sub startup { elsif ( $ret->{journey_completion} < 0 ) { $ret->{journey_completion} = 0; } my ($arr_platform_number) = ( ( $ret->{arr_platform} // 0 ) =~ m{(\d+)} ); if ( $arr_platform_number 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}; } } } else { $ret->{arrival_countdown} = undef; Loading
templates/_checked_in.html.ep +9 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,17 @@ Ziel erreicht % } % if ($journey->{arrival_countdown} < (60 * 15) and $journey->{arr_platform}) { % if ($journey->{arr_direction} and $journey->{arr_direction} eq 'r') { <br/>Gleis <%= $journey->{arr_platform} %> ▶ % } % elsif ($journey->{arr_direction} and $journey->{arr_direction} eq 'l') { <br/>◀ Gleis <%= $journey->{arr_platform} %> % } % else { <br/>auf Gleis <%= $journey->{arr_platform} %> % } % } % } % elsif ($journey->{arr_name}) { Ankunft in mehr als zwei Stunden % } Loading