From b60f1a2445391f24874c265aab1e7651dd39fd76 Mon Sep 17 00:00:00 2001 From: Peter Stockings Date: Thu, 19 Oct 2023 20:57:49 +1100 Subject: [PATCH] Change sparkline to show duration of workouts daily displayed most recent on the left --- app.py | 26 ++++++++++++++++++++++++++ templates/workouts_list.html | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 4ca1d33..aa3e318 100644 --- a/app.py +++ b/app.py @@ -349,6 +349,31 @@ def render_users_and_workouts(): duration_sparkline = sparklines.sparklines( [int(w['duration_minutes']) for w in workouts])[0] + # REFACTOR + + def date_range(start_date, end_date): + delta = end_date - start_date + return [(start_date + timedelta(days=i)) for i in range(delta.days + 1)] + + dates = date_range(start_date, end_date) + daily_duration = [] + for date in dates: + # check if workout exists for date + workout = [w for w in workouts if w['start_time_date'].date() + == date] + if workout: + daily_duration.append(int(workout[0]['duration_minutes'])) + else: + daily_duration.append(0) + + # Reverse the daily duration list so that the most recent day is on the right + daily_duration.reverse() + + daily_duration_sparkline = sparklines.sparklines( + daily_duration)[0] + + # REFACTOR BOUNDARY + user_data = { 'id': user.id, 'name': user.name, @@ -360,6 +385,7 @@ def render_users_and_workouts(): 'num_days': num_days, 'workout_counts_sparkline': workout_counts_sparkline, 'duration_sparkline': duration_sparkline, + 'daily_duration_sparkline': daily_duration_sparkline, 'calendar_month': generate_calendar_monthly_view(workouts, datetime.now().date()) } users_data.append(user_data) diff --git a/templates/workouts_list.html b/templates/workouts_list.html index 49c112e..b3d34d4 100644 --- a/templates/workouts_list.html +++ b/templates/workouts_list.html @@ -14,7 +14,7 @@ -
{{ user.duration_sparkline }}
+
{{ user.daily_duration_sparkline }}