WT 1.1.13 Test Central bug fixes
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:aitrainer_app/model/exercise_plan.dart';
|
||||
import 'package:aitrainer_app/model/exercise_plan_detail.dart';
|
||||
import 'package:aitrainer_app/model/exercise_plan_template.dart';
|
||||
import 'package:aitrainer_app/model/exercise_type.dart';
|
||||
import 'package:aitrainer_app/model/workout_menu_tree.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';
|
||||
@@ -28,6 +29,9 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
final List<ExerciseType> _actualExerciseTypes = [];
|
||||
final HashMap<int, ExerciseType?> _exercisePlanDetails = HashMap();
|
||||
|
||||
final HashMap<int, List<ExerciseType>?> _displayPlanDetails = HashMap();
|
||||
int? sliderIndex;
|
||||
|
||||
TestSetEditBloc(
|
||||
{required this.templateName, required this.templateNameTranslation, required this.workoutTreeRepository, required this.menuBloc})
|
||||
: super(TestSetEditInitial()) {
|
||||
@@ -36,12 +40,24 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
final ExercisePlanTemplate template = element as ExercisePlanTemplate;
|
||||
if (template.name == templateName) {
|
||||
templateDescription = template.descriptionTranslation;
|
||||
int index = 0;
|
||||
template.exerciseTypes.forEach((id) {
|
||||
final ExerciseType? exerciseType = Cache().getExerciseTypeById(id);
|
||||
if (exerciseType != null) {
|
||||
_exerciseTypes.add(exerciseType);
|
||||
_actualExerciseTypes.add(exerciseType);
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
_exercisePlanDetails[index] = exerciseType;
|
||||
|
||||
_displayPlanDetails[index] = [exerciseType];
|
||||
final WorkoutMenuTree? workoutTree = menuBloc.menuTreeRepository.getMenuItemByExerciseTypeId(exerciseType.exerciseTypeId);
|
||||
final List<WorkoutMenuTree>? alternativeMenuItems = menuBloc.menuTreeRepository.getWorkoutTreeAlternatives(workoutTree);
|
||||
if (alternativeMenuItems != null) {
|
||||
final List<ExerciseType>? actualList = _displayPlanDetails[index];
|
||||
alternativeMenuItems.forEach((element) {
|
||||
actualList!.add(element.exerciseType!);
|
||||
});
|
||||
}
|
||||
index++;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -54,32 +70,24 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
try {
|
||||
if (event is TestSetEditChangeExerciseType) {
|
||||
yield TestSetEditLoading();
|
||||
final List<ExerciseType> alternatives = workoutTreeRepository.getExerciseTypeAlternatives(event.exerciseTypeId);
|
||||
final ExerciseType? exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId);
|
||||
if (exerciseType != null) {
|
||||
if (_exercisePlanDetails[event.exerciseTypeId] == null) {
|
||||
/// it was skipped
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
} else {
|
||||
if (event.index == 0) {
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = exerciseType;
|
||||
} else {
|
||||
final changedExerciseType = alternatives[event.index - 1];
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = changedExerciseType;
|
||||
}
|
||||
}
|
||||
ExerciseType? exerciseType;
|
||||
if (_exercisePlanDetails[event.indexKey] == null) {
|
||||
exerciseType = displayPlanDetails[event.indexKey][0];
|
||||
} else {
|
||||
exerciseType = displayPlanDetails[event.indexKey][event.index];
|
||||
}
|
||||
|
||||
// to keep the slider accurate
|
||||
refreshActualPlan();
|
||||
_exercisePlanDetails[event.indexKey] = exerciseType;
|
||||
this.sliderIndex = event.index;
|
||||
yield TestSetEditReady();
|
||||
} else if (event is TestSetEditDeleteExerciseType) {
|
||||
yield TestSetEditLoading();
|
||||
final ExerciseType? exerciseType = Cache().getExerciseTypeById(event.exerciseTypeId);
|
||||
if (exerciseType != null) {
|
||||
_exercisePlanDetails[exerciseType.exerciseTypeId] = null;
|
||||
}
|
||||
refreshActualPlan();
|
||||
_exercisePlanDetails[event.indexKey] = null;
|
||||
|
||||
yield TestSetEditReady();
|
||||
} else if (event is TestSetEditAddExerciseType) {
|
||||
yield TestSetEditLoading();
|
||||
ExerciseType exerciseType = displayPlanDetails[event.indexKey][0];
|
||||
_exercisePlanDetails[event.indexKey] = exerciseType;
|
||||
yield TestSetEditReady();
|
||||
} else if (event is TestSetEditSubmit) {
|
||||
yield TestSetEditLoading();
|
||||
@@ -114,6 +122,7 @@ class TestSetEditBloc extends Bloc<TestSetEditEvent, TestSetEditState> {
|
||||
List get exerciseTypes => this._exerciseTypes;
|
||||
List get actualExerciseTypes => this._actualExerciseTypes;
|
||||
HashMap get exercisePlanDetails => this._exercisePlanDetails;
|
||||
get displayPlanDetails => this._displayPlanDetails;
|
||||
|
||||
void refreshActualPlan() {
|
||||
_actualExerciseTypes.removeRange(0, _actualExerciseTypes.length - 1);
|
||||
|
||||
@@ -13,19 +13,27 @@ class TestSetEditLoad extends TestSetEditEvent {
|
||||
|
||||
class TestSetEditChangeExerciseType extends TestSetEditEvent {
|
||||
final int index;
|
||||
final int exerciseTypeId;
|
||||
const TestSetEditChangeExerciseType({required this.index, required this.exerciseTypeId});
|
||||
final int indexKey;
|
||||
const TestSetEditChangeExerciseType({required this.index, required this.indexKey});
|
||||
|
||||
@override
|
||||
List<Object> get props => [index, exerciseTypeId];
|
||||
List<Object> get props => [index, indexKey];
|
||||
}
|
||||
|
||||
class TestSetEditDeleteExerciseType extends TestSetEditEvent {
|
||||
final int exerciseTypeId;
|
||||
const TestSetEditDeleteExerciseType({required this.exerciseTypeId});
|
||||
final int indexKey;
|
||||
const TestSetEditDeleteExerciseType({required this.indexKey});
|
||||
|
||||
@override
|
||||
List<Object> get props => [exerciseTypeId];
|
||||
List<Object> get props => [indexKey];
|
||||
}
|
||||
|
||||
class TestSetEditAddExerciseType extends TestSetEditEvent {
|
||||
final int indexKey;
|
||||
const TestSetEditAddExerciseType({required this.indexKey});
|
||||
|
||||
@override
|
||||
List<Object> get props => [indexKey];
|
||||
}
|
||||
|
||||
class TestSetEditSkipExerciseType extends TestSetEditEvent {
|
||||
|
||||
Reference in New Issue
Block a user