list activity

pull/4/head
Enzo 1 year ago
parent 4df9430b3c
commit cfe7879c2f

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
class WorkoutRow extends StatelessWidget {
final Map wObj;
final bool isFirstActivity; // Ajouter la propriété isFirstActivity
final bool isSelected;
final VoidCallback onDelete;
final VoidCallback onClick;
@ -13,7 +13,7 @@ class WorkoutRow extends StatelessWidget {
required this.wObj,
required this.onDelete,
required this.onClick,
required this.isFirstActivity,
required this.isSelected,
}) : super(key: key);
@override
@ -24,7 +24,7 @@ class WorkoutRow extends StatelessWidget {
margin: const EdgeInsets.symmetric(vertical: 8, horizontal: 2),
decoration: BoxDecoration(
border: Border.all(
color: isFirstActivity
color: isSelected
? Color.fromARGB(255, 144, 252, 148)
: Colors.transparent,
width: 2.0,
@ -32,7 +32,7 @@ class WorkoutRow extends StatelessWidget {
borderRadius: BorderRadius.circular(10),
),
child: Material(
color: isFirstActivity
color: isSelected
? Color.fromARGB(255, 240, 255, 240)
: Colors.transparent,
child: InkWell(

@ -9,14 +9,38 @@ class ManagerSelectedActivity {
List<ActivityOfUser> activitySelected = List.empty(growable: true);
bool addSelectedActivity(ActivityOfUser activityOfUser) {
// Chercher le contenu du fichier
// Regarder si l'entete est la même
// Supprimer l'entete
// C'est de la merde!!
/*
if (activitySelected.isNotEmpty &&
activitySelected.first.enteteCSV != activityOfUser.enteteCSV) {
return false;
}*/
activitySelected.add(activityOfUser);
return true;
}
bool removeSelectedActivity(String fileUuid) {
for (ActivityOfUser activityOfUser in activitySelected) {
if (activityOfUser.fileUuid == fileUuid) {
activitySelected.remove(activityOfUser);
return true;
}
}
return false;
}
// ---- Function utile ---- //
// -- func utile -- //
bool fileNotSelected(String fileUuid) {
for (ActivityOfUser activityOfUser in activitySelected) {
if (activityOfUser.fileUuid == fileUuid) {
return false;
}
}
return true;
}
bool _notNull(int indexActivitySelected, int ligne, int colonne) {
if (activitySelected[indexActivitySelected].contentActivity[ligne]
[colonne] ==
@ -33,21 +57,26 @@ class ManagerSelectedActivity {
int firstTimestamp = 0;
for (int i = 0; i < activity.contentActivity.length; i++) {
if (_notNull(
activity.contentActivity, i, activity.enteteCSV["Value_$field"]!)) {
if (firstTimestamp == 0) {
firstTimestamp = activity.contentActivity[i]
[activity.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(c, i, activitySelected[c].enteteCSV["Value_$field"]!)) {
if (firstTimestamp == 0) {
firstTimestamp = activitySelected[c].contentActivity[i][
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
}
result.add(FlSpot(
(((activitySelected[c].contentActivity[i][
activitySelected[c].enteteCSV[
"Value_${_managerFile.fieldTimeStamp}"]!]) -
firstTimestamp) ~/
100)
.toDouble(),
activitySelected[c]
.contentActivity[i]
[activitySelected[c].enteteCSV["Value_$field"]!]
.toDouble()));
}
result.add(FlSpot(
(((activity.contentActivity[i][activity.enteteCSV[
"Value_${_managerFile.fieldTimeStamp}"]!]) -
firstTimestamp) ~/
100)
.toDouble(),
activity.contentActivity[i][activity.enteteCSV["Value_$field"]!]
.toDouble()));
}
}
return result;
@ -58,29 +87,35 @@ class ManagerSelectedActivity {
// Retourne le BPM Max (Fichier CSV)
int getMaxBpm() {
int max = 0;
for (int i = 0; i < activity.contentActivity.length; i++) {
if (_notNull(activity.contentActivity, i,
activity.enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
int valueTmp = activity.contentActivity[i]
[activity.enteteCSV["Value_${_managerFile.fielBPM}"]!];
if (valueTmp > max) {
max = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(c, i,
activitySelected[c].enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
int valueTmp = activitySelected[c].contentActivity[i]
[activitySelected[c].enteteCSV["Value_${_managerFile.fielBPM}"]!];
if (valueTmp > max) {
max = valueTmp;
}
}
}
}
return max;
}
// Retourne le BPM Min (Fichier CSV)
int getMinBpm() {
int min = 300;
for (int i = 0; i < activity.contentActivity.length; i++) {
if (_notNull(activity.contentActivity, i,
activity.enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
int valueTmp = activity.contentActivity[i]
[activity.enteteCSV["Value_${_managerFile.fielBPM}"]!];
if (valueTmp < min) {
min = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(c, i,
activitySelected[c].enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
int valueTmp = activitySelected[c].contentActivity[i]
[activitySelected[c].enteteCSV["Value_${_managerFile.fielBPM}"]!];
if (valueTmp < min) {
min = valueTmp;
}
}
}
}
@ -91,12 +126,14 @@ class ManagerSelectedActivity {
int getAvgBpm() {
int somme = 0;
int nb = 0;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(
contentActivity, i, enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
somme += contentActivity[i][enteteCSV["Value_${_managerFile.fielBPM}"]!]
as int;
nb++;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(c, i,
activitySelected[c].enteteCSV["Value_${_managerFile.fielBPM}"]!)) {
somme += activitySelected[c].contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fielBPM}"]!] as int;
nb++;
}
}
}
return somme ~/ nb;
@ -108,17 +145,27 @@ class ManagerSelectedActivity {
double getTotalDistance() {
double max = 0;
for (int i = contentActivity.length - 1; i != 0; i--) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldDistance}"]!)) {
double valueTmp = contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldDistance}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = activitySelected[c].contentActivity.length - 1;
i != 0;
i--) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldDistance}"]!)) {
double valueTmp = activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldDistance}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
}
}
}
}
return max;
}
@ -126,11 +173,18 @@ class ManagerSelectedActivity {
// ---------------------- Calories ---------------------- //
int getCalorie() {
for (int i = contentActivity.length - 1; i != 0; i--) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldTotalCalories}"]!)) {
return contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldTotalCalories}"]!] as int;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = activitySelected[c].contentActivity.length - 1;
i != 0;
i--) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTotalCalories}"]!)) {
return activitySelected[c].contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTotalCalories}"]!] as int;
}
}
}
return 0;
@ -140,12 +194,20 @@ class ManagerSelectedActivity {
// ---------------------- Step ------------------------------//
int getTotalSteps() {
for (int i = contentActivity.length - 1; i != 0; i--) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldTotalStep}"]!)) {
return contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldTotalStep}"]!]
.toInt();
for (int c = 0; c < activitySelected.length; c++) {
for (int i = activitySelected[c].contentActivity.length - 1;
i != 0;
i--) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTotalStep}"]!)) {
return activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTotalStep}"]!]
.toInt();
}
}
}
return 0;
@ -155,11 +217,18 @@ class ManagerSelectedActivity {
// ------------------------- Time ----------------------------- //
int getTotalTime() {
for (int i = contentActivity.length - 1; i != 0; i--) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!)) {
return contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
for (int c = 0; c < activitySelected.length; c++) {
for (int i = activitySelected[c].contentActivity.length - 1;
i != 0;
i--) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!)) {
return activitySelected[c].contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
}
}
}
return 0;
@ -171,14 +240,20 @@ class ManagerSelectedActivity {
// --- Fichier CSV --- //
double getMaxAltitude() {
double max = 0;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldAltitude}"]!)) {
double valueTmp = contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldAltitude}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldAltitude}"]!)) {
double valueTmp = activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldAltitude}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
}
}
}
}
@ -188,14 +263,20 @@ class ManagerSelectedActivity {
// --- Fichier CSV --- //
double getMinAltitude() {
double min = 5000;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldAltitude}"]!)) {
double valueTmp = contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldAltitude}"]!]
.toDouble();
if (valueTmp < min) {
min = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldAltitude}"]!)) {
double valueTmp = activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldAltitude}"]!]
.toDouble();
if (valueTmp < min) {
min = valueTmp;
}
}
}
}
@ -211,23 +292,35 @@ class ManagerSelectedActivity {
List<DataPoint> result = List.empty(growable: true);
int firstTimestamp = 0;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!) &&
notNull(contentActivity, i,
enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
if (firstTimestamp == 0) {
firstTimestamp = contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!) &&
_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
if (firstTimestamp == 0) {
firstTimestamp = activitySelected[c].contentActivity[i][
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldTimeStamp}"]!];
}
result.add(DataPoint(
(((activitySelected[c].contentActivity[i][
activitySelected[c].enteteCSV[
"Value_${_managerFile.fieldTimeStamp}"]!]) -
firstTimestamp) ~/
100)
.toDouble(),
activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!]
.toDouble()));
}
result.add(DataPoint(
(((contentActivity[i][enteteCSV[
"Value_${_managerFile.fieldTimeStamp}"]!]) -
firstTimestamp) ~/
100)
.toDouble(),
contentActivity[i][enteteCSV["Value_${_managerFile.fieldSpeed}"]!]
.toDouble()));
}
}
return result;
@ -236,14 +329,21 @@ class ManagerSelectedActivity {
// Retourne la Speed Max (Fichier CSV)
double getMaxSpeed() {
double max = 0.00;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(
contentActivity, i, enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
double valueTmp = contentActivity[i]
[enteteCSV["Value_${_managerFile.fieldSpeed}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
double valueTmp = activitySelected[c]
.contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!]
.toDouble();
if (valueTmp > max) {
max = valueTmp;
}
}
}
}
@ -254,14 +354,21 @@ class ManagerSelectedActivity {
double getAvgSpeed() {
double somme = 0;
int nb = 0;
for (int i = 0; i < contentActivity.length; i++) {
if (_notNull(
contentActivity, i, enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
somme +=
contentActivity[i][enteteCSV["Value_${_managerFile.fieldSpeed}"]!];
nb++;
for (int c = 0; c < activitySelected.length; c++) {
for (int i = 0; i < activitySelected[c].contentActivity.length; i++) {
if (_notNull(
c,
i,
activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!)) {
somme += activitySelected[c].contentActivity[i][activitySelected[c]
.enteteCSV["Value_${_managerFile.fieldSpeed}"]!];
nb++;
}
}
}
return somme / nb;
}

@ -27,14 +27,10 @@ class _MobileListActivity extends State<MobileListActivity> {
FilePickerResult? result;
final IDataStrategy _strategy = RequestApi();
final ListActivityUtile _utile = ListActivityUtile();
int firstActivityIndex = 0;
Future<bool> deleteFileOnBDD(String token, String fileUuid) async {
Tuple2<bool, String> result = await _strategy.deleteFile(token, fileUuid);
if (!result.item1) {
print(fileUuid);
print("msg d'erreur");
print(result.item2);
return false;
}
return true;
@ -142,20 +138,8 @@ class _MobileListActivity extends State<MobileListActivity> {
.listActivity[index];
var activityMap = activityObj.toMap();
bool isFirstActivity = false;
if (index == firstActivityIndex) {
isFirstActivity = true;
}
return InkWell(
onTap: () {
setState(() {
firstActivityIndex = index;
});
Provider.of<User>(context, listen: false)
.removeActivity(activityObj);
Provider.of<User>(context, listen: false)
.insertActivity(0, activityObj);
},
onTap: () {},
child: WorkoutRow(
wObj: activityMap,
onDelete: () async {
@ -167,15 +151,31 @@ class _MobileListActivity extends State<MobileListActivity> {
.removeActivity(activityObj);
}
},
onClick: () {
onClick: () async {
if (!Provider.of<User>(context, listen: false)
.managerSelectedActivity
.fileNotSelected(activityObj.fileUuid)) {
Provider.of<User>(context, listen: false)
.managerSelectedActivity
.removeSelectedActivity(
activityObj.fileUuid);
return;
}
Tuple2<bool, String> result = await _utile
.getContentActivity(context, activityObj);
if (!result.item1) {
return;
}
Provider.of<User>(context, listen: false)
.removeActivity(activityObj);
Provider.of<User>(context, listen: false)
.insertActivity(0, activityObj);
_utile.getContentActivity(
context, activityObj);
},
isFirstActivity: isFirstActivity,
isSelected: !Provider.of<User>(context)
.managerSelectedActivity
.fileNotSelected(activityObj.fileUuid),
),
);
},

@ -23,28 +23,8 @@ class _WebListActivityState extends State<WebListActivity> {
FilePickerResult? result;
IDataStrategy strategy = RequestApi();
final ListActivityUtile _utile = ListActivityUtile();
int firstActivityIndex = 0;
final IDataStrategy _strategy = RequestApi();
/*
void readFile(html.File file) async {
ManagerFile x = ManagerFile();
final reader = html.FileReader();
reader.readAsArrayBuffer(file);
reader.onLoadEnd.listen((event) {
if (reader.readyState == html.FileReader.DONE) {
Uint8List bytes = reader.result as Uint8List;
List<dynamic> result = x.readFitFileWeb(bytes);
Provider.of<User>(context, listen: false).addActivity(
ActivityOfUser("Date random", "${file.name} Categorie", "", ""));
Provider.of<User>(context, listen: false)
.listActivity
.last
.contentActivity = result;
}
});
}*/
Future<bool> deleteFileOnBDD(String token, String fileUuid) async {
Tuple2<bool, String> result = await _strategy.deleteFile(token, fileUuid);
if (!result.item1) {
@ -62,7 +42,6 @@ class _WebListActivityState extends State<WebListActivity> {
reader.onLoadEnd.listen((event) async {
if (reader.readyState == html.FileReader.DONE) {
print("donne");
Uint8List bytes = reader.result as Uint8List;
Tuple2<bool, String> resultAdd =
await _utile.addFile(bytes, file.name, token);
@ -165,20 +144,16 @@ class _WebListActivityState extends State<WebListActivity> {
Provider.of<User>(context, listen: true)
.listActivity[index];
var activityMap = activityObj.toMap();
bool isFirstActivity = false;
if (index == firstActivityIndex) {
isFirstActivity = true;
}
return InkWell(
onTap: () {
/*
setState(() {
firstActivityIndex = index;
});
Provider.of<User>(context, listen: false)
.removeActivity(activityObj);
Provider.of<User>(context, listen: false)
.insertActivity(0, activityObj);
.insertActivity(0, activityObj);*/
},
child: WorkoutRow(
wObj: activityMap,
@ -199,7 +174,9 @@ class _WebListActivityState extends State<WebListActivity> {
_utile.getContentActivity(
context, activityObj);
},
isFirstActivity: isFirstActivity,
isSelected: Provider.of<User>(context)
.managerSelectedActivity
.fileNotSelected(activityObj.fileUuid),
),
);
},

Loading…
Cancel
Save