Unverified Commit 6824e6bc authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

generate autocomplete list dynamically from installed IRIS module

parent 8360f1f3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -305,6 +305,8 @@ sub startup {

	$r->get('/_impressum')->to('static#imprint');

	$r->get('/dyn/:av/autocomplete.js')->to('stationboard#autocomplete');

	$r->get('/_wr/:train/:departure')->to('wagenreihung#wagenreihung');
	$r->get('/wr/:train')->to('wagenreihung#zugbildung_db');
	$r->get('/w/*wagon')->to('wagenreihung#wagen');
+21 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ use Encode qw(decode encode);
use File::Slurp     qw(read_file write_file);
use List::Util      qw(max uniq);
use List::MoreUtils qw();
use Mojo::JSON      qw(decode_json);
use Mojo::JSON      qw(decode_json encode_json);
use Mojo::Promise;
use Mojo::UserAgent;
use Travel::Status::DE::HAFAS;
@@ -1836,4 +1836,24 @@ sub stations_by_coordinates {
	}
}

sub autocomplete {
	my $self = shift;

	$self->res->headers->cache_control('max-age=31536000, immutable');

	my $output = '$(function(){const stations=';
	$output
	  .= encode_json(
		[ map { $_->[1] } Travel::Status::DE::IRIS::Stations::get_stations() ]
	  );
	$output .= ";\n";
	$output
	  .= "\$('input.station').autocomplete({delay:0,minLength:3,source:stations});});\n";

	$self->render(
		format => 'js',
		data   => $output
	);
}

1;
+1 −3
Original line number Diff line number Diff line
@@ -8,9 +8,7 @@ set -ex
sassc -t compressed sass/dark.scss public/static/css/dark.min.css
sassc -t compressed sass/light.scss public/static/css/light.min.css

scripts/update-autocomplete

uglifyjs public/static/js/autocomplete.js public/static/js/collapse.js -c -m > public/static/js/dbf.min.js
uglifyjs public/static/js/collapse.js -c -m > public/static/js/dbf.min.js
uglifyjs public/static/js/geostop.js -c -m > public/static/js/geostop.min.js
uglifyjs public/static/js/geotrain.js -c -m > public/static/js/geotrain.min.js
uglifyjs public/static/js/map-refresh.js -c -m > public/static/js/map-refresh.min.js

scripts/update-autocomplete

deleted100755 → 0
+0 −29
Original line number Diff line number Diff line
#!/usr/bin/env perl
# Copyright (C) 2020 Birte Kristina Friesel
#
# SPDX-License-Identifier: CC0-1.0

use strict;
use warnings;
use 5.020;

use JSON;
use File::Slurp qw(write_file);
use Travel::Status::DE::IRIS::Stations;

my @station_names = map { $_->[1] } Travel::Status::DE::IRIS::Stations::get_stations();

my $station_json = JSON->new->utf8->encode([@station_names]);

my $autocomplete = <<"EOF";
\$(function() {
	var stations = $station_json;
	\$('input.station').autocomplete({
		delay: 0,
		minLength: 3,
		source: stations
	});
});
EOF

write_file("public/static/js/autocomplete.js", $autocomplete);
+3 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@
	%= javascript '/static/js/jquery-3.4.1.min.js', defer => undef
	%= javascript "/static/${av}/js/jquery-ui.min.js", defer => undef
	%= javascript "/static/${av}/js/dbf.min.js", defer => undef
	% if (not stash('hide_opts')) {
	%= javascript "/dyn/${av}/autocomplete.js", defer => undef
	% }
	% if (stash('with_geostop')) {
	%= javascript "/static/${av}/js/geostop.min.js", defer => undef
	% }
Loading