Loading lib/Travelynx/Controller/Traveling.pm +28 −11 Original line number Diff line number Diff line Loading @@ -919,6 +919,7 @@ sub station { my $station = $self->stash('station'); my $train = $self->param('train'); my $trip_id = $self->param('trip_id'); my $timestamp = $self->param('timestamp'); my $uid = $self->current_user->{id}; my @timeline = $self->in_transit->get_timeline( Loading @@ -934,11 +935,22 @@ sub station { $self->render_later; if ( $timestamp and $timestamp =~ m{ ^ \d+ $ }x ) { $timestamp = DateTime->from_epoch( epoch => $timestamp, time_zone => 'Europe/Berlin' ); } else { $timestamp = DateTime->now( time_zone => 'Europe/Berlin' ); } my $use_hafas = $self->param('hafas'); my $promise; if ($use_hafas) { $promise = $self->hafas->get_departures_p( eva => $station, timestamp => $timestamp, lookbehind => 30, lookahead => 30, ); Loading @@ -957,6 +969,10 @@ sub station { my $api_link; my @results; my $now = $self->now->epoch; my $now_within_range = abs( $timestamp->epoch - $now ) < 1800 ? 1 : 0; if ($use_hafas) { my $iris_eva = List::Util::min grep { $_ >= 1000000 } Loading @@ -965,14 +981,9 @@ sub station { $api_link = '/s/' . $iris_eva; } my $now = $self->now->epoch; @results = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [ $_, $_->datetime->epoch ] } grep { ( $_->datetime // $_->sched_datetime )->epoch < $now + 30 * 60 } $status->results; map { [ $_, $_->datetime->epoch ] } $status->results; $self->stations->add_meta( eva => $status->station->{eva}, meta => $status->station->{evas} // [] Loading Loading @@ -1049,6 +1060,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading @@ -1066,6 +1079,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading @@ -1082,6 +1097,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading lib/Travelynx/Helper/HAFAS.pm +3 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,9 @@ sub get_json_p { sub get_departures_p { my ( $self, %opt ) = @_; my $when = DateTime->now( time_zone => 'Europe/Berlin' ) my $when = ( $opt{timestamp}->clone // DateTime->now( time_zone => 'Europe/Berlin' ) ) ->subtract( minutes => $opt{lookbehind} ); return Travel::Status::DE::HAFAS->new_p( station => $opt{eva}, Loading templates/departures.html.ep +21 −3 Original line number Diff line number Diff line Loading @@ -9,19 +9,18 @@ % } </div> </div> % if ($api_link) { <div class="row"> <div class="col s12"> % if ($api_link) { % if (param('hafas')) { <a href="<%= $api_link %>" class="btn-small"><i class="material-icons left" aria-hidden="true">train</i>zum Schienenverkehr</a> % } % else { <a href="<%= $api_link %>" class="btn-small"><i class="material-icons left" aria-hidden="true">directions</i>zum Nahverkehr</a> % } % } <a class="btn-small" href="#now"><i class="material-icons left" aria-hidden="true">vertical_align_center</i>Jetzt</a> </div> </div> % } % my $have_connections = 0; % if ($user_status->{checked_in}) { Loading Loading @@ -90,6 +89,25 @@ </div> </div> % } <div class="row"> <div class="col s4 center-align"> % if ($hafas) { <a class="btn-small" href="<%= url_for('sstation', station => stash('station'))->query({hafas => 1, timestamp => $datetime->clone->subtract(hours => 1)->epoch}) %>"><i class="material-icons left" aria-hidden="true">chevron_left</i>früher</a> % } </div> <div class="col s4 center-align"> % if ($now_in_range) { <a class="btn-small" href="#now"><i class="material-icons left" aria-hidden="true">vertical_align_center</i>Jetzt</a> % } </div> <div class="col s4 center-align"> % if ($hafas) { <a class="btn-small" href="<%= url_for('sstation', station => stash('station'))->query({hafas => 1, timestamp => $datetime->clone->add(hours => 1)->epoch}) %>">später<i class="material-icons right" aria-hidden="true">chevron_right</i></a> % } </div> </div> <div class="row"> <div class="col s12"> <p> Loading Loading
lib/Travelynx/Controller/Traveling.pm +28 −11 Original line number Diff line number Diff line Loading @@ -919,6 +919,7 @@ sub station { my $station = $self->stash('station'); my $train = $self->param('train'); my $trip_id = $self->param('trip_id'); my $timestamp = $self->param('timestamp'); my $uid = $self->current_user->{id}; my @timeline = $self->in_transit->get_timeline( Loading @@ -934,11 +935,22 @@ sub station { $self->render_later; if ( $timestamp and $timestamp =~ m{ ^ \d+ $ }x ) { $timestamp = DateTime->from_epoch( epoch => $timestamp, time_zone => 'Europe/Berlin' ); } else { $timestamp = DateTime->now( time_zone => 'Europe/Berlin' ); } my $use_hafas = $self->param('hafas'); my $promise; if ($use_hafas) { $promise = $self->hafas->get_departures_p( eva => $station, timestamp => $timestamp, lookbehind => 30, lookahead => 30, ); Loading @@ -957,6 +969,10 @@ sub station { my $api_link; my @results; my $now = $self->now->epoch; my $now_within_range = abs( $timestamp->epoch - $now ) < 1800 ? 1 : 0; if ($use_hafas) { my $iris_eva = List::Util::min grep { $_ >= 1000000 } Loading @@ -965,14 +981,9 @@ sub station { $api_link = '/s/' . $iris_eva; } my $now = $self->now->epoch; @results = map { $_->[0] } sort { $b->[1] <=> $a->[1] } map { [ $_, $_->datetime->epoch ] } grep { ( $_->datetime // $_->sched_datetime )->epoch < $now + 30 * 60 } $status->results; map { [ $_, $_->datetime->epoch ] } $status->results; $self->stations->add_meta( eva => $status->station->{eva}, meta => $status->station->{evas} // [] Loading Loading @@ -1049,6 +1060,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading @@ -1066,6 +1079,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading @@ -1082,6 +1097,8 @@ sub station { $self->render( 'departures', eva => $status->{station_eva}, datetime => $timestamp, now_in_range => $now_within_range, results => \@results, hafas => $use_hafas, station => $status->{station_name}, Loading
lib/Travelynx/Helper/HAFAS.pm +3 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,9 @@ sub get_json_p { sub get_departures_p { my ( $self, %opt ) = @_; my $when = DateTime->now( time_zone => 'Europe/Berlin' ) my $when = ( $opt{timestamp}->clone // DateTime->now( time_zone => 'Europe/Berlin' ) ) ->subtract( minutes => $opt{lookbehind} ); return Travel::Status::DE::HAFAS->new_p( station => $opt{eva}, Loading
templates/departures.html.ep +21 −3 Original line number Diff line number Diff line Loading @@ -9,19 +9,18 @@ % } </div> </div> % if ($api_link) { <div class="row"> <div class="col s12"> % if ($api_link) { % if (param('hafas')) { <a href="<%= $api_link %>" class="btn-small"><i class="material-icons left" aria-hidden="true">train</i>zum Schienenverkehr</a> % } % else { <a href="<%= $api_link %>" class="btn-small"><i class="material-icons left" aria-hidden="true">directions</i>zum Nahverkehr</a> % } % } <a class="btn-small" href="#now"><i class="material-icons left" aria-hidden="true">vertical_align_center</i>Jetzt</a> </div> </div> % } % my $have_connections = 0; % if ($user_status->{checked_in}) { Loading Loading @@ -90,6 +89,25 @@ </div> </div> % } <div class="row"> <div class="col s4 center-align"> % if ($hafas) { <a class="btn-small" href="<%= url_for('sstation', station => stash('station'))->query({hafas => 1, timestamp => $datetime->clone->subtract(hours => 1)->epoch}) %>"><i class="material-icons left" aria-hidden="true">chevron_left</i>früher</a> % } </div> <div class="col s4 center-align"> % if ($now_in_range) { <a class="btn-small" href="#now"><i class="material-icons left" aria-hidden="true">vertical_align_center</i>Jetzt</a> % } </div> <div class="col s4 center-align"> % if ($hafas) { <a class="btn-small" href="<%= url_for('sstation', station => stash('station'))->query({hafas => 1, timestamp => $datetime->clone->add(hours => 1)->epoch}) %>">später<i class="material-icons right" aria-hidden="true">chevron_right</i></a> % } </div> </div> <div class="row"> <div class="col s12"> <p> Loading