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 @@
+
+
+ + {{ form.as_table }} +
+ {% csrf_token %} +
+ +
+
+
{% 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, })