From 1f8e538d8bb5a9df83645622125aa7cee7c1b269 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Sun, 23 Aug 2020 14:48:53 +0200
Subject: [PATCH] adding TRIMP & rScore option to overview chart in workout
list
---
rowers/interactiveplots.py | 24 ++++++++++++++++++++----
rowers/templates/list_workouts.html | 6 ++++++
rowers/views/workoutviews.py | 6 +++++-
3 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py
index 5531c657..a3a57b5d 100644
--- a/rowers/interactiveplots.py
+++ b/rowers/interactiveplots.py
@@ -421,13 +421,16 @@ def interactive_planchart(data,startdate,enddate):
return script,div
-def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_location=None):
+def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_location=None,
+ yaxis='trimp'):
dates = []
dates_sorting = []
types = []
rowers = []
durations = []
+ rscores = []
+ trimps = []
links = []
@@ -462,6 +465,11 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
dd2 = w.date.strftime('%Y/%m/%d')
dd3 = w.date.strftime('%Y/%m')
du = w.duration.hour*60+w.duration.minute
+ rscore = w.rscore
+ trimp = w.trimp
+
+ if rscore == 0:
+ rscore = w.hrtss
if totaldays<30:
dates.append(dd)
@@ -470,6 +478,8 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
dates.append(dd3)
dates_sorting.append(dd3)
durations.append(du)
+ rscores.append(rscore)
+ trimps.append(trimp)
links.append(
"{siteurl}/rowers/workout/{code}/".format(
siteurl = settings.SITE_URL,
@@ -506,6 +516,8 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
dates.append(d.strftime('%Y/%m'))
dates_sorting.append(d.strftime('%Y/%m'))
durations.append(0)
+ rscores.append(0)
+ trimps.append(0)
links.append('')
types.append('rower')
@@ -524,6 +536,8 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
'date':dates,
'date_sorting':dates_sorting,
'duration':durations,
+ 'trimp':trimps,
+ 'rscore':rscores,
'type':types,
'rower':rowers,
'link':links,
@@ -541,13 +555,15 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
hv.extension('bokeh')
if stack == 'type':
- table = hv.Table(df,[('date','Date'),('type','Workout Type')],[('duration','Minutes'),('link','link')])
+ table = hv.Table(df,[('date','Date'),('type','Workout Type')],
+ [('duration','Minutes'),('rscore','rScore'),('trimp','TRIMP'),('link','link')])
else:
- table = hv.Table(df,[('date','Date'),('rower','Rower')],[('duration','Minutes'),('link','link')])
+ table = hv.Table(df,[('date','Date'),('rower','Rower')],
+ [('duration','Minutes'),('rscore','rScore'),('trimp','TRIMP'),('link','link')])
- bars=table.to.bars(['date',stack],['duration'])
+ bars=table.to.bars(['date',stack],[yaxis])
bars.opts(
opts.Bars(color=hv.Cycle('Category10'), show_legend=True, stacked=True,
tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)),
diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html
index 4776b86f..4a603cc0 100644
--- a/rowers/templates/list_workouts.html
+++ b/rowers/templates/list_workouts.html
@@ -63,6 +63,12 @@
Total meters: {{ totalmeters }}. Total time {{ totalhours }}:{{ totalminutes }}h.
Dig deeper.
+
+ Activity chart by
+ TRIMP,
+ rScore,
+ Time.
+
diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py
index 7d5a55c1..5b00608b 100644
--- a/rowers/views/workoutviews.py
+++ b/rowers/views/workoutviews.py
@@ -2134,11 +2134,15 @@ def workouts_view(request,message='',successmessage='',
else:
stack='type'
+ yaxis = request.GET.get('yaxis','duration')
+ if yaxis not in ['duration','trimp','rscore']:
+ yaxis = 'duration'
script,div = interactive_activitychart(g_workouts,
g_startdate,
g_enddate,
- stack=stack)
+ stack=stack,
+ yaxis=yaxis)
totalmeters,totalhours, totalminutes,total_seconds = get_totals(g_workouts)
totalminutes = '{totalminutes:02d}'.format(totalminutes=totalminutes)