From 5504d663c253e3e35bf11784523f23ab60778876 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 21 Jul 2022 09:15:18 +0200 Subject: [PATCH] individual curves --- rowers/forms.py | 2 ++ rowers/interactiveplots.py | 16 ++++++++++++++-- rowers/views/workoutviews.py | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/rowers/forms.py b/rowers/forms.py index 925174b0..fae9c06e 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -151,6 +151,8 @@ class InstantPlanSelectForm(forms.Form): # Instroke Metrics interactive chart form class InstrokeForm(forms.Form): metric = forms.ChoiceField(label='metric',choices=(('a','a'),('b','b'))) + individual_curves = forms.BooleanField(label='individual curves',initial=False, + required=False) spm_min = forms.IntegerField(initial=15,label='SPM Min',widget=HiddenInput) spm_max = forms.IntegerField(initial=45,label='SPM Max',widget=HiddenInput) activeminutesmin = forms.IntegerField( diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 0797271f..d0d87fd6 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -4071,7 +4071,10 @@ def interactive_streamchart(id=0, promember=0): return [script, div] def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, - activeminutesmin, activeminutesmax): + activeminutesmin, activeminutesmax, + individual_curves): + + df_pos = (df+abs(df))/2. df_min = -(-df+abs(-df))/2. @@ -4173,11 +4176,20 @@ def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, plot.add_layout(label) plot.add_layout(label2) - plot.varea('x', y1='high', y2='low',source=source,fill_color="lightgray",alpha=0.5) + if individual_curves: + for index,row in df.iterrows(): + plot.line(xvals,row,color='lightgray',line_width=1) + else: + plot.varea('x', y1='high', y2='low',source=source,fill_color="lightgray",alpha=0.5) plot.line('x','median',source=source,legend_label='median',color="black", line_width=3) + medrange = mean_vals.max()-mean_vals.min() + yrange = Range1d(start=mean_vals.min()-0.2*medrange, + end=mean_vals.max()+0.2*medrange,) + plot.y_range = yrange + plot.add_tools(HoverTool(tooltips=TIPS)) script, div = components(plot) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 4e203499..7170ec38 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -2937,6 +2937,7 @@ def instroke_chart_interactive(request, id=0): activeminutesmax = int(rowdata.duration/60.) activeminutesmin = 0 maxminutes = activeminutesmax + individual_curves = False if request.method == 'POST': form = InstrokeForm(request.POST,choices=instrokemetrics) @@ -2946,6 +2947,7 @@ def instroke_chart_interactive(request, id=0): spm_max = form.cleaned_data['spm_max'] activeminutesmin = form.cleaned_data['activeminutesmin'] activeminutesmax = form.cleaned_data['activeminutesmax'] + individual_curves = form.cleaned_data['individual_curves'] activesecondsmin = 60.*activeminutesmin @@ -2965,6 +2967,7 @@ def instroke_chart_interactive(request, id=0): spm_max, activeminutesmin, activeminutesmax, + individual_curves, ) # change to range spm_min to spm_max