Fix: Läufigkeit — Feldname, Abstand zur letzten Läufigkeit auto-berechnen
This commit is contained in:
parent
e8b0ec7efb
commit
e5784272c0
5 changed files with 27 additions and 5 deletions
1
.claude/worktrees/agent-a1140340
Submodule
1
.claude/worktrees/agent-a1140340
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 692e6f937856ace638d9773c17f7447ca439d881
|
||||
1
.claude/worktrees/agent-a88ce9b7
Submodule
1
.claude/worktrees/agent-a88ce9b7
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a60db217827213e019a15bca7c0ab05a5b183275
|
||||
1
.claude/worktrees/agent-aa5d905d
Submodule
1
.claude/worktrees/agent-aa5d905d
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 9bd8701a1d38e3fdb1823bb936b260d7ec0fe165
|
||||
|
|
@ -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 = (() => {
|
||||
|
||||
|
|
|
|||
|
|
@ -869,7 +869,7 @@ window.Page_health = (() => {
|
|||
placeholder="${_formPlaceholder(t)}">
|
||||
</div>` : ''}
|
||||
<div class="form-group">
|
||||
<label class="form-label">Start *</label>
|
||||
<label class="form-label">${t === 'laeufigkeit' ? 'Beginn der Läufigkeit *' : 'Start *'}</label>
|
||||
<input class="form-control" type="date" name="datum"
|
||||
value="${entry?.datum || today}" required>
|
||||
</div>
|
||||
|
|
@ -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 ? `
|
||||
<div style="font-size:var(--text-xs);color:var(--c-text-secondary);
|
||||
background:var(--c-surface-2);border-radius:var(--radius-md);
|
||||
padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3)">
|
||||
Letzte Läufigkeit: <strong>${UI.time.format(lastCycle.datum + 'T00:00:00')}</strong>
|
||||
— vor <strong>${daysSinceLast} Tagen</strong>
|
||||
</div>` : '';
|
||||
return `
|
||||
${lastInfo}
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Dauer (Tage)</label>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue