From 6012463a4d669b02940909bc075a145915b4f3fc Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 27 Nov 2017 22:01:12 +0100 Subject: [PATCH] power curve --- rowers/templates/advancedotw.html | 7 +++ rowers/templates/instroke.html | 80 +++++++++++++++++++++++++++++++ rowers/urls.py | 1 + rowers/views.py | 32 ++++++++++++- 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 rowers/templates/instroke.html diff --git a/rowers/templates/advancedotw.html b/rowers/templates/advancedotw.html index 0f54ff2b..3b6cdd33 100644 --- a/rowers/templates/advancedotw.html +++ b/rowers/templates/advancedotw.html @@ -234,6 +234,13 @@ See (and save) the big interactive plot

+
+

+ In-Stroke Metrics

+

+ If your workout has in-stroke metrics (like a stroke power curve or boat acceleration curve), you will find it here. +

+
diff --git a/rowers/templates/instroke.html b/rowers/templates/instroke.html new file mode 100644 index 00000000..622394d5 --- /dev/null +++ b/rowers/templates/instroke.html @@ -0,0 +1,80 @@ +{% extends "base.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}Advanced Features {% endblock %} + +{% block content %} +
+ + {% if form.errors %} +

+ Please correct the error{{ form.errors|pluralize }} below. +

+ {% endif %} + +

In Stroke Metrics

+ {% if user.rower.rowerplan == 'basic' %} +

This is a preview of the page with advanced functionality for Pro users. See the About page for more information and to sign up for Pro Membership + {% endif %} +

+

+ Edit Workout +

+
+
+

+ Advanced Edit +

+
+
+

+ Export +

+ +
+ +
+ + + + + + + + + + + + +
Date:{{ workout.date }}
Time:{{ workout.starttime }}
Distance:{{ workout.distance }}m
Duration:{{ workout.duration |durationprint:"%H:%M:%S.%f" }}
Public link to this workout + https://rowsandall.com/rowers/workout/{{ workout.id }} + +
+
+ + + +
+ {% if instrokemetrics %} + {% for metric in instrokemetrics %} + {% if forloop.first %} +
+ {% else %} +
+ {% endif %} + {{ metric }} +
+ {% endfor %} + {% else %} +

Unfortunately, this workout doesn't have any in stroke metrics

+ {% endif %} + +
+
+ +
+

 

+
+ +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index d79a7bbc..0ecd420a 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -224,6 +224,7 @@ urlpatterns = [ url(r'^workout/(?P\d+)/geeky$',views.workout_geeky_view), url(r'^workout/(?P\d+)/advanced$',views.workout_advanced_view), url(r'^workout/(?P\d+)/instroke/(?P\w+.*)$',views.instroke_chart), + url(r'^workout/(?P\d+)/instroke$',views.instroke_view), url(r'^workout/(?P\d+)/stats$',views.workout_stats_view), url(r'^workout/(?P\d+)/otwsetpower$',views.workout_otwsetpower_view), url(r'^workout/(?P\d+)/interactiveotwplot$',views.workout_otwpowerplot_view), diff --git a/rowers/views.py b/rowers/views.py index 2d80cbb8..2a1b52aa 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6436,6 +6436,35 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): 'form':form, }) +@login_required() +def instroke_view(request,id=0): + try: + row = Workout.objects.get(id=id) + except Workout.DoesNotExist: + raise Http404("Workout doesn't exist") + + form = WorkoutForm(instance=row) + g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime") + # check if user is owner of this workout + + if (checkworkoutuser(request.user,row)==False): + message = "You are not allowed to edit this workout" + messages.error(request,message) + url = reverse(workouts_view) + + return HttpResponseRedirect(url) + + rowdata = rrdata(csvfile=row.csvfilename) + instrokemetrics = rowdata.get_instroke_columns() + + + return render(request, + 'instroke.html', + {'workout':row, + 'teams':get_my_teams(request.user), + 'instrokemetrics':instrokemetrics, + }) + # A special Edit page with all the Geeky functionality for the workout @login_required() def workout_geeky_view(request,id=0,message="",successmessage=""): @@ -6548,7 +6577,8 @@ def instroke_chart(request,id=0,metric=''): i.save() print i.id,'aap' - url = reverse(workout_geeky_view, + r = getrower(request.user) + url = reverse(r.defaultlandingpage, kwargs = { 'id':id, })