wt1.1d custom exercise, mydevelopment exercise list, environment for different databases

This commit is contained in:
Bossanyi Tibor
2020-09-03 18:38:20 +02:00
parent 6b0892ec09
commit f0ba820385
22 changed files with 403 additions and 117 deletions
+56 -2
View File
@@ -1,7 +1,10 @@
import 'dart:collection';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/customer.dart';
import 'package:aitrainer_app/model/exercise.dart';
import 'package:aitrainer_app/model/exercise_type.dart';
import 'package:aitrainer_app/model/workout_tree.dart';
import 'package:aitrainer_app/service/exercise_service.dart';
class ExerciseRepository {
@@ -70,6 +73,7 @@ class ExerciseRepository {
modelExercise.customerId = this.customer.customerId;
modelExercise.exerciseTypeId = this.exerciseType.exerciseTypeId;
await ExerciseApi().addExercise(modelExercise);
Cache().addExercise(exercise);
}
@@ -96,8 +100,57 @@ class ExerciseRepository {
return this.exerciseList;
}
double getBaseExerciseFinishedPercent() {
return 0;
void getBaseExerciseFinishedPercent() {
List<int> checkedExerciseTypeId = List();
List<int> baseTreeItem = List();
List<int> checkedBaseTreeItem = List();
int count1RMExercises = 0;
LinkedHashMap<String, WorkoutTree> tree = Cache().getWorkoutTree();
if ( tree == null ) {
return;
}
tree.forEach((key, value) {
WorkoutTree treeItem = value;
if (treeItem.exerciseType != null &&
treeItem.exerciseType.base == true &&
!baseTreeItem.contains(treeItem.parent)) {
baseTreeItem.add(treeItem.parent);
}
});
if ( exerciseList == null ) {
exerciseList = Cache().getExercises();
}
if ( exerciseList == null ) {
return;
}
exerciseList.forEach((element) {
Exercise exercise = element;
if ( !checkedExerciseTypeId.contains(exercise.exerciseTypeId )) {
checkedExerciseTypeId.add(exercise.exerciseTypeId);
tree.forEach((key, value) {
WorkoutTree treeItem = value;
if (treeItem.exerciseType != null
&& treeItem.exerciseType.base == true
&& exercise.exerciseTypeId == treeItem.exerciseType.exerciseTypeId
&& !checkedBaseTreeItem.contains(treeItem.parent)) {
print ("id: " + exercise.exerciseTypeId.toString());
checkedBaseTreeItem.add(treeItem.parent);
count1RMExercises++;
}
});
}
});
print ("checkedExerciseTypeid: " + checkedExerciseTypeId.toString());
print ("baseTreeItem: " + baseTreeItem.toString());
print ("count1RMExercises: " + count1RMExercises.toString());
final double percent = count1RMExercises / baseTreeItem.length;
Cache().setPercentExercises(percent);
}
void getLastExercise() {
@@ -128,4 +181,5 @@ class ExerciseRepository {
}
return actualExerciseType;
}
}
+16 -8
View File
@@ -4,6 +4,7 @@ import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_tree.dart';
import 'package:aitrainer_app/model/exercise_type.dart';
import 'package:aitrainer_app/model/workout_tree.dart';
import 'package:aitrainer_app/repository/exercise_repository.dart';
import 'package:aitrainer_app/service/exercise_tree_service.dart';
import 'package:aitrainer_app/service/exercisetype_service.dart';
import 'package:flutter/material.dart';
@@ -12,9 +13,9 @@ class MenuTreeRepository {
final LinkedHashMap tree = LinkedHashMap<String, WorkoutTree>();
Future<void> createTree() async {
final AppLanguage appLanguage = AppLanguage();
bool isEnglish = appLanguage.appLocal == Locale('en');
print("** Start creating tree on lang: " + appLanguage.appLocal.toString());
List<ExerciseTree> exerciseTree = Cache().getExerciseTree();
if ( exerciseTree == null || exerciseTree.length == 0) {
@@ -25,8 +26,8 @@ class MenuTreeRepository {
String treeName = isEnglish ? treeItem.name : treeItem.nameTranslation;
String assetImage = 'asset/menu/' + treeItem.imageUrl.substring(7);
bool is1RM = treeItem.name == '1RM' ? true : false;
if ( is1RM == false) {
is1RM = false; //isParent1RM(treeItem.treeId);
if ( is1RM == false && treeItem.parentId != 0) {
is1RM = isParent1RM(treeItem.parentId);
}
this.tree[treeItem.name] = WorkoutTree(
treeItem.treeId,
@@ -51,7 +52,8 @@ class MenuTreeRepository {
String exerciseTypeName = isEnglish ?
exerciseType.name : exerciseType.nameTranslation;
String assetImage = 'asset/menu/' + exerciseType.imageUrl.substring(7);
bool is1RM = false; //this.isParent1RM(exerciseType.treeId);
bool is1RM = this.isParent1RM(exerciseType.treeId);
exerciseType.is1RM = is1RM;
this.tree[exerciseType.name] = WorkoutTree(
exerciseType.exerciseTypeId,
exerciseType.treeId,
@@ -66,18 +68,24 @@ class MenuTreeRepository {
is1RM
);
});
Cache().setWorkoutTree(tree);
ExerciseRepository exerciseRepository = ExerciseRepository();
exerciseRepository.getBaseExerciseFinishedPercent();
}
bool isParent1RM(int treeId) {
bool isTreeItem1RM = false;
for (int i = 0; i < this.tree.length; i++ ) {
WorkoutTree treeItem = this.tree[i];
this.tree.forEach((key, value) {
WorkoutTree treeItem = value as WorkoutTree;
if ( treeItem.id == treeId ) {
isTreeItem1RM = treeItem.is1RM;
break;
//print (treeItem.name + " 1RM " + treeItem.is1RM.toString() );
}
};
});
return isTreeItem1RM;
}