WT 1.1.0+35 Design, Menü filter, Test Server
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/model/exercise_device.dart';
|
||||
import 'package:aitrainer_app/service/exercise_device_service.dart';
|
||||
|
||||
@@ -8,8 +9,37 @@ class ExerciseDeviceRepository {
|
||||
return this._devices;
|
||||
}
|
||||
|
||||
void setDevices(List<ExerciseDevice> list) {
|
||||
_devices = list;
|
||||
}
|
||||
|
||||
Future<List<ExerciseDevice>> getDBDevices() async {
|
||||
this._devices = await ExerciseDeviceApi().getDevices();
|
||||
return this._devices;
|
||||
}
|
||||
|
||||
bool isGym(int deviceId) {
|
||||
bool isGym = false;
|
||||
_devices.forEach((element) {
|
||||
isGym = isGymElement(element.name);
|
||||
});
|
||||
return isGym;
|
||||
}
|
||||
|
||||
bool isGymElement(String name) {
|
||||
return name == "Cable" || name == "Baar" || name == "Gym Machine" || name == "Dumbbells" || name == "Barbell";
|
||||
}
|
||||
|
||||
List<ExerciseDevice> getGymDevices() {
|
||||
final List<ExerciseDevice> gymDevices = List();
|
||||
if (_devices == null || _devices.isEmpty) {
|
||||
_devices = Cache().getDevices();
|
||||
}
|
||||
_devices.forEach((element) {
|
||||
if (isGymElement(element.name)) {
|
||||
gymDevices.add(element);
|
||||
}
|
||||
});
|
||||
return gymDevices;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,17 +50,31 @@ class WorkoutTreeRepository {
|
||||
|
||||
List<ExerciseTree> exerciseTree = Cache().getExerciseTree();
|
||||
if (exerciseTree == null || exerciseTree.length == 0) {
|
||||
await ExerciseTreeApi().getExerciseTree();
|
||||
exerciseTree = await ExerciseTreeApi().getExerciseTree();
|
||||
}
|
||||
|
||||
List<ExerciseType> exerciseTypes = Cache().getExerciseTypes();
|
||||
if (exerciseTypes == null || exerciseTypes.length == 0) {
|
||||
exerciseTypes = await ExerciseTypeApi().getExerciseTypes();
|
||||
}
|
||||
|
||||
exerciseTree.forEach((treeItem) async {
|
||||
//print(" -- TreeItem " + treeItem.toJson().toString());
|
||||
|
||||
String treeName = isEnglish ? treeItem.name : treeItem.nameTranslation;
|
||||
String assetImage = 'asset/menu/' + treeItem.imageUrl.substring(7);
|
||||
|
||||
bool is1RM = treeItem.name == 'One Rep Max' ? true : false;
|
||||
if (is1RM == false && treeItem.parentId != 0) {
|
||||
is1RM = isParent1RM(treeItem.parentId);
|
||||
}
|
||||
this.tree[treeItem.name] = WorkoutMenuTree(
|
||||
|
||||
bool isEndurance = treeItem.name == 'Endurance' ? true : false;
|
||||
if (isEndurance == false && treeItem.parentId != 0) {
|
||||
isEndurance = isParentEndurance(treeItem.parentId);
|
||||
}
|
||||
|
||||
final WorkoutMenuTree menuItem = WorkoutMenuTree(
|
||||
treeItem.treeId,
|
||||
treeItem.parentId,
|
||||
treeName,
|
||||
@@ -72,22 +86,40 @@ class WorkoutTreeRepository {
|
||||
null,
|
||||
false,
|
||||
is1RM,
|
||||
isEndurance,
|
||||
treeItem.name,
|
||||
);
|
||||
this.tree[treeItem.name + "_" + treeItem.parentId.toString()] = menuItem;
|
||||
//print("WorkoutMenuTree item " + menuItem.toJson().toString());
|
||||
});
|
||||
|
||||
List<ExerciseType> exerciseTypes = Cache().getExerciseTypes();
|
||||
if (exerciseTypes == null || exerciseTypes.length == 0) {
|
||||
await ExerciseTypeApi().getExerciseTypes();
|
||||
}
|
||||
|
||||
exerciseTypes.forEach((exerciseType) {
|
||||
String exerciseTypeName = isEnglish ? exerciseType.name : exerciseType.nameTranslation;
|
||||
String assetImage = 'asset/menu/' + exerciseType.imageUrl.substring(7);
|
||||
bool is1RM = this.isParent1RM(exerciseType.treeId);
|
||||
exerciseType.is1RM = is1RM;
|
||||
this.tree[exerciseType.name] = WorkoutMenuTree(exerciseType.exerciseTypeId, exerciseType.treeId, exerciseTypeName, assetImage,
|
||||
Colors.white, 24, true, exerciseType.exerciseTypeId, exerciseType, exerciseType.base, is1RM, exerciseType.name);
|
||||
if (!(exerciseType.imageUrl.isEmpty || exerciseType.name.isEmpty || exerciseType.nameTranslation.isEmpty)) {
|
||||
String exerciseTypeName = isEnglish ? exerciseType.name : exerciseType.nameTranslation;
|
||||
String assetImage = 'asset/menu/' + exerciseType.imageUrl.substring(7);
|
||||
if (exerciseType.parents.isNotEmpty) {
|
||||
exerciseType.parents.forEach((parentId) {
|
||||
bool is1RM = this.isParent1RM(parentId);
|
||||
bool isEndurance = this.isParentEndurance(parentId);
|
||||
exerciseType.is1RM = is1RM;
|
||||
exerciseType.isEndurance = isEndurance;
|
||||
WorkoutMenuTree menuItem = WorkoutMenuTree(exerciseType.exerciseTypeId, parentId, exerciseTypeName, assetImage, Colors.white,
|
||||
24, true, exerciseType.exerciseTypeId, exerciseType, exerciseType.base, is1RM, isEndurance, exerciseType.name);
|
||||
this.tree[exerciseType.name] = menuItem;
|
||||
//print("WorkoutMenuTree item " + menuItem.toJson().toString());
|
||||
/*print("ExerciseType in Menu item " +
|
||||
exerciseType.toJson().toString() +
|
||||
" is1RM: " +
|
||||
is1RM.toString() +
|
||||
" isEndurance: " +
|
||||
isEndurance.toString());*/
|
||||
});
|
||||
} else {
|
||||
//print("No Parents " + exerciseType.toJson().toString());
|
||||
}
|
||||
} else {
|
||||
//print("ExerciseType missing data: " + exerciseType.exerciseTypeId.toString());
|
||||
}
|
||||
});
|
||||
|
||||
Cache().setWorkoutMenuTree(tree);
|
||||
@@ -101,7 +133,7 @@ class WorkoutTreeRepository {
|
||||
this.tree.forEach((key, value) {
|
||||
WorkoutMenuTree treeItem = value as WorkoutMenuTree;
|
||||
if (treeItem.id == treeId) {
|
||||
isTreeItem1RM = treeItem.is1RM;
|
||||
isTreeItem1RM = isTreeItem1RM || treeItem.is1RM;
|
||||
//print (treeItem.name + " 1RM " + treeItem.is1RM.toString() );
|
||||
}
|
||||
});
|
||||
@@ -109,8 +141,45 @@ class WorkoutTreeRepository {
|
||||
return isTreeItem1RM;
|
||||
}
|
||||
|
||||
LinkedHashMap getBranch(int parent) {
|
||||
LinkedHashMap branch = LinkedHashMap<String, WorkoutMenuTree>();
|
||||
bool isParentEndurance(int treeId) {
|
||||
bool isTreeItemEndurance = false;
|
||||
|
||||
this.tree.forEach((key, value) {
|
||||
WorkoutMenuTree treeItem = value as WorkoutMenuTree;
|
||||
if (treeItem.id == treeId) {
|
||||
isTreeItemEndurance = isTreeItemEndurance || treeItem.isEndurance;
|
||||
//print(treeItem.id.toString() + " " + treeItem.name + " Endurance? " + treeItem.isEndurance.toString());
|
||||
}
|
||||
});
|
||||
|
||||
return isTreeItemEndurance;
|
||||
}
|
||||
|
||||
bool isChild(int parentId) {
|
||||
bool isChild = true;
|
||||
|
||||
this.getBranch(parentId).forEach((key, value) {
|
||||
WorkoutMenuTree workoutTree = value;
|
||||
isChild = isChild && workoutTree.child;
|
||||
});
|
||||
//print("Check child " + parentId.toString() + " child: " + isChild.toString());
|
||||
return isChild;
|
||||
}
|
||||
|
||||
bool isChildAndGym(int parentId) {
|
||||
bool isChild = true;
|
||||
bool isGym = true;
|
||||
|
||||
this.getBranch(parentId).forEach((key, value) {
|
||||
WorkoutMenuTree workoutTree = value;
|
||||
isChild = isChild && workoutTree.child;
|
||||
isGym = isGym && (workoutTree.is1RM || workoutTree.isEndurance);
|
||||
});
|
||||
return isChild && isGym;
|
||||
}
|
||||
|
||||
LinkedHashMap<String, WorkoutMenuTree> getBranch(int parent, {bool filtering = false}) {
|
||||
LinkedHashMap<String, WorkoutMenuTree> branch = LinkedHashMap<String, WorkoutMenuTree>();
|
||||
tree.forEach((key, value) {
|
||||
WorkoutMenuTree workoutTree = value as WorkoutMenuTree;
|
||||
if (parent == workoutTree.parent) {
|
||||
|
||||
Reference in New Issue
Block a user