Skip to content

Commit

Permalink
Time format hh:mm:ss in workout charts for aggregate of selected day
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiasn committed Jul 17, 2022
1 parent 57e55e3 commit 938a007
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 10 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Changed:
- Time format hh:mm:ss in time charts for aggregate of selected day
- Time format hh:mm:ss in workout charts for aggregate of selected day

## [0.8.110] - 2022-07-15
### Added:
Expand Down
3 changes: 1 addition & 2 deletions lib/widgets/charts/dashboard_workout_chart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'dart:core';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:intl/intl.dart';
import 'package:lotti/blocs/charts/workout_chart_info_cubit.dart';
import 'package:lotti/classes/entity_definitions.dart';
import 'package:lotti/classes/journal_entities.dart';
Expand Down Expand Up @@ -176,7 +175,7 @@ class WorkoutChartInfoWidget extends StatelessWidget {
),
const Spacer(),
Text(
' ${NumberFormat('#,###.##').format(selected.value)}',
' ${formatDailyAggregate(chartConfig, selected)}',
style: chartTitleStyle().copyWith(
fontWeight: FontWeight.bold,
),
Expand Down
14 changes: 7 additions & 7 deletions lib/widgets/charts/dashboard_workout_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:lotti/classes/entity_definitions.dart';

Map<String, DashboardWorkoutItem> workoutTypes = {
'walking.duration': DashboardWorkoutItem(
displayName: 'Walking minutes',
displayName: 'Walking time',
workoutType: 'walking',
color: '#0000FF',
valueType: WorkoutValueType.duration,
Expand All @@ -16,13 +16,13 @@ Map<String, DashboardWorkoutItem> workoutTypes = {
valueType: WorkoutValueType.energy,
),
'walking.distance': DashboardWorkoutItem(
displayName: 'Walking distance/km',
displayName: 'Walking distance/m',
workoutType: 'walking',
color: '#0000FF',
valueType: WorkoutValueType.distance,
),
'running.duration': DashboardWorkoutItem(
displayName: 'Running minutes',
displayName: 'Running time',
workoutType: 'running',
color: '#0000FF',
valueType: WorkoutValueType.duration,
Expand All @@ -34,13 +34,13 @@ Map<String, DashboardWorkoutItem> workoutTypes = {
valueType: WorkoutValueType.energy,
),
'running.distance': DashboardWorkoutItem(
displayName: 'Running distance/km',
displayName: 'Running distance/m',
workoutType: 'running',
color: '#0000FF',
valueType: WorkoutValueType.distance,
),
'swimming.duration': DashboardWorkoutItem(
displayName: 'Swimming minutes',
displayName: 'Swimming time',
workoutType: 'swimming',
color: '#0000FF',
valueType: WorkoutValueType.duration,
Expand All @@ -52,13 +52,13 @@ Map<String, DashboardWorkoutItem> workoutTypes = {
valueType: WorkoutValueType.energy,
),
'swimming.distance': DashboardWorkoutItem(
displayName: 'Swimming distance/km',
displayName: 'Swimming distance/m',
workoutType: 'swimming',
color: '#0000FF',
valueType: WorkoutValueType.distance,
),
'functionalStrengthTraining.duration': DashboardWorkoutItem(
displayName: 'Functional strength training minutes',
displayName: 'Functional strength training time',
workoutType: 'functionalStrengthTraining',
color: '#0000FF',
valueType: WorkoutValueType.duration,
Expand Down
12 changes: 12 additions & 0 deletions lib/widgets/charts/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import 'dart:math';

import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:lotti/classes/entity_definitions.dart';
import 'package:lotti/classes/journal_entities.dart';
import 'package:lotti/widgets/charts/dashboard_health_data.dart';

class MeasuredObservation {
MeasuredObservation(this.dateTime, this.value);
Expand Down Expand Up @@ -186,3 +189,12 @@ String hoursToHhMm(num? hours) {
final value = hours ?? 0;
return minutesToHhMm(value * 60);
}

String formatDailyAggregate(
DashboardWorkoutItem chartConfig,
Observation selected,
) {
return chartConfig.displayName.contains('time')
? minutesToHhMmSs(selected.value)
: NumberFormat('#,###').format(selected.value);
}
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: lotti
description: A Smart Journal.
publish_to: 'none'
version: 0.8.111+1162
version: 0.8.111+1163

msix_config:
display_name: Lotti
Expand Down
22 changes: 22 additions & 0 deletions test/widgets/charts/utils_test.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:lotti/widgets/charts/dashboard_health_data.dart';
import 'package:lotti/widgets/charts/dashboard_workout_config.dart';
import 'package:lotti/widgets/charts/utils.dart';

void main() {
Expand Down Expand Up @@ -72,5 +74,25 @@ void main() {
'00:00:00',
);
});

test('formatDailyAggregate for time type', () {
expect(
formatDailyAggregate(
workoutTypes['walking.duration']!,
Observation(DateTime(2022, 07, 17), 42.1),
),
'00:42:06',
);
});

test('formatDailyAggregate for other type', () {
expect(
formatDailyAggregate(
workoutTypes['walking.calories']!,
Observation(DateTime(2022, 07, 17), 42.1),
),
'42',
);
});
});
}

0 comments on commit 938a007

Please sign in to comment.