• +

    Hover over the workout to see details, click on the workout to open in a + separate page.

    {{ the_div|safe }}
    From 8c02df6307581c5bab45cb0375d54194d12a997f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 9 Jan 2021 12:14:34 +0100 Subject: [PATCH 09/10] CP chart data points are now clickable --- rowers/dataprep.py | 8 +++++--- rowers/interactiveplots.py | 6 ++++++ rowers/views/analysisviews.py | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index bdef3641..f189dcd1 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1243,28 +1243,30 @@ def fetchcp_new(rower,workouts): try: df = pd.read_parquet(cpfile) df['workout'] = str(workout) + df['url'] = workout.url() data.append(df) except: # CP data file doesn't exist yet. has to be created df, delta, cpvalues = setcp(workout) df['workout'] = str(workout) + df['url'] = workout.url() data.append(df) if len(data) == 0: - return pd.Series(),pd.Series(),0,pd.Series() + return pd.Series(),pd.Series(),0,pd.Series(),pd.Series() if len(data)>1: df = pd.concat(data,axis=0) try: df = df[df['cp'] == df.groupby(['delta'])['cp'].transform('max')] except KeyError: - pd.Series(),pd.Series(),0,pd.DataFrame() + pd.Series(),pd.Series(),0,pd.Series(),pd.Series() df = df.sort_values(['delta']).reset_index() - return df['delta'],df['cp'],0,df['workout'] + return df['delta'],df['cp'],0,df['workout'],df['url'] def setcp(workout,background=False,recurrance=True): filename = 'media/cpdata_{id}.parquet.gz'.format(id=workout.id) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 31147923..25eaf03e 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -3896,6 +3896,8 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data', deltas = fitt.apply(lambda x: timedeltaconv(x)) ftime = niceformat(deltas) workouts = powerdf['workout'] + urls = powerdf['url'] + sourcecomplex = ColumnDataSource( data = dict( @@ -3904,6 +3906,7 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data', duration = fitt/60., ftime = ftime, workout = workouts, + url = urls, ) ) @@ -3967,6 +3970,9 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data', hover.mode = 'mouse' + taptool = plot.select(type=TapTool) + taptool.callback = OpenURL(url='@url') + plot.line('duration','CP',source=sourcecomplex,legend_label="CP Model", color='green') diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 34c08c54..9f2399d8 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -525,12 +525,13 @@ def cpdata(workouts, options): ids = [w.id for w in workouts] - delta, cpvalue, avgpower,workoutnames = dataprep.fetchcp_new(r,workouts) + delta, cpvalue, avgpower,workoutnames,urls = dataprep.fetchcp_new(r,workouts) powerdf = pd.DataFrame({ 'Delta':delta, 'CP':cpvalue, 'workout':workoutnames, + 'url':urls, }) From e3e0336f05d90392d67726f698dbba8e722741b7 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 9 Jan 2021 12:24:53 +0100 Subject: [PATCH 10/10] bug fix --- rowers/dataprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index f189dcd1..c609d2f2 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1322,7 +1322,7 @@ def update_rolling_cp(r,types,mode='water'): user = r ) - delta, cp, avgpower, workoutnames = fetchcp_new(r,workouts) + delta, cp, avgpower, workoutnames,urls = fetchcp_new(r,workouts) powerdf = pd.DataFrame({ 'Delta':delta,