specialisation de getData en fonction de la catégorie

pull/4/head
Enzo 1 year ago
parent 795a26056f
commit 6ee3a9cb46

@ -31,7 +31,7 @@ class ProfileInfoUser extends StatelessWidget {
Expanded(
child: TitleSubtitleCell(
title:
"${context.watch<User>().getTotalDenivelePositif().toString()} + m",
"${context.watch<User>().getTotalDenivelePositifAllActivity().toString()} + m",
subtitle: "Total dénivelé positif",
),
),
@ -41,7 +41,7 @@ class ProfileInfoUser extends StatelessWidget {
Expanded(
child: TitleSubtitleCell(
title:
"${context.watch<User>().getTotalDeniveleNegatif().toString()} - m",
"${context.watch<User>().getTotalDeniveleNegatifAllActivity().toString()} - m",
subtitle: "Total dénivelé négatif",
),
),

@ -16,6 +16,7 @@ class ActivityInfo {
int bpmMax = 0;
int bpmMin = 300;
int bpmAvg = 0;
bool bpmNotZero = false;
// ----------- Denivelé ------------ //
double denivelePositif = 0.0;
double deniveleNegatif = 0.0;
@ -23,19 +24,22 @@ class ActivityInfo {
double altitudeMax = 0.0;
double altitudeMin = 30000.0;
double altitudeAvg = 0.0;
bool altitudeNotZero = false;
// ----------- Température --------- //
int temperatureMax = 0;
int temperatureMin = 3000;
int temperatureAvg = 0;
bool temperatureNotZero = false;
// ----------- Vitesse ------------- //
double vitesseMax = 0.0;
double vitesseMin = 999999.0;
double vitesseAvg = 0.0;
bool vitesseNotZero = false;
// ---------------------------------------------------------------------- //
// -- Fonction pour lire le csv et remplir la classe -- //
ActivityInfo getData(List<List<String>> csv) {
ActivityInfo getDataWalking(List<List<String>> csv) {
// - Entete - //
Map<String, int> enteteCSV = getEntete(csv.first);
// ------------- Var tmp ---------- //
@ -63,6 +67,7 @@ class ActivityInfo {
int.parse(csv[i][enteteCSV["Value_${managerFile.fielBPM}"]!]);
bpmSomme += value;
bpmNb += 1;
bpmNotZero = true;
if (value > bpmMax) {
bpmMax = value;
}
@ -91,6 +96,7 @@ class ActivityInfo {
}
altitudeSomme += value;
alititudeNb += 1;
altitudeNotZero = true;
}
// ------------------------ Température ----------------------- //
@ -100,6 +106,7 @@ class ActivityInfo {
csv[i][enteteCSV["Value_${managerFile.fieldTemperature}"]!]);
temperatureSomme += value;
temperatureNb += 1;
temperatureNotZero = true;
if (value > temperatureMax) {
temperatureMax = value;
}
@ -114,6 +121,7 @@ class ActivityInfo {
double.parse(csv[i][enteteCSV["Value_${managerFile.fieldSpeed}"]!]);
vitesseSomme += value;
vitesseNb += 1;
vitesseNotZero = true;
if (value > vitesseMax) {
vitesseMax = value;
}
@ -124,13 +132,168 @@ class ActivityInfo {
}
// -- BPM -- //
if (bpmNotZero) {
bpmAvg = bpmSomme ~/ bpmNb;
}
// -- Atitude -- //
if (altitudeNotZero) {
altitudeAvg = altitudeSomme / alititudeNb;
}
// -- Température -- //
if (temperatureNotZero) {
temperatureAvg = temperatureSomme ~/ temperatureNb;
}
// -- Vitesse -- //
if (vitesseNotZero) {
vitesseAvg = vitesseSomme / vitesseNb;
}
return this;
}
// -- Fonction pour lire le csv et remplir la classe -- //
ActivityInfo getDataCycling(List<List<String>> csv) {
// - Entete - //
Map<String, int> enteteCSV = getEntete(csv.first);
// ------------- Var tmp ---------- //
// -- BPM -- //
int bpmSomme = 0;
int bpmNb = 0;
// -- Denivelé -- //
double lastDenivele = 0.0;
// -- Altitude -- //
double altitudeSomme = 0;
int alititudeNb = 0;
// -- Température -- //
int temperatureSomme = 0;
int temperatureNb = 0;
// -- Vitesse -- //
double vitesseSomme = 0.0;
int vitesseNb = 0;
// --- Boucle -- //
for (int i = 1; i < csv.length; i++) {
//
// ---------------------- BPM ---------------------- //
if (!isNull(enteteCSV["Value_${managerFile.fielBPM}"]!, csv[i])) {
int value =
int.parse(csv[i][enteteCSV["Value_${managerFile.fielBPM}"]!]);
bpmSomme += value;
bpmNb += 1;
bpmNotZero = true;
if (value > bpmMax) {
bpmMax = value;
}
if (value < bpmMin) {
bpmMin = value;
}
}
/// ------------------ Denivele et Altitude --------------- //
if (!isNull(enteteCSV["Value_${managerFile.fieldAltitude}"]!, csv[i])) {
double value = double.parse(
csv[i][enteteCSV["Value_${managerFile.fieldAltitude}"]!]);
// -- Denivelé -- //
if (value > lastDenivele) {
denivelePositif += value - lastDenivele;
} else {
deniveleNegatif += (value - lastDenivele) * -1;
}
lastDenivele = value;
// -- Altitude -- //
if (value > altitudeMax) {
altitudeMax = value;
}
if (value < altitudeMin) {
altitudeMin = value;
}
altitudeSomme += value;
alititudeNb += 1;
altitudeNotZero = true;
}
// ------------------------ Température ----------------------- //
if (!isNull(
enteteCSV["Value_${managerFile.fieldTemperature}"]!, csv[i])) {
int value = int.parse(
csv[i][enteteCSV["Value_${managerFile.fieldTemperature}"]!]);
temperatureSomme += value;
temperatureNb += 1;
vitesseNotZero = true;
if (value > temperatureMax) {
temperatureMax = value;
}
if (value < temperatureMin) {
temperatureMin = value;
}
}
// ------------------------ Vitesse -----------------------------//
if (!isNull(enteteCSV["Value_${managerFile.fieldSpeed}"]!, csv[i])) {
double value =
double.parse(csv[i][enteteCSV["Value_${managerFile.fieldSpeed}"]!]);
vitesseSomme += value;
vitesseNb += 1;
vitesseNotZero = true;
if (value > vitesseMax) {
vitesseMax = value;
}
if (value < vitesseMin) {
vitesseMin = value;
}
}
}
// -- BPM -- //
if (bpmNotZero) {
bpmAvg = bpmSomme ~/ bpmNb;
}
// -- Atitude -- //
if (altitudeNotZero) {
altitudeAvg = altitudeSomme / alititudeNb;
}
// -- Température -- //
if (temperatureNotZero) {
temperatureAvg = temperatureSomme ~/ temperatureNb;
}
// -- Vitesse -- //
if (vitesseNotZero) {
vitesseAvg = vitesseSomme / vitesseNb;
}
return this;
}
// -- Fonction pour lire le csv et remplir la classe -- //
ActivityInfo getDataGeneric(List<List<String>> csv) {
// - Entete - //
Map<String, int> enteteCSV = getEntete(csv.first);
// ------------- Var tmp ---------- //
// -- BPM -- //
int bpmSomme = 0;
int bpmNb = 0;
bool bpmNotZero = false;
// --- Boucle -- //
for (int i = 1; i < csv.length; i++) {
//
// ---------------------- BPM ---------------------- //
if (!isNull(enteteCSV["Value_${managerFile.fielBPM}"]!, csv[i])) {
int value =
int.parse(csv[i][enteteCSV["Value_${managerFile.fielBPM}"]!]);
bpmSomme += value;
bpmNb += 1;
bpmNotZero = true;
if (value > bpmMax) {
bpmMax = value;
}
if (value < bpmMin) {
bpmMin = value;
}
}
}
// -- BPM -- //
if (bpmNotZero) {
bpmAvg = bpmSomme ~/ bpmNb;
}
return this;
}

@ -137,7 +137,6 @@ class ManagerFile {
// ------ Remplir info avec la ligne session --------- //
info.startTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(_getXfromListe(_startTime, ligneSession)));
info.timeOfActivity =
double.parse(_getXfromListe(_timeActivity, ligneSession));
info.distance = double.parse(_getXfromListe(_totalDistance, ligneSession));
@ -145,7 +144,17 @@ class ManagerFile {
info.steps = int.parse(_getXfromListe(_totalStep, ligneSession));
// ----------------------------------------------------- //
return Tuple4(true, csvData, info.getData(csvData), categorie);
// -- Extraire les données en fonction de la catégorie -- //
switch (categorie) {
case (_marche):
info.getDataWalking(csvData);
case (_velo):
info.getDataCycling(csvData);
default:
info.getDataGeneric(csvData);
}
return Tuple4(true, csvData, info, categorie);
}
List<dynamic> _getLigneSession(List<Record> listRecord) {
@ -164,7 +173,7 @@ class ManagerFile {
return liste[i + 1].toString();
}
}
return "null";
return "0";
}
List<Map<String, Map<String, String>>> getDataOfListeOfRecord(

@ -37,7 +37,7 @@ class User extends ChangeNotifier {
// ------------ Walking -------------- //
// ---- Denivelé ---- //
double getTotalDenivelePositif() {
double getTotalDenivelePositifAllActivity() {
double totalDevPos = 0.0;
for (ActivityOfUser activity in listActivity) {
totalDevPos += activity.activityInfo.denivelePositif;
@ -45,7 +45,7 @@ class User extends ChangeNotifier {
return totalDevPos;
}
double getTotalDeniveleNegatif() {
double getTotalDeniveleNegatifAllActivity() {
double totalDevNeg = 0.0;
for (ActivityOfUser activity in listActivity) {
totalDevNeg += activity.activityInfo.deniveleNegatif;

@ -58,6 +58,7 @@ dependencies:
responsive_builder: ^0.7.0
flutter_map: ^5.0.0
latlong2: ^0.9.0
units_converter: ^2.1.1
dev_dependencies:
flutter_test:

Loading…
Cancel
Save