From 8134d76a07de7925c71e95de697d1332628c8216 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 2 Mar 2017 11:32:53 +0100 Subject: [PATCH] work per stroke slider on flex chart --- rowers/dataprep.py | 2 +- rowers/interactiveplots.py | 65 +++++++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index f0468037..c8a75af0 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -433,7 +433,7 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', privacy = 'visible' # check for duplicate start times - ws = Workout.objects.filter(starttime=workoutstarttime, + ws = Workout.objects.filter(startdatetime=workoutstartdatetime, user=r) if (len(ws) != 0): message = "Warning: This workout probably already exists in the database" diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index e1fc7f60..89bc1cee 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -904,13 +904,13 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, yparamname2 = axlabels[yparam2] - datadf = datadf[datadf[yparam1] > 0] + #datadf = datadf[datadf[yparam1] > 0] - datadf = datadf[datadf[xparam] > 0] + #datadf = datadf[datadf[xparam] > 0] - if yparam2 != 'None': - datadf = datadf[datadf[yparam2] > 0] + #if yparam2 != 'None': + # datadf = datadf[datadf[yparam2] > 0] # check if dataframe not empty if datadf.empty: @@ -1104,9 +1104,9 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, x1means.location = xm y1means.location = ym1 y2means.location = ym2 - y1label.text = yname1+': '+ym1.toFixed(2) - y2label.text = yname2+': '+ym2.toFixed(2) - xlabel.text = xname+': '+xm.toFixed(2) + y1label.text = yname1+': '+(ym1).toFixed(2) + y2label.text = yname2+': '+(ym2).toFixed(2) + xlabel.text = xname+': '+(xm).toFixed(2) source2.trigger('change'); """) @@ -1162,7 +1162,7 @@ def interactive_flex_chart2(id=0,promember=0, #rowdata,row = dataprep.getrowdata_db(id=id) columns = [xparam,yparam1,yparam2, 'ftime','distance','fpace', - 'power','hr','spm', + 'power','hr','spm','driveenergy', 'time','pace','workoutstate'] rowdata = dataprep.getsmallrowdata_db(columns,ids=[id],doclean=True) @@ -1405,6 +1405,7 @@ def interactive_flex_chart2(id=0,promember=0, var y1 = data['y1'] var y2 = data['y2'] var spm1 = data['spm'] + var driveenergy1 = data['driveenergy'] var time1 = data['time'] var pace1 = data['pace'] var hr1 = data['hr'] @@ -1419,6 +1420,8 @@ def interactive_flex_chart2(id=0,promember=0, var maxspm = maxspm.value var mindist = mindist.value var maxdist = maxdist.value + var minwork = minwork.value + var maxwork = maxwork.value var xm = 0 var ym1 = 0 var ym2 = 0 @@ -1443,21 +1446,22 @@ def interactive_flex_chart2(id=0,promember=0, for (i=0; i=minspm && spm1[i]<=maxspm) { if (distance1[i]>=mindist && distance1[i]<=maxdist) { - data2['x1'].push(x1[i]) - data2['y1'].push(y1[i]) - data2['y2'].push(y2[i]) - data2['spm'].push(spm1[i]) - data2['time'].push(time1[i]) - data2['fpace'].push(fpace1[i]) - data2['pace'].push(pace1[i]) - data2['hr'].push(hr1[i]) - data2['distance'].push(distance1[i]) - data2['power'].push(power1[i]) - - xm += x1[i] - ym1 += y1[i] - ym2 += y2[i] + if (driveenergy1[i]>=minwork && driveenergy1[i]<=maxwork) { + data2['x1'].push(x1[i]) + data2['y1'].push(y1[i]) + data2['y2'].push(y2[i]) + data2['spm'].push(spm1[i]) + data2['time'].push(time1[i]) + data2['fpace'].push(fpace1[i]) + data2['pace'].push(pace1[i]) + data2['hr'].push(hr1[i]) + data2['distance'].push(distance1[i]) + data2['power'].push(power1[i]) + xm += x1[i] + ym1 += y1[i] + ym2 += y2[i] + } } } } @@ -1488,6 +1492,15 @@ def interactive_flex_chart2(id=0,promember=0, title="Max SPM",callback=callback) callback.args["maxspm"] = slider_spm_max + slider_work_min = Slider(start=0.0, end=1000,value=0.0, step=10, + title="Min Work per Stroke",callback=callback) + callback.args["minwork"] = slider_work_min + + + slider_work_max = Slider(start=0.0, end=1000,value=1000.0, step=10, + title="Max Work per Stroke",callback=callback) + callback.args["maxwork"] = slider_work_max + distmax = 100+100*int(rowdata['distance'].max()/100.) slider_dist_min = Slider(start=0,end=distmax,value=0,step=1, @@ -1500,9 +1513,11 @@ def interactive_flex_chart2(id=0,promember=0, callback.args["maxdist"] = slider_dist_max layout = layoutrow([layoutcolumn([slider_spm_min, - slider_spm_max, - slider_dist_min, - slider_dist_max, + slider_spm_max, + slider_dist_min, + slider_dist_max, + slider_work_min, + slider_work_max, ], ), plot])