diff --git a/rowers/forms.py b/rowers/forms.py
index 9699aedc..df48585f 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -352,6 +352,31 @@ class DateRangeForm(forms.Form):
class Meta:
fields = ['startdate','enddate']
+class FitnessMetricForm(forms.Form):
+ startdate = forms.DateField(
+ initial=timezone.now()-datetime.timedelta(days=365),
+ # widget=SelectDateWidget(years=range(1990,2050)),
+ widget=AdminDateWidget(),
+ label='Start Date')
+ enddate = forms.DateField(
+ initial=timezone.now(),
+ widget=AdminDateWidget(),
+ label='End Date')
+
+ modechoices = (
+ ('rower','indoor rower'),
+ ('water','on the water')
+ )
+
+ mode = forms.ChoiceField(required=True,
+ choices=modechoices,
+ initial='rower',
+ label='Workout Mode'
+ )
+
+ class Meta:
+ fields = ['startdate','enddate','mode']
+
class SessionDateShiftForm(forms.Form):
shiftstartdate = forms.DateField(
initial=timezone.now(),
diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py
index 3e0ff059..9e652900 100644
--- a/rowers/interactiveplots.py
+++ b/rowers/interactiveplots.py
@@ -746,7 +746,7 @@ def fitnessmetric_chart(fitnessmetrics,user,workoutmode='rower'):
plot.xaxis.major_label_orientation = pi/4
plot.y_range = Range1d(0,1.5*max(power4min))
- plot.title.text = 'Fitness of '+user.first_name
+ plot.title.text = 'Power levels from workouts '+user.first_name
hover = plot.select(dict(type=HoverTool))
diff --git a/rowers/templates/fitnessmetric.html b/rowers/templates/fitnessmetric.html
index 8bc5b23d..cba71c9b 100644
--- a/rowers/templates/fitnessmetric.html
+++ b/rowers/templates/fitnessmetric.html
@@ -77,11 +77,22 @@
+
{% if therower.user %}
-
{{ therower.user.first_name }} Fitness Progress
+ {{ therower.user.first_name }} Power Estimates
{% else %}
- {{ user.first_name }} Fitness progress
+ {{ user.first_name }} Power Estimates
{% endif %}
diff --git a/rowers/views.py b/rowers/views.py
index 43ba4ab7..9dce32c6 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -46,6 +46,7 @@ from django.core.mail import send_mail, BadHeaderError
from rowers.forms import (
SummaryStringForm,IntervalUpdateForm,StrokeDataForm,
StatsOptionsForm,PredictedPieceForm,DateRangeForm,DeltaDaysForm,
+ FitnessMetricForm,
EmailForm, RegistrationForm, RegistrationFormTermsOfService,
RegistrationFormUniqueEmail,RegistrationFormSex,
CNsummaryForm,UpdateWindForm,
@@ -3063,14 +3064,29 @@ def cum_flex(request,theuser=0,
@user_passes_test(hasplannedsessions,login_url="/",redirect_field_name=None)
-def fitnessmetric_view(request,id=0,mode='rower'):
+def fitnessmetric_view(request,id=0,mode='rower',
+ startdate=timezone.now()-timezone.timedelta(days=365),
+ enddate=timezone.now()):
if id==0:
id = request.user.id
theuser = User.objects.get(id=id)
therower = Rower.objects.get(user=theuser)
- fitnessmetrics = PowerTimeFitnessMetric.objects.filter(user=theuser)
+
+ if request.method == 'POST':
+ form = FitnessMetricForm(request.POST)
+ if form.is_valid():
+ startdate = form.cleaned_data['startdate']
+ enddate = form.cleaned_data['enddate']
+ mode = form.cleaned_data['mode']
+ else:
+ form = FitnessMetricForm()
+
+ fitnessmetrics = PowerTimeFitnessMetric.objects.filter(
+ user=theuser,
+ date__gte=startdate,
+ date__lte=enddate)
script,thediv = fitnessmetric_chart(
fitnessmetrics,theuser,
@@ -3083,6 +3099,7 @@ def fitnessmetric_view(request,id=0,mode='rower'):
'chartscript':script,
'the_div':thediv,
'mode':mode,
+ 'form':form,
})