Some checks failed
Deploy to NAS / deploy (push) Failing after 4s
Remove submodule tracking; backend is now a plain directory in the repo. Also update deploy workflow: remove --recurse-submodules. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
105 lines
3.4 KiB
HTML
105 lines
3.4 KiB
HTML
{{define "title"}}{{.Date}} — Reisejournal{{end}}
|
|
|
|
{{define "content"}}
|
|
<main class="container">
|
|
<nav><a href="/days">← Alle Tage</a></nav>
|
|
<h1>{{.Date}}</h1>
|
|
|
|
<h2>Neuer Eintrag</h2>
|
|
<form method="post" action="/entries" enctype="multipart/form-data" class="entry-form">
|
|
<input type="hidden" name="date" value="{{.Date}}">
|
|
<div class="form-row">
|
|
<div class="form-col">
|
|
<label>Uhrzeit</label>
|
|
<input type="time" name="time" required id="entry-time">
|
|
</div>
|
|
<div class="form-col">
|
|
<label>GPS-Koordinaten <small>(optional)</small></label>
|
|
<div class="gps-row">
|
|
<input type="number" name="lat" id="entry-lat" step="any" placeholder="Breite">
|
|
<input type="number" name="lon" id="entry-lon" step="any" placeholder="Länge">
|
|
<button type="button" id="btn-gps" title="Aktuellen Standort ermitteln">◎ GPS</button>
|
|
</div>
|
|
<small id="gps-status"></small>
|
|
</div>
|
|
</div>
|
|
<label>Überschrift</label>
|
|
<input type="text" name="title" placeholder="Titel des Eintrags">
|
|
<label>Beschreibung</label>
|
|
<textarea name="description" rows="4" placeholder="Was ist passiert?"></textarea>
|
|
<label>Bilder <small>(optional, max. 10 MB pro Bild)</small></label>
|
|
<input type="file" name="images" multiple accept="image/*" id="image-input">
|
|
<div id="image-preview" class="image-preview"></div>
|
|
<button type="submit">Eintrag speichern</button>
|
|
</form>
|
|
|
|
<h2>Einträge <small>({{len .Entries}})</small></h2>
|
|
{{range .Entries}}
|
|
<div class="entry-card">
|
|
<div class="entry-meta">
|
|
<strong>{{.EntryTime}}</strong>
|
|
{{if .Lat}}<small> · ○ {{printf "%.5f" (deref .Lat)}}, {{printf "%.5f" (deref .Lon)}}</small>{{end}}
|
|
</div>
|
|
{{if .Title}}<div class="entry-title">{{.Title}}</div>{{end}}
|
|
{{if .Description}}<div class="entry-desc">{{.Description}}</div>{{end}}
|
|
{{if .Images}}
|
|
<div class="entry-images">
|
|
{{range .Images}}
|
|
<a href="/uploads/{{.Filename}}" target="_blank">
|
|
<img src="/uploads/{{.Filename}}" alt="{{.OriginalName}}" class="thumb">
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{else}}
|
|
<p><small>// Noch keine Einträge</small></p>
|
|
{{end}}
|
|
|
|
<h2>Trackpunkte <small>({{len .Points}})</small></h2>
|
|
<figure>
|
|
<table>
|
|
<thead><tr><th>Zeit</th><th>Lat</th><th>Lon</th><th>Quelle</th><th>Notiz</th></tr></thead>
|
|
<tbody>
|
|
{{range .Points}}
|
|
<tr>
|
|
<td>{{.Timestamp.Format "15:04:05"}}</td>
|
|
<td>{{printf "%.5f" .Lat}}</td>
|
|
<td>{{printf "%.5f" .Lon}}</td>
|
|
<td class="source-{{.Source}}">{{.Source}}</td>
|
|
<td><small>{{.Note}}</small></td>
|
|
</tr>
|
|
{{else}}
|
|
<tr><td colspan="5"><small>// Keine Punkte</small></td></tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
|
|
<h2>Aufenthalte <small>({{len .Stops}})</small></h2>
|
|
<figure>
|
|
<table>
|
|
<thead><tr><th>Von</th><th>Bis</th><th>Dauer</th><th>Ort</th></tr></thead>
|
|
<tbody>
|
|
{{range .Stops}}
|
|
<tr>
|
|
<td>{{.StartTS.Format "15:04"}}</td>
|
|
<td>{{.EndTS.Format "15:04"}}</td>
|
|
<td><small>{{divInt .DurationS 60}} min</small></td>
|
|
<td>{{if .PlaceLabel}}{{.PlaceLabel}}{{else}}<small>—</small>{{end}}</td>
|
|
</tr>
|
|
{{else}}
|
|
<tr><td colspan="4"><small>// Keine Aufenthalte</small></td></tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</figure>
|
|
</main>
|
|
{{end}}
|
|
|
|
{{define "scripts"}}
|
|
<script src="/static/day.js"></script>
|
|
{{end}}
|
|
|
|
{{template "base" .}}
|