From df36e285aca1fb4ce106d9c405082487049b6140 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Tue, 21 Apr 2026 12:12:22 +0200 Subject: [PATCH] refactor(fitness): move body-parts overview to stats page Body-parts grid now lives on /fitness/stats, and per-part history pages moved from /fitness/measure/history/ to /fitness/stats/history/. Measure page keeps weight/BF entry and the body-parts measure launcher. --- package.json | 2 +- .../[measure=fitnessMeasure]/+page.svelte | 221 ----------------- .../[stats=fitnessStats]/+page.server.ts | 8 +- .../fitness/[stats=fitnessStats]/+page.svelte | 229 +++++++++++++++++- .../[part]/+page.server.ts | 0 .../[part]/+page.svelte | 3 +- 6 files changed, 236 insertions(+), 227 deletions(-) rename src/routes/fitness/{[measure=fitnessMeasure] => [stats=fitnessStats]}/[history=fitnessHistory]/[part]/+page.server.ts (100%) rename src/routes/fitness/{[measure=fitnessMeasure] => [stats=fitnessStats]}/[history=fitnessHistory]/[part]/+page.svelte (98%) diff --git a/package.json b/package.json index 6a16b588..81d20972 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homepage", - "version": "1.40.3", + "version": "1.40.4", "private": true, "type": "module", "scripts": { diff --git a/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte b/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte index a380adce..5c6a26f6 100644 --- a/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte +++ b/src/routes/fitness/[measure=fitnessMeasure]/+page.svelte @@ -6,11 +6,9 @@ import { confirm } from '$lib/js/confirmDialog.svelte'; import SaveFab from '$lib/components/SaveFab.svelte'; import DatePicker from '$lib/components/DatePicker.svelte'; - import { BODY_PART_CARDS, bodyPartSlug } from '$lib/js/fitnessBodyParts'; const lang = $derived(detectFitnessLang($page.url.pathname)); const measureSlug = $derived(lang === 'en' ? 'measure' : 'messen'); - const historySlug = $derived(lang === 'en' ? 'history' : 'verlauf'); import { getWorkout } from '$lib/js/workout.svelte'; import PeriodTracker from '$lib/components/fitness/PeriodTracker.svelte'; @@ -99,26 +97,6 @@ { label: t('r_calf', lang), key: 'rightCalf', value: latestBp.rightCalf } ]); - /** @param {import('$lib/js/fitnessBodyParts').BodyPartCard} c */ - function currentValue(c) { - if (c.paired) { - const l = /** @type {number|undefined} */ (latestBp[c.dbLeft]); - const r = /** @type {number|undefined} */ (latestBp[c.dbRight]); - return { left: l ?? null, right: r ?? null }; - } - const v = /** @type {number|undefined} */ (latestBp[c.db]); - return { value: v ?? null }; - } - - /** @param {import('$lib/js/fitnessBodyParts').BodyPartCard} c */ - function hasAny(c) { - const v = currentValue(c); - if (c.paired) return v.left != null || v.right != null; - return v.value != null; - } - - const cardsWithData = $derived(BODY_PART_CARDS.filter(hasAny)); - /** @param {string} id */ async function deleteMeasurement(id) { if (!await confirm(t('delete_measurement_confirm', lang))) return; @@ -340,55 +318,6 @@ {/if} - {#if cardsWithData.length > 0} -
-

{t('body_parts', lang)}

- -
- {/if} - {#if measurements.length > 0}