duplication graph bpmAndSpeedByTime
continuous-integration/drone/push Build is passing Details

pull/4/head
Enzo 2 years ago
parent fd06d9b55d
commit c7c2cb2f83

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:responsive_builder/responsive_builder.dart'; import 'package:responsive_builder/responsive_builder.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/web/web_bpm_and_speed_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/web/web_bpm_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
@ -18,9 +19,13 @@ class GraphBpmAndSpeedByTime extends StatefulWidget {
class _GraphBpmAndSpeedByTime extends State<GraphBpmAndSpeedByTime> { class _GraphBpmAndSpeedByTime extends State<GraphBpmAndSpeedByTime> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final FuncBpmAndSpeedByTime func = FuncBpmAndSpeedByTime(widget.data);
return ScreenTypeLayout.builder( return ScreenTypeLayout.builder(
mobile: (_) => MobileGraphBpmAndSpeedByTime(widget.media, widget.data), mobile: (_) =>
desktop: (_) => WebGraphBpmAndSpeedByTime(widget.media, widget.data), MobileGraphBpmAndSpeedByTime(widget.media, widget.data, func),
desktop: (_) =>
WebGraphBpmAndSpeedByTime(widget.media, widget.data, func),
); );
} }
} }

@ -0,0 +1,105 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class FuncBpmAndSpeedByTime {
final DataHomeView data;
FuncBpmAndSpeedByTime(this.data);
List<int> showingTooltipOnSpots = [0];
SideTitles get rightTitles => SideTitles(
getTitlesWidget: rightTitleWidgets,
showTitles: true,
interval: 20,
reservedSize: 40,
);
late final lineBarsData = [
LineChartBarData(
spots: data.bpmSecondes,
isCurved: false,
barWidth: 2,
belowBarData: BarAreaData(
show: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor1.withOpacity(0.4),
TColor.secondaryColor2.withOpacity(0.1),
], begin: Alignment.topCenter, end: Alignment.bottomCenter),
),
dotData: const FlDotData(show: false),
gradient: LinearGradient(
colors: TColor.secondaryG,
),
),
];
late final tooltipsOnBar = lineBarsData[0];
Widget rightTitleWidgets(double value, TitleMeta meta) {
String text;
switch (value.toInt()) {
case 0:
text = '0%';
break;
case 20:
text = '20%';
break;
case 40:
text = '40%';
break;
case 60:
text = '60%';
break;
case 80:
text = '80%';
break;
case 100:
text = '100%';
break;
default:
return Container();
}
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
}
List<LineChartBarData> get lineBarsData1 => [
lineChartBarData1_1,
lineChartBarData1_2,
];
LineChartBarData get lineChartBarData1_1 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.primaryColor2.withOpacity(0.5),
TColor.primaryColor1.withOpacity(0.5),
]),
barWidth: 4,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(show: false),
spots: data.vitesseSecondes,
);
LineChartBarData get lineChartBarData1_2 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor2.withOpacity(0.5),
TColor.secondaryColor1.withOpacity(0.5),
]),
barWidth: 2,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(
show: false,
),
spots: data.bpmSecondes2,
);
}

@ -1,13 +1,16 @@
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class MobileGraphBpmAndSpeedByTime extends StatefulWidget { class MobileGraphBpmAndSpeedByTime extends StatefulWidget {
final Size media; final Size media;
final DataHomeView data; final DataHomeView data;
final FuncBpmAndSpeedByTime func;
const MobileGraphBpmAndSpeedByTime(this.media, this.data, {Key? key}) const MobileGraphBpmAndSpeedByTime(this.media, this.data, this.func,
{Key? key})
: super(key: key); : super(key: key);
@override @override
@ -19,81 +22,6 @@ class _MobileGraphBpmAndSpeedByTime
extends State<MobileGraphBpmAndSpeedByTime> { extends State<MobileGraphBpmAndSpeedByTime> {
TextEditingController bpmController = TextEditingController(); TextEditingController bpmController = TextEditingController();
List<int> showingTooltipOnSpots = [0];
SideTitles get rightTitles => SideTitles(
getTitlesWidget: rightTitleWidgets,
showTitles: true,
interval: 20,
reservedSize: 40,
);
Widget rightTitleWidgets(double value, TitleMeta meta) {
String text;
switch (value.toInt()) {
case 0:
text = '0%';
break;
case 20:
text = '20%';
break;
case 40:
text = '40%';
break;
case 60:
text = '60%';
break;
case 80:
text = '80%';
break;
case 100:
text = '100%';
break;
default:
return Container();
}
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
}
List<LineChartBarData> get lineBarsData1 => [
lineChartBarData1_1,
lineChartBarData1_2,
];
LineChartBarData get lineChartBarData1_1 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.primaryColor2.withOpacity(0.5),
TColor.primaryColor1.withOpacity(0.5),
]),
barWidth: 4,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(show: false),
spots: widget.data.vitesseSecondes,
);
LineChartBarData get lineChartBarData1_2 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor2.withOpacity(0.5),
TColor.secondaryColor1.withOpacity(0.5),
]),
barWidth: 2,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(
show: false,
),
spots: widget.data.bpmSecondes2,
);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final double maxY = widget.data.maxBPM + 2; final double maxY = widget.data.maxBPM + 2;
@ -101,25 +29,6 @@ class _MobileGraphBpmAndSpeedByTime
final double maxX = final double maxX =
widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x;
const double minX = 0.0; const double minX = 0.0;
final lineBarsData = [
LineChartBarData(
spots: widget.data.bpmSecondes,
isCurved: false,
barWidth: 2,
belowBarData: BarAreaData(
show: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor1.withOpacity(0.4),
TColor.secondaryColor2.withOpacity(0.1),
], begin: Alignment.topCenter, end: Alignment.bottomCenter),
),
dotData: const FlDotData(show: false),
gradient: LinearGradient(
colors: TColor.secondaryG,
),
),
];
final tooltipsOnBar = lineBarsData[0];
return Container( return Container(
padding: const EdgeInsets.only(left: 15), padding: const EdgeInsets.only(left: 15),
@ -127,12 +36,13 @@ class _MobileGraphBpmAndSpeedByTime
width: double.maxFinite, width: double.maxFinite,
child: LineChart( child: LineChart(
LineChartData( LineChartData(
showingTooltipIndicators: showingTooltipOnSpots.map((index) { showingTooltipIndicators:
widget.func.showingTooltipOnSpots.map((index) {
return ShowingTooltipIndicators([ return ShowingTooltipIndicators([
LineBarSpot( LineBarSpot(
tooltipsOnBar, widget.func.tooltipsOnBar,
lineBarsData.indexOf(tooltipsOnBar), widget.func.lineBarsData.indexOf(widget.func.tooltipsOnBar),
tooltipsOnBar.spots[index], widget.func.tooltipsOnBar.spots[index],
), ),
]); ]);
}).toList(), }).toList(),
@ -145,9 +55,9 @@ class _MobileGraphBpmAndSpeedByTime
} }
if (event is FlTapUpEvent) { if (event is FlTapUpEvent) {
final spotIndex = response.lineBarSpots!.first.spotIndex; final spotIndex = response.lineBarSpots!.first.spotIndex;
showingTooltipOnSpots.clear(); widget.func.showingTooltipOnSpots.clear();
setState(() { setState(() {
showingTooltipOnSpots.add(spotIndex); widget.func.showingTooltipOnSpots.add(spotIndex);
}); });
} }
}, },
@ -195,7 +105,7 @@ class _MobileGraphBpmAndSpeedByTime
}, },
), ),
), ),
lineBarsData: lineBarsData1, lineBarsData: widget.func.lineBarsData1,
minY: 0, minY: 0,
maxY: 110, maxY: 110,
titlesData: FlTitlesData( titlesData: FlTitlesData(

@ -1,13 +1,15 @@
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class WebGraphBpmAndSpeedByTime extends StatefulWidget { class WebGraphBpmAndSpeedByTime extends StatefulWidget {
final Size media; final Size media;
final DataHomeView data; final DataHomeView data;
final FuncBpmAndSpeedByTime func;
const WebGraphBpmAndSpeedByTime(this.media, this.data, {Key? key}) const WebGraphBpmAndSpeedByTime(this.media, this.data, this.func, {Key? key})
: super(key: key); : super(key: key);
@override @override
@ -18,81 +20,6 @@ class WebGraphBpmAndSpeedByTime extends StatefulWidget {
class _WebGraphBpmAndSpeedByTime extends State<WebGraphBpmAndSpeedByTime> { class _WebGraphBpmAndSpeedByTime extends State<WebGraphBpmAndSpeedByTime> {
TextEditingController bpmController = TextEditingController(); TextEditingController bpmController = TextEditingController();
List<int> showingTooltipOnSpots = [0];
SideTitles get rightTitles => SideTitles(
getTitlesWidget: rightTitleWidgets,
showTitles: true,
interval: 20,
reservedSize: 40,
);
Widget rightTitleWidgets(double value, TitleMeta meta) {
String text;
switch (value.toInt()) {
case 0:
text = '0%';
break;
case 20:
text = '20%';
break;
case 40:
text = '40%';
break;
case 60:
text = '60%';
break;
case 80:
text = '80%';
break;
case 100:
text = '100%';
break;
default:
return Container();
}
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
}
List<LineChartBarData> get lineBarsData1 => [
lineChartBarData1_1,
lineChartBarData1_2,
];
LineChartBarData get lineChartBarData1_1 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.primaryColor2.withOpacity(0.5),
TColor.primaryColor1.withOpacity(0.5),
]),
barWidth: 4,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(show: false),
spots: widget.data.vitesseSecondes,
);
LineChartBarData get lineChartBarData1_2 => LineChartBarData(
isCurved: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor2.withOpacity(0.5),
TColor.secondaryColor1.withOpacity(0.5),
]),
barWidth: 2,
isStrokeCapRound: true,
dotData: const FlDotData(show: false),
belowBarData: BarAreaData(
show: false,
),
spots: widget.data.bpmSecondes2,
);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final double maxY = widget.data.maxBPM + 2; final double maxY = widget.data.maxBPM + 2;
@ -101,38 +28,19 @@ class _WebGraphBpmAndSpeedByTime extends State<WebGraphBpmAndSpeedByTime> {
widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x; widget.data.bpmSecondes[widget.data.bpmSecondes.length - 1].x;
const double minX = 0.0; const double minX = 0.0;
final lineBarsData = [
LineChartBarData(
spots: widget.data.bpmSecondes,
isCurved: false,
barWidth: 2,
belowBarData: BarAreaData(
show: true,
gradient: LinearGradient(colors: [
TColor.secondaryColor1.withOpacity(0.4),
TColor.secondaryColor2.withOpacity(0.1),
], begin: Alignment.topCenter, end: Alignment.bottomCenter),
),
dotData: const FlDotData(show: false),
gradient: LinearGradient(
colors: TColor.secondaryG,
),
),
];
final tooltipsOnBar = lineBarsData[0];
return Container( return Container(
padding: const EdgeInsets.only(left: 15), padding: const EdgeInsets.only(left: 15),
height: widget.media.width * 0.20, height: widget.media.width * 0.20,
width: widget.media.width * 0.35, width: widget.media.width * 0.35,
child: LineChart( child: LineChart(
LineChartData( LineChartData(
showingTooltipIndicators: showingTooltipOnSpots.map((index) { showingTooltipIndicators:
widget.func.showingTooltipOnSpots.map((index) {
return ShowingTooltipIndicators([ return ShowingTooltipIndicators([
LineBarSpot( LineBarSpot(
tooltipsOnBar, widget.func.tooltipsOnBar,
lineBarsData.indexOf(tooltipsOnBar), widget.func.lineBarsData.indexOf(widget.func.tooltipsOnBar),
tooltipsOnBar.spots[index], widget.func.tooltipsOnBar.spots[index],
), ),
]); ]);
}).toList(), }).toList(),
@ -145,9 +53,9 @@ class _WebGraphBpmAndSpeedByTime extends State<WebGraphBpmAndSpeedByTime> {
} }
if (event is FlTapUpEvent) { if (event is FlTapUpEvent) {
final spotIndex = response.lineBarSpots!.first.spotIndex; final spotIndex = response.lineBarSpots!.first.spotIndex;
showingTooltipOnSpots.clear(); widget.func.showingTooltipOnSpots.clear();
setState(() { setState(() {
showingTooltipOnSpots.add(spotIndex); widget.func.showingTooltipOnSpots.add(spotIndex);
}); });
} }
}, },
@ -195,13 +103,13 @@ class _WebGraphBpmAndSpeedByTime extends State<WebGraphBpmAndSpeedByTime> {
}, },
), ),
), ),
lineBarsData: lineBarsData1, lineBarsData: widget.func.lineBarsData1,
minY: 0, minY: 0,
maxY: 110, maxY: 110,
titlesData: FlTitlesData( titlesData: FlTitlesData(
show: true, show: true,
leftTitles: AxisTitles( leftTitles: AxisTitles(
sideTitles: rightTitles, sideTitles: widget.func.rightTitles,
), ),
topTitles: const AxisTitles(), topTitles: const AxisTitles(),
bottomTitles: AxisTitles( bottomTitles: AxisTitles(

Loading…
Cancel
Save