Loading lib/Travelynx/Controller/Traveling.pm +46 −17 Original line number Diff line number Diff line Loading @@ -555,9 +555,11 @@ sub geolocation { if ( not $lon or not $lat ) { $self->render( json => { error => 'Invalid lon/lat received' } ); return; } else { my @candidates = map { $self->render_later; my @iris = map { { ds100 => $_->[0][0], name => $_->[0][1], Loading @@ -568,22 +570,49 @@ sub geolocation { } } Travel::Status::DE::IRIS::Stations::get_station_by_location( $lon, $lat, 10 ); @candidates = uniq_by { $_->{name} } @candidates; if ( @candidates > 5 ) { @iris = uniq_by { $_->{name} } @iris; if ( @iris > 5 ) { @iris = @iris[ 0 .. 4 ]; } Travel::Status::DE::HAFAS->new_p( promise => 'Mojo::Promise', user_agent => $self->ua, geoSearch => { lat => $lat, lon => $lon } )->then( sub { my ($hafas) = @_; my @hafas = map { { name => $_->name, eva => $_->eva, distance => $_->distance_m / 1000, hafas => 1 } } $hafas->results; if ( @hafas > 5 ) { @hafas = @hafas[ 0 .. 4 ]; } $self->render( json => { candidates => [ @candidates[ 0 .. 4 ] ], candidates => [ @iris, @hafas ], } ); } else { )->catch( sub { my ($err) = @_; $self->render( json => { candidates => [@candidates], candidates => [@iris], warning => $err, } ); } } )->wait; } sub travel_action { Loading public/static/js/geolocation.js +3 −2 Original line number Diff line number Diff line Loading @@ -46,11 +46,12 @@ $(document).ready(function() { const res = $(document.createElement('p')); $.each(data.candidates, function(i, candidate) { const ds100 = candidate.ds100, const eva = candidate.eva, name = candidate.name, hafas = candidate.hafas, distance = candidate.distance.toFixed(1); const node = $('<a class="tablerow" href="/s/' + ds100 + '"><span>' + name + '</span></a>'); const node = $('<a class="tablerow" href="/s/' + eva + '?hafas=' + hafas + '"><span>' + name + '</span></a>'); node.click(function() { $('nav .preloader-wrapper').addClass('active'); }); Loading Loading
lib/Travelynx/Controller/Traveling.pm +46 −17 Original line number Diff line number Diff line Loading @@ -555,9 +555,11 @@ sub geolocation { if ( not $lon or not $lat ) { $self->render( json => { error => 'Invalid lon/lat received' } ); return; } else { my @candidates = map { $self->render_later; my @iris = map { { ds100 => $_->[0][0], name => $_->[0][1], Loading @@ -568,22 +570,49 @@ sub geolocation { } } Travel::Status::DE::IRIS::Stations::get_station_by_location( $lon, $lat, 10 ); @candidates = uniq_by { $_->{name} } @candidates; if ( @candidates > 5 ) { @iris = uniq_by { $_->{name} } @iris; if ( @iris > 5 ) { @iris = @iris[ 0 .. 4 ]; } Travel::Status::DE::HAFAS->new_p( promise => 'Mojo::Promise', user_agent => $self->ua, geoSearch => { lat => $lat, lon => $lon } )->then( sub { my ($hafas) = @_; my @hafas = map { { name => $_->name, eva => $_->eva, distance => $_->distance_m / 1000, hafas => 1 } } $hafas->results; if ( @hafas > 5 ) { @hafas = @hafas[ 0 .. 4 ]; } $self->render( json => { candidates => [ @candidates[ 0 .. 4 ] ], candidates => [ @iris, @hafas ], } ); } else { )->catch( sub { my ($err) = @_; $self->render( json => { candidates => [@candidates], candidates => [@iris], warning => $err, } ); } } )->wait; } sub travel_action { Loading
public/static/js/geolocation.js +3 −2 Original line number Diff line number Diff line Loading @@ -46,11 +46,12 @@ $(document).ready(function() { const res = $(document.createElement('p')); $.each(data.candidates, function(i, candidate) { const ds100 = candidate.ds100, const eva = candidate.eva, name = candidate.name, hafas = candidate.hafas, distance = candidate.distance.toFixed(1); const node = $('<a class="tablerow" href="/s/' + ds100 + '"><span>' + name + '</span></a>'); const node = $('<a class="tablerow" href="/s/' + eva + '?hafas=' + hafas + '"><span>' + name + '</span></a>'); node.click(function() { $('nav .preloader-wrapper').addClass('active'); }); Loading