diff --git a/rowers/dataprep.py b/rowers/dataprep.py
index 29522190..25c472a1 100644
--- a/rowers/dataprep.py
+++ b/rowers/dataprep.py
@@ -1686,9 +1686,13 @@ def getsmallrowdata_db(columns, ids=[], doclean=True, workstrokesonly=True):
cdata = row.df[c]
cdata.fillna(inplace=True,method='bfill')
# This doesn't work because sometimes data are duplicated at save
- cdata2 = savgol_filter(cdata.values,windowsize,3)
+ try:
+ cdata2 = savgol_filter(cdata.values,windowsize,3)
+ data[c] = cdata2
+ except ValueError:
+ data[c] = cdata
+
- data[c] = cdata2
except (KeyError, AttributeError):
data[c] = 0
diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py
index 7dd2b44a..a7a046d9 100644
--- a/rowers/interactiveplots.py
+++ b/rowers/interactiveplots.py
@@ -2729,8 +2729,12 @@ def interactive_flex_chart2(id=0,promember=0,
xaxmax = rowdata['x1'].max()
xaxmin = rowdata['x1'].min()
else:
- xaxmax = yaxmaxima[xparam]
- xaxmin = yaxminima[xparam]
+ try:
+ xaxmax = yaxmaxima[xparam]
+ xaxmin = yaxminima[xparam]
+ except KeyError:
+ xaxmax = rowdata['x1'].max()
+ xaxmin = rowdata['x1'].min()
# average values
if xparam != 'time':
@@ -2766,8 +2770,10 @@ def interactive_flex_chart2(id=0,promember=0,
except KeyError:
y1mean = 0
-
- rowdata['xname'] = axlabels[xparam]
+ try:
+ rowdata['xname'] = axlabels[xparam]
+ except KeyError:
+ rowdata['xname'] = xparam
try:
rowdata['yname1'] = axlabels[yparam1]
except KeyError:
@@ -2830,8 +2836,15 @@ def interactive_flex_chart2(id=0,promember=0,
line_dash=[6,6],line_width=2)
y2means = y1means
+ try:
+ xlabeltext = axlabels[xparam]+": {x1mean:6.2f}".format(
+ x1mean=x1mean
+ )
+ except KeyError:
+ xlabeltext = xparam+": {x1mean:6.2f}".format(x1mean=x1mean)
+
xlabel = Label(x=100,y=130,x_units='screen',y_units='screen',
- text=axlabels[xparam]+": {x1mean:6.2f}".format(x1mean=x1mean),
+ text=xlabeltext,
background_fill_alpha=.7,
background_fill_color='white',
text_color='green',
@@ -2858,6 +2871,10 @@ def interactive_flex_chart2(id=0,promember=0,
except KeyError:
yaxlabel = str(yparam1)+' '
+ try:
+ xaxlabel = axlabels[xparam]
+ except KeyError:
+ xaxlabel = xparam
y1label = Label(x=100,y=100,x_units='screen',y_units='screen',
text=yaxlabel+": {y1mean:6.2f}".format(y1mean=y1mean),
@@ -2883,7 +2900,8 @@ def interactive_flex_chart2(id=0,promember=0,
plot.title.text = row.name
plot.title.text_font_size=value("1.0em")
- plot.xaxis.axis_label = axlabels[xparam]
+
+ plot.xaxis.axis_label = xaxlabel
plot.yaxis.axis_label = yaxlabel
diff --git a/rowers/metrics.py b/rowers/metrics.py
index c70a7639..5c22713e 100644
--- a/rowers/metrics.py
+++ b/rowers/metrics.py
@@ -5,6 +5,22 @@ import pandas as pd
from scipy import optimize
from django.utils import timezone
+nometrics = [
+ 'originalvelo',
+ 'cumdist',
+ 'strokes_slsh_min',
+ ' WorkPerStroke (joules)',
+ ' activityIdx',
+ ' lapIdx',
+# ' pointIdx',
+ ' WorkoutType',
+ ' IntervalType',
+ ' WorkoutState',
+ ' RowingState',
+ ' WorkoutDurationType',
+ ' WorkoutIntervalCount',
+ ]
+
rowingmetrics = (
('time',{
'numtype':'float',
diff --git a/rowers/templates/flexchart3otw.html b/rowers/templates/flexchart3otw.html
index 29934302..b53d631f 100644
--- a/rowers/templates/flexchart3otw.html
+++ b/rowers/templates/flexchart3otw.html
@@ -70,6 +70,15 @@
{{ value }}
{% endfor %}
{% endif %}
+ {% if promember %}
+ {% for key, value in extrametrics.items %}
+ {{ value }}
+ {% endfor %}
+ {% else %}
+ {% for key, value in extrametrics.items %}
+ {{ value }} (Pro)
+ {% endfor %}
+ {% endif %}
diff --git a/rowers/urls.py b/rowers/urls.py
index 71c4b6fd..7922359b 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -398,7 +398,7 @@ urlpatterns = [
url(r'^register/thankyou/$', TemplateView.as_view(template_name='registerthankyou.html'), name='registerthankyou'),
url(r'^workout/(?P\d+)/workflow$',views.workout_workflow_view,
name='workout_workflow_view'),
- url(r'^workout/(?P\d+)/flexchart/(?P\w+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P\w+)/$',views.workout_flexchart3_view),
+ url(r'^workout/(?P\d+)/flexchart/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P\w+)/$',views.workout_flexchart3_view),
url(r'^workout/(?P\d+)/flexchart/(?P\w+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P\w+.*)$',views.workout_flexchart3_view),
url(r'^workout/(?P\d+)/flexchart/(?P\w+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)$',views.workout_flexchart3_view),
url(r'^workout/(?P\d+)/flexchart$',views.workout_flexchart3_view),
diff --git a/rowers/views.py b/rowers/views.py
index f5f6e16d..72c332d2 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -8290,25 +8290,13 @@ def workout_flexchart3_view(request,*args,**kwargs):
yparam1 = yparam1.replace('/','_slsh_')
yparam2 = yparam2.replace('/','_slsh_')
- try:
- extrametrics.pop('originalvelo')
- except KeyError:
- pass
+ from rowers.metrics import nometrics
- try:
- extrametrics.pop('cumdist')
- except KeyError:
- pass
-
- try:
- extrametrics.pop(' Cadence (strokes_slsh_min)')
- except KeyError:
- pass
-
- try:
- extrametrics.pop(' WorkPerStroke (joules)')
- except KeyError:
- pass
+ for metric in nometrics:
+ try:
+ extrametrics.pop(metric)
+ except KeyError:
+ pass
return render(request,
'flexchart3otw.html',