From e7708b9ece2920e320c818cad21473b53406b413 Mon Sep 17 00:00:00 2001 From: antoine Date: Fri, 20 Aug 2021 07:33:55 +0200 Subject: [PATCH 01/15] Add new sports with temporary pictures --- fittrackee/database_utils.py | 20 ++++++++++++++++++ .../public/img/sports/alpine-skiing.png | Bin 0 -> 4406 bytes .../img/sports/cross-country-skiing.png | Bin 0 -> 4406 bytes .../img/sports/electric-mountain-biking.png | Bin 0 -> 4406 bytes fittrackee_client/public/img/sports/trail.png | Bin 0 -> 3104 bytes 5 files changed, 20 insertions(+) create mode 100644 fittrackee_client/public/img/sports/alpine-skiing.png create mode 100644 fittrackee_client/public/img/sports/cross-country-skiing.png create mode 100644 fittrackee_client/public/img/sports/electric-mountain-biking.png create mode 100644 fittrackee_client/public/img/sports/trail.png diff --git a/fittrackee/database_utils.py b/fittrackee/database_utils.py index 6cda5066..7570a26b 100644 --- a/fittrackee/database_utils.py +++ b/fittrackee/database_utils.py @@ -33,14 +33,34 @@ def init_database(app: Flask) -> None: sport.img = '/img/sports/mountain-biking.png' sport.is_default = True db.session.add(sport) + sport = Sport(label='Mountain Biking (Electric)') + sport.img = '/img/sports/electric-mountain-biking.png' + sport.is_default = True + db.session.add(sport) sport = Sport(label='Running') sport.img = '/img/sports/running.png' sport.is_default = True db.session.add(sport) + sport = Sport(label='Trail') + sport.img = '/img/sports/trail.png' + sport.is_default = True + db.session.add(sport) sport = Sport(label='Walking') sport.img = '/img/sports/walking.png' sport.is_default = True db.session.add(sport) + sport = Sport(label='Skiing (Alpine)') + sport.img = '/img/sports/alpine-skiing.png' + sport.is_default = True + db.session.add(sport) + sport = Sport(label='Skiing (Cross Country)') + sport.img = '/img/sports/cross-country-skiing.png' + sport.is_default = True + db.session.add(sport) + sport = Sport(label='Rowing') + sport.img = '/img/sports/rowing.png' + sport.is_default = True + db.session.add(sport) db.session.commit() _, db_app_config = init_config() update_app_config_from_database(app, db_app_config) diff --git a/fittrackee_client/public/img/sports/alpine-skiing.png b/fittrackee_client/public/img/sports/alpine-skiing.png new file mode 100644 index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd GIT binary patch literal 4406 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 JtaD0e0ssw|G&cYM literal 0 HcmV?d00001 diff --git a/fittrackee_client/public/img/sports/cross-country-skiing.png b/fittrackee_client/public/img/sports/cross-country-skiing.png new file mode 100644 index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd GIT binary patch literal 4406 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 JtaD0e0ssw|G&cYM literal 0 HcmV?d00001 diff --git a/fittrackee_client/public/img/sports/electric-mountain-biking.png b/fittrackee_client/public/img/sports/electric-mountain-biking.png new file mode 100644 index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd GIT binary patch literal 4406 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 JtaD0e0ssw|G&cYM literal 0 HcmV?d00001 diff --git a/fittrackee_client/public/img/sports/trail.png b/fittrackee_client/public/img/sports/trail.png new file mode 100644 index 0000000000000000000000000000000000000000..fe4a2814f150dfd95d4d5f96b48026ebba2b4730 GIT binary patch literal 3104 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 Mr>mdKI;Vst0Ej-1tpET3 literal 0 HcmV?d00001 From 660190d368cd54aa0c9c149126abc0891e4ce0df Mon Sep 17 00:00:00 2001 From: antoine Date: Fri, 20 Aug 2021 07:35:50 +0200 Subject: [PATCH 02/15] Add elevation in stats and dashboard and update translations --- fittrackee/workouts/stats.py | 21 +++++++++++++++++-- .../components/Common/Stats/StatsChart.jsx | 18 ++++++++++++++++ .../src/components/Dashboard/WorkoutCard.jsx | 18 ++++++++++++++++ .../src/components/Workouts/WorkoutsList.jsx | 14 +++++++++++++ fittrackee_client/src/locales/en/sports.json | 7 ++++++- .../src/locales/en/statistics.json | 2 ++ fittrackee_client/src/locales/fr/sports.json | 7 ++++++- .../src/locales/fr/statistics.json | 2 ++ .../src/locales/fr/workouts.json | 4 ++-- fittrackee_client/src/utils/stats.js | 14 +++++++++++++ fittrackee_client/src/utils/workouts.js | 18 +++++++++------- 11 files changed, 112 insertions(+), 13 deletions(-) diff --git a/fittrackee/workouts/stats.py b/fittrackee/workouts/stats.py index 80de9480..de9a97a5 100644 --- a/fittrackee/workouts/stats.py +++ b/fittrackee/workouts/stats.py @@ -67,6 +67,8 @@ def get_workouts( 'nb_workouts': 0, 'total_distance': 0.0, 'total_duration': 0, + 'total_ascent': 0.0, + 'total_descent': 0.0, } workouts_list_by_sport[sport_id]['nb_workouts'] += 1 workouts_list_by_sport[sport_id]['total_distance'] += float( @@ -75,6 +77,12 @@ def get_workouts( workouts_list_by_sport[sport_id][ 'total_duration' ] += convert_timedelta_to_integer(workout.moving) + workouts_list_by_sport[sport_id]['total_ascent'] += float( + workout.ascent + ) + workouts_list_by_sport[sport_id]['total_descent'] += float( + workout.descent + ) # filter_type == 'by_time' else: @@ -110,6 +118,8 @@ def get_workouts( 'nb_workouts': 0, 'total_distance': 0.0, 'total_duration': 0, + 'total_ascent': 0.0, + 'total_descent': 0.0, } workouts_list_by_time[time_period][sport_id][ 'nb_workouts' @@ -119,8 +129,15 @@ def get_workouts( ] += float(workout.distance) workouts_list_by_time[time_period][sport_id][ 'total_duration' - ] += convert_timedelta_to_integer(workout.moving) - + ] += convert_timedelta_to_integer(workout.moving) + if workout.ascent: + workouts_list_by_time[time_period][sport_id][ + 'total_ascent' + ] += float(workout.ascent / 1000) + if workout.descent: + workouts_list_by_time[time_period][sport_id][ + 'total_descent' + ] += float(workout.descent / 1000) return { 'status': 'success', 'data': { diff --git a/fittrackee_client/src/components/Common/Stats/StatsChart.jsx b/fittrackee_client/src/components/Common/Stats/StatsChart.jsx index ca3678f1..1862b0d5 100644 --- a/fittrackee_client/src/components/Common/Stats/StatsChart.jsx +++ b/fittrackee_client/src/components/Common/Stats/StatsChart.jsx @@ -53,6 +53,24 @@ export default class StatsCharts extends React.PureComponent { /> {t('statistics:duration')} + +