statistics: Add interchange wait time and journey count

This commit is contained in:
Daniel Friesel 2019-04-01 20:28:06 +02:00
parent 8d843dc432
commit 335ab8209f
2 changed files with 38 additions and 15 deletions

View file

@ -900,7 +900,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
if ( $opt{checkout_id} ) { if ( $opt{checkout_id} ) {
$query = $self->app->get_journey_actions_query; $query = $self->app->get_journey_actions_query;
$query->execute( $uid, $opt{checkout_id}); $query->execute( $uid, $opt{checkout_id} );
} }
elsif ( $opt{after} and $opt{before} ) { elsif ( $opt{after} and $opt{before} ) {
@ -956,11 +956,8 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
$raw_messages $raw_messages
) = @row; ) = @row;
if ( if ( $action == $match_actions[0]
$action == $match_actions[0] or ( $opt{checkout_id} and not @travels ) )
or
( $opt{checkout_id} and not @travels )
)
{ {
push( push(
@travels, @travels,
@ -1167,12 +1164,14 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
my $min_travel_real = 0; my $min_travel_real = 0;
my $delay_dep = 0; my $delay_dep = 0;
my $delay_arr = 0; my $delay_arr = 0;
my $interchange_real = 0;
my $num_trains = 0; my $num_trains = 0;
my $num_journeys = 0; my $num_journeys = 0;
my $next_departure = 0;
for my $journey (@journeys) { for my $journey (@journeys) {
$num_trains++; $num_trains++;
$num_journeys++;
$km_route += $journey->{km_route}; $km_route += $journey->{km_route};
$km_beeline += $journey->{km_beeline}; $km_beeline += $journey->{km_beeline};
if ( $journey->{sched_duration} > 0 ) { if ( $journey->{sched_duration} > 0 ) {
@ -1192,6 +1191,21 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
+= ( $journey->{rt_arrival}->epoch += ( $journey->{rt_arrival}->epoch
- $journey->{sched_arrival}->epoch ) / 60; - $journey->{sched_arrival}->epoch ) / 60;
} }
# Note that journeys are sorted from recent to older entries
if ( $journey->{rt_arrival}
and $next_departure
and $next_departure - $journey->{rt_arrival}->epoch
< ( 60 * 60 ) )
{
$interchange_real
+= ( $next_departure - $journey->{rt_arrival}->epoch )
/ 60;
}
else {
$num_journeys++;
}
$next_departure = $journey->{rt_departure}->epoch;
} }
return { return {
km_route => $km_route, km_route => $km_route,
@ -1200,6 +1214,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
num_journeys => $num_journeys, num_journeys => $num_journeys,
min_travel_sched => $min_travel_sched, min_travel_sched => $min_travel_sched,
min_travel_real => $min_travel_real, min_travel_real => $min_travel_real,
min_interchange_real => $interchange_real,
delay_dep => $delay_dep, delay_dep => $delay_dep,
delay_arr => $delay_arr, delay_arr => $delay_arr,
}; };

View file

@ -22,6 +22,10 @@
<table class="striped"> <table class="striped">
<tr> <tr>
<th scope="row">Fahrten</th> <th scope="row">Fahrten</th>
<td><%= $stats->{num_journeys} %></td>
</tr>
<tr>
<th scope="row">Züge</th>
<td><%= $stats->{num_trains} %></td> <td><%= $stats->{num_trains} %></td>
</tr> </tr>
<tr> <tr>
@ -34,6 +38,10 @@
<td><%= sprintf('%02d:%02d', $stats->{min_travel_real} / 60, $stats->{min_travel_real} % 60) %> Stunden <td><%= sprintf('%02d:%02d', $stats->{min_travel_real} / 60, $stats->{min_travel_real} % 60) %> Stunden
(nach Fahrplan: <%= sprintf('%02d:%02d', $stats->{min_travel_sched} / 60, $stats->{min_travel_sched} % 60) %>)<td> (nach Fahrplan: <%= sprintf('%02d:%02d', $stats->{min_travel_sched} / 60, $stats->{min_travel_sched} % 60) %>)<td>
</tr> </tr>
<tr>
<th scope="row">Wartezeit (nur Umstiege)</th>
<td><%= sprintf('%02d:%02d', $stats->{min_interchange_real} / 60, $stats->{min_interchange_real} % 60) %> Stunden
</tr>
<tr> <tr>
<th scope="row">Kumulierte Verspätung</th> <th scope="row">Kumulierte Verspätung</th>
<td>Bei Abfahrt: <%= sprintf('%02d:%02d', $stats->{delay_dep} / 60, $stats->{delay_dep} % 60) %> Stunden<br/> <td>Bei Abfahrt: <%= sprintf('%02d:%02d', $stats->{delay_dep} / 60, $stats->{delay_dep} % 60) %> Stunden<br/>