add JSON export for history

This commit is contained in:
Daniel Friesel 2019-03-09 14:35:23 +01:00
parent 6f1b488d26
commit 3ae14d47f9
2 changed files with 56 additions and 38 deletions

View file

@ -1184,7 +1184,16 @@ get '/account' => sub {
get '/history' => sub {
my ($self) = @_;
$self->render('history');
$self->respond_to(
json => { json => [ $self->get_user_travels(0) ] },
any => { template => 'history' }
);
};
get '/history.json' => sub {
my ($self) = @_;
$self->render( json => [ $self->get_user_travels(0) ] );
};
get '/export.json' => sub {

View file

@ -1,40 +1,49 @@
<h1>Bisherige Fahrten</h1>
<div class="row">
<table class="striped">
<thead>
<tr>
<th>Datum</th>
<th>Zug</th>
<th>Strecke</th>
<th>Abfahrt</th>
<th>Ankunft</th>
</tr>
</thead>
<tbody>
% for my $travel (get_user_travels(0)) {
% if ($travel->{completed}) {
<tr>
<td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td>
<td><%= $travel->{type} %> <%= $travel->{line} // '' %> <%= $travel->{no} %></td>
<td><%= $travel->{from_name} %> → <%= $travel->{to_name} %></td>
<td><%= $travel->{rt_departure}->strftime('%H:%M') %>
% if ($travel->{sched_departure} != $travel->{rt_departure}) {
(+<%= ($travel->{rt_departure}->epoch - $travel->{sched_departure}->epoch) / 60 %>)
% }
</td>
<td>
% 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}) {
(+<%= ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60 %>)
% }
% }
</td>
</tr>
% }
% }
</tbody>
</table>
<div class="col s12">
<ul>
<li><a href="/history.json">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li>
</ul>
</div>
</div>
<div class="row">
<div class="col s12">
<table class="striped">
<thead>
<tr>
<th>Datum</th>
<th>Zug</th>
<th>Strecke</th>
<th>Abfahrt</th>
<th>Ankunft</th>
</tr>
</thead>
<tbody>
% for my $travel (get_user_travels(0)) {
% if ($travel->{completed}) {
<tr>
<td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td>
<td><%= $travel->{type} %> <%= $travel->{line} // '' %> <%= $travel->{no} %></td>
<td><%= $travel->{from_name} %> → <%= $travel->{to_name} %></td>
<td><%= $travel->{rt_departure}->strftime('%H:%M') %>
% if ($travel->{sched_departure} != $travel->{rt_departure}) {
(+<%= ($travel->{rt_departure}->epoch - $travel->{sched_departure}->epoch) / 60 %>)
% }
</td>
<td>
% 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}) {
(+<%= ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60 %>)
% }
% }
</td>
</tr>
% }
% }
</tbody>
</table>
</div>
</div>