You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SmartFit_Mobile/lib/modele/activity.dart

249 lines
7.2 KiB

import 'package:fl_chart/fl_chart.dart';
import 'package:smartfit_app_mobile/common_widget/graph.dart';
class ActivityOfUser {
late String _nomActivite;
late String _imageName;
late List<dynamic> _contentActivity;
List<dynamic> get contentActivity => _contentActivity;
ActivityOfUser(String nom, List<dynamic> listeDynamic) {
_nomActivite = nom;
_imageName = "assets/img/workout1.svg";
_contentActivity = listeDynamic;
}
List<FlSpot> getHeartRateWithTime() {
List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne[0] == "Data") {
if (ligne.length >= 10 && ligne[9] == "heart_rate") {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[10]]);
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[10].toDouble()));
} else if (ligne.length >= 16 && ligne[15] == "heart_rate") {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[17]]);
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[16].toDouble()));
}
}
}
return result;
}
List<FlSpot> getDistanceWithTime() {
List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne.length >= 8 && ligne[0] == "Data" && ligne[6] == "distance") {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[7].toInt()]);
result
.add(FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[7].toDouble()));
}
}
return result;
}
List<FlSpot> getCalories() {
List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne.length >= 39 &&
ligne[0] == "Data" &&
ligne[39] == "total_calories") {
print(ligne[39]);
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[7].toInt()]);
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[40].toDouble()));
}
}
return result;
}
String getTotalSteps() {
List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length);
for (int i = 0;
i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if (_contentActivity[_contentActivity.length - 3][i] == "total_strides") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
}
}
return "NAN";
}
String getTotalCalorie() {
List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length);
for (int i = 0;
i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_calories") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
}
}
return "NAN";
}
String getTotalAvgHeartRate() {
List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length);
for (int i = 0;
i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_calories") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
}
}
return "NAN";
}
String getTotalTime() {
List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length);
for (int i = 0;
i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_elapsed_time") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
}
}
return "NAN";
}
String getTotalDistance() {
List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length);
for (int i = 0;
i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_distance") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
}
}
return "NAN";
}
List<FlSpot> getAltitudeWithTime() {
List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne.length >= 14 && ligne[0] == "Data" && ligne[12] == "altitude") {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[13].toInt()]);
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[13].toDouble()));
}
}
return result;
}
double getDistance() {
double result = 0.0;
for (int i = _contentActivity.length - 1; i >= 0; i--) {
if (_contentActivity[i].length >= 8 &&
_contentActivity[i][0] == "Data" &&
_contentActivity[i][6] == "distance") {
if (_contentActivity[i][7] > result) {
result = _contentActivity[i][7].toDouble();
}
}
}
return result;
}
List<FlSpot> getSpeedWithTime() {
List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne[0] == "Data" && ligne[1] == 1) {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[19].toDouble()));
}
if (ligne[0] == "Data" && ligne[1] == 2) {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
result.add(
FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[25].toDouble()));
}
}
return result;
}
List<DataPoint> getSpeedWithTimeActivity() {
List<DataPoint> result = List.empty(growable: true);
int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) {
if (ligne[0] == "Data" && ligne[1] == 1) {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
result.add(DataPoint(
((ligne[4] - firtTimeStamp) / 100),
ligne[19].toDouble(),
));
}
if (ligne[0] == "Data" && ligne[1] == 2) {
if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4];
}
result.add(DataPoint(
((ligne[4] - firtTimeStamp) / 100), ligne[25].toDouble()));
}
}
return result;
}
Map<String, dynamic> toMap() {
return {
'nomActivite': _nomActivite,
'image': _imageName,
};
}
}