mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 00:17:48 +01:00
Add measurement entries in the dashboard calendar
This commit is contained in:
@@ -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'",
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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();
|
||||
})()),
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user