diff options
Diffstat (limited to 'templates')
-rw-r--r-- | templates/_public_status_card.html.ep | 87 | ||||
-rw-r--r-- | templates/account.html.ep | 14 | ||||
-rw-r--r-- | templates/privacy.html.ep | 42 | ||||
-rw-r--r-- | templates/user_status.html.ep | 5 |
4 files changed, 148 insertions, 0 deletions
diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep new file mode 100644 index 0000000..1b33c18 --- /dev/null +++ b/templates/_public_status_card.html.ep @@ -0,0 +1,87 @@ +% if ($journey->{checked_in}) { + <div class="card green darken-4"> + <div class="card-content white-text"> + <span class="card-title"><%= $name %> ist unterwegs</span> + <p> + In <b><%= $journey->{train_type} %> <%= $journey->{train_no} %></b> + % if ($journey->{arr_name}) { + von <b><%= $journey->{dep_name} %></b> nach <b><%= $journey->{arr_name} %></b>. + % } + % else { + ab <b><%= $journey->{dep_name} %></b>. + % } + </p> + <p> + <b><%= $journey->{real_departure}->strftime('%H:%M') %></b> + % if ($journey->{real_departure}->epoch != $journey->{sched_departure}->epoch) { + (<%= sprintf('%+d', ($journey->{real_departure}->epoch - $journey->{sched_departure}->epoch)/60) %>) + % } + → + % if ($journey->{real_arrival}->epoch) { + <b><%= $journey->{real_arrival}->strftime('%H:%M') %></b> + % if ($journey->{real_arrival}->epoch != $journey->{sched_arrival}->epoch) { + (<%= sprintf('%+d', ($journey->{real_arrival}->epoch - $journey->{sched_arrival}->epoch)/60) %>) + % } + % } + % elsif ($journey->{arr_name}) { + noch nicht bekannt + % } + % else { + unbekannt + % } + </p> + <p> + <div class="center"> + % if ($journey->{departure_countdown} > 120) { + Abfahrt in <%= sprintf('%.f', $journey->{departure_countdown} / 60) %> Minuten + % } + % elsif ($journey->{departure_countdown} > 60) { + Abfahrt in einer Minute + % } + % elsif ($journey->{departure_countdown} > 0) { + Abfahrt in weniger als einer Minute + % } + % elsif (defined $journey->{arrival_countdown}) { + % if ($journey->{arrival_countdown} > 60) { + Ankunft in <%= sprintf('%.f', $journey->{arrival_countdown} / 60) %> + Minute<%= sprintf('%.f', $journey->{arrival_countdown} / 60) == 1 ? '' : 'n' %> + % } + % elsif ($journey->{arrival_countdown} > 0) { + Ankunft in weniger als einer Minute + % } + % else { + Ziel erreicht + % } + % } + % elsif ($journey->{arr_name}) { + Ankunft in mehr als zwei Stunden + % } + </div> + <div class="progress green darken-3" style="height: 1ex;"> + <div class="determinate white" style="width: <%= sprintf('%.2f', 100 * ($journey->{journey_completion} // 0)); %>%;"></div> + </div> + </p> + % if (@{$journey->{messages} // []} > 0 and $journey->{messages}[0]) { + <p style="margin-bottom: 2ex;"> + <ul> + % for my $message (reverse @{$journey->{messages} // []}) { + % if ($journey->{sched_departure}->epoch - $message->[0]->epoch < 1800) { + <li> <i class="material-icons tiny">warning</i> <%= $message->[0]->strftime('%H:%M') %>: <%= $message->[1] %></li> + % } + % } + </ul> + </p> + % } + </div> + </div> +% } +% else { + <div class="card grey darken-4"> + <div class="card-content white-text"> + <span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span> + <p> + Zuletzt gesehen in <%= $journey->{arr_name} %>. + </p> + </div> + </div> +% } diff --git a/templates/account.html.ep b/templates/account.html.ep index 92b61db..076adf1 100644 --- a/templates/account.html.ep +++ b/templates/account.html.ep @@ -37,6 +37,20 @@ <td><a href="/change_password"><i class="material-icons">edit</i> ändern</a></td> </tr> <tr> + <th scope="row">Privatsphäre</th> + <td> + % if ($acc->{is_public} == 0) { + Keine öffentlichen Daten + % } + % else { + Öffentliche Daten: + % } + % if ($acc->{is_public} & 0x02) { + Status + % } + <a href="/account/privacy"><i class="material-icons">edit</i> ändern</a></td> + </tr> + <tr> <th scope="row">Registriert am</th> <td><%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %></td> </tr> diff --git a/templates/privacy.html.ep b/templates/privacy.html.ep new file mode 100644 index 0000000..bf509ce --- /dev/null +++ b/templates/privacy.html.ep @@ -0,0 +1,42 @@ +<h1>Privatsphäre</h1> +<div class="row"> + <div class="col s12"> + Hier kannst du auswählen, welche Aspekte deines Accounts bzw. deiner + Bahnfahrten öffentlich einsehbar sind. Öffentliche Daten sind + grundsätzlich für <i>alle</i> einsehbar, die die (leicht erratbare) URL + kennen. + </div> +</div> +<h2>Öffentliche Daten:</h2> +%= form_for '/account/privacy' => (method => 'POST') => begin + %= csrf_field + <div class="row"> + <div class="input-field col s12"> + <label> + %= check_box public_status => 1 + <span class="black-text">Aktueller Status</span> + </label> + </div> + </div> + <div class="row"> + <div class="col s12"> + Wenn aktiv, ist dein aktueller Status unter <a href="/status/<%= $name + %>">/status/<%= $name %></a> abrufbar. Wenn du eingecheckt bist, + werden dort Zug, Start- und Zielstation, Abfahrts- und Ankunftszeit + gezeigt; andernfalls lediglich der Zielbahnhof der letzten Reise. + Wann die letzte Reise beendet wurde, wird bewusst nicht angegeben. + </div> + </div> + <div class="row"> + <div class="col s3 m3 l3"> + </div> + <div class="col s6 m6 l6 center-align"> + <button class="btn waves-effect waves-light" type="submit" name="action" value="save"> + Speichern + <i class="material-icons right">send</i> + </button> + </div> + <div class="col s3 m3 l3"> + </div> + </div> +%= end diff --git a/templates/user_status.html.ep b/templates/user_status.html.ep new file mode 100644 index 0000000..7691258 --- /dev/null +++ b/templates/user_status.html.ep @@ -0,0 +1,5 @@ +<div class="row"> + <div class="col s12"> + %= include '_public_status_card', name => $name, journey => $journey + </div> +</div> |