mirror of
https://github.com/kuhyx/screen-locker.git
synced 2026-07-04 13:23:13 +02:00
- Remove automatic rest timer after each set - Add inline threshold controls (success/fail streaks) on each exercise card during an active workout - Settings: auto-save on change with 600 ms debounce; replace Save button with Reset to defaults - Fix weight display asymmetry in settings (fixed 72 px width, centred) - Progress screen (renamed from History): per-exercise view shows streak counters, weight chart (kg Y-axis, date X-axis, rolling-2 avg for total volume), exercise-filtered calendar, and per-exercise session tiles - Total view shows rolling-2-session average volume chart + full calendar + all-session list - Add WorkoutCalendar widget with monthly navigation - Store warmupDone in ExerciseResult JSON; surface warmup per session tile Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
830 B
Dart
31 lines
830 B
Dart
/// All set results for one exercise in a workout session.
|
|
library;
|
|
|
|
import 'package:workout_app/models/exercise.dart';
|
|
import 'package:workout_app/models/set_result.dart';
|
|
|
|
class ExerciseResult {
|
|
const ExerciseResult({
|
|
required this.exercise,
|
|
required this.sets,
|
|
this.warmupDone = false,
|
|
});
|
|
|
|
final Exercise exercise;
|
|
final List<SetResult> sets;
|
|
final bool warmupDone;
|
|
|
|
/// True when every set was fully completed.
|
|
bool get succeeded => sets.isNotEmpty && sets.every((s) => s.succeeded);
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'name': exercise.name,
|
|
'targetSets': exercise.sets,
|
|
'targetReps': exercise.reps,
|
|
'targetWeight': exercise.weight,
|
|
'warmupDone': warmupDone,
|
|
'sets': sets.map((s) => s.toJson()).toList(),
|
|
'succeeded': succeeded,
|
|
};
|
|
}
|