history map: allow filtering by train type

This commit is contained in:
Daniel Friesel 2022-04-02 18:14:21 +02:00
parent 5dfbdd8644
commit 5ff9e5c7a1
No known key found for this signature in database
GPG key ID: 100D5BFB5166E005
2 changed files with 20 additions and 0 deletions

View file

@ -787,6 +787,14 @@ sub commute {
);
}
sub has_str_in_list {
my ( $str, @strs ) = @_;
if ( List::Util::any { $str eq $_ } @strs ) {
return 1;
}
return;
}
sub map_history {
my ($self) = @_;
@ -799,6 +807,7 @@ sub map_history {
my $route_type = $self->param('route_type');
my $filter_from = $self->param('filter_after');
my $filter_until = $self->param('filter_before');
my $filter_type = $self->param('filter_type');
my $with_polyline = $route_type eq 'beeline' ? 0 : 1;
my $parser = DateTime::Format::Strptime->new(
@ -831,6 +840,11 @@ sub map_history {
before => $filter_until,
);
if ($filter_type) {
my @filter = split( qr{, *}, $filter_type );
@journeys = grep { has_str_in_list( $_->{type}, @filter ) } @journeys;
}
if ( not @journeys ) {
$self->render(
template => 'history_map',

View file

@ -69,6 +69,12 @@
<label for="filter_before">Abfahrt bis (DD.MM.YYYY)</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
%= text_field 'filter_type', id => 'filter_type'
<label for="filter_tpye">Zugtypen</label>
</div>
</div>
<div class="row">
<div class="col s12 center-align">
<button class="btn wave-effect waves-light" type="submit">