From 94ea5a089f91fb51b60d9cf1f2f8d822c4f2b54b Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 19 Apr 2020 17:03:02 +0200 Subject: Commute stats: count days, not journeys --- lib/Travelynx/Controller/Traveling.pm | 47 +++++++++++++++++++---------------- templates/commute.html.ep | 2 +- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index bcc0090..db70368 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -534,36 +534,38 @@ sub commute { ); my %journeys_by_month; + my %count_by_month; my $total = 0; + my $prev_doy = 0; for my $journey ( reverse @journeys ) { my $month = $journey->{rt_departure}->month; if ( - $filter_type eq 'exact' - and ( $journey->{to_name} eq $station - or $journey->{from_name} eq $station ) - ) - { - push( @{ $journeys_by_month{$month} }, $journey ); - $total++; - } - elsif ( - $filter_type eq 'substring' - and ( $journey->{to_name} =~ m{\Q$station\E} - or $journey->{from_name} =~ m{\Q$station\E} ) - ) - { - push( @{ $journeys_by_month{$month} }, $journey ); - $total++; - } - elsif ( - $filter_type eq 'regex' - and ( $journey->{to_name} =~ m{$station} - or $journey->{from_name} =~ m{$station} ) + ( + $filter_type eq 'exact' and ( $journey->{to_name} eq $station + or $journey->{from_name} eq $station ) + ) + or ( + $filter_type eq 'substring' + and ( $journey->{to_name} =~ m{\Q$station\E} + or $journey->{from_name} =~ m{\Q$station\E} ) + ) + or ( + $filter_type eq 'regex' + and ( $journey->{to_name} =~ m{$station} + or $journey->{from_name} =~ m{$station} ) + ) ) { push( @{ $journeys_by_month{$month} }, $journey ); - $total++; + + my $doy = $journey->{rt_departure}->day_of_year; + if ( $doy != $prev_doy ) { + $count_by_month{$month}++; + $total++; + } + + $prev_doy = $doy; } } @@ -575,6 +577,7 @@ sub commute { template => 'commute', with_autocomplete => 1, journeys_by_month => \%journeys_by_month, + count_by_month => \%count_by_month, total_journeys => $total, months => [ qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember) diff --git a/templates/commute.html.ep b/templates/commute.html.ep index ef1c7ab..476f6e7 100644 --- a/templates/commute.html.ep +++ b/templates/commute.html.ep @@ -75,7 +75,7 @@ % for my $i (0 .. $#{$months}) { <%= $months->[$i] %> - <%= scalar @{$journeys_by_month->{$i+1} // []} %> + <%= $count_by_month->{$i+1} // 0 %> % } -- cgit v1.2.3