From e5784272c0a9b85c2876fe19136fde700c9c62a1 Mon Sep 17 00:00:00 2001 From: rene Date: Fri, 17 Apr 2026 09:33:11 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20L=C3=A4ufigkeit=20=E2=80=94=20Feldname,?= =?UTF-8?q?=20Abstand=20zur=20letzten=20L=C3=A4ufigkeit=20auto-berechnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/worktrees/agent-a1140340 | 1 + .claude/worktrees/agent-a88ce9b7 | 1 + .claude/worktrees/agent-aa5d905d | 1 + backend/static/js/app.js | 2 +- backend/static/js/pages/health.js | 27 +++++++++++++++++++++++---- 5 files changed, 27 insertions(+), 5 deletions(-) create mode 160000 .claude/worktrees/agent-a1140340 create mode 160000 .claude/worktrees/agent-a88ce9b7 create mode 160000 .claude/worktrees/agent-aa5d905d diff --git a/.claude/worktrees/agent-a1140340 b/.claude/worktrees/agent-a1140340 new file mode 160000 index 0000000..692e6f9 --- /dev/null +++ b/.claude/worktrees/agent-a1140340 @@ -0,0 +1 @@ +Subproject commit 692e6f937856ace638d9773c17f7447ca439d881 diff --git a/.claude/worktrees/agent-a88ce9b7 b/.claude/worktrees/agent-a88ce9b7 new file mode 160000 index 0000000..a60db21 --- /dev/null +++ b/.claude/worktrees/agent-a88ce9b7 @@ -0,0 +1 @@ +Subproject commit a60db217827213e019a15bca7c0ab05a5b183275 diff --git a/.claude/worktrees/agent-aa5d905d b/.claude/worktrees/agent-aa5d905d new file mode 160000 index 0000000..9bd8701 --- /dev/null +++ b/.claude/worktrees/agent-aa5d905d @@ -0,0 +1 @@ +Subproject commit 9bd8701a1d38e3fdb1823bb936b260d7ec0fe165 diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 37b0a51..9213d44 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '87'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '88'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const App = (() => { diff --git a/backend/static/js/pages/health.js b/backend/static/js/pages/health.js index 05d345d..71275c9 100644 --- a/backend/static/js/pages/health.js +++ b/backend/static/js/pages/health.js @@ -869,7 +869,7 @@ window.Page_health = (() => { placeholder="${_formPlaceholder(t)}"> ` : ''}
- +
@@ -1130,18 +1130,37 @@ window.Page_health = (() => { `; case 'laeufigkeit': { const prevCycles = (_data['laeufigkeit'] || []).filter(e => e !== entry && e?.datum); + const sorted = [...prevCycles].sort((a, b) => a.datum.localeCompare(b.datum)); + const lastCycle = sorted[sorted.length - 1]; + + // Abstand zur letzten Läufigkeit (in Tagen) + let daysSinceLast = null; + if (lastCycle) { + daysSinceLast = Math.round((new Date() - new Date(lastCycle.datum)) / 86400000); + } + + // Durchschnittlicher Zyklus aus ≥2 Einträgen, sonst gemessener Abstand let avgInterval = 0; - if (prevCycles.length >= 2) { - const sorted = [...prevCycles].sort((a, b) => a.datum.localeCompare(b.datum)); + if (sorted.length >= 2) { const intervals = []; for (let i = 1; i < sorted.length; i++) { intervals.push(Math.round((new Date(sorted[i].datum) - new Date(sorted[i-1].datum)) / 86400000)); } avgInterval = Math.round(intervals.reduce((a, b) => a + b, 0) / intervals.length); + } else if (daysSinceLast !== null) { + avgInterval = daysSinceLast; // erster gemessener Abstand als Vorschlag } const defaultInterval = avgInterval || (entry?.intervall_tage) || 180; - // Auto-berechne nächstes Datum aus Startdatum + Interval + + const lastInfo = lastCycle ? ` +
+ Letzte Läufigkeit: ${UI.time.format(lastCycle.datum + 'T00:00:00')} + — vor ${daysSinceLast} Tagen +
` : ''; return ` + ${lastInfo}