diff --git a/src/lib/components/AddActionButton.svelte b/src/lib/components/AddActionButton.svelte new file mode 100644 index 00000000..d0780bf0 --- /dev/null +++ b/src/lib/components/AddActionButton.svelte @@ -0,0 +1,82 @@ + + + + diff --git a/src/lib/components/fitness/ExerciseName.svelte b/src/lib/components/fitness/ExerciseName.svelte new file mode 100644 index 00000000..f93ac8dc --- /dev/null +++ b/src/lib/components/fitness/ExerciseName.svelte @@ -0,0 +1,28 @@ + + +{#if exercise} + {exercise.name} +{:else} + Unknown Exercise +{/if} + + diff --git a/src/lib/components/fitness/ExercisePicker.svelte b/src/lib/components/fitness/ExercisePicker.svelte new file mode 100644 index 00000000..0a5c1786 --- /dev/null +++ b/src/lib/components/fitness/ExercisePicker.svelte @@ -0,0 +1,217 @@ + + + +
+ + diff --git a/src/lib/components/fitness/FitnessChart.svelte b/src/lib/components/fitness/FitnessChart.svelte new file mode 100644 index 00000000..b9ccbe31 --- /dev/null +++ b/src/lib/components/fitness/FitnessChart.svelte @@ -0,0 +1,168 @@ + + +| SET | + {#if previousSets} +PREVIOUS | + {/if} +KG | +REPS | + {#if editable} +RPE | ++ {/if} + |
|---|---|---|---|---|---|
| {i + 1} | + {#if previousSets} ++ {#if previousSets[i]} + {previousSets[i].weight} × {previousSets[i].reps} + {:else} + — + {/if} + | + {/if} ++ {#if editable} + handleInput(i, 'weight', e)} + /> + {:else} + {set.weight ?? '—'} + {/if} + | ++ {#if editable} + handleInput(i, 'reps', e)} + /> + {:else} + {set.reps ?? '—'} + {/if} + | + {#if editable} ++ handleInput(i, 'rpe', e)} + /> + | ++ + | + {/if} +
Also works: {exercise.secondaryMuscles.join(', ')}
+ {/if} + {#if exercise?.instructions?.length} +No history for this exercise yet.
+ {:else} + {#each history as entry (entry.sessionId)} +| SET | KG | REPS | EST. 1RM |
|---|---|---|---|
| {i + 1} | +{set.weight} | +{set.reps}{#if set.rpe} @{set.rpe}{/if} | +{epley1rm(set.weight, set.reps)} kg | +
Not enough data to display charts yet.
+ {/if} +| REPS | BEST PERFORMANCE | EST. 1RM |
|---|---|---|
| {rec.reps} | +{rec.weight} kg × {rec.reps}{#if rec.date} ({new Date(rec.date).toLocaleDateString()}){/if} | +{rec.estimated1rm ?? epley1rm(rec.weight, rec.reps)} kg | +
No workouts yet. Start your first workout!
+ {:else} + {#each Object.entries(grouped) as [month, monthSessions] (month)} +{formatDate(session.startTime)} · {formatTime(session.startTime)}
+| SET | +KG | +REPS | +RPE | +EST. 1RM | +
|---|---|---|---|---|
| {i + 1} | +{set.weight ?? '—'} | +{set.reps ?? '—'} | +{set.rpe ?? '—'} | +{set.weight && set.reps ? epley1rm(set.weight, set.reps) : '—'} | +
{session.notes}
+No workout data to display yet.
+ {/if} + + {#if (stats.weightChart?.data?.length ?? 0) > 1} +My Templates ({templates.length})
+No templates yet. Create one or start an empty workout.
+ {/if} +