mirror of
https://github.com/derf/travelynx
synced 2024-12-03 01:39:10 +00:00
47f76da4f8
Squashed commit of the following: commit92518024ba
Author: Birte Kristina Friesel <birte.friesel@uos.de> Date: Fri Jul 26 18:39:46 2024 +0200 add_or_update station: remove superfluos 'new backend id := old backend id' commitdf21c20c6e
Author: Birte Kristina Friesel <birte.friesel@uos.de> Date: Fri Jul 26 18:35:51 2024 +0200 revert connection targets min_count to 3 commitbe335cef07
Author: Birte Kristina Friesel <birte.friesel@uos.de> Date: Fri Jul 26 18:20:05 2024 +0200 mention backend selection in API documentation commit9f41828fb4
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Thu Jul 25 20:19:23 2024 +0200 use_history: not all backends provide route data in departure monitor commit09714b4d89
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Thu Jul 25 20:11:44 2024 +0200 disambiguation: pass correct hafas parameter commit8cdf1120fc
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Thu Jul 25 20:11:28 2024 +0200 _checked_in: hide Zuglauf link for non-db checkins commit7455653f54
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Thu Jul 25 20:01:47 2024 +0200 debug output commitb9cda07f85
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Thu Jul 25 19:09:07 2024 +0200 fix remaining get_connection_targets / get_connecting_trains_p invocations commit2759d7258c
Author: Birte Kristina Friesel <derf@finalrewind.org> Date: Wed Jul 24 20:50:12 2024 +0200 support non-DB HAFAS backends (WiP)
251 lines
8.6 KiB
Text
251 lines
8.6 KiB
Text
% if (my $invalid = stash('invalid')) {
|
||
%= include '_invalid_input', invalid => $invalid
|
||
% }
|
||
|
||
<h1>Träwelling</h1>
|
||
|
||
% if (flash('new_traewelling')) {
|
||
<div class="row">
|
||
<div class="col s12">
|
||
% if ($traewelling->{token}) {
|
||
<div class="card success-color">
|
||
<div class="card-content white-text">
|
||
<span class="card-title">Träwelling verknüpft</span>
|
||
% my $user = $traewelling->{data}{user_name} // '???';
|
||
<p>Dein travelynx-Account ist nun mit dem Träwelling-Account <b>@<%= $user %></b> verbunden.</p>
|
||
</div>
|
||
</div>
|
||
% }
|
||
% elsif (my $login_err = flash('login_error')) {
|
||
<div class="card caution-color">
|
||
<div class="card-content white-text">
|
||
<span class="card-title">Login-Fehler</span>
|
||
<p>Der Login bei Träwelling ist fehlgeschlagen: <%= $login_err %></p>
|
||
</div>
|
||
</div>
|
||
% }
|
||
% elsif (my $logout_err = stash('logout_error')) {
|
||
<div class="card caution-color">
|
||
<div class="card-content white-text">
|
||
<span class="card-title">Logout-Fehler</span>
|
||
<p>Der Logout bei Träwelling ist fehlgeschlagen: <%= $logout_err %>.
|
||
Dein Token bei travelynx wurde dennoch gelöscht, so
|
||
dass nun kein Zugriff von travelynx auf Träwelling mehr
|
||
möglich ist. In den <a
|
||
href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
|
||
kannst du ihn vollständig löschen.</p>
|
||
</div>
|
||
</div>
|
||
% }
|
||
</div>
|
||
</div>
|
||
% }
|
||
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<div class="card purple">
|
||
<div class="card-content white-text">
|
||
<span class="card-title">Eingeschränkte Synchronisierung</span>
|
||
<p>
|
||
Träwelling und travelynx setzen unterschiedliche Schwerpunkte und haben unterschiedliche Features.
|
||
Kombiniert mit der Vielzahl an möglichen Randfällen heißt das, dass die Synchronisierung nicht immer funktioniert.
|
||
Diese Einschränkung ist bekannt und wird voraussichtlich bestehen bleiben.
|
||
</p>
|
||
<p>
|
||
Bei hohen Verspätungen, Ausfällen und nachträglichen Checkin-Änderungen ist die Synchronisierung u.U. nicht möglich und muss von Hand vorgenommen werden.
|
||
travelynx-Hooks werden bei via Träwelling vorgenommenen Checkins nicht ausgelöst.
|
||
</p>
|
||
</div>
|
||
<div class="card-action">
|
||
<a href="https://github.com/derf/travelynx/issues" class="waves-effect waves-light btn-flat white-text">
|
||
<i class="material-icons left" aria-hidden="true">bug_report</i>Bug melden
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
% if ($traewelling->{token} and ($traewelling->{expired} or $traewelling->{expiring})) {
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<div class="card caution-color">
|
||
<div class="card-content white-text">
|
||
% if ($traewelling->{expired}) {
|
||
<span class="card-title">Token abgelaufen</span>
|
||
% }
|
||
% else {
|
||
<span class="card-title">Token läuft bald ab</span>
|
||
% }
|
||
<p>Melde deinen travelynx-Account von Träwelling ab und
|
||
verbinde ihn mit deinem Träwelling-Passwort erneut,
|
||
um einen neuen Token zu erhalten.</p>
|
||
</div>
|
||
<div class="card-action">
|
||
%= form_for '/account/traewelling' => (method => 'POST') => begin
|
||
%= csrf_field
|
||
<button class="btn-flat waves-effect waves-light white-text" type="submit" name="action" value="logout">
|
||
<i class="material-icons left" aria-hidden="true">sync_disabled</i>
|
||
Abmelden
|
||
</button>
|
||
%= end
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
% }
|
||
|
||
% if (not $traewelling->{token}) {
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<p>
|
||
Hier hast du die Möglichkeit, deinen travelynx-Account mit einem
|
||
Account bei <a href="https://traewelling.de">Träwelling</a> zu
|
||
verknüpfen. Dies erlaubt die automatische Übernahme zukünftiger
|
||
Checkins zwischen den beiden Diensten. Checkins, die
|
||
vor dem Verknüpfen der Accounts stattgefunden haben, werden
|
||
nicht synchronisiert. Bei synchronisierten Checkins wird der
|
||
zugehörige Träwelling-Status von deiner travelynx-Statusseite
|
||
aus verlinkt.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
%= form_for '/oauth/traewelling' => (method => 'POST') => begin
|
||
%= csrf_field
|
||
<div class="col s12 center-align">
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="connect">
|
||
Verknüpfen
|
||
<i class="material-icons right">send</i>
|
||
</button>
|
||
</div>
|
||
%= end
|
||
</div>
|
||
% }
|
||
% else {
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<p>
|
||
Dieser travelynx-Account ist mit dem Träwelling-Account
|
||
% if (my $user = $traewelling->{data}{user_name}) {
|
||
<a href="https://traewelling.de/@<%= $user %>"><%= $user %></a>
|
||
% }
|
||
% else {
|
||
%= $traewelling->{email}
|
||
% }
|
||
verknüpft. Der aktuelle Token läuft <%= $traewelling->{expires_on}->strftime('am %d.%m.%Y um %H:%M Uhr') %> ab.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
%= form_for '/account/traewelling' => (method => 'POST') => begin
|
||
%= csrf_field
|
||
<div class="row">
|
||
<div class="input-field col s12">
|
||
<div>
|
||
<label>
|
||
%= radio_button sync_source => 'none'
|
||
<span>Keine Synchronisierung</span>
|
||
</label>
|
||
</div>
|
||
</div>
|
||
<div class="input-field col s12">
|
||
<div>
|
||
<label>
|
||
%= radio_button sync_source => 'travelynx'
|
||
<span>Checkin-Synchronisierung travelynx → Träwelling</span>
|
||
</label>
|
||
</div>
|
||
<div>
|
||
<label>
|
||
%= check_box toot => 1
|
||
<span>… Checkin im Fediverse veröffentlichen</span>
|
||
</label>
|
||
</div>
|
||
<p>Die Synchronisierung erfolgt spätestens drei Minuten nach der
|
||
Zielwahl. Es werden ausschließlich Checkins mittels
|
||
DB (IRIS-TTS) und DB (HAFAS) synchornisiert. Beachte, dass
|
||
die Synchronisierung travelynx → Träwelling unabhängig von
|
||
der eingestellten Sichtbarkeit des Checkins erfolgt.
|
||
travelynx reicht die Sichtbarkeit aber an Träwelling
|
||
weiter. Träwelling-Checkins können von travelynx aktuell
|
||
nicht rückgängig gemacht werden. Eine nachträgliche
|
||
Änderung der Zielstation wird nicht übernommen. Fediverse
|
||
bezieht sich auf den in den <a
|
||
href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
|
||
verknüpften Account.</p>
|
||
</div>
|
||
<div class="input-field col s12">
|
||
<div>
|
||
<label>
|
||
%= radio_button sync_source => 'traewelling'
|
||
<span>Checkin-Synchronisierung Träwelling → travelynx</span>
|
||
</label>
|
||
</div>
|
||
<p>Alle fünf Minuten wird dein Status auf Träwelling abgefragt.
|
||
Falls du gerade in eingecheckt bist, wird der Checkin von
|
||
travelynx übernommen. Träwelling-Checkins in Züge
|
||
außerhalb des deutschen Schienennetzes werden noch nicht
|
||
unterstützt. Die Sichtbarkeit von Träwelling-Checkins wird
|
||
derzeit von travelynx nicht berücksichtigt.</p>
|
||
</div>
|
||
</div>
|
||
<div class="row hide-on-small-only">
|
||
<div class="col s12 m6 l6 center-align">
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
|
||
Abmelden
|
||
<i class="material-icons right" aria-hidden="true">sync_disabled</i>
|
||
</button>
|
||
</div>
|
||
<div class="col s12 m6 l6 center-align">
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="config">
|
||
Speichern
|
||
<i class="material-icons right" aria-hidden="true">send</i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="row hide-on-med-and-up">
|
||
<div class="col s12 m6 l6 center-align">
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="config">
|
||
Speichern
|
||
<i class="material-icons right" aria-hidden="true">send</i>
|
||
</button>
|
||
</div>
|
||
<div class="col s12 m6 l6 center-align" style="margin-top: 1em;">
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
|
||
Abmelden
|
||
<i class="material-icons right" aria-hidden="true">sync_disabled</i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
%= end
|
||
<h2>Status</h2>
|
||
<div class="row">
|
||
<div class="col s12"">
|
||
% if ($traewelling->{latest_run}->epoch) {
|
||
Letzter Checkin <%= $traewelling->{latest_run}->strftime('am %d.%m.%Y um %H:%M:%S') %><br/>
|
||
% if ($traewelling->{errored}) {
|
||
<i class="material-icons left">error</i>
|
||
Fehler: <%= $traewelling->{data}{error} %>
|
||
% }
|
||
% }
|
||
% else {
|
||
Bisher wurde noch kein Checkin übernommen.
|
||
% }
|
||
</div>
|
||
</div>
|
||
<h2>Log</h2>
|
||
<div class="row">
|
||
<div class="col s12"">
|
||
<ul>
|
||
% for my $log_entry (@{$traewelling->{data}{log} // []}) {
|
||
<li>
|
||
<%= $log_entry->[0]->strftime('%d.%m.%Y %H:%M:%S') %> –
|
||
% if ($log_entry->[2]) {
|
||
Träwelling <a href="https://traewelling.de/status/<%= $log_entry->[2] %>">#<%= $log_entry->[2] %></a> –
|
||
% }
|
||
%= $log_entry->[1]
|
||
</li>
|
||
% }
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
% }
|