diff options
Diffstat (limited to 'templates/layouts/app.html.ep')
-rw-r--r-- | templates/layouts/app.html.ep | 258 |
1 files changed, 258 insertions, 0 deletions
diff --git a/templates/layouts/app.html.ep b/templates/layouts/app.html.ep new file mode 100644 index 0000000..6189c9c --- /dev/null +++ b/templates/layouts/app.html.ep @@ -0,0 +1,258 @@ +<!DOCTYPE html> +<html lang="de"> +<head> + <title><%= stash('title') // 'DBF' %></title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="keywords" content="Abfahrtsmonitor, Bahnhofstafel, Abfahrten, Abfahrtstafel, ICE, IC, RE, RB, S-Bahn"> + <meta name="description" content="Inoffizieller Abfahrtsmonitor für Bahnhöfe der DB"> + <meta name="theme-color" content="#00838f"> + <link rel="icon" type="image/png" href="/static/icons/icon-16x16.png" sizes="16x16"> + <link rel="icon" type="image/png" href="/static/icons/icon-32x32.png" sizes="32x32"> + <link rel="icon" type="image/png" href="/static/icons/icon-96x96.png" sizes="96x96"> + <link rel="apple-touch-icon" href="/static/icons/icon-120x120.png"> + <link rel="apple-touch-icon" sizes="180x180" href="/static/icons/icon-180x180.png"> + <link rel="apple-touch-icon" sizes="152x152" href="/static/icons/icon-152x152.png"> + <link rel="apple-touch-icon" sizes="167x167" href="/static/icons/icon-167x167.png"> +% if ($self->stash('refresh_interval')) { + <meta http-equiv="refresh" content="<%= $self->stash('refresh_interval') %>"/> +% } + + % my $av = 'v15'; # asset version + %= stylesheet "/static/${av}/css/app.css" + %= stylesheet "/static/${av}/css/material-icons.css" + %= stylesheet "/static/${av}/css/jquery-ui.min.css" + %= javascript '/static/js/jquery-3.4.1.min.js', defer => undef + %= javascript "/static/${av}/js/jquery-ui.min.js", defer => undef + %= javascript "/static/${av}/js/dbf.min.js", defer => undef + % if (stash('with_geolocation')) { + %= javascript "/static/${av}/js/geolocation.min.js", defer => undef + % } +</head> +<body> + +<div class="navbar-fixed"> + <nav style="color: #ffffff; background-color: #00838f;"> + <div class="nav-wrapper container"> + <span class="brand-logo"> + %= stash('title') || 'DBF' + </span> + <ul id="nav-mobile" style="float: right;"> + <li><a href="#stationinput"><i class="material-icons">edit</i></a></li> + <li><a href="/_auto"><i class="material-icons">my_location</i></a></li> + </ul> + </div> + </nav> +</div> + +<div class="container"> +% if (my $error = stash 'error') { +<div class="error"><strong>Backend-Fehler:</strong> +<pre> +%= $error +</pre> +</div> +% } +% elsif (stash('stationlist')) { +<div class="error"><strong>Mehrdeutige Eingabe.</strong> +Bitte eine Station aus der Liste auswählen</div> +% } +</div> + +<div class="content"> +%= content +</div> + +% if (not stash('hide_opts')) { +<div class="container"> +<div class="input-field"> + + +%= form_for _redirect => begin +<div> + <div class="field"> + <div class="desc">Bahnhof / Haltestelle</div> + <div> +% if (stash('stationlist')) { + %= select_field station => stash('stationlist') +% } +% elsif (stash('station')) { + %= text_field 'station', class => 'station', placeholder => 'Name oder DS100-Kürzel', id => 'stationinput' +% } +% else { + %= text_field 'station', class => 'station', placeholder => 'Name oder DS100-Kürzel', id => 'stationinput', autofocus => 'autofocus' +% } + </div> + </div> + <div class="field"> + %= submit_button 'Abfahrtsmonitor' + </div> + % if (not stash('show_intro')) { + <div class="break"></div> + <div class="field"> + <a class="button" href="<%= url_for('_auto')->to_abs->scheme('https') %>">Bahnhöfe im Umfeld suchen</a> + </div> + % } + <div class="break"></div> + <div class="moresettings-header moresettings-header-collapsed button button-light">Weitere Einstellungen</div> + <div class="moresettings moresettings-collapsed"> + <div class="field"> + <div class="desc"> + Frontend + </div> + <div> + %= select_field mode => [ ['App' => 'app'], ['Infoscreen' => 'infoscreen'], ['Bahnhofstafel' => 'multi'], ['Gleisanzeiger' => 'single'] ] + </div> + </div> + <div class="field"> + <div class="desc"> + Backend + </div> + <div> + %= select_field backend => [ ['IRIS' => 'iris'], ['HAFAS' => 'ris'] ] + </div> + </div> + <div class="field"> + <div class="desc"> + Nur Züge über + </div> + <div> + %= text_field 'via', placeholder => 'Bahnhof 1, Bhf2, ... (oder regulärer Ausdruck)', class => 'station' + </div> + </div> + <div class="field"> + <div class="desc"> + Gleise + </div> + <div> + %= text_field 'platforms', placeholder => '1, 2, 5, ...' + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'hidelowdelay' => 1, id => 'id_hidelowdelay' + <label for="id_hidelowdelay"> + Nur Verspätungen >5 Min. anzeigen + </label> + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'dark' => 1, id => 'id_dark' + <label for="id_dark"> + Dunkles Layout (experimentell) + </label> + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'hide_opts' => 1, id => 'id_hide_opts' + <label for="id_hide_opts"> + Formular verstecken (für Infoscreens) + </label> + </div> + </div> + <div class="break"></div> + <span class="optional">Nur für IRIS-Backend:</span> + <div class="field"> + <div class="desc"> + Ankunfts- oder Abfahrtszeit anzeigen? + </div> + <div> + %= select_field admode => [['Abfahrt bevorzugen' => 'deparr'], ['Nur Abfahrt' => 'dep'], ['Nur Ankunft' => 'arr']] + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'detailed' => 1, id => 'id_detailed' + <label for="id_detailed"> + Mehr Details (Zugnummern und Ankunftszeiten) anzeigen + </label> + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'show_realtime' => 1, id => 'id_show_realtime' + <label for="id_show_realtime"> + Echtzeitangaben statt Fahrplandaten anzeigen + </label> + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'no_related' => 1, id => 'id_no_related' + <label for="id_no_related"> + Betriebliche Bahnhofstrennungen berücksichtigen (z.B. "Hbf (Fern+Regio)" vs. "Hbf (S)") + </label> + </div> + </div> + <div class="field"> + <div class="desc"> + %= check_box 'save_defaults' => 1, id => 'id_save_defaults' + <label for="id_save_defaults"> + Ausgewählte Optionen als Default speichern + </label> + </div> + </div> + <div class="field"> + %= submit_button 'Anzeigen' + </div> + </div> <!-- moresettings --> +</div> +% end + +</div> <!-- input-field --> + +<div class="notes"> + <div class="developers-header developers-header-collapsed button button-light">API- und Entwickler-Hinweise</div> + <div class="developers developers-collapsed"> + <ul> + <li>Diese Seite kann gerne als iframe in eigene Infoscreens o.ä. eingebunden werden. + Für eine kleine Ansicht (z.B. iframe in einer normalen Website) bitte das + "App"-Frontend verwenden. Für eine große Ansicht + (z.B. als alleinstehender Infoscreen) gibt es das "Infoscreen"-Frontend.</li> + <li>Die Parameter <span style="font-family: monospace;">mode=json&version=3</span> + (alternativ auch <span style="font-family: + monospace;">https://dbf.finalrewind.org/Bahnhofsname.json?version=3</span>) + bieten ein JSON-IRIS-Interface. Die route-Elemente können zusätzlich + die Felder "isAdditional" oder "isCancelled" enthalten, der Rest sollte + selbsterklärend sein. Im Fehlerfall fehlt das "departures"-Element, + stattdessen wird ein "error"-Element mit Fehlermeldung zurückgegeben. + Bitte nur eine Anfrage pro Station und Minute + – eine höhere Auflösung haben die Backenddaten ohnehin nicht.</li> + <li>Mit <span style="font-family: monospace;">limit</span> kann die Anzahl der + angezeigten / im JSON enthaltenen Abfahrten eingeschränkt werden, z.B. + <span style="font-family: monospace;">limit=10</span> für die ersten zehn.</li> + <li>Dieser Dienst ist Open Source-Software (Links siehe unten) und kann auch + auf eigenen Servern installiert werden. Automatisierte Crawler, die mehrere + Dutzend Stationen pro Minute abfragen, bitte nur auf eigenen Instanzen + betreiben.</li> + </ul> + </div> <!-- developers --> +</div> <!-- notes --> + +<div class="notes"> +<span class="notes">Siehe auch:</span> +<ul> +<li><a href="https://reiseauskunft.bahn.de/bin/bhftafel.exe/dn">DB Abfahrtsmonitor</a> + (<a href="https://mobile.bahn.de/bin/mobil/bhftafel.exe/dox">mobil</a>)</li> +<li>Für Nahverkehr: <a href="https://vrrf.finalrewind.org/">vrr-infoscreen</a></li> +</ul> +</div> <!-- notes --> + +</div> <!-- container --> + +<div class="container"> +<div class="about"> +<a href="_about">db-infoscreen</a> +v<%= stash('version') // '???' %> +<br/> +<a href="_datenschutz" rel="nofollow">Datenschutzerklärung</a> +· +<a href="_impressum" rel="nofollow">Impressum</a><br/> +</div> <!-- about --> +</div> <!-- container --> +% } + +</body> +</html> |