WT 1.1.0+35 Design, Menü filter, Test Server
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/model/workout_menu_tree.dart';
|
||||
import 'package:aitrainer_app/repository/exercise_device_repository.dart';
|
||||
import 'package:aitrainer_app/repository/exercise_repository.dart';
|
||||
import 'package:aitrainer_app/repository/workout_tree_repository.dart';
|
||||
import 'package:aitrainer_app/util/trans.dart';
|
||||
@@ -13,11 +15,15 @@ import 'package:meta/meta.dart';
|
||||
part 'menu_event.dart';
|
||||
part 'menu_state.dart';
|
||||
|
||||
enum ExerciseAbility { oneRepMax, endurance, none }
|
||||
|
||||
class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans {
|
||||
final WorkoutTreeRepository menuTreeRepository;
|
||||
final ExerciseRepository exerciseRepository = ExerciseRepository();
|
||||
ExerciseDeviceRepository exerciseDeviceRepository = ExerciseDeviceRepository();
|
||||
int parent;
|
||||
WorkoutMenuTree workoutItem;
|
||||
List<int> listFilterDevice = List();
|
||||
|
||||
String infoTitle = "";
|
||||
String infoText = "";
|
||||
@@ -29,41 +35,47 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans {
|
||||
|
||||
BuildContext context;
|
||||
|
||||
ExerciseAbility ability;
|
||||
|
||||
MenuBloc({this.menuTreeRepository}) : super(MenuInitial()) {
|
||||
parent = 0;
|
||||
}
|
||||
|
||||
void setMenuInfo() {
|
||||
double percent = Cache().getPercentExercises();
|
||||
if ( percent == -1 ) {
|
||||
if (percent == -1) {
|
||||
exerciseRepository.getBaseExerciseFinishedPercent();
|
||||
percent = Cache().getPercentExercises();
|
||||
}
|
||||
if ( context == null ) return;
|
||||
if (context == null) return;
|
||||
percent = percent * 100;
|
||||
print("Percent " + percent.toString());
|
||||
if ( percent == -1 || percent == 0) {
|
||||
if (percent == -1 || percent == 0) {
|
||||
infoTitle = t("Greetings!");
|
||||
infoText = t("The purpose is to measure you physical condition") + " " + t("The suggested order of the exercises: chest - biceps - triceps - back - shoulders - core - tigh - calf.");
|
||||
infoText = t("The purpose is to measure you physical condition") +
|
||||
" " +
|
||||
t("The suggested order of the exercises: chest - biceps - triceps - back - shoulders - core - tigh - calf.");
|
||||
infoText2 = t("I suggest begin your tests with a");
|
||||
infoText3 = t("Go to the menu Strength - One Rep Max - Chest, and select your favourite exercise.");
|
||||
infoLink = t("Bring me there");
|
||||
} else if ( percent > 0 && percent < 20) {
|
||||
} else if (percent > 0 && percent < 20) {
|
||||
infoTitle = t("Nice! This is a good start");
|
||||
} else if ( percent > 20 && percent < 40) {
|
||||
} else if (percent > 20 && percent < 40) {
|
||||
infoTitle = t("Go on!") + " " + t("You are on track");
|
||||
} else if ( percent > 60 && percent < 80) {
|
||||
} else if (percent > 60 && percent < 80) {
|
||||
infoTitle = t("Persistence!") + " " + t("Not so much left");
|
||||
} else if ( percent > 80 && percent < 100) {
|
||||
} else if (percent > 80 && percent < 100) {
|
||||
infoTitle = t("Almost!") + " " + t("You have only 1-2 exercise left to finish!");
|
||||
}
|
||||
|
||||
menuTreeRepository.sortByMuscleType();
|
||||
missingTreeName = exerciseRepository.nextMissingBaseExercise(menuTreeRepository.sortedTree);
|
||||
print("Missing " + missingTreeName);
|
||||
if ( percent > 0) {
|
||||
infoText = t("Please continue your tests with a") + " '" + missingTreeName + "' " + t("exercise!");
|
||||
infoLink = t("Bring me there");
|
||||
//print("Missing " + missingTreeName);
|
||||
if (missingTreeName != null) {
|
||||
if (percent > 0) {
|
||||
infoText = t("Please continue your tests with a") + " '" + missingTreeName + "' " + t("exercise!");
|
||||
infoLink = t("Bring me there");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,10 +88,14 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans {
|
||||
MenuEvent event,
|
||||
) async* {
|
||||
try {
|
||||
if ( event is MenuCreate ) {
|
||||
if (event is MenuCreate) {
|
||||
yield MenuLoading();
|
||||
await menuTreeRepository.createTree();
|
||||
//await menuTreeRepository.createTree();
|
||||
setMenuInfo();
|
||||
exerciseDeviceRepository.setDevices(Cache().getDevices());
|
||||
exerciseDeviceRepository.getGymDevices().forEach((element) {
|
||||
listFilterDevice.add(element.exerciseDeviceId);
|
||||
});
|
||||
yield MenuReady();
|
||||
} else if (event is MenuRecreateTree) {
|
||||
// ie. at language changes
|
||||
@@ -90,6 +106,7 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans {
|
||||
yield MenuLoading();
|
||||
parent = event.parent;
|
||||
workoutItem = event.item;
|
||||
setAbility(workoutItem.nameEnglish);
|
||||
//print("menuitem " + workoutItem.id.toString() + " parent "+workoutItem.parent.toString());
|
||||
menuTreeRepository.getBranch(event.parent);
|
||||
yield MenuReady();
|
||||
@@ -98,27 +115,84 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> with Trans {
|
||||
// get parent menus or exercises
|
||||
parent = event.parent;
|
||||
workoutItem = menuTreeRepository.getParentItem(parent);
|
||||
if ( workoutItem != null) {
|
||||
|
||||
if (workoutItem != null) {
|
||||
//print("UP menuitem " + workoutItem.id.toString() + " parent " + workoutItem.parent.toString());
|
||||
menuTreeRepository.getBranch(workoutItem.parent);
|
||||
setAbility(workoutItem.nameEnglish);
|
||||
}
|
||||
yield MenuReady();
|
||||
} else if (event is MenuTreeJump) {
|
||||
yield MenuLoading();
|
||||
parent = event.parent;
|
||||
workoutItem = menuTreeRepository.getParentItem(parent);
|
||||
if ( workoutItem != null) {
|
||||
|
||||
if (workoutItem != null) {
|
||||
//print("JUMP menuitem " + workoutItem.id.toString() + " parent " + workoutItem.parent.toString());
|
||||
menuTreeRepository.getBranch(workoutItem.parent);
|
||||
setAbility(workoutItem.nameEnglish);
|
||||
}
|
||||
yield MenuReady();
|
||||
} else if (event is MenuClickExercise) {
|
||||
yield MenuLoading();
|
||||
// get exercise page
|
||||
yield MenuReady();
|
||||
} else if (event is MenuFilterExerciseType) {
|
||||
yield MenuLoading();
|
||||
final int deviceId = event.deviceId;
|
||||
print("Defilter " + deviceId.toString());
|
||||
if (selectedDevice(deviceId)) {
|
||||
listFilterDevice.remove(deviceId);
|
||||
} else {
|
||||
listFilterDevice.add(deviceId);
|
||||
}
|
||||
yield MenuReady();
|
||||
}
|
||||
} on Exception catch(ex) {
|
||||
} on Exception catch (ex) {
|
||||
yield MenuError(message: ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
void setAbility(String name) {
|
||||
switch (name) {
|
||||
case "One Rep Max":
|
||||
ability = ExerciseAbility.oneRepMax;
|
||||
break;
|
||||
case "Endurance":
|
||||
ability = ExerciseAbility.endurance;
|
||||
break;
|
||||
case "Cardio":
|
||||
case "Body Compositions":
|
||||
ability = ExerciseAbility.none;
|
||||
break;
|
||||
}
|
||||
print("Ability: " + ability.toString() + " name:" + name);
|
||||
}
|
||||
|
||||
bool selectedDevice(int deviceId) {
|
||||
return listFilterDevice.contains(deviceId);
|
||||
}
|
||||
|
||||
LinkedHashMap<String, WorkoutMenuTree> getFilteredBranch(int parent) {
|
||||
if (parent == null) return LinkedHashMap();
|
||||
|
||||
LinkedHashMap<String, WorkoutMenuTree> branch = menuTreeRepository.getBranch(parent);
|
||||
if (!menuTreeRepository.isChild(parent) || ability.toString() == ExerciseAbility.none.toString()) {
|
||||
return branch;
|
||||
}
|
||||
LinkedHashMap<String, WorkoutMenuTree> filtered = LinkedHashMap();
|
||||
|
||||
branch.forEach((key, value) {
|
||||
final WorkoutMenuTree elem = value;
|
||||
if (elem.exerciseType != null) {
|
||||
for (int i = 0; i < elem.exerciseType.devices.length; i++) {
|
||||
if (listFilterDevice.contains(elem.exerciseType.devices[i])) {
|
||||
filtered[elem.name] = elem;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return filtered;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,3 +53,7 @@ class MenuRecreateTree extends MenuEvent {
|
||||
const MenuRecreateTree();
|
||||
}
|
||||
|
||||
class MenuFilterExerciseType extends MenuEvent {
|
||||
final int deviceId;
|
||||
const MenuFilterExerciseType({this.deviceId});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user