From b798a161721aaf02b184b7200e19e97ea0ff4c82 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 15 Dec 2020 08:28:08 +0100 Subject: [PATCH 1/3] fix mean power in history --- rowers/templates/history.html | 1 + rowers/views/analysisviews.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/rowers/templates/history.html b/rowers/templates/history.html index 52e2eabf..e66e58ca 100644 --- a/rowers/templates/history.html +++ b/rowers/templates/history.html @@ -148,6 +148,7 @@ console.log(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}') $.getJSON(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}', function(json) { + var script = json.script; var div = json.div; var totalsdict = json.totalsdict diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 477d7147..0ad27124 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -5226,16 +5226,19 @@ def history_view_data(request,userid=0): ddf['deltat'] = ddf['time'].diff().clip(lower=0) except KeyError: pass - ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True, + + + ddf = dataprep.clean_df_stats(ddf,workstrokesonly=False, ignoreadvanced=True) + ddict['hrmean'] = int(wavg(ddf,'hr','deltat')) try: ddict['hrmax'] = ddf['hr'].max().astype(int) except ValueError: ddict['hrmax'] = 0 - ddict['powermean'] = int(wavg(df,'power','deltat')) + ddict['powermean'] = int(wavg(ddf,'power','deltat')) ddict['powermax'] = ddf['power'].max().astype(int) ddict['nrworkouts'] = a_workouts.count() listofdicts.append(ddict) @@ -5275,12 +5278,17 @@ def history_view_data(request,userid=0): meters, hours,minutes,seconds = get_totals(a_workouts) totalseconds = 3600*hours+60*minutes+seconds ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts]) + try: ddf['deltat'] = ddf['time'].diff().clip(lower=0) except KeyError: pass + + ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True, ignoreadvanced=True) + + totalscript, totaldiv = interactive_hr_piechart( ddf,r,mytypes.workouttypes_ordered[typeselect], totalseconds=totalseconds) From 05c137898c67bb9871a789a9cf27ceca9b9665ba Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 15 Dec 2020 08:39:06 +0100 Subject: [PATCH 2/3] only flaw now is bar colors not equal to pie colors --- rowers/interactiveplots.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index bbd6b4dc..cf113ddb 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -351,6 +351,7 @@ def interactive_hr_piechart(df,rower,title,totalseconds=0): data = pd.Series(datadict).reset_index(name='value').rename(columns={'index':'zone'}) data['angle'] = data['value']/data['value'].sum() * 2*pi data['color'] = colors + data['zone'] = [' Date: Tue, 15 Dec 2020 12:57:44 +0100 Subject: [PATCH 3/3] fix #593 updated colormap --- rowers/interactiveplots.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index cf113ddb..6be3294a 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -368,7 +368,7 @@ def interactive_hr_piechart(df,rower,title,totalseconds=0): z.wedge(x=0,y=1, radius=0.4, start_angle=cumsum('angle',include_zero=True), end_angle=cumsum('angle'), - line_color='white',fill_color='color',source=data,legend='zone') + line_color='white',fill_color='color',source=data,legend_group='zone') @@ -424,6 +424,7 @@ def interactive_workouttype_piechart(workouts): data = pd.DataFrame(data) + data['color'] = data['type'].apply(lambda x:mapcolors(x)) data['totaltime'] = data['value'].apply(lambda x:pretty_timedelta(x)) try: @@ -439,7 +440,7 @@ def interactive_workouttype_piechart(workouts): p.wedge(x=0, y=1, radius=0.4, start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'), - line_color="white", fill_color='color', source=data,legend='type', ) + line_color="white", fill_color='color', source=data,legend_group='type', ) p.axis.axis_label=None p.axis.visible=False @@ -697,7 +698,7 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo bars=table.to.bars(['date',stack],[yaxis]) bars.opts( - opts.Bars(color=hv.Cycle('Category10'), show_legend=True, stacked=True, + opts.Bars(color=dim_expr, show_legend=True, stacked=True, tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)), legend_position='bottom',show_frame=True)) @@ -860,11 +861,11 @@ def interactive_activitychart2(workouts,startdate,enddate,stack='type',toolbar_l df = pd.DataFrame(thedict) - - source = ColumnDataSource(df) + df['color'] = df['type'].apply(lambda x:mapcolors(x)) df.sort_values('date_sorting',inplace=True) #clrs = hv.Cycle(df['colors'].values) + source = ColumnDataSource(df) hv.extension('bokeh') @@ -876,7 +877,7 @@ def interactive_activitychart2(workouts,startdate,enddate,stack='type',toolbar_l bars=table.to.bars(['date',stack],[yaxis]) bars.opts( - opts.Bars(color=dim_expr, show_legend=True, stacked=True, + opts.Bars(cmap=mytypes.color_map, show_legend=True, stacked=True, tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)), legend_position='bottom',show_frame=True))