geosearch: always query iris and hafas stops

This commit is contained in:
Birte Kristina Friesel 2023-08-16 18:54:32 +02:00
parent 5d330a7738
commit 654bde9278
No known key found for this signature in database
GPG key ID: 19E6E524EBB177BA
2 changed files with 49 additions and 19 deletions

View file

@ -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],
@ -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 {

View file

@ -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');
});