WT 1.1.0+35 Design, Menü filter, Test Server

This commit is contained in:
bossanyit
2020-12-08 17:05:55 +01:00
parent f5f4ade9d5
commit 85ce68a9b8
26 changed files with 821 additions and 256 deletions
@@ -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;
}
}
+85 -16
View File
@@ -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) {