diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 722b1aa1..1ab7d1e8 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -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'", diff --git a/lib/screens/measurement_categories_screen.dart b/lib/screens/measurement_categories_screen.dart index b1f9949c..4f85ca6a 100644 --- a/lib/screens/measurement_categories_screen.dart +++ b/lib/screens/measurement_categories_screen.dart @@ -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), diff --git a/lib/widgets/dashboard/calendar.dart b/lib/widgets/dashboard/calendar.dart index f69adc55..be4d13d7 100644 --- a/lib/widgets/dashboard/calendar.dart +++ b/lib/widgets/dashboard/calendar.dart @@ -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 _events[date]!.add(Event(EventType.weight, '${entry.weight} kg')); } + // Process measurements + MeasurementProvider measurementProvider = + Provider.of(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(context, listen: false); await plans.fetchSessionData().then((entries) { @@ -246,6 +264,9 @@ class _DashboardCalendarWidgetState extends State case EventType.weight: return AppLocalizations.of(context).weight; + + case EventType.measurement: + return AppLocalizations.of(context).measurement; } return event.description.toString(); })()), diff --git a/test/measurements/measurement_categories_screen_test.dart b/test/measurements/measurement_categories_screen_test.dart index 0b84879b..e1d59cd4 100644 --- a/test/measurements/measurement_categories_screen_test.dart +++ b/test/measurements/measurement_categories_screen_test.dart @@ -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));