WT1.1.10 compact test, paralell test
This commit is contained in:
@@ -10,6 +10,8 @@ import 'package:aitrainer_app/model/exercise_plan_template.dart';
|
||||
import 'package:aitrainer_app/model/exercise_type.dart';
|
||||
import 'package:aitrainer_app/repository/workout_tree_repository.dart';
|
||||
import 'package:aitrainer_app/service/exercise_plan_service.dart';
|
||||
import 'package:aitrainer_app/util/enums.dart';
|
||||
import 'package:aitrainer_app/util/track.dart';
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
@@ -18,12 +20,15 @@ part 'test_set_edit_state.dart';
|
||||
|
||||
class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
final String templateName;
|
||||
final String templateNameTranslation;
|
||||
final WorkoutTreeRepository workoutTreeRepository;
|
||||
final MenuBloc menuBloc;
|
||||
final List<ExerciseType> _exerciseTypes = List();
|
||||
final List<ExerciseType> _actualExerciseTypes = List();
|
||||
final HashMap<int, ExerciseType> _exercisePlanDetails = HashMap();
|
||||
|
||||
TestSetEditBloc({this.templateName, this.workoutTreeRepository, this.menuBloc}) : super(TestSetEditInitial()) {
|
||||
TestSetEditBloc({this.templateName, this.templateNameTranslation, this.workoutTreeRepository, this.menuBloc})
|
||||
: super(TestSetEditInitial()) {
|
||||
if (Cache().exercisePlanTemplates.isNotEmpty) {
|
||||
Cache().exercisePlanTemplates.forEach((element) {
|
||||
final ExercisePlanTemplate template = element as ExercisePlanTemplate;
|
||||
@@ -31,6 +36,7 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
template.exerciseTypes.forEach((id) {
|
||||
final ExerciseType exerciseType = Cache().getExerciseTypeById(id);
|
||||
_exerciseTypes.add(exerciseType);
|
||||
_actualExerciseTypes.add(exerciseType);
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
});
|
||||
}
|
||||
@@ -42,22 +48,36 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
Stream<TestSetEditState> mapEventToState(TestSetEditEvent event) async* {
|
||||
try {
|
||||
if (event is TestSetEditChangeExerciseType) {
|
||||
yield TestSetEditLoading();
|
||||
final List<ExerciseType> alternatives = workoutTreeRepository.getExerciseTypeAlternatives(event.exerciseTypeId);
|
||||
final ExerciseType exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId);
|
||||
if (event.index > alternatives.length) {
|
||||
/// skip
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = null;
|
||||
} else if (event.index == 0) {
|
||||
|
||||
if (_exercisePlanDetails[event.exerciseTypeId] == null) {
|
||||
/// it was skipped
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
} else {
|
||||
final changedExerciseType = alternatives[event.index - 1];
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = changedExerciseType;
|
||||
if (event.index == 0) {
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
} else {
|
||||
final changedExerciseType = alternatives[event.index - 1];
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = changedExerciseType;
|
||||
}
|
||||
}
|
||||
|
||||
// to keep the slider accurate
|
||||
refreshActualPlan();
|
||||
yield TestSetEditReady();
|
||||
} else if (event is TestSetEditDeleteExerciseType) {
|
||||
yield TestSetEditLoading();
|
||||
final ExerciseType exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId);
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = null;
|
||||
refreshActualPlan();
|
||||
yield TestSetEditReady();
|
||||
} else if (event is TestSetEditSubmit) {
|
||||
yield TestSetEditLoading();
|
||||
ExercisePlan exercisePlan = ExercisePlan(templateName, Cache().userLoggedIn.customerId);
|
||||
ExercisePlan exercisePlan = ExercisePlan(templateNameTranslation, Cache().userLoggedIn.customerId);
|
||||
exercisePlan.private = true;
|
||||
exercisePlan.type = ExerciseAbility.mini_test.toString();
|
||||
exercisePlan.type = ExerciseAbility.mini_test_set.toString();
|
||||
exercisePlan.dateAdd = DateTime.now();
|
||||
ExercisePlan savedExercisePlan = await ExercisePlanApi().saveExercisePlan(exercisePlan);
|
||||
|
||||
@@ -67,11 +87,15 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
ExercisePlanDetail exercisePlanDetail = ExercisePlanDetail(entry.value.exerciseTypeId);
|
||||
exercisePlanDetail.exercisePlanId = savedExercisePlan.exercisePlanId;
|
||||
exercisePlanDetail.serie = 1;
|
||||
|
||||
ExercisePlanDetail savedDetail = await ExercisePlanApi().saveExercisePlanDetail(exercisePlanDetail);
|
||||
details.add(savedDetail);
|
||||
exercisePlanDetail.exercisePlanDetailId = savedDetail.exercisePlanDetailId;
|
||||
exercisePlanDetail.exercises = List();
|
||||
details.add(exercisePlanDetail);
|
||||
}
|
||||
}
|
||||
Cache().saveActiveExercisePlan(exercisePlan, details);
|
||||
Track().track(TrackingEvent.test_set_edit, eventValue: templateName);
|
||||
yield TestSetEditSaved();
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
@@ -80,4 +104,14 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
}
|
||||
|
||||
List get exerciseTypes => this._exerciseTypes;
|
||||
List get actualExerciseTypes => this._actualExerciseTypes;
|
||||
HashMap get exercisePlanDetails => this._exercisePlanDetails;
|
||||
|
||||
void refreshActualPlan() {
|
||||
_actualExerciseTypes.removeRange(0, _actualExerciseTypes.length - 1);
|
||||
_exercisePlanDetails.keys.forEach((element) {
|
||||
final ExerciseType exerciseType = Cache().getExerciseTypeById(element);
|
||||
_actualExerciseTypes.add(exerciseType);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,14 @@ class TestSetEditChangeExerciseType extends TestSetEditEvent {
|
||||
List<Object> get props => [index, exerciseTypeId];
|
||||
}
|
||||
|
||||
class TestSetEditDeleteExerciseType extends TestSetEditEvent {
|
||||
final int exerciseTypeId;
|
||||
const TestSetEditDeleteExerciseType({this.exerciseTypeId});
|
||||
|
||||
@override
|
||||
List<Object> get props => [exerciseTypeId];
|
||||
}
|
||||
|
||||
class TestSetEditSkipExerciseType extends TestSetEditEvent {
|
||||
final int exerciseTypeId;
|
||||
const TestSetEditSkipExerciseType({this.exerciseTypeId});
|
||||
|
||||
Reference in New Issue
Block a user