From 9dfe1c60ab417556798ad12fa3ec86671d63f5a6 Mon Sep 17 00:00:00 2001
From: Daniel Friesel
Date: Tue, 27 Dec 2022 17:56:44 +0100
Subject: review: hide blocks without data
---
lib/Travelynx/Model/Journeys.pm | 174 ++++++++++++++++++++++-----------------
templates/year_in_review.html.ep | 82 ++++++++++--------
2 files changed, 143 insertions(+), 113 deletions(-)
diff --git a/lib/Travelynx/Model/Journeys.pm b/lib/Travelynx/Model/Journeys.pm
index 42d5ec4..093aa1f 100755
--- a/lib/Travelynx/Model/Journeys.pm
+++ b/lib/Travelynx/Model/Journeys.pm
@@ -67,18 +67,19 @@ sub min_to_human {
push( @ret, "$minutes Minuten" );
}
elsif ($minutes) {
- push( @ret, "1 Minute" );
+ push( @ret, '1 Minute' );
+ }
+
+ if ( @ret == 0 ) {
+ return '0 Minuten';
}
if ( @ret == 1 ) {
return $ret[0];
}
- if ( @ret > 2 ) {
- my $last = pop(@ret);
- return join( ', ', @ret ) . " und $last";
- }
- return "$ret[0] und $ret[1]";
+ my $last = pop(@ret);
+ return join( ', ', @ret ) . " und $last";
}
sub new {
@@ -1062,10 +1063,6 @@ sub compute_review {
my %review;
- my $trains_per_journey = $stats->{num_trains} / $stats->{num_journeys};
- my $avg_change_count = sprintf( '%.1f', $trains_per_journey - 1 );
- my $min_total = $stats->{min_travel_real} + $stats->{min_interchange_real};
-
for my $journey (@journeys) {
if ( $journey->{cancelled} ) {
$num_cancelled += 1;
@@ -1192,6 +1189,7 @@ sub compute_review {
$review{km_circle_h} =~ tr{.}{,};
$review{km_diag_h} =~ tr{.}{,};
+ my $min_total = $stats->{min_travel_real} + $stats->{min_interchange_real};
$review{traveling_min_total} = $min_total;
$review{traveling_percentage_year}
= sprintf( "%.1f%%", $min_total * 100 / 525948.77 );
@@ -1224,73 +1222,95 @@ sub compute_review {
= sprintf( '%.0f', $stats->{delay_arr} / $stats->{num_trains} );
$review{typical_delay_arr_h} = min_to_human( $review{typical_delay_arr} );
- $review{longest_t_time} = min_to_human( $longest_t->{rt_duration} / 60 );
- $review{longest_t_type} = $longest_t->{type};
- $review{longest_t_lineno} = $longest_t->{line} // $longest_t->{no};
- $review{longest_t_from} = $longest_t->{from_name};
- $review{longest_t_to} = $longest_t->{to_name};
- $review{longest_t_id} = $longest_t->{id};
-
- $review{longest_km_km} = sprintf( '%.0f', $longest_km->{km_route} );
- $review{longest_km_type} = $longest_km->{type};
- $review{longest_km_lineno} = $longest_km->{line} // $longest_km->{no};
- $review{longest_km_from} = $longest_km->{from_name};
- $review{longest_km_to} = $longest_km->{to_name};
- $review{longest_km_id} = $longest_km->{id};
-
- $review{shortest_t_time} = min_to_human( $shortest_t->{rt_duration} / 60 );
- $review{shortest_t_type} = $shortest_t->{type};
- $review{shortest_t_lineno} = $shortest_t->{line} // $shortest_t->{no};
- $review{shortest_t_from} = $shortest_t->{from_name};
- $review{shortest_t_to} = $shortest_t->{to_name};
- $review{shortest_t_id} = $shortest_t->{id};
-
- $review{shortest_km_m} = sprintf( '%.0f', $shortest_km->{km_route} * 1000 );
- $review{shortest_km_type} = $shortest_km->{type};
- $review{shortest_km_lineno} = $shortest_km->{line} // $shortest_km->{no};
- $review{shortest_km_from} = $shortest_km->{from_name};
- $review{shortest_km_to} = $shortest_km->{to_name};
- $review{shortest_km_id} = $shortest_km->{id};
-
- $review{most_delayed_type} = $most_delayed->{type};
- $review{most_delayed_delay_dep}
- = min_to_human( $most_delayed->{delay_dep} );
- $review{most_delayed_delay_arr}
- = min_to_human( $most_delayed->{delay_arr} );
- $review{most_delayed_lineno} = $most_delayed->{line} // $most_delayed->{no};
- $review{most_delayed_from} = $most_delayed->{from_name};
- $review{most_delayed_to} = $most_delayed->{to_name};
- $review{most_delayed_id} = $most_delayed->{id};
-
- $review{most_delay_type} = $most_delay->{type};
- $review{most_delay_delay_dep} = $most_delay->{delay_dep};
- $review{most_delay_delay_arr} = $most_delay->{delay_arr};
- $review{most_delay_sched_time}
- = min_to_human( $most_delay->{sched_duration} / 60 );
- $review{most_delay_real_time}
- = min_to_human( $most_delay->{rt_duration} / 60 );
- $review{most_delay_delta} = min_to_human(
- ( $most_delay->{rt_duration} - $most_delay->{sched_duration} ) / 60 );
- $review{most_delay_lineno} = $most_delay->{line} // $most_delay->{no};
- $review{most_delay_from} = $most_delay->{from_name};
- $review{most_delay_to} = $most_delay->{to_name};
- $review{most_delay_id} = $most_delay->{id};
-
- $review{most_undelay_type} = $most_undelay->{type};
- $review{most_undelay_delay_dep} = $most_undelay->{delay_dep};
- $review{most_undelay_delay_arr} = $most_undelay->{delay_arr};
- $review{most_undelay_sched_time}
- = min_to_human( $most_undelay->{sched_duration} / 60 );
- $review{most_undelay_real_time}
- = min_to_human( $most_undelay->{rt_duration} / 60 );
- $review{most_undelay_delta}
- = min_to_human(
- ( $most_undelay->{sched_duration} - $most_undelay->{rt_duration} )
- / 60 );
- $review{most_undelay_lineno} = $most_undelay->{line} // $most_undelay->{no};
- $review{most_undelay_from} = $most_undelay->{from_name};
- $review{most_undelay_to} = $most_undelay->{to_name};
- $review{most_undelay_id} = $most_undelay->{id};
+ if ($longest_t) {
+ $review{longest_t_time}
+ = min_to_human( $longest_t->{rt_duration} / 60 );
+ $review{longest_t_type} = $longest_t->{type};
+ $review{longest_t_lineno} = $longest_t->{line} // $longest_t->{no};
+ $review{longest_t_from} = $longest_t->{from_name};
+ $review{longest_t_to} = $longest_t->{to_name};
+ $review{longest_t_id} = $longest_t->{id};
+ }
+
+ if ($longest_km) {
+ $review{longest_km_km} = sprintf( '%.0f', $longest_km->{km_route} );
+ $review{longest_km_type} = $longest_km->{type};
+ $review{longest_km_lineno} = $longest_km->{line} // $longest_km->{no};
+ $review{longest_km_from} = $longest_km->{from_name};
+ $review{longest_km_to} = $longest_km->{to_name};
+ $review{longest_km_id} = $longest_km->{id};
+ }
+
+ if ($shortest_t) {
+ $review{shortest_t_time}
+ = min_to_human( $shortest_t->{rt_duration} / 60 );
+ $review{shortest_t_type} = $shortest_t->{type};
+ $review{shortest_t_lineno} = $shortest_t->{line} // $shortest_t->{no};
+ $review{shortest_t_from} = $shortest_t->{from_name};
+ $review{shortest_t_to} = $shortest_t->{to_name};
+ $review{shortest_t_id} = $shortest_t->{id};
+ }
+
+ if ($shortest_km) {
+ $review{shortest_km_m}
+ = sprintf( '%.0f', $shortest_km->{km_route} * 1000 );
+ $review{shortest_km_type} = $shortest_km->{type};
+ $review{shortest_km_lineno} = $shortest_km->{line}
+ // $shortest_km->{no};
+ $review{shortest_km_from} = $shortest_km->{from_name};
+ $review{shortest_km_to} = $shortest_km->{to_name};
+ $review{shortest_km_id} = $shortest_km->{id};
+ }
+
+ if ($most_delayed) {
+ $review{most_delayed_type} = $most_delayed->{type};
+ $review{most_delayed_delay_dep}
+ = min_to_human( $most_delayed->{delay_dep} );
+ $review{most_delayed_delay_arr}
+ = min_to_human( $most_delayed->{delay_arr} );
+ $review{most_delayed_lineno} = $most_delayed->{line}
+ // $most_delayed->{no};
+ $review{most_delayed_from} = $most_delayed->{from_name};
+ $review{most_delayed_to} = $most_delayed->{to_name};
+ $review{most_delayed_id} = $most_delayed->{id};
+ }
+
+ if ($most_delay) {
+ $review{most_delay_type} = $most_delay->{type};
+ $review{most_delay_delay_dep} = $most_delay->{delay_dep};
+ $review{most_delay_delay_arr} = $most_delay->{delay_arr};
+ $review{most_delay_sched_time}
+ = min_to_human( $most_delay->{sched_duration} / 60 );
+ $review{most_delay_real_time}
+ = min_to_human( $most_delay->{rt_duration} / 60 );
+ $review{most_delay_delta}
+ = min_to_human(
+ ( $most_delay->{rt_duration} - $most_delay->{sched_duration} )
+ / 60 );
+ $review{most_delay_lineno} = $most_delay->{line} // $most_delay->{no};
+ $review{most_delay_from} = $most_delay->{from_name};
+ $review{most_delay_to} = $most_delay->{to_name};
+ $review{most_delay_id} = $most_delay->{id};
+ }
+
+ if ($most_undelay) {
+ $review{most_undelay_type} = $most_undelay->{type};
+ $review{most_undelay_delay_dep} = $most_undelay->{delay_dep};
+ $review{most_undelay_delay_arr} = $most_undelay->{delay_arr};
+ $review{most_undelay_sched_time}
+ = min_to_human( $most_undelay->{sched_duration} / 60 );
+ $review{most_undelay_real_time}
+ = min_to_human( $most_undelay->{rt_duration} / 60 );
+ $review{most_undelay_delta}
+ = min_to_human(
+ ( $most_undelay->{sched_duration} - $most_undelay->{rt_duration} )
+ / 60 );
+ $review{most_undelay_lineno} = $most_undelay->{line}
+ // $most_undelay->{no};
+ $review{most_undelay_from} = $most_undelay->{from_name};
+ $review{most_undelay_to} = $most_undelay->{to_name};
+ $review{most_undelay_id} = $most_undelay->{id};
+ }
$review{issue_percent}
= sprintf( '%.0f%%', $message_count * 100 / $stats->{num_trains} );
diff --git a/templates/year_in_review.html.ep b/templates/year_in_review.html.ep
index 55d80fb..548245e 100644
--- a/templates/year_in_review.html.ep
+++ b/templates/year_in_review.html.ep
@@ -52,7 +52,7 @@
Im Mittel benötigte sie <%= $review->{typical_time} %> für eine Entfernung von ca. <%= $review->{typical_km} %> km (<%= $review->{typical_kmh} %> km/h).
% if ($review->{typical_delay_dep} == 0 and $review->{typical_delay_arr} == 0) {
- Außerdem war sie komplett pünktlich (wtf).
+ Außerdem war sie komplett pünktlich. Beeindruckend!
% }
% elsif ($review->{typical_delay_dep} > 0 and $review->{typical_delay_arr} > 0) {
Sie fuhr <%= $review->{typical_delay_dep_h} %> zu spät
@@ -61,7 +61,7 @@
Ihr Ziel erreichte sie nur noch <%= $review->{typical_delay_arr_h} %> später als vorgesehen.
% }
% elsif ($review->{typical_delay_arr} == $review->{typical_delay_dep}) {
- ab und kam ebenso <%= $review->{typical_delay_arr_h} %> zu spät am Ziel an.
+ ab und kam mit der gleichen Verspätung am Ziel an.
% }
% else {
ab und schlich mit +<%= $review->{typical_delay_arr} %> ins Ziel.
@@ -70,28 +70,32 @@
High Scores
-
Längste Zugfahrt:
- <%= $review->{longest_t_time} %> mit <%= $review->{longest_t_type} %> <%= $review->{longest_t_lineno} %> von <%= $review->{longest_t_from} %> nach <%= $review->{longest_t_to} %>.
- % if ($review->{longest_km_id} == $review->{longest_t_id}) {
-
Mit <%= $review->{longest_km_km} %> km war sie gleichzeitig deine weiteste Fahrt.
+ % if ($review->{longest_t_id}) {
+
Längste Zugfahrt:
+ <%= $review->{longest_t_time} %> mit <%= $review->{longest_t_type} %> <%= $review->{longest_t_lineno} %> von <%= $review->{longest_t_from} %> nach <%= $review->{longest_t_to} %>.
+ % if ($review->{longest_km_id} == $review->{longest_t_id}) {
+
Mit <%= $review->{longest_km_km} %> km war sie gleichzeitig deine weiteste Fahrt.
+ % }
% }
- % else {
-
Größte Entfernung:
- <%= $review->{longest_km_km} %> km mit <%= $review->{longest_km_type} %> <%= $review->{longest_km_lineno} %> von <%= $review->{longest_km_from} %> nach <%= $review->{longest_km_to} %>.
+ % if ($review->{longest_km_id} and $review->{longest_km_id} != $review->{longest_t_id}) {
+
Größte Entfernung:
+ <%= $review->{longest_km_km} %> km mit <%= $review->{longest_km_type} %> <%= $review->{longest_km_lineno} %> von <%= $review->{longest_km_from} %> nach <%= $review->{longest_km_to} %>.
% }
-
Kürzeste Zugfahrt:
- <%= $review->{shortest_t_time} %> mit <%= $review->{shortest_t_type} %> <%= $review->{shortest_t_lineno} %> von <%= $review->{shortest_t_from} %> nach <%= $review->{shortest_t_to} %>.
- % if ($review->{shortest_km_id} == $review->{shortest_t_id}) {
-
Mit <%= $review->{shortest_km_m} %> m war sie gleichzeitig dein kleinster Katzensprung.
+ % if ($review->{shortest_t_id}) {
+
Kürzeste Zugfahrt:
+ <%= $review->{shortest_t_time} %> mit <%= $review->{shortest_t_type} %> <%= $review->{shortest_t_lineno} %> von <%= $review->{shortest_t_from} %> nach <%= $review->{shortest_t_to} %>.
+ % if ($review->{shortest_km_id} == $review->{shortest_t_id}) {
+
Mit <%= $review->{shortest_km_m} %> m war sie gleichzeitig dein kleinster Katzensprung.
+ % }
% }
- % else {
-
Kleinster Katzensprung:
- <%= $review->{shortest_km_m} %> m mit <%= $review->{shortest_km_type} %> <%= $review->{shortest_km_lineno} %> von <%= $review->{shortest_km_from} %> nach <%= $review->{shortest_km_to} %>.
+ % if ($review->{shortest_km_id} and $review->{shortest_km_id} != $review->{shortest_t_id}) {
+
Kleinster Katzensprung:
+ <%= $review->{shortest_km_m} %> m mit <%= $review->{shortest_km_type} %> <%= $review->{shortest_km_lineno} %> von <%= $review->{shortest_km_from} %> nach <%= $review->{shortest_km_to} %>.
% }
- % if ($review->{issue1_count}) {
-
-
Oepsie Woepsie
+
+
Oepsie Woepsie
+ % if ($review->{issue1_count}) {
<%= $review->{issue_percent} %> aller Fahrten liefen nicht wie vorgesehen ab.
Die häufigsten Anmerkungen waren:
% for my $i (1 .. 3) {
@@ -99,9 +103,9 @@
<%= $review->{"issue${i}_count"} %>× „<%= $review->{"issue${i}_text"} %>“
% }
% }
-
Lediglich <%= $review->{punctual_percent_h} %> der Züge waren pünktlich auf die Minute.
-
- % }
+ % }
+
Lediglich <%= $review->{punctual_percent_h} %> der Züge waren pünktlich auf die Minute.
+
Last, but not least
--
cgit v1.2.3