From 82a27c3f515299014f5525fde72d51e6520bf9d6 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Fri, 10 Apr 2026 08:22:10 +0200 Subject: [PATCH] feat: inline measurement form on /fitness/measure, remove /add route Move weight hero card, body fat and body parts accordions directly onto the main measure page. SaveFab only appears when a field has been changed. After saving, form resets and history updates in place. Fix response unwrapping (created.measurement) that caused Invalid Date. --- .../[measure=fitnessMeasure]/+page.svelte | 505 ++++++++++++++++-- .../[measure=fitnessMeasure]/add/+page.svelte | 490 ----------------- 2 files changed, 468 insertions(+), 527 deletions(-) delete mode 100644 src/routes/fitness/[measure=fitnessMeasure]/add/+page.svelte diff --git a/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte b/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte index 08d886a2..89e993e8 100644 --- a/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte +++ b/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte @@ -1,14 +1,14 @@ {lang === 'en' ? 'Measure' : 'Messen'} - Bocken @@ -180,19 +286,115 @@ {/if} -
-

{t('latest', lang)}

-
-
- {t('weight', lang)} - {latest.weight?.value ?? '—'} kg -
-
- {t('body_fat', lang)} - {latest.bodyFatPercent?.value ?? '—'}% -
+ +
{ e.preventDefault(); saveMeasurement(); }}> +
+
-
+ +
+
+
+ +
+ + kg +
+ +
+ + {#if formWeight} + + {/if} +
+ + + {#if showBodyFat} +
+
+ + % +
+
+ {/if} + + + {#if showBodyParts} +
+
+ {lang === 'en' ? 'Upper body' : 'Oberkörper'} +
+
+
+
+
+
+ +
+ {lang === 'en' ? 'Arms' : 'Arme'} +
+
+
+
+
+
+
+
+
+ +
+ {lang === 'en' ? 'Core' : 'Rumpf'} +
+
+
+
+
+ +
+ {lang === 'en' ? 'Legs' : 'Beine'} +
+
+
+
+
+
+
+
+
+
+ {/if} + + {#if formDirty && !workout.active} + + {/if} + {#if bodyPartFields.some(f => f.value != null)}
@@ -248,10 +450,6 @@ {/each} -{#if !workout.active} - -{/if} -