diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 282894bd..fc8c106f 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -457,7 +457,7 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False): ) plot = Figure(tools=TOOLS, - toolbar_sticky=False) + toolbar_sticky=False,toolbar_location="above") # add watermark watermarkurl = "/static/img/logo7.png" @@ -493,49 +493,49 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False): plot.add_layout(avf) - peakflabel = Label(x=455,y=530,x_units='screen',y_units='screen', + peakflabel = Label(x=355,y=430,x_units='screen',y_units='screen', text="Fpeak: {peakforceav:6.2f}".format(peakforceav=peakforceav), background_fill_alpha=.7, background_fill_color='white', text_color='blue', ) - avflabel = Label(x=465,y=500,x_units='screen',y_units='screen', + avflabel = Label(x=365,y=400,x_units='screen',y_units='screen', text="Favg: {averageforceav:6.2f}".format(averageforceav=averageforceav), background_fill_alpha=.7, background_fill_color='white', text_color='blue', ) - catchlabel = Label(x=460,y=470,x_units='screen',y_units='screen', + catchlabel = Label(x=360,y=370,x_units='screen',y_units='screen', text="Catch: {catchav:6.2f}".format(catchav=catchav), background_fill_alpha=0.7, background_fill_color='white', text_color='red', ) - peakforceanglelabel = Label(x=420,y=440,x_units='screen',y_units='screen', + peakforceanglelabel = Label(x=320,y=340,x_units='screen',y_units='screen', text="Peak angle: {peakforceangleav:6.2f}".format(peakforceangleav=peakforceangleav), background_fill_alpha=0.7, background_fill_color='white', text_color='red', ) - finishlabel = Label(x=455,y=410,x_units='screen',y_units='screen', + finishlabel = Label(x=355,y=310,x_units='screen',y_units='screen', text="Finish: {finishav:6.2f}".format(finishav=finishav), background_fill_alpha=0.7, background_fill_color='white', text_color='red', ) - sliplabel = Label(x=470,y=380,x_units='screen',y_units='screen', + sliplabel = Label(x=370,y=280,x_units='screen',y_units='screen', text="Slip: {slipav:6.2f}".format(slipav=slipav), background_fill_alpha=0.7, background_fill_color='white', text_color='red', ) - washlabel = Label(x=460,y=350,x_units='screen',y_units='screen', + washlabel = Label(x=360,y=250,x_units='screen',y_units='screen', text="Wash: {washav:6.2f}".format(washav=washav), background_fill_alpha=0.7, background_fill_color='white', @@ -646,7 +646,8 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False): peakflabel.text = 'Fpeak: '+peakforceav.toFixed(2) peakforceanglelabel.text = 'Peak angle: '+peakforceangleav.toFixed(2) - source.trigger('change'); + // source.trigger('change'); + source.change.emit(); """) slider_spm_min = Slider(start=15.0, end=55,value=15.0, step=.1, @@ -2813,7 +2814,6 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, if yparam2 != 'pace' and yparam2 != 'time': plot.add_layout(y2label) - callback = CustomJS(args = dict(source=source,source2=source2, x1means=x1means, y1means=y1means, @@ -2827,11 +2827,16 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, var y1 = data['y1'] var y2 = data['y2'] var spm1 = data['spm'] + + var index1 = data['index'] + var distance1 = data['distance'] + var power1 = data['power'] var driveenergy1 = data['driveenergy'] var xname = data['xname'][0] var yname1 = data['yname1'][0] var yname2 = data['yname2'][0] + var workoutid1 = data['workoutid'][0] var minspm = minspm.value var maxspm = maxspm.value @@ -2846,14 +2851,18 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, data2['x1'] = [] data2['y1'] = [] data2['y2'] = [] - data2['spm'] = [] + data2['index'] = [] data2['distance'] = [] + data2['power'] = [] data2['x1mean'] = [] data2['y1mean'] = [] data2['y2mean'] = [] - data2['xvals'] = [] - data2['y1vals'] = [] - data2['y2vals'] = [] + data2['driveenergy'] = [] + data2['workoutid'] = [] + data2['xname'] = [] + data2['yname1'] = [] + data2['yname2'] = [] + data2['spm'] = [] for (i=0; i=minspm && spm1[i]<=maxspm) { @@ -2863,7 +2872,14 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, data2['y1'].push(y1[i]) data2['y2'].push(y2[i]) data2['spm'].push(spm1[i]) + data2['index'].push(index1[i]) + data2['driveenergy'].push(driveenergy1[i]) data2['distance'].push(distance1[i]) + data2['power'].push(power1[i]) + data2['workoutid'].push(workoutid1) + data2['xname'].push(xname) + data2['yname1'].push(yname1) + data2['yname2'].push(yname2) xm += x1[i] ym1 += y1[i] @@ -2873,13 +2889,17 @@ def interactive_cum_flex_chart2(theworkouts,promember=0, } } + xm /= data2['x1'].length ym1 /= data2['x1'].length ym2 /= data2['x1'].length - data2['x1mean'] = [xm,xm] - data2['y1mean'] = [ym1,ym1] - data2['y2mean'] = [ym2,ym2] + for (i=0; i=minspm && spm1[i]<=maxspm) { @@ -3417,11 +3452,20 @@ def interactive_flex_chart2(id=0,promember=0, data2['y2'].push(y2[i]) data2['spm'].push(spm1[i]) data2['time'].push(time1[i]) + data2['index'].push(index1[i]) + data2['ftime'].push(ftime1[i]) data2['fpace'].push(fpace1[i]) + data2['driveenergy'].push(driveenergy1[i]) data2['pace'].push(pace1[i]) data2['hr'].push(hr1[i]) data2['distance'].push(distance1[i]) data2['power'].push(power1[i]) + data2['workoutid'].push(workoutid1) + data2['workoutstate'].push(workoutstate1) + data2['xname'].push(xname) + data2['yname1'].push(yname1) + data2['yname2'].push(yname2) + xm += x1[i] ym1 += y1[i] @@ -3435,9 +3479,14 @@ def interactive_flex_chart2(id=0,promember=0, ym1 /= data2['x1'].length ym2 /= data2['x1'].length - data2['x1mean'] = [xm,xm] - data2['y1mean'] = [ym1,ym1] - data2['y2mean'] = [ym2,ym2] + for (i=0; i