GUI: Aufnahmedatum und -uhrzeit im Kopf der Detailansicht

Neuer Helfer recStamp(r) formatiert created_at als
"Di., 29.09.2026, 14:23 Uhr" und zeigt die Zeile in der .status-line
vor der Analysezeit. Wer aus der Inhaltssuche, einem Projekt-Pin oder
per Direktlink in die Detailansicht springt, hat in der linken Liste
keine markierte Zeile und sah den Aufnahmezeitpunkt bisher nirgends.

Keine Server-/DB-Änderung: /api/recordings/:id liefert created_at
bereits mit. Doku: Changelog 2026-09-29 + Notiz in Kapitel 03.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 08:29:23 +02:00
co-authored by Claude Opus 5
parent 95fab7b9e4
commit fae5a9e5d0
3 changed files with 39 additions and 0 deletions
+12
View File
@@ -1028,6 +1028,17 @@ function jumpToRecording(id) {
// ---------- Recordings ----------
// Analysis-duration counter. Shows the total wall time of a processing run
// (transcribe+diar+LLM): a live 1-Hz counter while it runs (from analysis_started_at),
// Aufnahmedatum + Uhrzeit fuer die Detailansicht: aus der Suche heraus geoeffnet
// ist die Aufnahme in der linken Liste nicht markiert, der Zeitpunkt also nirgends sichtbar.
function recStamp(r) {
if (!r || !r.created_at) return '';
const d = new Date(r.created_at);
if (isNaN(d)) return '';
const day = d.toLocaleDateString('de-DE', { weekday: 'short', day: '2-digit', month: '2-digit', year: 'numeric' });
const time = d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });
return `${day}, ${time} Uhr`;
}
// frozen to analysis_ms once done. Returns the inner <span> only; callers add the ⏱.
function anaTimeSpan(r) {
if (r.analysis_ms != null) return `<span class="ana-time">${fmt(r.analysis_ms)}</span>`;
@@ -1374,6 +1385,7 @@ async function openRecording(id) {
<div class="muted small hidden" id="mp3wait">🎧 Wiedergabe-Datei wird noch erzeugt – lädt automatisch nach…</div>
${vizHtml}
<div class="status-line">
${recStamp(r) ? `<div class="muted rec-time">🗓 ${recStamp(r)}</div>` : ''}
${anaTimeSpan(r) ? `<div class="muted ana-line">⏱ Analysezeit: ${anaTimeSpan(r)}</div>` : ''}
${transcribing ? '<div class="muted">📝 Transkription läuft… lange Aufnahmen dauern.</div>' : ''}
${transcribeFailed ? `<div class="err-inline">Transkription fehlgeschlagen. <button class="btn" id="retranscribe">Neu transkribieren</button></div>` : ''}