mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 00:17:48 +01:00
Rename some functions, a bit of cleanup
This commit is contained in:
@@ -12,9 +12,8 @@ import 'package:wger/theme/theme.dart';
|
||||
|
||||
import '../test/exercises/contribute_exercise_test.mocks.dart';
|
||||
import '../test/measurements/measurement_categories_screen_test.mocks.dart';
|
||||
import '../test/nutrition/nutritional_plan_form_test.mocks.dart';
|
||||
import '../test/weight/weight_screen_test.mocks.dart' as weight;
|
||||
import '../test/workout/weight_unit_form_widget_test.mocks.dart';
|
||||
import '../test/workout/workout_form_test.mocks.dart';
|
||||
import '../test_data/body_weight.dart';
|
||||
import '../test_data/exercises.dart';
|
||||
import '../test_data/measurements.dart';
|
||||
@@ -25,7 +24,7 @@ import '../test_data/routines.dart';
|
||||
Widget createDashboardScreen({locale = 'en'}) {
|
||||
final mockWorkoutProvider = MockRoutinesProvider();
|
||||
when(mockWorkoutProvider.activeRoutine)
|
||||
.thenReturn(getRoutine(exercises: getScreenshotExercises()));
|
||||
.thenReturn(getTestRoutine(exercises: getScreenshotExercises()));
|
||||
|
||||
final Map<String, dynamic> logs = {
|
||||
'results': [
|
||||
@@ -41,13 +40,13 @@ Widget createDashboardScreen({locale = 'en'}) {
|
||||
};
|
||||
when(mockWorkoutProvider.fetchSessionData()).thenAnswer((a) => Future.value(logs));
|
||||
|
||||
final mockNutritionProvider = MockNutritionPlansProvider();
|
||||
final mockNutritionProvider = weight.MockNutritionPlansProvider();
|
||||
|
||||
when(mockNutritionProvider.currentPlan)
|
||||
.thenAnswer((realInvocation) => getNutritionalPlanScreenshot());
|
||||
when(mockNutritionProvider.items).thenReturn([getNutritionalPlanScreenshot()]);
|
||||
|
||||
final mockWeightProvider = MockBodyWeightProvider();
|
||||
final mockWeightProvider = weight.MockBodyWeightProvider();
|
||||
when(mockWeightProvider.items).thenReturn(getScreenshotWeightEntries());
|
||||
|
||||
final mockMeasurementProvider = MockMeasurementProvider();
|
||||
|
||||
@@ -14,7 +14,7 @@ Widget createWorkoutDetailScreen({locale = 'en'}) {
|
||||
final key = GlobalKey<NavigatorState>();
|
||||
|
||||
final mockWorkoutProvider = MockRoutinesProvider();
|
||||
final workout = getRoutine(exercises: getScreenshotExercises());
|
||||
final workout = getTestRoutine(exercises: getScreenshotExercises());
|
||||
when(mockWorkoutProvider.activeRoutine).thenReturn(workout);
|
||||
when(mockWorkoutProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) => Future.value(workout));
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import '../test_data/routines.dart';
|
||||
Widget createGymModeScreen({locale = 'en'}) {
|
||||
final key = GlobalKey<NavigatorState>();
|
||||
final bases = getTestExercises();
|
||||
final workout = getRoutine(exercises: getScreenshotExercises());
|
||||
final workout = getTestRoutine(exercises: getScreenshotExercises());
|
||||
|
||||
final mockExerciseProvider = MockExercisesProvider();
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ class Exercise extends Equatable {
|
||||
variationId = baseData.variationId;
|
||||
}
|
||||
|
||||
/// Returns exercises for the given language
|
||||
/// Returns translation for the given language
|
||||
///
|
||||
/// If no translation is found, English will be returned
|
||||
///
|
||||
@@ -181,7 +181,7 @@ class Exercise extends Equatable {
|
||||
/// translation in English. This is something that should never happen,
|
||||
/// but we can't make sure that no local installation hasn't deleted
|
||||
/// the entry in English.
|
||||
Translation getExercise(String language) {
|
||||
Translation getTranslation(String language) {
|
||||
// If the language is in the form en-US, take the language code only
|
||||
final languageCode = language.split('-')[0];
|
||||
|
||||
|
||||
@@ -63,18 +63,24 @@ class RoutinesProvider with ChangeNotifier {
|
||||
static const _routineConfigMaxRestTime = 'max-rest-config';
|
||||
|
||||
Routine? _currentPlan;
|
||||
final ExercisesProvider _exercises;
|
||||
late ExercisesProvider _exercises;
|
||||
final WgerBaseProvider baseProvider;
|
||||
List<Routine> _routines = [];
|
||||
List<WeightUnit> _weightUnits = [];
|
||||
List<RepetitionUnit> _repetitionUnit = [];
|
||||
List<RepetitionUnit> _repetitionUnits = [];
|
||||
|
||||
RoutinesProvider(
|
||||
this.baseProvider,
|
||||
ExercisesProvider exercises,
|
||||
List<Routine> entries,
|
||||
) : _exercises = exercises,
|
||||
_routines = entries;
|
||||
List<Routine> entries, {
|
||||
List<WeightUnit>? weightUnits,
|
||||
List<RepetitionUnit>? repetitionUnits,
|
||||
}) {
|
||||
_exercises = exercises;
|
||||
_routines = entries;
|
||||
_weightUnits = weightUnits ?? [];
|
||||
_repetitionUnits = repetitionUnits ?? [];
|
||||
}
|
||||
|
||||
List<Routine> get items {
|
||||
return [..._routines];
|
||||
@@ -89,7 +95,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
_currentPlan = null;
|
||||
_routines = [];
|
||||
_weightUnits = [];
|
||||
_repetitionUnit = [];
|
||||
_repetitionUnits = [];
|
||||
}
|
||||
|
||||
/// Return the default weight unit (kg)
|
||||
@@ -100,15 +106,15 @@ class RoutinesProvider with ChangeNotifier {
|
||||
WeightUnit findWeightUnitById(int id) => _weightUnits.firstWhere((element) => element.id == id);
|
||||
|
||||
List<RepetitionUnit> get repetitionUnits {
|
||||
return [..._repetitionUnit];
|
||||
return [..._repetitionUnits];
|
||||
}
|
||||
|
||||
RepetitionUnit findRepetitionUnitById(int id) =>
|
||||
_repetitionUnit.firstWhere((element) => element.id == id);
|
||||
_repetitionUnits.firstWhere((element) => element.id == id);
|
||||
|
||||
/// Return the default weight unit (reps)
|
||||
RepetitionUnit get defaultRepetitionUnit {
|
||||
return _repetitionUnit.firstWhere((element) => element.id == REP_UNIT_REPETITIONS_ID);
|
||||
return _repetitionUnits.firstWhere((element) => element.id == REP_UNIT_REPETITIONS_ID);
|
||||
}
|
||||
|
||||
List<Routine> getPlans() {
|
||||
@@ -189,7 +195,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
for (final setConfig in slot.setConfigs) {
|
||||
setConfig.exercise = (await _exercises.fetchAndSetExercise(setConfig.exerciseId))!;
|
||||
|
||||
setConfig.repsUnit = _repetitionUnit.firstWhere(
|
||||
setConfig.repsUnit = _repetitionUnits.firstWhere(
|
||||
(e) => e.id == setConfig.repsUnitId,
|
||||
);
|
||||
|
||||
@@ -293,7 +299,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
for (final slot in day.slots) {
|
||||
for (final slotEntry in slot.entries) {
|
||||
slotEntry.exerciseObj = (await _exercises.fetchAndSetExercise(slotEntry.exerciseId))!;
|
||||
slotEntry.repetitionUnitObj = _repetitionUnit.firstWhere(
|
||||
slotEntry.repetitionUnitObj = _repetitionUnits.firstWhere(
|
||||
(e) => e.id == slotEntry.repetitionUnitId,
|
||||
);
|
||||
slotEntry.weightUnitObj = _weightUnits.firstWhere(
|
||||
@@ -315,7 +321,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
try {
|
||||
final log = Log.fromJson(logEntry);
|
||||
log.weightUnit = _weightUnits.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.repetitionUnit = _repetitionUnit.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.repetitionUnit = _repetitionUnits.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.exerciseBase = (await _exercises.fetchAndSetExercise(log.exerciseId))!;
|
||||
routine.logs.add(log);
|
||||
} catch (e) {
|
||||
@@ -392,7 +398,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
final response =
|
||||
await baseProvider.fetchPaginated(baseProvider.makeUrl(_repetitionUnitUrlPath));
|
||||
for (final unit in response) {
|
||||
_repetitionUnit.add(RepetitionUnit.fromJson(unit));
|
||||
_repetitionUnits.add(RepetitionUnit.fromJson(unit));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,7 +417,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
final unitData = json.decode(prefs.getString(PREFS_WORKOUT_UNITS)!);
|
||||
if (DateTime.parse(unitData['expiresIn']).isAfter(DateTime.now())) {
|
||||
unitData['repetitionUnits'].forEach(
|
||||
(e) => _repetitionUnit.add(RepetitionUnit.fromJson(e)),
|
||||
(e) => _repetitionUnits.add(RepetitionUnit.fromJson(e)),
|
||||
);
|
||||
unitData['weightUnit'].forEach(
|
||||
(e) => _weightUnits.add(WeightUnit.fromJson(e)),
|
||||
@@ -431,7 +437,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
final cacheData = {
|
||||
'date': DateTime.now().toIso8601String(),
|
||||
'expiresIn': DateTime.now().add(const Duration(days: DAYS_TO_CACHE)).toIso8601String(),
|
||||
'repetitionUnits': _repetitionUnit.map((e) => e.toJson()).toList(),
|
||||
'repetitionUnits': _repetitionUnits.map((e) => e.toJson()).toList(),
|
||||
'weightUnit': _weightUnits.map((e) => e.toJson()).toList(),
|
||||
};
|
||||
prefs.setString(PREFS_WORKOUT_UNITS, json.encode(cacheData));
|
||||
@@ -691,7 +697,7 @@ class RoutinesProvider with ChangeNotifier {
|
||||
|
||||
log.id = newLog.id;
|
||||
log.weightUnit = _weightUnits.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.repetitionUnit = _repetitionUnit.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.repetitionUnit = _repetitionUnits.firstWhere((e) => e.id == log.weightUnitId);
|
||||
log.exerciseBase = (await _exercises.fetchAndSetExercise(log.exerciseId))!;
|
||||
|
||||
final plan = findById(log.routineId);
|
||||
|
||||
@@ -76,7 +76,7 @@ class _AddExerciseStepperState extends State<AddExerciseStepper> {
|
||||
final exerciseId = await addExerciseProvider.addExercise();
|
||||
final exercise = await exerciseProvider.fetchAndSetExercise(exerciseId);
|
||||
final name = exercise!
|
||||
.getExercise(Localizations.localeOf(context).languageCode)
|
||||
.getTranslation(Localizations.localeOf(context).languageCode)
|
||||
.name;
|
||||
|
||||
setState(() {
|
||||
|
||||
@@ -31,7 +31,7 @@ class ExerciseDetailScreen extends StatelessWidget {
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(exerciseBase.getExercise(Localizations.localeOf(context).languageCode).name),
|
||||
title: Text(exerciseBase.getTranslation(Localizations.localeOf(context).languageCode).name),
|
||||
),
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
|
||||
@@ -40,14 +40,16 @@ class GymModeScreen extends StatelessWidget {
|
||||
|
||||
final routinesProvider = context.read<RoutinesProvider>();
|
||||
final routine = routinesProvider.findById(args.routineId);
|
||||
final dayData = routine.dayDataGym
|
||||
final dayDataDisplay =
|
||||
routine.dayData.firstWhere((e) => e.iteration == args.iteration && e.day?.id == args.dayId);
|
||||
final dayDataGym = routine.dayDataGym
|
||||
.where((e) => e.iteration == args.iteration && e.day?.id == args.dayId)
|
||||
.first;
|
||||
|
||||
return Scaffold(
|
||||
body: SafeArea(
|
||||
child: Consumer<RoutinesProvider>(
|
||||
builder: (context, value, child) => GymMode(dayData),
|
||||
builder: (context, value, child) => GymMode(dayDataGym, dayDataDisplay),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ class Step2Variations extends StatelessWidget {
|
||||
...exerciseProvider.exerciseBasesByVariation[key]!.map(
|
||||
(base) => Text(
|
||||
base
|
||||
.getExercise(
|
||||
.getTranslation(
|
||||
Localizations.localeOf(context).languageCode,
|
||||
)
|
||||
.name,
|
||||
@@ -72,7 +72,7 @@ class Step2Variations extends StatelessWidget {
|
||||
children: [
|
||||
Text(
|
||||
base
|
||||
.getExercise(
|
||||
.getTranslation(
|
||||
Localizations.localeOf(context).languageCode,
|
||||
)
|
||||
.name,
|
||||
|
||||
@@ -439,7 +439,7 @@ class _DashboardWorkoutWidgetState extends State<DashboardWorkoutWidget> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(s.exercise
|
||||
.getExercise(Localizations.localeOf(context).languageCode)
|
||||
.getTranslation(Localizations.localeOf(context).languageCode)
|
||||
.name),
|
||||
const SizedBox(width: 10),
|
||||
MutedText(s.textRepr),
|
||||
|
||||
@@ -102,7 +102,7 @@ class _ExerciseAutocompleterState extends State<ExerciseAutocompleter> {
|
||||
),
|
||||
),
|
||||
title: Text(
|
||||
exerciseSuggestion.getExercise(Localizations.localeOf(context).languageCode).name,
|
||||
exerciseSuggestion.getTranslation(Localizations.localeOf(context).languageCode).name,
|
||||
),
|
||||
subtitle: Text(
|
||||
'${exerciseSuggestion.category!.name} / ${exerciseSuggestion.equipment.map((e) => e.name).join(', ')}',
|
||||
|
||||
@@ -42,7 +42,7 @@ class ExerciseDetail extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_exercise = _exerciseBase.getExercise(Localizations.localeOf(context).languageCode);
|
||||
_exercise = _exerciseBase.getTranslation(Localizations.localeOf(context).languageCode);
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
|
||||
@@ -49,7 +49,7 @@ class ExerciseListTile extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
title: Text(
|
||||
exerciseBase.getExercise(Localizations.localeOf(context).languageCode).name,
|
||||
exerciseBase.getTranslation(Localizations.localeOf(context).languageCode).name,
|
||||
//style: theme.textTheme.titleLarge,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 2,
|
||||
|
||||
@@ -46,7 +46,7 @@ class SetConfigDataWidget extends StatelessWidget {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text(setConfigData.exercise.getExercise(languageCode).name),
|
||||
title: Text(setConfigData.exercise.getTranslation(languageCode).name),
|
||||
content: ExerciseDetail(setConfigData.exercise),
|
||||
actions: [
|
||||
TextButton(
|
||||
@@ -63,7 +63,7 @@ class SetConfigDataWidget extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
),
|
||||
title: Text(setConfigData.exercise.getExercise(languageCode).name),
|
||||
title: Text(setConfigData.exercise.getTranslation(languageCode).name),
|
||||
subtitle: Text(setConfigData.textRepr),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ class ProgressionRulesInfoBox extends StatelessWidget {
|
||||
children: [
|
||||
ListTile(
|
||||
title: Text(
|
||||
exercise.getExercise(languageCode).name,
|
||||
exercise.getTranslation(languageCode).name,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
@@ -148,7 +148,7 @@ class _SlotEntryFormState extends State<SlotEntryForm> {
|
||||
children: [
|
||||
ListTile(
|
||||
title: Text(
|
||||
widget.entry.exerciseObj.getExercise(languageCode).name,
|
||||
widget.entry.exerciseObj.getTranslation(languageCode).name,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
// textAlign: TextAlign.center,
|
||||
),
|
||||
@@ -500,8 +500,8 @@ class _SlotFormWidgetStateNg extends State<ReorderableSlotList> {
|
||||
: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
...slot.entries
|
||||
.map((e) => Text(e.exerciseObj.getExercise(languageCode).name)),
|
||||
...slot.entries.map(
|
||||
(e) => Text(e.exerciseObj.getTranslation(languageCode).name)),
|
||||
],
|
||||
),
|
||||
trailing: Row(
|
||||
|
||||
@@ -29,7 +29,6 @@ import 'package:wger/helpers/i18n.dart';
|
||||
import 'package:wger/helpers/json.dart';
|
||||
import 'package:wger/helpers/ui.dart';
|
||||
import 'package:wger/models/exercises/exercise.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/routine.dart';
|
||||
@@ -48,10 +47,11 @@ import 'package:wger/widgets/routines/forms/rir.dart';
|
||||
import 'package:wger/widgets/routines/forms/weight_unit.dart';
|
||||
|
||||
class GymMode extends StatefulWidget {
|
||||
final DayData _dayData;
|
||||
final DayData _dayDataGym;
|
||||
final DayData _dayDataDisplay;
|
||||
late final TimeOfDay _start;
|
||||
|
||||
GymMode(this._dayData) {
|
||||
GymMode(this._dayDataGym, this._dayDataDisplay) {
|
||||
_start = TimeOfDay.now();
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ class _GymModeState extends State<GymMode> {
|
||||
super.initState();
|
||||
// Calculate amount of elements for progress indicator
|
||||
|
||||
for (final slot in widget._dayData.slots) {
|
||||
for (final slot in widget._dayDataGym.slots) {
|
||||
_totalElements += slot.setConfigs.length;
|
||||
}
|
||||
// Calculate the pages for the navigation
|
||||
@@ -85,7 +85,7 @@ class _GymModeState extends State<GymMode> {
|
||||
// This duplicates the code below in the getContent method, but it seems to
|
||||
// be the easiest way
|
||||
var currentPage = 1;
|
||||
for (final slot in widget._dayData.slots) {
|
||||
for (final slot in widget._dayDataGym.slots) {
|
||||
var firstPage = true;
|
||||
for (final config in slot.setConfigs) {
|
||||
final exercise = Provider.of<ExercisesProvider>(context, listen: false)
|
||||
@@ -113,7 +113,7 @@ class _GymModeState extends State<GymMode> {
|
||||
var currentElement = 1;
|
||||
final List<Widget> out = [];
|
||||
|
||||
for (final slotData in widget._dayData.slots) {
|
||||
for (final slotData in widget._dayDataGym.slots) {
|
||||
var firstPage = true;
|
||||
for (final config in slotData.setConfigs) {
|
||||
final ratioCompleted = currentElement / _totalElements;
|
||||
@@ -134,10 +134,11 @@ class _GymModeState extends State<GymMode> {
|
||||
config,
|
||||
slotData,
|
||||
exercise,
|
||||
workoutProvider.findById(widget._dayData.day!.routineId),
|
||||
workoutProvider.findById(widget._dayDataGym.day!.routineId),
|
||||
ratioCompleted,
|
||||
_exercisePages,
|
||||
));
|
||||
|
||||
out.add(TimerWidget(_controller, ratioCompleted, _exercisePages));
|
||||
firstPage = false;
|
||||
}
|
||||
@@ -151,11 +152,11 @@ class _GymModeState extends State<GymMode> {
|
||||
return PageView(
|
||||
controller: _controller,
|
||||
children: [
|
||||
StartPage(_controller, widget._dayData.day!, _exercisePages),
|
||||
StartPage(_controller, widget._dayDataDisplay, _exercisePages),
|
||||
...getContent(),
|
||||
SessionPage(
|
||||
Provider.of<RoutinesProvider>(context, listen: false)
|
||||
.findById(widget._dayData.day!.routineId),
|
||||
.findById(widget._dayDataGym.day!.routineId),
|
||||
_controller,
|
||||
widget._start,
|
||||
_exercisePages,
|
||||
@@ -167,10 +168,10 @@ class _GymModeState extends State<GymMode> {
|
||||
|
||||
class StartPage extends StatelessWidget {
|
||||
final PageController _controller;
|
||||
final Day _day;
|
||||
final DayData _dayData;
|
||||
final Map<Exercise, int> _exercisePages;
|
||||
|
||||
const StartPage(this._controller, this._day, this._exercisePages);
|
||||
const StartPage(this._controller, this._dayData, this._exercisePages);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -185,19 +186,19 @@ class StartPage extends StatelessWidget {
|
||||
Expanded(
|
||||
child: ListView(
|
||||
children: [
|
||||
..._day.slots.map((slot) {
|
||||
..._dayData.slots.map((slotData) {
|
||||
return Column(
|
||||
children: [
|
||||
...slot.entries.map((entry) {
|
||||
...slotData.setConfigs.map((entry) {
|
||||
return Column(
|
||||
children: [
|
||||
Text(
|
||||
entry.exerciseObj
|
||||
.getExercise(Localizations.localeOf(context).languageCode)
|
||||
entry.exercise
|
||||
.getTranslation(Localizations.localeOf(context).languageCode)
|
||||
.name,
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
),
|
||||
const Text('TODO'),
|
||||
Text(entry.textRepr),
|
||||
const SizedBox(height: 15),
|
||||
],
|
||||
);
|
||||
@@ -617,7 +618,7 @@ class _LogPageState extends State<LogPage> {
|
||||
return Column(
|
||||
children: [
|
||||
NavigationHeader(
|
||||
widget._exercise.getExercise(Localizations.localeOf(context).languageCode).name,
|
||||
widget._exercise.getTranslation(Localizations.localeOf(context).languageCode).name,
|
||||
widget._controller,
|
||||
exercisePages: widget._exercisePages,
|
||||
),
|
||||
@@ -667,7 +668,7 @@ class ExerciseOverview extends StatelessWidget {
|
||||
return Column(
|
||||
children: [
|
||||
NavigationHeader(
|
||||
_exerciseBase.getExercise(Localizations.localeOf(context).languageCode).name,
|
||||
_exerciseBase.getTranslation(Localizations.localeOf(context).languageCode).name,
|
||||
_controller,
|
||||
exercisePages: _exercisePages,
|
||||
),
|
||||
@@ -700,7 +701,7 @@ class ExerciseOverview extends StatelessWidget {
|
||||
),
|
||||
Html(
|
||||
data: _exerciseBase
|
||||
.getExercise(Localizations.localeOf(context).languageCode)
|
||||
.getTranslation(Localizations.localeOf(context).languageCode)
|
||||
.description,
|
||||
),
|
||||
],
|
||||
@@ -1078,7 +1079,7 @@ class NavigationHeader extends StatelessWidget {
|
||||
children: [
|
||||
...exercisePages.keys.map((e) {
|
||||
return ListTile(
|
||||
title: Text(e.getExercise(Localizations.localeOf(context).languageCode).name),
|
||||
title: Text(e.getTranslation(Localizations.localeOf(context).languageCode).name),
|
||||
trailing: const Icon(Icons.chevron_right),
|
||||
onTap: () {
|
||||
_controller.animateToPage(
|
||||
|
||||
@@ -113,7 +113,7 @@ class _DayLogWidgetState extends State<DayLogWidget> {
|
||||
),
|
||||
if (widget._session != null) const Text('Session data here'),
|
||||
...widget._exerciseData.keys.map((base) {
|
||||
final exercise = base.getExercise(Localizations.localeOf(context).languageCode);
|
||||
final exercise = base.getTranslation(Localizations.localeOf(context).languageCode);
|
||||
return Column(
|
||||
children: [
|
||||
if (widget._exerciseData[base]!.isNotEmpty)
|
||||
|
||||
@@ -17,13 +17,13 @@ void main() {
|
||||
final base = getTestExercises()[1];
|
||||
|
||||
// assert
|
||||
expect(base.getExercise('en').id, 5);
|
||||
expect(base.getExercise('en-UK').id, 5);
|
||||
expect(base.getExercise('de').id, 4);
|
||||
expect(base.getExercise('de-AT').id, 4);
|
||||
expect(base.getExercise('fr').id, 3);
|
||||
expect(base.getExercise('fr-FR').id, 3);
|
||||
expect(base.getExercise('pt').id, 5); // English again
|
||||
expect(base.getTranslation('en').id, 5);
|
||||
expect(base.getTranslation('en-UK').id, 5);
|
||||
expect(base.getTranslation('de').id, 4);
|
||||
expect(base.getTranslation('de-AT').id, 4);
|
||||
expect(base.getTranslation('fr').id, 3);
|
||||
expect(base.getTranslation('fr-FR').id, 3);
|
||||
expect(base.getTranslation('pt').id, 5); // English again
|
||||
});
|
||||
|
||||
test('Load the readExerciseBaseFromBaseInfo parse method', () {
|
||||
|
||||
@@ -42,15 +42,17 @@ void main() {
|
||||
final key = GlobalKey<NavigatorState>();
|
||||
|
||||
final mockExerciseProvider = MockExercisesProvider();
|
||||
final workoutPlan = getRoutine();
|
||||
final bases = getTestExercises();
|
||||
final testRoutine = getTestRoutine();
|
||||
final testExercises = getTestExercises();
|
||||
|
||||
Widget createHomeScreen({locale = 'en'}) {
|
||||
Widget renderGymMode({locale = 'en'}) {
|
||||
return ChangeNotifierProvider<RoutinesProvider>(
|
||||
create: (context) => RoutinesProvider(
|
||||
mockBaseProvider,
|
||||
mockExerciseProvider,
|
||||
[workoutPlan],
|
||||
[testRoutine],
|
||||
repetitionUnits: testRepetitionUnits,
|
||||
weightUnits: testWeightUnits,
|
||||
),
|
||||
child: ChangeNotifierProvider<ExercisesProvider>(
|
||||
create: (context) => mockExerciseProvider,
|
||||
@@ -62,7 +64,7 @@ void main() {
|
||||
home: TextButton(
|
||||
onPressed: () => key.currentState!.push(
|
||||
MaterialPageRoute<void>(
|
||||
settings: RouteSettings(arguments: workoutPlan.days.first),
|
||||
settings: const RouteSettings(arguments: GymModeArguments(1, 1, 1)),
|
||||
builder: (_) => const GymModeScreen(),
|
||||
),
|
||||
),
|
||||
@@ -75,10 +77,10 @@ void main() {
|
||||
}
|
||||
|
||||
testWidgets('Test the widgets on the gym mode screen', (WidgetTester tester) async {
|
||||
when(mockExerciseProvider.findExerciseById(1)).thenReturn(bases[0]);
|
||||
when(mockExerciseProvider.findExerciseById(6)).thenReturn(bases[5]);
|
||||
when(mockExerciseProvider.findExerciseById(1)).thenReturn(testExercises[0]);
|
||||
when(mockExerciseProvider.findExerciseById(6)).thenReturn(testExercises[5]);
|
||||
|
||||
await tester.pumpWidget(createHomeScreen());
|
||||
await tester.pumpWidget(renderGymMode());
|
||||
await tester.tap(find.byType(TextButton));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
@@ -174,6 +176,7 @@ void main() {
|
||||
//
|
||||
// Side raises - exercise overview page
|
||||
//
|
||||
debugDumpApp();
|
||||
expect(find.text('Side raises'), findsOneWidget);
|
||||
expect(find.byType(ExerciseOverview), findsOneWidget);
|
||||
await tester.tap(find.byIcon(Icons.chevron_right));
|
||||
|
||||
@@ -24,7 +24,7 @@ import '../../test_data/routines.dart';
|
||||
void main() {
|
||||
group('model tests', () {
|
||||
test('Test the filterLogsByExercise method', () {
|
||||
final workout = getRoutine();
|
||||
final workout = getTestRoutine();
|
||||
|
||||
expect(workout.logs.length, 3);
|
||||
final logExercise1 = workout.filterLogsByExercise(getTestExercises()[0]);
|
||||
|
||||
@@ -52,7 +52,7 @@ void main() {
|
||||
home: TextButton(
|
||||
onPressed: () => key.currentState!.push(
|
||||
MaterialPageRoute<void>(
|
||||
settings: RouteSettings(arguments: getRoutine()),
|
||||
settings: RouteSettings(arguments: getTestRoutine()),
|
||||
builder: (_) => const RoutineScreen(),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -59,6 +59,7 @@ final benchPress = Exercise(
|
||||
equipment: const [tEquipment1, tEquipment2],
|
||||
muscles: const [tMuscle1, tMuscle2],
|
||||
musclesSecondary: const [tMuscle3],
|
||||
translations: [benchPressEn, benchPressDe],
|
||||
);
|
||||
|
||||
final crunches = Exercise(
|
||||
@@ -70,6 +71,7 @@ final crunches = Exercise(
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
translations: [crunchesEn, crunchesDe, crunchesFr],
|
||||
);
|
||||
|
||||
final deadLift = Exercise(
|
||||
@@ -81,6 +83,7 @@ final deadLift = Exercise(
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
translations: [deadLiftEn],
|
||||
);
|
||||
|
||||
final curls = Exercise(
|
||||
@@ -92,7 +95,9 @@ final curls = Exercise(
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
translations: [curlsEn],
|
||||
);
|
||||
|
||||
final squats = Exercise(
|
||||
id: 5,
|
||||
uuid: '361f024c-fdf8-4146-b7d7-0c1b67c58141',
|
||||
@@ -102,7 +107,9 @@ final squats = Exercise(
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
translations: [squatsEn],
|
||||
);
|
||||
|
||||
final sideRaises = Exercise(
|
||||
id: 6,
|
||||
uuid: '721ff972-c568-41e3-8cf5-cf1e5c5c801c',
|
||||
@@ -112,6 +119,7 @@ final sideRaises = Exercise(
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
translations: [sideRaisesEn],
|
||||
);
|
||||
|
||||
final benchPressDe = Translation(
|
||||
@@ -120,16 +128,17 @@ final benchPressDe = Translation(
|
||||
created: DateTime(2021, 1, 15),
|
||||
name: 'Bankdrücken',
|
||||
description: 'add clever text',
|
||||
exerciseId: benchPress.id,
|
||||
exerciseId: 1,
|
||||
language: tLanguage1,
|
||||
);
|
||||
|
||||
final benchPressEn = Translation(
|
||||
id: 7,
|
||||
uuid: 'f4cc326b-e497-4bd7-a71d-0eb1db522743',
|
||||
created: DateTime(2021, 1, 15),
|
||||
name: 'Bench press',
|
||||
description: 'add clever text',
|
||||
exerciseId: benchPress.id,
|
||||
exerciseId: 1,
|
||||
language: tLanguage1,
|
||||
);
|
||||
|
||||
@@ -139,7 +148,7 @@ final deadLiftEn = Translation(
|
||||
created: DateTime(2021, 1, 15),
|
||||
name: 'Dead Lift',
|
||||
description: 'Lorem ipsum etc',
|
||||
exerciseId: crunches.id,
|
||||
exerciseId: 3,
|
||||
language: tLanguage2,
|
||||
);
|
||||
|
||||
@@ -149,7 +158,7 @@ final crunchesFr = Translation(
|
||||
created: DateTime(2021, 4, 1),
|
||||
name: 'Crunches',
|
||||
description: 'The man in black fled across the desert, and the gunslinger followed',
|
||||
exerciseId: deadLift.id,
|
||||
exerciseId: 2,
|
||||
language: tLanguage3,
|
||||
);
|
||||
|
||||
@@ -159,7 +168,7 @@ final crunchesDe = Translation(
|
||||
created: DateTime(2021, 4, 1),
|
||||
name: 'Crunches',
|
||||
description: 'The story so far: in the beginning, the universe was created',
|
||||
exerciseId: deadLift.id,
|
||||
exerciseId: 2,
|
||||
language: tLanguage1,
|
||||
);
|
||||
|
||||
@@ -169,7 +178,7 @@ final crunchesEn = Translation(
|
||||
created: DateTime(2021, 4, 1),
|
||||
name: 'test exercise 5',
|
||||
description: 'I am an invisible man',
|
||||
exerciseId: deadLift.id,
|
||||
exerciseId: 2,
|
||||
language: tLanguage2,
|
||||
);
|
||||
|
||||
@@ -179,7 +188,7 @@ final curlsEn = Translation(
|
||||
created: DateTime(2021, 4, 1),
|
||||
name: 'Curls',
|
||||
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
|
||||
exerciseId: curls.id,
|
||||
exerciseId: 4,
|
||||
language: tLanguage2,
|
||||
);
|
||||
|
||||
@@ -189,7 +198,7 @@ final squatsEn = Translation(
|
||||
created: DateTime(2021, 4, 1),
|
||||
name: 'Squats',
|
||||
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
|
||||
exerciseId: curls.id,
|
||||
exerciseId: 5,
|
||||
language: tLanguage2,
|
||||
);
|
||||
|
||||
@@ -199,18 +208,11 @@ final sideRaisesEn = Translation(
|
||||
created: DateTime(2022, 11, 1),
|
||||
name: 'Side raises',
|
||||
description: 'It was a bright cold day in April, and the clocks were striking thirteen',
|
||||
exerciseId: curls.id,
|
||||
exerciseId: 6,
|
||||
language: tLanguage2,
|
||||
);
|
||||
|
||||
List<Exercise> getTestExercises() {
|
||||
benchPress.translations = [benchPressEn, benchPressDe];
|
||||
crunches.translations = [crunchesEn, crunchesDe, crunchesFr];
|
||||
deadLift.translations = [deadLiftEn];
|
||||
curls.translations = [curlsEn];
|
||||
squats.translations = [squatsEn];
|
||||
sideRaises.translations = [sideRaisesEn];
|
||||
|
||||
return [benchPress, crunches, deadLift, curls, squats, sideRaises];
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ 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/set_config_data.dart';
|
||||
import 'package:wger/models/workouts/slot.dart';
|
||||
import 'package:wger/models/workouts/slot_data.dart';
|
||||
import 'package:wger/models/workouts/slot_entry.dart';
|
||||
@@ -32,12 +33,14 @@ import './exercises.dart';
|
||||
|
||||
const testWeightUnit1 = WeightUnit(id: 1, name: 'kg');
|
||||
const testWeightUnit2 = WeightUnit(id: 2, name: 'metric tonnes');
|
||||
const testWeightUnits = [testWeightUnit1, testWeightUnit2];
|
||||
|
||||
const RepetitionUnit testRepetitionUnit1 = RepetitionUnit(id: 1, name: 'Repetitions');
|
||||
const RepetitionUnit testRepetitionUnit2 = RepetitionUnit(id: 2, name: 'Hours');
|
||||
const testRepetitionUnits = [testRepetitionUnit1, testRepetitionUnit2];
|
||||
|
||||
Routine getRoutine({List<Exercise>? exercises}) {
|
||||
final testExercise = exercises ?? getTestExercises();
|
||||
Routine getTestRoutine({List<Exercise>? exercises}) {
|
||||
final testExercises = exercises ?? getTestExercises();
|
||||
|
||||
final log1 = Log.empty()
|
||||
..id = 1
|
||||
@@ -46,7 +49,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
..date = DateTime(2021, 5, 1)
|
||||
..reps = 10
|
||||
..routineId = 1;
|
||||
log1.exerciseBase = testExercise[0];
|
||||
log1.exerciseBase = testExercises[0];
|
||||
log1.weightUnit = testWeightUnit1;
|
||||
log1.repetitionUnit = testRepetitionUnit1;
|
||||
|
||||
@@ -57,7 +60,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
..date = DateTime(2021, 5, 1)
|
||||
..reps = 12
|
||||
..routineId = 1;
|
||||
log2.exerciseBase = testExercise[0];
|
||||
log2.exerciseBase = testExercises[0];
|
||||
log2.weightUnit = testWeightUnit1;
|
||||
log2.repetitionUnit = testRepetitionUnit1;
|
||||
|
||||
@@ -68,7 +71,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
..date = DateTime(2021, 5, 2)
|
||||
..reps = 8
|
||||
..routineId = 1;
|
||||
log3.exerciseBase = testExercise[1];
|
||||
log3.exerciseBase = testExercises[1];
|
||||
log3.weightUnit = testWeightUnit1;
|
||||
log3.repetitionUnit = testRepetitionUnit1;
|
||||
|
||||
@@ -84,7 +87,13 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
comment: 'ddd',
|
||||
repetitionUnit: testRepetitionUnit1,
|
||||
weightUnit: testWeightUnit1,
|
||||
exercise: testExercise[0],
|
||||
exercise: testExercises[0],
|
||||
nrOfSetsConfigs: [
|
||||
BaseConfig.firstIteration(4, 1),
|
||||
],
|
||||
repsConfigs: [
|
||||
BaseConfig.firstIteration(3, 1),
|
||||
],
|
||||
weightConfigs: [
|
||||
BaseConfig.firstIteration(100, 1),
|
||||
BaseConfig(
|
||||
@@ -99,12 +108,6 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
repeat: true,
|
||||
),
|
||||
],
|
||||
repsConfigs: [
|
||||
BaseConfig.firstIteration(3, 1),
|
||||
],
|
||||
nrOfSetsConfigs: [
|
||||
BaseConfig.firstIteration(4, 1),
|
||||
],
|
||||
);
|
||||
|
||||
final slotBenchPress = Slot.withData(
|
||||
@@ -113,7 +116,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
order: 1,
|
||||
comment: 'Make sure to warm up',
|
||||
);
|
||||
slotBenchPress.addExerciseBase(testExercise[0]);
|
||||
slotBenchPress.addExerciseBase(testExercises[0]);
|
||||
slotBenchPress.entries.add(slotEntryBenchPress);
|
||||
|
||||
final slotEntrySquat = SlotEntry(
|
||||
@@ -128,7 +131,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
comment: 'ddd',
|
||||
repetitionUnit: testRepetitionUnit1,
|
||||
weightUnit: testWeightUnit1,
|
||||
exercise: testExercise[4],
|
||||
exercise: testExercises[4],
|
||||
weightConfigs: [
|
||||
BaseConfig.firstIteration(80, 1),
|
||||
],
|
||||
@@ -141,7 +144,7 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
);
|
||||
|
||||
final slotSquat = Slot.withData(id: 2, day: 1, order: 1);
|
||||
slotSquat.addExerciseBase(testExercise[4]);
|
||||
slotSquat.addExerciseBase(testExercises[4]);
|
||||
slotSquat.entries.add(slotEntrySquat);
|
||||
|
||||
final slotEntrySideRaises = SlotEntry(
|
||||
@@ -156,21 +159,21 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
comment: 'ddd',
|
||||
repetitionUnit: testRepetitionUnit1,
|
||||
weightUnit: testWeightUnit1,
|
||||
exercise: testExercise[5],
|
||||
weightConfigs: [
|
||||
BaseConfig.firstIteration(10, 1),
|
||||
exercise: testExercises[5],
|
||||
nrOfSetsConfigs: [
|
||||
BaseConfig.firstIteration(4, 1),
|
||||
],
|
||||
repsConfigs: [
|
||||
BaseConfig.firstIteration(12, 1),
|
||||
],
|
||||
nrOfSetsConfigs: [
|
||||
BaseConfig.firstIteration(4, 1),
|
||||
weightConfigs: [
|
||||
BaseConfig.firstIteration(10, 1),
|
||||
],
|
||||
);
|
||||
// settingSideRaises.weight = 6;
|
||||
|
||||
final slotSideRaises = Slot.withData(id: 3, day: 1, order: 1);
|
||||
slotSideRaises.addExerciseBase(testExercise[5]);
|
||||
slotSideRaises.addExerciseBase(testExercises[5]);
|
||||
slotSideRaises.entries.add(slotEntrySideRaises);
|
||||
|
||||
final dayChestShoulders = Day(
|
||||
@@ -189,63 +192,309 @@ Routine getRoutine({List<Exercise>? exercises}) {
|
||||
slots: [slotSquat],
|
||||
);
|
||||
|
||||
final List<DayData> dayDataDisplay = [
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 01),
|
||||
label: '',
|
||||
day: dayChestShoulders,
|
||||
slots: [
|
||||
SlotData(
|
||||
comment: 'Bench press',
|
||||
isSuperset: false,
|
||||
exerciseIds: [1],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 1,
|
||||
exercise: testExercises[0],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 4,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '4 sets 3x100kg',
|
||||
),
|
||||
],
|
||||
),
|
||||
SlotData(
|
||||
comment: 'Side rises',
|
||||
isSuperset: false,
|
||||
exerciseIds: [6],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 6,
|
||||
exercise: testExercises[5],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 4,
|
||||
reps: 12,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 10,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 60,
|
||||
rir: '',
|
||||
rpe: '',
|
||||
textRepr: '4 sets 12x10kg',
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 02),
|
||||
label: '',
|
||||
day: dayLegs,
|
||||
slots: [
|
||||
SlotData(
|
||||
comment: 'Squats',
|
||||
isSuperset: false,
|
||||
exerciseIds: [8],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 8,
|
||||
exercise: testExercises[4],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 4,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '4 sets 3x100kg',
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 02),
|
||||
label: 'null day (filled because of fitInWeek flag)',
|
||||
day: null,
|
||||
slots: [],
|
||||
),
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 02),
|
||||
label: 'null day (filled because of fitInWeek flag)',
|
||||
day: null,
|
||||
slots: [],
|
||||
),
|
||||
];
|
||||
|
||||
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
|
||||
],
|
||||
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: '',
|
||||
// ),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
]);
|
||||
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],
|
||||
dayData: dayDataDisplay,
|
||||
dayDataCurrentIteration: [
|
||||
...dayDataDisplay,
|
||||
DayData(
|
||||
iteration: 2,
|
||||
date: DateTime(2024, 11, 02),
|
||||
label: '',
|
||||
day: dayLegs,
|
||||
slots: [
|
||||
SlotData(
|
||||
comment: 'Squats',
|
||||
isSuperset: false,
|
||||
exerciseIds: [8],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 8,
|
||||
exercise: testExercises[4],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 5,
|
||||
reps: 8,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 105,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1',
|
||||
rpe: '9',
|
||||
textRepr: '5 sets 8x105kg',
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
dayDataGym: [
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 01),
|
||||
label: '',
|
||||
day: dayChestShoulders,
|
||||
slots: [
|
||||
SlotData(
|
||||
comment: 'Make sure to warm up',
|
||||
isSuperset: false,
|
||||
exerciseIds: [testExercises[0].id!],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 1,
|
||||
exercise: testExercises[0],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[0].id!,
|
||||
exercise: testExercises[0],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[0].id!,
|
||||
exercise: testExercises[0],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
],
|
||||
),
|
||||
SlotData(
|
||||
comment: 'Side rises',
|
||||
isSuperset: false,
|
||||
exerciseIds: [testExercises[5].id!],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[5].id!,
|
||||
exercise: testExercises[5],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 12,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 10,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 60,
|
||||
rir: '',
|
||||
rpe: '',
|
||||
textRepr: '12x10kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[5].id!,
|
||||
exercise: testExercises[5],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 12,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 10,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 60,
|
||||
rir: '',
|
||||
rpe: '',
|
||||
textRepr: '12x10kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[5].id!,
|
||||
exercise: testExercises[5],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 12,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 10,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 60,
|
||||
rir: '',
|
||||
rpe: '',
|
||||
textRepr: '12x10kg',
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
DayData(
|
||||
iteration: 1,
|
||||
date: DateTime(2024, 11, 02),
|
||||
label: '',
|
||||
day: dayLegs,
|
||||
slots: [
|
||||
SlotData(
|
||||
comment: 'Squats',
|
||||
isSuperset: false,
|
||||
exerciseIds: [testExercises[4].id!],
|
||||
setConfigs: [
|
||||
SetConfigData(
|
||||
exerciseId: 8,
|
||||
exercise: testExercises[4],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[4].id!,
|
||||
exercise: testExercises[4],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
SetConfigData(
|
||||
exerciseId: testExercises[4].id!,
|
||||
exercise: testExercises[4],
|
||||
slotEntryId: 1,
|
||||
nrOfSets: 1,
|
||||
reps: 3,
|
||||
repsUnit: testRepetitionUnit1,
|
||||
weight: 100,
|
||||
weightUnit: testWeightUnit1,
|
||||
restTime: 120,
|
||||
rir: '1.5',
|
||||
rpe: '8',
|
||||
textRepr: '3x100kg',
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
return routine;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user