diff --git a/rowers/forms.py b/rowers/forms.py index 02f970a6..805abc7b 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -156,9 +156,9 @@ class InstrokeForm(forms.Form): 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( + activeminutesmin = forms.FloatField( required=False, initial=0, widget=forms.HiddenInput()) - activeminutesmax = forms.IntegerField( + activeminutesmax = forms.FloatField( required=False, initial=0, widget=forms.HiddenInput()) notes = forms.CharField(required=False, max_length=200, label='Notes', diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 87a7ec9c..a239928a 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -4209,7 +4209,7 @@ def forcecurve_multi_interactive_chart(selected): return (script, div) def instroke_multi_interactive_chart(selected, *args, **kwargs): - + df_plot = pd.DataFrame() ids = [analysis.id for analysis in selected] metrics = list(set([analysis.metric for analysis in selected])) @@ -4318,7 +4318,7 @@ def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, df_pos = (df+abs(df))/2. df_min = -(-df+abs(-df))/2. - mean_vals = df.median() + mean_vals = df.median().replace(0, np.nan) q75 = df_pos.quantile(q=0.75).replace(0,np.nan) q25 = df_pos.quantile(q=0.25).replace(0,np.nan) q75min = df_min.quantile(q=0.75).replace(0,np.nan) @@ -4404,9 +4404,9 @@ def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, text_color='black', ) - s2 = 'Time: {activeminutesmin} - {activeminutesmax} min'.format( - activeminutesmin=activeminutesmin, - activeminutesmax=activeminutesmax + s2 = 'Time: {activeminutesmin} - {activeminutesmax}'.format( + activeminutesmin=datetime.timedelta(seconds=60*activeminutesmin), + activeminutesmax=datetime.timedelta(seconds=60*activeminutesmax) ) label2 = Label(x=50,y=400, x_units='screen', y_units='screen', @@ -4453,7 +4453,12 @@ def instroke_interactive_chart(df,metric, workout, spm_min, spm_max, plot.add_tools(HoverTool(tooltips=TIPS)) - script, div = components(plot) + try: + script, div = components(plot) + except ValueError: + script = "" + div = "Something went wrong with the chart" + return (script, div) diff --git a/rowers/templates/instroke_interactive.html b/rowers/templates/instroke_interactive.html index 44e599a0..cad3bd0e 100644 --- a/rowers/templates/instroke_interactive.html +++ b/rowers/templates/instroke_interactive.html @@ -83,21 +83,29 @@ $( function() { }); {% endblock %} diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index ba04a374..a1e234ab 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -393,6 +393,9 @@ def aantalcomments(workout): return aantalcomments +@register.filter +def times60(s): + return s*60 @register.filter def encode(id):