summaryrefslogtreecommitdiff
path: root/lib/Travelynx/Controller
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2022-04-02 18:14:21 +0200
committerDaniel Friesel <derf@finalrewind.org>2022-04-02 18:14:21 +0200
commit5ff9e5c7a1ee9725724e0d2abd7592166f9f49e0 (patch)
treeba4b7454e952ca141717617aba0e86e1bd799f46 /lib/Travelynx/Controller
parent5dfbdd864433a01271e8025842b20608146e5152 (diff)
history map: allow filtering by train type
Diffstat (limited to 'lib/Travelynx/Controller')
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index 7a036a7..d6253ac 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -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',