File tree Expand file tree Collapse file tree 3 files changed +35
-6
lines changed Expand file tree Collapse file tree 3 files changed +35
-6
lines changed Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ import 'package:wger/widgets/core/core.dart';
42
42
import 'package:wger/widgets/measurements/categories_card.dart' ;
43
43
import 'package:wger/widgets/measurements/charts.dart' ;
44
44
import 'package:wger/widgets/measurements/forms.dart' ;
45
+ import 'package:wger/widgets/measurements/helpers.dart' ;
45
46
import 'package:wger/widgets/nutrition/charts.dart' ;
46
47
import 'package:wger/widgets/nutrition/forms.dart' ;
47
48
import 'package:wger/widgets/weight/forms.dart' ;
@@ -161,9 +162,9 @@ class _DashboardWeightWidgetState extends State<DashboardWeightWidget> {
161
162
final profile = context.read <UserProvider >().profile;
162
163
final weightProvider = context.read <BodyWeightProvider >();
163
164
164
- final entriesAll =
165
- weightProvider.items.map ((e) => MeasurementChartEntry (e.weight, e.date)).toList ();
166
- final entries7dAvg = moving7dAverage (entriesAll );
165
+ final ( entriesAll, entries7dAvg) = sensibleRange (
166
+ weightProvider.items.map ((e) => MeasurementChartEntry (e.weight, e.date)).toList (),
167
+ );
167
168
168
169
return Consumer <BodyWeightProvider >(
169
170
builder: (context, workoutProvider, child) => Card (
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
4
4
import 'package:wger/models/measurements/measurement_category.dart' ;
5
5
import 'package:wger/screens/form_screen.dart' ;
6
6
import 'package:wger/screens/measurement_entries_screen.dart' ;
7
+ import 'package:wger/widgets/measurements/helpers.dart' ;
7
8
import 'charts.dart' ;
8
9
import 'forms.dart' ;
9
10
@@ -15,9 +16,9 @@ class CategoriesCard extends StatelessWidget {
15
16
16
17
@override
17
18
Widget build (BuildContext context) {
18
- final entriesAll =
19
- currentCategory.entries.map ((e) => MeasurementChartEntry (e.value, e.date)).toList ();
20
- final entries7dAvg = moving7dAverage (entriesAll );
19
+ final ( entriesAll, entries7dAvg) = sensibleRange (
20
+ currentCategory.entries.map ((e) => MeasurementChartEntry (e.value, e.date)).toList (),
21
+ );
21
22
22
23
return Card (
23
24
elevation: elevation,
Original file line number Diff line number Diff line change @@ -77,3 +77,30 @@ List<Widget> getOverviewWidgetsSeries(
77
77
),
78
78
];
79
79
}
80
+
81
+ // return the raw and average meaasurements for a "sensible range"
82
+ // a sensible range is something relatively recent, which is most relevant
83
+ // for the user to track their progress, but a range should always include
84
+ // at least 5 points, and if not we chose a bigger one.
85
+ // we return a range of the last 2 months, 4 months, or the full history
86
+ (List <MeasurementChartEntry >, List <MeasurementChartEntry >) sensibleRange (
87
+ List <MeasurementChartEntry > entriesAll,
88
+ ) {
89
+ final entries7dAvg = moving7dAverage (entriesAll);
90
+ final twoMonthsAgo = DateTime .now ().subtract (const Duration (days: 61 ));
91
+ final fourMonthsAgo = DateTime .now ().subtract (const Duration (days: 122 ));
92
+
93
+ if (entriesAll.where ((e) => e.date.isAfter (twoMonthsAgo)).length > 4 ) {
94
+ return (
95
+ entriesAll.where ((e) => e.date.isAfter (twoMonthsAgo)).toList (),
96
+ entries7dAvg.where ((e) => e.date.isAfter (twoMonthsAgo)).toList (),
97
+ );
98
+ }
99
+ if (entriesAll.where ((e) => e.date.isAfter (fourMonthsAgo)).length > 4 ) {
100
+ return (
101
+ entriesAll.where ((e) => e.date.isAfter (fourMonthsAgo)).toList (),
102
+ entries7dAvg.where ((e) => e.date.isAfter (fourMonthsAgo)).toList (),
103
+ );
104
+ }
105
+ return (entriesAll, entries7dAvg);
106
+ }
You can’t perform that action at this time.
0 commit comments