Hidden field values do not messup logged set
This commit is contained in:
@@ -271,7 +271,7 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.weight ?? ''}
|
value={set.weight === 0 ? '' : (set.weight ?? '')}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'weight', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'weight', parseFloat(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -282,8 +282,8 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.reps ?? ''}
|
value={set.reps === 0 ? '' : (set.reps ?? '')}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'reps', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'reps', parseInt(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -293,7 +293,7 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.bodyWeightPercentage ?? 100}
|
value={set.bodyWeightPercentage === 0 ? '' : (set.bodyWeightPercentage ?? 100)}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'bodyWeightPercentage', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'bodyWeightPercentage', parseFloat(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -304,7 +304,7 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.durationSeconds ?? ''}
|
value={set.durationSeconds === 0 ? '' : (set.durationSeconds ?? '')}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'durationSeconds', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'durationSeconds', parseFloat(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -315,7 +315,7 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.distanceMeters ?? ''}
|
value={set.distanceMeters === 0 ? '' : (set.distanceMeters ?? '')}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'distanceMeters', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'distanceMeters', parseFloat(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -326,7 +326,7 @@ const History: React.FC<HistoryProps> = ({ sessions, onUpdateSession, onDeleteSe
|
|||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
className="w-full bg-transparent text-sm text-on-surface focus:outline-none"
|
||||||
value={set.height ?? ''}
|
value={set.height === 0 ? '' : (set.height ?? '')}
|
||||||
onChange={(e) => handleUpdateSet(set.id, 'height', parseFloat(e.target.value))}
|
onChange={(e) => handleUpdateSet(set.id, 'height', parseFloat(e.target.value))}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -121,14 +121,31 @@ const Tracker: React.FC<TrackerProps> = ({ userId, userWeight, activeSession, ac
|
|||||||
setLastSet(set);
|
setLastSet(set);
|
||||||
|
|
||||||
if (set) {
|
if (set) {
|
||||||
if (set.weight != null) setWeight(set.weight.toString());
|
setWeight(set.weight?.toString() || '');
|
||||||
if (set.reps != null) setReps(set.reps.toString());
|
setReps(set.reps?.toString() || '');
|
||||||
if (set.durationSeconds != null) setDuration(set.durationSeconds.toString());
|
setDuration(set.durationSeconds?.toString() || '');
|
||||||
if (set.distanceMeters != null) setDistance(set.distanceMeters.toString());
|
setDistance(set.distanceMeters?.toString() || '');
|
||||||
if (set.height != null) setHeight(set.height.toString());
|
setHeight(set.height?.toString() || '');
|
||||||
} else {
|
} else {
|
||||||
setWeight(''); setReps(''); setDuration(''); setDistance(''); setHeight('');
|
setWeight(''); setReps(''); setDuration(''); setDistance(''); setHeight('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear fields not relevant to the selected exercise type
|
||||||
|
if (selectedExercise.type !== ExerciseType.STRENGTH && selectedExercise.type !== ExerciseType.BODYWEIGHT) {
|
||||||
|
setWeight('');
|
||||||
|
}
|
||||||
|
if (selectedExercise.type !== ExerciseType.STRENGTH && selectedExercise.type !== ExerciseType.BODYWEIGHT && selectedExercise.type !== ExerciseType.PLYOMETRIC) {
|
||||||
|
setReps('');
|
||||||
|
}
|
||||||
|
if (selectedExercise.type !== ExerciseType.CARDIO && selectedExercise.type !== ExerciseType.STATIC) {
|
||||||
|
setDuration('');
|
||||||
|
}
|
||||||
|
if (selectedExercise.type !== ExerciseType.CARDIO && selectedExercise.type !== ExerciseType.LONG_JUMP) {
|
||||||
|
setDistance('');
|
||||||
|
}
|
||||||
|
if (selectedExercise.type !== ExerciseType.HIGH_JUMP) {
|
||||||
|
setHeight('');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
updateSelection();
|
updateSelection();
|
||||||
@@ -158,14 +175,37 @@ const Tracker: React.FC<TrackerProps> = ({ userId, userWeight, activeSession, ac
|
|||||||
exerciseName: selectedExercise.name,
|
exerciseName: selectedExercise.name,
|
||||||
type: selectedExercise.type,
|
type: selectedExercise.type,
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
...(weight && { weight: parseFloat(weight) }),
|
|
||||||
...(reps && { reps: parseInt(reps) }),
|
|
||||||
...(duration && { durationSeconds: parseInt(duration) }),
|
|
||||||
...(distance && { distanceMeters: parseFloat(distance) }),
|
|
||||||
...(height && { height: parseFloat(height) }),
|
|
||||||
...((selectedExercise.type === ExerciseType.BODYWEIGHT || selectedExercise.type === ExerciseType.STATIC) && { bodyWeightPercentage: parseFloat(bwPercentage) || 100 })
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
switch (selectedExercise.type) {
|
||||||
|
case ExerciseType.STRENGTH:
|
||||||
|
if (weight) newSet.weight = parseFloat(weight);
|
||||||
|
if (reps) newSet.reps = parseInt(reps);
|
||||||
|
break;
|
||||||
|
case ExerciseType.BODYWEIGHT:
|
||||||
|
if (weight) newSet.weight = parseFloat(weight);
|
||||||
|
if (reps) newSet.reps = parseInt(reps);
|
||||||
|
newSet.bodyWeightPercentage = parseFloat(bwPercentage) || 100;
|
||||||
|
break;
|
||||||
|
case ExerciseType.CARDIO:
|
||||||
|
if (duration) newSet.durationSeconds = parseInt(duration);
|
||||||
|
if (distance) newSet.distanceMeters = parseFloat(distance);
|
||||||
|
break;
|
||||||
|
case ExerciseType.STATIC:
|
||||||
|
if (duration) newSet.durationSeconds = parseInt(duration);
|
||||||
|
newSet.bodyWeightPercentage = parseFloat(bwPercentage) || 100;
|
||||||
|
break;
|
||||||
|
case ExerciseType.HIGH_JUMP:
|
||||||
|
if (height) newSet.height = parseFloat(height);
|
||||||
|
break;
|
||||||
|
case ExerciseType.LONG_JUMP:
|
||||||
|
if (distance) newSet.distanceMeters = parseFloat(distance);
|
||||||
|
break;
|
||||||
|
case ExerciseType.PLYOMETRIC:
|
||||||
|
if (reps) newSet.reps = parseInt(reps);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
onSetAdded(newSet);
|
onSetAdded(newSet);
|
||||||
|
|
||||||
if (activePlan) {
|
if (activePlan) {
|
||||||
@@ -564,11 +604,27 @@ const Tracker: React.FC<TrackerProps> = ({ userId, userWeight, activeSession, ac
|
|||||||
<div>
|
<div>
|
||||||
<div className="text-base font-medium text-on-surface">{set.exerciseName}</div>
|
<div className="text-base font-medium text-on-surface">{set.exerciseName}</div>
|
||||||
<div className="text-sm text-on-surface-variant">
|
<div className="text-sm text-on-surface-variant">
|
||||||
{set.weight != null && `${set.weight}kg `}
|
{set.type === ExerciseType.STRENGTH &&
|
||||||
{set.reps != null && `x ${set.reps}`}
|
`${set.weight ? `${set.weight}kg` : ''} ${set.reps ? `x ${set.reps}` : ''}`.trim()
|
||||||
{set.distanceMeters != null && `${set.distanceMeters}m`}
|
}
|
||||||
{set.durationSeconds != null && `${set.durationSeconds}s`}
|
{set.type === ExerciseType.BODYWEIGHT &&
|
||||||
{set.height != null && `${set.height}cm`}
|
`${set.weight ? `${set.weight}kg` : ''} ${set.reps ? `x ${set.reps}` : ''}`.trim()
|
||||||
|
}
|
||||||
|
{set.type === ExerciseType.CARDIO &&
|
||||||
|
`${set.durationSeconds ? `${set.durationSeconds}s` : ''} ${set.distanceMeters ? `/ ${set.distanceMeters}m` : ''}`.trim()
|
||||||
|
}
|
||||||
|
{set.type === ExerciseType.STATIC &&
|
||||||
|
`${set.durationSeconds ? `${set.durationSeconds}s` : ''}`.trim()
|
||||||
|
}
|
||||||
|
{set.type === ExerciseType.HIGH_JUMP &&
|
||||||
|
`${set.height ? `${set.height}cm` : ''}`.trim()
|
||||||
|
}
|
||||||
|
{set.type === ExerciseType.LONG_JUMP &&
|
||||||
|
`${set.distanceMeters ? `${set.distanceMeters}m` : ''}`.trim()
|
||||||
|
}
|
||||||
|
{set.type === ExerciseType.PLYOMETRIC &&
|
||||||
|
`${set.reps ? `x ${set.reps}` : ''}`.trim()
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user