diff --git a/src/routes/fitness/[measure=fitnessMeasure]/add/+page.svelte b/src/routes/fitness/[measure=fitnessMeasure]/add/+page.svelte index 0987ca54..663cf5ed 100644 --- a/src/routes/fitness/[measure=fitnessMeasure]/add/+page.svelte +++ b/src/routes/fitness/[measure=fitnessMeasure]/add/+page.svelte @@ -3,12 +3,23 @@ import { goto } from '$app/navigation'; import { detectFitnessLang, t } from '$lib/js/fitnessI18n'; import { toast } from '$lib/js/toast.svelte'; + import { Weight, Percent, Ruler, ChevronDown, Plus, Minus, X } from '@lucide/svelte'; import SaveFab from '$lib/components/SaveFab.svelte'; const lang = $derived(detectFitnessLang($page.url.pathname)); const measureSlug = $derived(lang === 'en' ? 'measure' : 'messen'); let saving = $state(false); + let lastWeight = $state(/** @type {number|null} */ (null)); + + $effect(() => { + fetch('/api/fitness/measurements/latest') + .then(r => r.ok ? r.json() : null) + .then(d => { + if (d?.weight?.value != null) lastWeight = d.weight.value; + }) + .catch(() => {}); + }); let formDate = $state(new Date().toISOString().slice(0, 10)); let formWeight = $state(''); @@ -27,6 +38,14 @@ let formCalvesL = $state(''); let formCalvesR = $state(''); + function stepWeight(delta) { + const cur = Number(formWeight) || lastWeight || 0; + formWeight = String(Math.round((cur + delta) * 10) / 10); + } + + let showBodyFat = $state(false); + let showBodyParts = $state(false); + function buildBody() { /** @type {any} */ const body = { date: formDate }; @@ -80,52 +99,121 @@ {t('new_measurement', lang)} - Bocken
-

{t('new_measurement', lang)}

-
{ e.preventDefault(); saveMeasurement(); }}> -
- - + +
+
-

{t('general', lang)}

-
-
- - -
-
- - + +
+
+
+ +
+ + kg +
+
+ + {#if formWeight} + + {/if}
-

{t('body_parts_cm', lang)}

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ + + {#if showBodyFat} +
+
+ + % +
+
+ {/if} + + + + {#if showBodyParts} +
+
+ {lang === 'en' ? 'Upper body' : 'Oberkörper'} +
+
+
+
+
+
+ +
+ {lang === 'en' ? 'Arms' : 'Arme'} +
+
+
+
+
+
+
+
+
+ +
+ {lang === 'en' ? 'Core' : 'Rumpf'} +
+
+
+
+
+ +
+ {lang === 'en' ? 'Legs' : 'Beine'} +
+
+
+
+
+
+
+
+
+
+ {/if} @@ -133,60 +221,270 @@