From 3ae14d47f91f36bacdfe604414f1186f375ac8a0 Mon Sep 17 00:00:00 2001 From: Daniel Friesel <derf@finalrewind.org> Date: Sat, 9 Mar 2019 14:35:23 +0100 Subject: [PATCH] add JSON export for history --- index.pl | 11 +++++- templates/history.html.ep | 79 ++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 36 deletions(-) diff --git a/index.pl b/index.pl index fc629eeb..7881253f 100755 --- a/index.pl +++ b/index.pl @@ -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 { diff --git a/templates/history.html.ep b/templates/history.html.ep index 25e826fd..cf817659 100644 --- a/templates/history.html.ep +++ b/templates/history.html.ep @@ -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 %>) + <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> + </td> + </tr> + % } % } - % } - </tbody> - </table> + </tbody> + </table> + </div> </div> -- GitLab