Add measurement entries in the dashboard calendar

This commit is contained in:
Roland Geider
2021-09-06 18:33:54 +02:00
parent c704f561db
commit 3874a49fe0
4 changed files with 26 additions and 4 deletions

View File

@@ -258,8 +258,9 @@
"@weight": {
"description": "The weight of a workout log or body weight entry"
},
"measurementCategories": "Measurement categories",
"@measurementCategories": {
"measurement": "Measurement",
"measurements": "Measurements",
"@measurements": {
"description": "Categories for the measurements such as biceps size, body fat, etc."
},
"measurementCategoriesHelpText": "Measurement category, such as 'biceps' or 'body fat'",

View File

@@ -31,7 +31,7 @@ class MeasurementCategoriesScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context).measurementCategories),
title: Text(AppLocalizations.of(context).measurements),
),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),

View File

@@ -26,6 +26,7 @@ import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/providers/body_weight.dart';
import 'package:wger/providers/measurement.dart';
import 'package:wger/providers/nutrition.dart';
import 'package:wger/providers/workout_plans.dart';
import 'package:wger/theme/theme.dart';
@@ -33,6 +34,7 @@ import 'package:wger/theme/theme.dart';
/// Types of events
enum EventType {
weight,
measurement,
session,
caloriesDiary,
}
@@ -95,6 +97,22 @@ class _DashboardCalendarWidgetState extends State<DashboardCalendarWidget>
_events[date]!.add(Event(EventType.weight, '${entry.weight} kg'));
}
// Process measurements
MeasurementProvider measurementProvider =
Provider.of<MeasurementProvider>(context, listen: false);
for (var category in measurementProvider.categories) {
for (var entry in category.entries) {
final date = DateFormatLists.format(entry.date);
if (!_events.containsKey(date)) {
_events[date] = [];
}
_events[date]!
.add(Event(EventType.measurement, '${category.name}: ${entry.value} ${category.unit}'));
}
}
// Process workout sessions
WorkoutPlansProvider plans = Provider.of<WorkoutPlansProvider>(context, listen: false);
await plans.fetchSessionData().then((entries) {
@@ -246,6 +264,9 @@ class _DashboardCalendarWidgetState extends State<DashboardCalendarWidget>
case EventType.weight:
return AppLocalizations.of(context).weight;
case EventType.measurement:
return AppLocalizations.of(context).measurement;
}
return event.description.toString();
})()),

View File

@@ -64,7 +64,7 @@ void main() {
await tester.pumpWidget(createHomeScreen());
await tester.pumpAndSettle();
expect(find.text('Measurement categories'), findsOneWidget);
expect(find.text('Measurements'), findsOneWidget);
expect(find.text('body fat'), findsOneWidget);
expect(find.text('biceps'), findsOneWidget);
expect(find.byType(Card), findsNWidgets(2));