2019-03-27 20:46:52 +00:00
|
|
|
% my $since = get_user_data()->{registered_at};
|
|
|
|
% my $now = DateTime->now(time_zone => 'Europe/Berlin');
|
|
|
|
<div class="row">
|
|
|
|
<div class="col s12">
|
|
|
|
<ul class="pagination">
|
|
|
|
<!--<li class="disabled"><a href="#!"><i class="material-icons">chevron_left</i></a></li>-->
|
|
|
|
% my $ref = stash('year') ? stash('year') . '/' . stash('month') : '';
|
|
|
|
% while ($since < $now) {
|
|
|
|
% my $link_to = $since->strftime('%Y/%m');
|
|
|
|
% my $class = $link_to eq $ref ? 'active' : 'waves-effect';
|
|
|
|
<li class="<%= $class %>"><a href="/history/<%= $link_to %>"><%= $since->strftime('%m.%Y') %></a></li>
|
|
|
|
% $since->add(months => 1);
|
|
|
|
% }
|
|
|
|
<!--<li class="disabled"><a href="#!"><i class="material-icons">chevron_right</i></a></li>-->
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-03-27 20:20:59 +00:00
|
|
|
% if (my $stats = stash('statistics')) {
|
2019-03-27 20:46:52 +00:00
|
|
|
<h1><%= stash('month_name') %> <%= stash('year') %></h1>
|
2019-03-27 20:20:59 +00:00
|
|
|
<div class="row">
|
|
|
|
<div class="col s12">
|
|
|
|
<table class="striped">
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Fahrten</th>
|
2019-04-01 18:28:06 +00:00
|
|
|
<td><%= $stats->{num_journeys} %></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Züge</th>
|
2019-03-27 20:20:59 +00:00
|
|
|
<td><%= $stats->{num_trains} %></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Entfernung</th>
|
|
|
|
<td>ca. <%= sprintf('%.f', $stats->{km_route}) %> km
|
|
|
|
(Luftlinie: <%= sprintf('%.f', $stats->{km_beeline}) %> km)</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Fahrtzeit</th>
|
|
|
|
<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>
|
|
|
|
</tr>
|
2019-04-01 18:28:06 +00:00
|
|
|
<tr>
|
|
|
|
<th scope="row">Wartezeit (nur Umstiege)</th>
|
|
|
|
<td><%= sprintf('%02d:%02d', $stats->{min_interchange_real} / 60, $stats->{min_interchange_real} % 60) %> Stunden
|
|
|
|
</tr>
|
2019-03-27 20:20:59 +00:00
|
|
|
<tr>
|
|
|
|
<th scope="row">Kumulierte Verspätung</th>
|
|
|
|
<td>Bei Abfahrt: <%= sprintf('%02d:%02d', $stats->{delay_dep} / 60, $stats->{delay_dep} % 60) %> Stunden<br/>
|
|
|
|
Bei Ankunft: <%= sprintf('%02d:%02d', $stats->{delay_arr} / 60, $stats->{delay_arr} % 60) %> Stunden</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
% }
|
|
|
|
% elsif (param('cancelled')) {
|
2019-03-19 20:23:06 +00:00
|
|
|
<h1>Ausgefallene Fahrten</h1>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col s12">
|
|
|
|
<ul>
|
|
|
|
<li><a href="/history.json?cancelled=1">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li>
|
|
|
|
<li><a href="/history">Reguläre Zugfahrten</a></li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
% }
|
|
|
|
% else {
|
2019-03-27 20:20:59 +00:00
|
|
|
<h1>Fahrten</h1>
|
2018-10-13 12:40:19 +00:00
|
|
|
<div class="row">
|
2019-03-09 13:35:23 +00:00
|
|
|
<div class="col s12">
|
|
|
|
<ul>
|
|
|
|
<li><a href="/history.json">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li>
|
2019-03-19 20:23:06 +00:00
|
|
|
<li><a href="/history?cancelled=1">Ausgefallene Züge</a></li>
|
2019-03-09 13:35:23 +00:00
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-03-19 20:23:06 +00:00
|
|
|
% }
|
2019-03-09 13:35:23 +00:00
|
|
|
<div class="row">
|
|
|
|
<div class="col s12">
|
|
|
|
<table class="striped">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Datum</th>
|
2019-03-28 18:21:52 +00:00
|
|
|
<th>Zeit</th>
|
2019-03-09 13:35:23 +00:00
|
|
|
<th>Zug</th>
|
|
|
|
<th>Strecke</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
2019-03-27 20:20:59 +00:00
|
|
|
% for my $travel (@{$journeys}) {
|
2019-03-09 13:35:23 +00:00
|
|
|
% if ($travel->{completed}) {
|
2019-03-31 17:32:41 +00:00
|
|
|
% my $detail_link = '/journey/' . current_user()->{id} . '-' . $travel->{ids}->[1];
|
2019-03-09 13:35:23 +00:00
|
|
|
<tr>
|
|
|
|
<td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td>
|
2019-03-19 20:23:06 +00:00
|
|
|
<td>
|
|
|
|
% if (param('cancelled') and $travel->{sched_arrival}->epoch != 0) {
|
|
|
|
%= $travel->{sched_arrival}->strftime('%H:%M')
|
|
|
|
% }
|
|
|
|
% else {
|
|
|
|
% if ($travel->{rt_arrival}->epoch == 0 and $travel->{sched_arrival}->epoch == 0) {
|
|
|
|
<i class="material-icons">timer_off</i>
|
|
|
|
% } else {
|
|
|
|
%= $travel->{rt_arrival}->strftime('%H:%M');
|
|
|
|
% if ($travel->{sched_arrival} != $travel->{rt_arrival}) {
|
2019-03-20 16:50:14 +00:00
|
|
|
(<%= sprintf('%+d', ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60) %>)
|
2019-03-19 20:23:06 +00:00
|
|
|
% }
|
2019-03-09 13:35:23 +00:00
|
|
|
% }
|
2018-10-21 14:05:18 +00:00
|
|
|
% }
|
2019-03-27 20:26:37 +00:00
|
|
|
<br/>
|
|
|
|
% if (param('cancelled')) {
|
|
|
|
%= $travel->{sched_departure}->strftime('%H:%M')
|
|
|
|
% }
|
|
|
|
% else {
|
|
|
|
<%= $travel->{rt_departure}->strftime('%H:%M') %>
|
|
|
|
% if ($travel->{sched_departure} != $travel->{rt_departure}) {
|
|
|
|
(<%= sprintf('%+d', ($travel->{rt_departure}->epoch - $travel->{sched_departure}->epoch) / 60) %>)
|
|
|
|
% }
|
|
|
|
% }
|
2019-03-09 13:35:23 +00:00
|
|
|
</td>
|
2019-03-28 18:21:52 +00:00
|
|
|
<td><a href="<%= $detail_link %>"><%= $travel->{type} %> <%= $travel->{line} // '' %> <%= $travel->{no} %></a></td>
|
|
|
|
<td><a href="<%= $detail_link %>"><%= $travel->{from_name} %> → <%= $travel->{to_name} %></a></td>
|
2019-03-09 13:35:23 +00:00
|
|
|
</tr>
|
|
|
|
% }
|
2018-10-13 12:40:19 +00:00
|
|
|
% }
|
2019-03-09 13:35:23 +00:00
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2018-10-13 12:40:19 +00:00
|
|
|
</div>
|