diff --git a/lib/models/workouts/base_config.g.dart b/lib/models/workouts/base_config.g.dart index aa5f7a11..a13e315d 100644 --- a/lib/models/workouts/base_config.g.dart +++ b/lib/models/workouts/base_config.g.dart @@ -17,6 +17,7 @@ BaseConfig _$BaseConfigFromJson(Map json) { 'operation', 'step', 'need_log_to_apply', + 'repeat', 'requirements' ], ); @@ -24,11 +25,12 @@ BaseConfig _$BaseConfigFromJson(Map json) { id: (json['id'] as num?)?.toInt(), slotEntryId: (json['slot_entry'] as num).toInt(), iteration: (json['iteration'] as num).toInt(), + repeat: json['repeat'] as bool? ?? false, value: stringOrIntToNum(json['value']), - operation: json['operation'] as String, - step: json['step'] as String, - needLogToApply: json['need_log_to_apply'] as bool, - requirements: json['requirements'], + operation: json['operation'] as String? ?? 'r', + step: json['step'] as String? ?? 'abs', + needLogToApply: json['need_log_to_apply'] as bool? ?? false, + requirements: json['requirements'] ?? null, ); } @@ -39,5 +41,6 @@ Map _$BaseConfigToJson(BaseConfig instance) => slots = []; - Day() { - slots = []; - } + Day({ + this.id, + required this.routineId, + required this.name, + required this.description, + this.isRest = false, + this.needLogsToAdvance = false, + this.type = 'custom', + this.order = 0, + this.config = null, + this.slots = const [], + }); Day.empty() { name = 'new day'; diff --git a/lib/models/workouts/day.g.dart b/lib/models/workouts/day.g.dart index b240f9bd..5bc8f7fd 100644 --- a/lib/models/workouts/day.g.dart +++ b/lib/models/workouts/day.g.dart @@ -21,20 +21,21 @@ Day _$DayFromJson(Map json) { 'config' ], ); - return Day() - ..id = (json['id'] as num?)?.toInt() - ..routineId = (json['routine'] as num).toInt() - ..name = json['name'] as String - ..description = json['description'] as String - ..isRest = json['is_rest'] as bool - ..needLogsToAdvance = json['need_logs_to_advance'] as bool - ..type = json['type'] as String - ..order = json['order'] as num - ..config = json['config'] - ..slots = (json['slots'] as List?) + return Day( + id: (json['id'] as num?)?.toInt(), + routineId: (json['routine'] as num).toInt(), + name: json['name'] as String, + description: json['description'] as String, + isRest: json['is_rest'] as bool, + needLogsToAdvance: json['need_logs_to_advance'] as bool, + type: json['type'] as String, + order: json['order'] as num, + config: json['config'], + slots: (json['slots'] as List?) ?.map((e) => Slot.fromJson(e as Map)) .toList() ?? - []; + [], + ); } Map _$DayToJson(Day instance) => { diff --git a/lib/models/workouts/day_data.dart b/lib/models/workouts/day_data.dart index 07d79bb0..8ed4fe88 100644 --- a/lib/models/workouts/day_data.dart +++ b/lib/models/workouts/day_data.dart @@ -42,9 +42,9 @@ class DayData { DayData({ required this.iteration, required this.date, - required this.label, + this.label = '', required this.day, - required this.slots, + this.slots = const [], }); // Boilerplate diff --git a/lib/models/workouts/day_data.g.dart b/lib/models/workouts/day_data.g.dart index 957e4809..08e08e19 100644 --- a/lib/models/workouts/day_data.g.dart +++ b/lib/models/workouts/day_data.g.dart @@ -14,11 +14,12 @@ DayData _$DayDataFromJson(Map json) { return DayData( iteration: (json['iteration'] as num).toInt(), date: DateTime.parse(json['date'] as String), - label: json['label'] as String?, + label: json['label'] as String? ?? '', day: json['day'] == null ? null : Day.fromJson(json['day'] as Map), - slots: (json['slots'] as List) - .map((e) => SlotData.fromJson(e as Map)) - .toList(), + slots: (json['slots'] as List?) + ?.map((e) => SlotData.fromJson(e as Map)) + .toList() ?? + const [], ); } diff --git a/lib/models/workouts/slot_data.dart b/lib/models/workouts/slot_data.dart index 9ea3dc48..cd36464e 100644 --- a/lib/models/workouts/slot_data.dart +++ b/lib/models/workouts/slot_data.dart @@ -38,7 +38,8 @@ class SlotData { SlotData({ required this.comment, required this.isSuperset, - required this.exerciseIds, + this.exerciseIds = const [], + this.setConfigs = const [], }); // Boilerplate diff --git a/lib/models/workouts/slot_data.g.dart b/lib/models/workouts/slot_data.g.dart index 77468e5b..cafada4a 100644 --- a/lib/models/workouts/slot_data.g.dart +++ b/lib/models/workouts/slot_data.g.dart @@ -14,10 +14,13 @@ SlotData _$SlotDataFromJson(Map json) { return SlotData( comment: json['comment'] as String, isSuperset: json['is_superset'] as bool, - exerciseIds: (json['exercises'] as List).map((e) => (e as num).toInt()).toList(), - )..setConfigs = (json['sets'] as List) - .map((e) => SetConfigData.fromJson(e as Map)) - .toList(); + exerciseIds: + (json['exercises'] as List?)?.map((e) => (e as num).toInt()).toList() ?? const [], + setConfigs: (json['sets'] as List?) + ?.map((e) => SetConfigData.fromJson(e as Map)) + .toList() ?? + const [], + ); } Map _$SlotDataToJson(SlotData instance) => { diff --git a/test_data/routines.dart b/test_data/routines.dart index 3e90f1f9..8745420a 100644 --- a/test_data/routines.dart +++ b/test_data/routines.dart @@ -19,10 +19,12 @@ import 'package:wger/models/exercises/exercise.dart'; import 'package:wger/models/workouts/base_config.dart'; import 'package:wger/models/workouts/day.dart'; +import 'package:wger/models/workouts/day_data.dart'; import 'package:wger/models/workouts/log.dart'; import 'package:wger/models/workouts/repetition_unit.dart'; import 'package:wger/models/workouts/routine.dart'; import 'package:wger/models/workouts/slot.dart'; +import 'package:wger/models/workouts/slot_data.dart'; import 'package:wger/models/workouts/slot_entry.dart'; import 'package:wger/models/workouts/weight_unit.dart'; @@ -171,28 +173,79 @@ Routine getRoutine({List? exercises}) { slotSideRaises.addExerciseBase(testExercise[5]); slotSideRaises.entries.add(slotEntrySideRaises); - final dayChestShoulders = Day() - ..id = 1 - ..routineId = 1 - ..description = 'chest, shoulders'; - dayChestShoulders.slots.add(slotBenchPress); - dayChestShoulders.slots.add(slotSideRaises); + final dayChestShoulders = Day( + id: 1, + routineId: 1, + name: 'first day', + description: 'chest, shoulders', + slots: [slotBenchPress, slotSideRaises], + ); - final dayLegs = Day() - ..id = 2 - ..routineId = 1 - ..description = 'legs'; - dayLegs.slots.add(slotSquat); + final dayLegs = Day( + id: 2, + routineId: 1, + name: 'second day', + description: 'legs', + slots: [slotSquat], + ); final routine = Routine( - id: 1, - created: DateTime(2021, 01, 01), - name: '3 day workout', - start: DateTime(2024, 11, 01), - end: DateTime(2024, 12, 01), - days: [dayChestShoulders, dayLegs], - logs: [log1, log2, log3], - ); + id: 1, + created: DateTime(2021, 01, 01), + name: '3 day workout', + start: DateTime(2024, 11, 01), + end: DateTime(2024, 12, 01), + days: [ + dayChestShoulders, + dayLegs + ], + logs: [ + log1, + log2, + log3 + ], + dayDataCurrentIteration: [ + DayData( + iteration: 1, + date: DateTime(2024, 11, 01), + label: '', + day: dayChestShoulders, + slots: [ + SlotData( + comment: 'foo', + isSuperset: false, + exerciseIds: [1], + setConfigs: [ + // SetConfigData( + // reps: 10, + // weight: 10, + // rir: '1.5', + // ), + ], + ) + ], + ), + DayData( + iteration: 1, + date: DateTime(2024, 11, 02), + label: '', + day: dayLegs, + slots: [ + SlotData( + comment: 'foo', + isSuperset: false, + exerciseIds: [8], + setConfigs: [ + // SetConfigData( + // reps: 8, + // weight: 50, + // rir: '', + // ), + ], + ) + ], + ), + ]); return routine; }