fitness: add inline rest timer, set removal, previous set improvements, and session editing

Redesign rest timer as inline bar with linear decay placed after completed set.
Add set removal (X button), @ separator column for RPE, and N/A for missing
previous values. Enable editing past workouts (date, duration, exercises, sets)
from the history detail page.
This commit is contained in:
2026-03-20 06:50:19 +01:00
parent 828d4a83b0
commit bbe60c82a9
5 changed files with 584 additions and 167 deletions
@@ -49,7 +49,7 @@ export const PUT: RequestHandler = async ({ params, request, locals }) => {
}
const data = await request.json();
const { name, exercises, startTime, endTime, notes } = data;
const { name, exercises, startTime, endTime, duration, notes } = data;
if (exercises && (!Array.isArray(exercises) || exercises.length === 0)) {
return json({ error: 'At least one exercise is required' }, { status: 400 });
@@ -60,10 +60,11 @@ export const PUT: RequestHandler = async ({ params, request, locals }) => {
if (exercises) updateData.exercises = exercises;
if (startTime) updateData.startTime = new Date(startTime);
if (endTime) updateData.endTime = new Date(endTime);
if (duration !== undefined) updateData.duration = duration;
if (notes !== undefined) updateData.notes = notes;
// Calculate duration if both times are provided
if (updateData.startTime && updateData.endTime) {
// Calculate duration from times if both provided but duration wasn't explicit
if (updateData.startTime && updateData.endTime && duration === undefined) {
updateData.duration = Math.round(((updateData.endTime as Date).getTime() - (updateData.startTime as Date).getTime()) / (1000 * 60));
}