Loading index.pl +27 −6 Original line number Diff line number Diff line Loading @@ -808,6 +808,11 @@ helper 'get_user_travels' => sub { else { $query->execute($uid); } my @match_actions = ( $action_type{checkout}, $action_type{checkin} ); if ( $opt{cancelled} ) { @match_actions = ( $action_type{cancelled_to}, $action_type{cancelled_from} ); } my @travels; my $prev_action = 0; Loading @@ -823,7 +828,9 @@ helper 'get_user_travels' => sub { $raw_route = decode( 'UTF-8', $raw_route ); $raw_messages = decode( 'UTF-8', $raw_messages ); if ( $action == $action_type{checkout} ) { if ( $action == $match_actions[0] or ( $opt{checkout_epoch} and $raw_ts == $opt{checkout_epoch} ) ) { push( @travels, { Loading @@ -843,8 +850,13 @@ helper 'get_user_travels' => sub { } ); } elsif ( $action == $action_type{checkin} and $prev_action == $action_type{checkout} ) elsif ( ( $action == $match_actions[1] and $prev_action == $match_actions[0] ) or ( $opt{checkin_epoch} and $raw_ts == $opt{checkin_epoch} ) ) { my $ref = $travels[-1]; $ref->{from_name} = $name; Loading @@ -866,6 +878,11 @@ helper 'get_user_travels' => sub { } $ref->{messages} = [ reverse @parsed_messages ]; } if ( $opt{checkin_epoch} and $action == $action_type{cancelled_from} ) { $ref->{cancelled} = 1; } } $prev_action = $action; } Loading Loading @@ -1442,17 +1459,21 @@ get '/account' => sub { get '/history' => sub { my ($self) = @_; my $cancelled = $self->param('cancelled') ? 1 : 0; $self->respond_to( json => { json => [ $self->get_user_travels ] }, json => { json => [ $self->get_user_travels( cancelled => $cancelled ) ] }, any => { template => 'history' } ); }; get '/history.json' => sub { my ($self) = @_; my $cancelled = $self->param('cancelled') ? 1 : 0; $self->render( json => [ $self->get_user_travels ] ); $self->render( json => [ $self->get_user_travels( cancelled => $cancelled ) ] ); }; get '/journey/:id' => sub { Loading templates/history.html.ep +35 −10 Original line number Diff line number Diff line % if (param('cancelled')) { <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 { <h1>Bisherige Fahrten</h1> <div class="row"> <div class="col s12"> <ul> <li><a href="/history.json">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li> <li><a href="/history?cancelled=1">Ausgefallene Züge</a></li> </ul> </div> </div> % } <div class="row"> <div class="col s12"> <table class="striped"> Loading @@ -19,19 +33,29 @@ </tr> </thead> <tbody> % for my $travel (get_user_travels()) { % for my $travel (get_user_travels(cancelled => (param('cancelled') ? 1 : 0))) { % if ($travel->{completed}) { % my $detail_link = '/journey/' . current_user()->{id} . '-' . $travel->{checkin}->epoch . '-' . $travel->{checkout}->epoch; <tr> <td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td> <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> <td><%= $travel->{rt_departure}->strftime('%H:%M') %> <td> % if (param('cancelled')) { %= $travel->{sched_departure}->strftime('%H:%M') % } % else { <%= $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 (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 { Loading @@ -40,6 +64,7 @@ (+<%= ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60 %>) % } % } % } </td> </tr> % } Loading templates/journey.html.ep +18 −3 Original line number Diff line number Diff line Loading @@ -14,7 +14,12 @@ <div class="row"> <div class="col s12"> <p> % if ($journey->{cancelled}) { Ausgefallene Fahrt von % } % else { Fahrt von % } <b><%= $journey->{from_name} %></b> nach <b><%= $journey->{to_name} %></b> Loading @@ -34,7 +39,11 @@ <tr> <th scope="row">Abfahrt</th> <td> % if ($journey->{rt_departure} != $journey->{sched_departure}) { % if ($journey->{cancelled}) { <i class="material-icons">cancel</i> (Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>) % } % elsif ($journey->{rt_departure} != $journey->{sched_departure}) { %= $journey->{rt_departure}->strftime('%H:%M'); (+<%= ($journey->{rt_departure}->epoch - $journey->{sched_departure}->epoch) / 60 %>, Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>) Loading @@ -47,7 +56,13 @@ <tr> <th scope="row">Ankunft</th> <td> % if ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) { % if ($journey->{cancelled}) { <i class="material-icons">cancel</i> % if ($journey->{sched_arrival}->epoch != 0) { (Plan: <%= $journey->{sched_arrival}->strftime('%H:%M'); %>) % } % } % elsif ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) { <i class="material-icons">timer_off</i> % } % elsif ($journey->{rt_arrival} != $journey->{sched_arrival}) { Loading Loading
index.pl +27 −6 Original line number Diff line number Diff line Loading @@ -808,6 +808,11 @@ helper 'get_user_travels' => sub { else { $query->execute($uid); } my @match_actions = ( $action_type{checkout}, $action_type{checkin} ); if ( $opt{cancelled} ) { @match_actions = ( $action_type{cancelled_to}, $action_type{cancelled_from} ); } my @travels; my $prev_action = 0; Loading @@ -823,7 +828,9 @@ helper 'get_user_travels' => sub { $raw_route = decode( 'UTF-8', $raw_route ); $raw_messages = decode( 'UTF-8', $raw_messages ); if ( $action == $action_type{checkout} ) { if ( $action == $match_actions[0] or ( $opt{checkout_epoch} and $raw_ts == $opt{checkout_epoch} ) ) { push( @travels, { Loading @@ -843,8 +850,13 @@ helper 'get_user_travels' => sub { } ); } elsif ( $action == $action_type{checkin} and $prev_action == $action_type{checkout} ) elsif ( ( $action == $match_actions[1] and $prev_action == $match_actions[0] ) or ( $opt{checkin_epoch} and $raw_ts == $opt{checkin_epoch} ) ) { my $ref = $travels[-1]; $ref->{from_name} = $name; Loading @@ -866,6 +878,11 @@ helper 'get_user_travels' => sub { } $ref->{messages} = [ reverse @parsed_messages ]; } if ( $opt{checkin_epoch} and $action == $action_type{cancelled_from} ) { $ref->{cancelled} = 1; } } $prev_action = $action; } Loading Loading @@ -1442,17 +1459,21 @@ get '/account' => sub { get '/history' => sub { my ($self) = @_; my $cancelled = $self->param('cancelled') ? 1 : 0; $self->respond_to( json => { json => [ $self->get_user_travels ] }, json => { json => [ $self->get_user_travels( cancelled => $cancelled ) ] }, any => { template => 'history' } ); }; get '/history.json' => sub { my ($self) = @_; my $cancelled = $self->param('cancelled') ? 1 : 0; $self->render( json => [ $self->get_user_travels ] ); $self->render( json => [ $self->get_user_travels( cancelled => $cancelled ) ] ); }; get '/journey/:id' => sub { Loading
templates/history.html.ep +35 −10 Original line number Diff line number Diff line % if (param('cancelled')) { <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 { <h1>Bisherige Fahrten</h1> <div class="row"> <div class="col s12"> <ul> <li><a href="/history.json">JSON-Export</a> (Das Datenlayout ist noch nicht final)</li> <li><a href="/history?cancelled=1">Ausgefallene Züge</a></li> </ul> </div> </div> % } <div class="row"> <div class="col s12"> <table class="striped"> Loading @@ -19,19 +33,29 @@ </tr> </thead> <tbody> % for my $travel (get_user_travels()) { % for my $travel (get_user_travels(cancelled => (param('cancelled') ? 1 : 0))) { % if ($travel->{completed}) { % my $detail_link = '/journey/' . current_user()->{id} . '-' . $travel->{checkin}->epoch . '-' . $travel->{checkout}->epoch; <tr> <td><%= $travel->{sched_departure}->strftime('%d.%m.%Y') %></td> <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> <td><%= $travel->{rt_departure}->strftime('%H:%M') %> <td> % if (param('cancelled')) { %= $travel->{sched_departure}->strftime('%H:%M') % } % else { <%= $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 (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 { Loading @@ -40,6 +64,7 @@ (+<%= ($travel->{rt_arrival}->epoch - $travel->{sched_arrival}->epoch) / 60 %>) % } % } % } </td> </tr> % } Loading
templates/journey.html.ep +18 −3 Original line number Diff line number Diff line Loading @@ -14,7 +14,12 @@ <div class="row"> <div class="col s12"> <p> % if ($journey->{cancelled}) { Ausgefallene Fahrt von % } % else { Fahrt von % } <b><%= $journey->{from_name} %></b> nach <b><%= $journey->{to_name} %></b> Loading @@ -34,7 +39,11 @@ <tr> <th scope="row">Abfahrt</th> <td> % if ($journey->{rt_departure} != $journey->{sched_departure}) { % if ($journey->{cancelled}) { <i class="material-icons">cancel</i> (Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>) % } % elsif ($journey->{rt_departure} != $journey->{sched_departure}) { %= $journey->{rt_departure}->strftime('%H:%M'); (+<%= ($journey->{rt_departure}->epoch - $journey->{sched_departure}->epoch) / 60 %>, Plan: <%= $journey->{sched_departure}->strftime('%H:%M'); %>) Loading @@ -47,7 +56,13 @@ <tr> <th scope="row">Ankunft</th> <td> % if ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) { % if ($journey->{cancelled}) { <i class="material-icons">cancel</i> % if ($journey->{sched_arrival}->epoch != 0) { (Plan: <%= $journey->{sched_arrival}->strftime('%H:%M'); %>) % } % } % elsif ($journey->{rt_arrival}->epoch == 0 and $journey->{sched_arrival}->epoch == 0) { <i class="material-icons">timer_off</i> % } % elsif ($journey->{rt_arrival} != $journey->{sched_arrival}) { Loading