From b7970313815f5b9155126e0f48d9c01c2f984b8b Mon Sep 17 00:00:00 2001 From: Enzo Date: Wed, 29 Nov 2023 14:39:34 +0100 Subject: [PATCH] petite opti sur les BPM et home sur 1 view --- .../mobile/mobile_bpm_and_speed_by_time.dart | 8 ++--- .../graph/mobile/mobile_bpm_by_time.dart | 8 ++--- .../graph/web/web_altitude_by_time.dart | 3 -- .../graph/web/web_bpm_and_speed_by_time.dart | 12 ++----- .../utile/home_view/data_home_view.dart | 2 ++ lib/view/activity/activity.dart | 4 +-- .../activity/mobile/mobile_list_activity.dart | 17 +++++---- lib/view/home/home_view.dart | 34 +++++++++++------- lib/view/home/mobile/mobile_homeview.dart | 10 +++--- lib/view/home/no_activity_view.dart | 5 +-- lib/view/map/my_map.dart | 35 ++++++++++++------- 11 files changed, 75 insertions(+), 63 deletions(-) diff --git a/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart b/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart index 6cc203f..350db88 100644 --- a/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart +++ b/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart @@ -98,13 +98,11 @@ class _MobileGraphBpmAndSpeedByTime @override Widget build(BuildContext context) { - final double maxY = - context.watch().managerSelectedActivity.getMaxBpm() + 2; - final double minY = - context.watch().managerSelectedActivity.getMinBpm() - 2; + final double maxY = widget.data.maxBPM + 2; + final double minY = widget.data.minBPM - 2; final double maxX = widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; - final double minX = 0.0; + const double minX = 0.0; final lineBarsData = [ LineChartBarData( spots: widget.data.bpmSecondes, diff --git a/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart b/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart index 93690ae..070b11c 100644 --- a/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart +++ b/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart @@ -18,13 +18,11 @@ class MobileBpmByTime extends StatefulWidget { class _MobileBpmByTime extends State { @override Widget build(BuildContext context) { - final double maxY = - context.watch().managerSelectedActivity.getMaxBpm() + 2; - final double minY = - context.watch().managerSelectedActivity.getMinBpm() - 2; + final double maxY = widget.data.maxBPM + 2; + final double minY = widget.data.minBPM - 2; final double maxX = widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; - final double minX = 0.0; + const double minX = 0.0; final lineBarsData = [ LineChartBarData( spots: widget.data.bpmSecondes, diff --git a/lib/common_widget/graph/web/web_altitude_by_time.dart b/lib/common_widget/graph/web/web_altitude_by_time.dart index 636d9ac..0368c88 100644 --- a/lib/common_widget/graph/web/web_altitude_by_time.dart +++ b/lib/common_widget/graph/web/web_altitude_by_time.dart @@ -19,9 +19,6 @@ class WebGraphAltitudeByTime extends StatefulWidget { class _WebGraphAltitudeByTime extends State { @override Widget build(BuildContext context) { - final double maxX = - widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; - final double minX = 0.0; final double maxY = context.watch().managerSelectedActivity.getMaxAltitude() + 2; final double minY = diff --git a/lib/common_widget/graph/web/web_bpm_and_speed_by_time.dart b/lib/common_widget/graph/web/web_bpm_and_speed_by_time.dart index 5cf6c2a..061439c 100644 --- a/lib/common_widget/graph/web/web_bpm_and_speed_by_time.dart +++ b/lib/common_widget/graph/web/web_bpm_and_speed_by_time.dart @@ -97,17 +97,11 @@ class _WebGraphBpmAndSpeedByTime extends State { @override Widget build(BuildContext context) { - final double maxY = - context.watch().managerSelectedActivity.getMaxBpm() + 2; - final double minY = - context.watch().managerSelectedActivity.getMinBpm() - 2; - final double maxY1 = - context.watch().managerSelectedActivity.getMaxBpm() + 2; - final double minY2 = - context.watch().managerSelectedActivity.getMinBpm() - 2; + final double maxY = widget.data.maxBPM + 2; + final double minY = widget.data.minBPM - 2; final double maxX = widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; - final double minX = 0.0; + const double minX = 0.0; final lineBarsData = [ LineChartBarData( diff --git a/lib/modele/utile/home_view/data_home_view.dart b/lib/modele/utile/home_view/data_home_view.dart index 962bc96..6c3220f 100644 --- a/lib/modele/utile/home_view/data_home_view.dart +++ b/lib/modele/utile/home_view/data_home_view.dart @@ -5,6 +5,8 @@ class DataHomeView { late List bpmSecondes2; late List vitesseSecondes; late List altitudeSeconde; + int minBPM = 0; + int maxBPM = 0; DataHomeView(this.bpmSecondes, this.bpmSecondes2, this.vitesseSecondes, this.altitudeSeconde); diff --git a/lib/view/activity/activity.dart b/lib/view/activity/activity.dart index 95a1fd8..ee54c69 100644 --- a/lib/view/activity/activity.dart +++ b/lib/view/activity/activity.dart @@ -17,8 +17,8 @@ class Activity extends StatelessWidget { .activitySelected .isEmpty ? ScreenTypeLayout.builder( - mobile: (_) => const NoActivityView(), - desktop: (_) => const NoActivityView(), + mobile: (_) => const NoActivityView("Pas d'activité sélectionnée"), + desktop: (_) => const NoActivityView("Pas d'activité sélectionnée"), ) : ScreenTypeLayout.builder( mobile: (_) => const MobileActivity(), diff --git a/lib/view/activity/mobile/mobile_list_activity.dart b/lib/view/activity/mobile/mobile_list_activity.dart index a3c50c7..61b9709 100644 --- a/lib/view/activity/mobile/mobile_list_activity.dart +++ b/lib/view/activity/mobile/mobile_list_activity.dart @@ -1,16 +1,10 @@ -import 'dart:convert'; import 'dart:io'; -import 'dart:typed_data'; - -import 'package:csv/csv.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart'; -import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart'; -import 'package:smartfit_app_mobile/modele/manager_file.dart'; import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/common_widget/container/workout_row.dart'; import 'package:smartfit_app_mobile/modele/utile/list_activity/list_activity_utile.dart'; @@ -143,10 +137,21 @@ class _MobileListActivity extends State { child: WorkoutRow( wObj: activityMap, onDelete: () async { + // Attention toute modif peut amener à une surchage mémoire !! if (await deleteFileOnBDD( Provider.of(context, listen: false) .token, activityObj.fileUuid)) { + if (!Provider.of(context, + listen: false) + .managerSelectedActivity + .fileNotSelected( + activityObj.fileUuid)) { + Provider.of(context, listen: false) + .managerSelectedActivity + .removeSelectedActivity( + activityObj.fileUuid); + } Provider.of(context, listen: false) .removeActivity(activityObj); } diff --git a/lib/view/home/home_view.dart b/lib/view/home/home_view.dart index f4d98b2..637a004 100644 --- a/lib/view/home/home_view.dart +++ b/lib/view/home/home_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; +import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/view/home/mobile/mobile_homeview.dart'; import 'package:smartfit_app_mobile/view/home/no_activity_view.dart'; @@ -16,18 +17,25 @@ class HomeView extends StatefulWidget { class _HomeViewState extends State { @override Widget build(BuildContext context) { - return context - .watch() - .managerSelectedActivity - .activitySelected - .isEmpty - ? ScreenTypeLayout.builder( - mobile: (_) => const NoActivityView(), - desktop: (_) => const NoActivityView(), - ) - : ScreenTypeLayout.builder( - mobile: (_) => const MobileHomeView(), - desktop: (_) => const WebHomeView(), - ); + List listSelected = + context.watch().managerSelectedActivity.activitySelected; + if (listSelected.isEmpty) { + return ScreenTypeLayout.builder( + mobile: (_) => const NoActivityView("Pas d'activité sélectionnée"), + desktop: (_) => const NoActivityView("Pas d'activité sélectionnée"), + ); + } + if (listSelected.length > 1) { + return ScreenTypeLayout.builder( + mobile: (_) => const NoActivityView( + "Qu'une seule activité doit être sélectionner"), + desktop: (_) => const NoActivityView( + "Qu'une seule activité doit être sélectionner"), + ); + } + return ScreenTypeLayout.builder( + mobile: (_) => const MobileHomeView(), + desktop: (_) => const WebHomeView(), + ); } } diff --git a/lib/view/home/mobile/mobile_homeview.dart b/lib/view/home/mobile/mobile_homeview.dart index ccad930..3c7439c 100644 --- a/lib/view/home/mobile/mobile_homeview.dart +++ b/lib/view/home/mobile/mobile_homeview.dart @@ -28,9 +28,10 @@ class _MobileHomeView extends State { ManagerSelectedActivity managerSelectedActivity = context.watch().managerSelectedActivity; + data = HomeViewUtil().initData(context); // -- BPM -- // - int maxBpm = managerSelectedActivity.getMaxBpm(); - int minBpm = managerSelectedActivity.getMinBpm(); + data.maxBPM = managerSelectedActivity.getMaxBpm(); + data.minBPM = managerSelectedActivity.getMinBpm(); int avgBpm = managerSelectedActivity.getAvgBpm(); // -- Altitude -- // @@ -40,7 +41,6 @@ class _MobileHomeView extends State { // -- Speed -- // double maxSpeed = managerSelectedActivity.getMaxSpeed(); double avgSpeed = managerSelectedActivity.getAvgSpeed(); - data = HomeViewUtil().initData(context); return Scaffold( backgroundColor: TColor.white, @@ -70,8 +70,8 @@ class _MobileHomeView extends State { height: media.width * 0.05, ), LigneContainerStats( - "${minBpm.toString()} BPM", - "${maxBpm.toString()} BPM", + "${data.minBPM.toString()} BPM", + "${data.maxBPM.toString()} BPM", "${avgBpm.toString()} BPM", "Minimum", "Maximum", diff --git a/lib/view/home/no_activity_view.dart b/lib/view/home/no_activity_view.dart index 698b7ee..caca166 100644 --- a/lib/view/home/no_activity_view.dart +++ b/lib/view/home/no_activity_view.dart @@ -4,7 +4,8 @@ import 'package:flutter_svg/svg.dart'; import '../../common/colo_extension.dart'; class NoActivityView extends StatefulWidget { - const NoActivityView({super.key}); + const NoActivityView(this.msg, {super.key}); + final String msg; @override State createState() => _NoActivityViewState(); @@ -40,7 +41,7 @@ class _NoActivityViewState extends State { height: media.height * 0.1, ), Text( - "Pas d'activité sélectionnée", + widget.msg, style: TextStyle( color: TColor.black, fontSize: 20, diff --git a/lib/view/map/my_map.dart b/lib/view/map/my_map.dart index 77516fa..a234d6f 100644 --- a/lib/view/map/my_map.dart +++ b/lib/view/map/my_map.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:responsive_builder/responsive_builder.dart'; +import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/view/home/no_activity_view.dart'; import 'package:smartfit_app_mobile/view/map/mobile/mobile_my_map.dart'; @@ -16,18 +17,26 @@ class MyMap extends StatefulWidget { class _MyMapState extends State { @override Widget build(BuildContext context) { - return context - .watch() - .managerSelectedActivity - .activitySelected - .isEmpty - ? ScreenTypeLayout.builder( - mobile: (_) => const NoActivityView(), - desktop: (_) => const NoActivityView(), - ) - : ScreenTypeLayout.builder( - mobile: (_) => const MobileMyMaps(), - desktop: (_) => const WebMyMaps(), - ); + List listSelected = + context.watch().managerSelectedActivity.activitySelected; + + if (listSelected.isEmpty) { + return ScreenTypeLayout.builder( + mobile: (_) => const NoActivityView("Pas d'activité sélectionnée"), + desktop: (_) => const NoActivityView("Pas d'activité sélectionnée"), + ); + } + if (listSelected.length > 1) { + return ScreenTypeLayout.builder( + mobile: (_) => const NoActivityView( + "Qu'une seule activité doit être sélectionner"), + desktop: (_) => const NoActivityView( + "Qu'une seule activité doit être sélectionner"), + ); + } + return ScreenTypeLayout.builder( + mobile: (_) => const MobileMyMaps(), + desktop: (_) => const WebMyMaps(), + ); } }