summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-03-09 14:35:23 +0100
committerDaniel Friesel <derf@finalrewind.org>2019-03-09 14:35:23 +0100
commit3ae14d47f91f36bacdfe604414f1186f375ac8a0 (patch)
tree2dfa72263007e7124279e6d5200ba59679c84e31
parent6f1b488d26b24624904162d8127df79f166784ec (diff)
add JSON export for history
-rwxr-xr-xindex.pl11
-rw-r--r--templates/history.html.ep79
2 files changed, 54 insertions, 36 deletions
diff --git a/index.pl b/index.pl
index fc629ee..7881253 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 25e826f..cf81765 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>