From aae0bb5cdbf42ce1343ab61bb89c93426c40c508 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 9 Oct 2018 11:26:15 +0200 Subject: [PATCH] fusion done --- rowers/templates/fusion.html | 56 ++++---- rowers/templates/fusion_list.html | 214 +++++++++++++++++------------- rowers/views.py | 189 +++++++++++++++----------- 3 files changed, 263 insertions(+), 196 deletions(-) diff --git a/rowers/templates/fusion.html b/rowers/templates/fusion.html index 52de737e..89a11a4b 100644 --- a/rowers/templates/fusion.html +++ b/rowers/templates/fusion.html @@ -1,22 +1,34 @@ -{% extends "base.html" %} +{% extends "newbase.html" %} {% load staticfiles %} {% load rowerfilters %} {% block title %}Workouts{% endblock %} -{% block content %} +{% block main %} -
-

Fusion Editor

-
-
-
+

Fusion Editor

+
    +
  • + +
    +

    + + {{ form.as_table }} +
    +

    +

    + {% csrf_token %} + +

    +
    +
  • +
  • - Adding sensor data from workout {{ workout2.id }} into workout {{ workout1.id }}. - This will create a new workout. After you submit the form, you will be - taken to the newly created workout. If you are happy with the result, you - can delete the two original workouts manually. + Adding sensor data from workout {{ workout2.id }} into workout {{ workout1.id }}. + This will create a new workout. After you submit the form, you will be + taken to the newly created workout. If you are happy with the result, you + can delete the two original workouts manually.

    Workout 1: {{ workout1.name }} @@ -24,21 +36,13 @@

    Workout 2: {{ workout2.name }}

    -

    On the right hand side, please select the columns from workout 2 that +

    Please select the columns from workout 2 that you want to replace the equivalent columns in workout 1.

    -
-
- -
- - - {{ form.as_table }} -
- {% csrf_token %} -
-
- -
-
+ + {% endblock %} + +{% block sidebar %} +{% include 'menu_workout.html' %} +{% endblock %} diff --git a/rowers/templates/fusion_list.html b/rowers/templates/fusion_list.html index b7f285d7..8da7c441 100644 --- a/rowers/templates/fusion_list.html +++ b/rowers/templates/fusion_list.html @@ -1,36 +1,34 @@ -{% extends "base.html" %} +{% extends "newbase.html" %} {% load staticfiles %} {% load rowerfilters %} {% block title %}Workouts{% endblock %} -{% block content %} -
-
-

Workout {{ id }}

- - +{% block main %} +

Workout {{ id }} Sensor Fusion

+
    +
  • +
+ - - + + - - + + - + - + - + - + - + - -
Rower:{{ first_name }} {{ last_name }}
Name:{{ workout.name }}
Date:{{ workout.date }}
Time:{{ workout.starttime }}
Distance:{{ workout.distance }}m
Duration:{{ workout.duration |durationprint:"%H:%M:%S.%f" }}
Type:{{ workout.workouttype }}
Weight Category:{{ workout.weightcategory }}
-
-
+ +

@@ -40,82 +38,108 @@

-
- - Select start and end date for a date range: -
-

-

- - - {{ dateform.as_table }} -
- {% csrf_token %} -
-
+

+ Select start and end date for a date range: +

+

+ + + + {{ dateform.as_table }} +
+ {% csrf_token %} +

-

-
+ +
  • +

    Fuse this workout with data from:

    + {% if workouts %} +

    + + {% if workouts.has_previous %} + {% if request.GET.q %} + + + + + + + {% else %} + + + + + + + {% endif %} + {% endif %} + + + Page {{ workouts.number }} of {{ workouts.paginator.num_pages }}. + + + {% if workouts.has_next %} + {% if request.GET.q %} + + + + + + + {% else %} + + + + + + + {% endif %} + {% endif %} + +

    - -
  • - -
    -

    Fuse this workout with data from:

    - {% if workouts %} - - - - - - - - - - - - - - - - {% for cworkout in workouts %} - - - - - - - - - - {% if id == cworkout.id %} - - {% else %} - - {% endif %} - - - {% endfor %} - -
    Date Time Name Type Distance Duration Avg HR Max HR Fusion
    {{ cworkout.date }} {{ cworkout.starttime }} {{ cworkout.name }} {{ cworkout.workouttype }} {{ cworkout.distance }}m {{ cworkout.duration |durationprint:"%H:%M:%S.%f" }} {{ cworkout.averagehr }} {{ cworkout.maxhr }}   Fusion
    - {% else %} -

    No workouts found

    - {% endif %} - -
    - - {% if workouts.has_previous %} - < + + + + + + + + + + + + + + + + {% for cworkout in workouts %} + + + + + + + + + + {% if id == cworkout.id %} + + {% else %} + + {% endif %} + + + {% endfor %} + +
    Date Time Name Type Distance Duration Avg HR Max HR Fusion
    {{ cworkout.date }} {{ cworkout.starttime }} {{ cworkout.name }} {{ cworkout.workouttype }} {{ cworkout.distance }}m {{ cworkout.duration |durationprint:"%H:%M:%S.%f" }} {{ cworkout.averagehr }} {{ cworkout.maxhr }}   Fusion
    + {% else %} +

    No workouts found

    {% endif %} - - - Page {{ workouts.number }} of {{ workouts.paginator.num_pages }}. - - - {% if workouts.has_next %} - > - {% endif %} -
    -
    -
    + + +{% endblock %} + +{% block sidebar %} +{% include 'menu_workout.html' %} {% endblock %} diff --git a/rowers/views.py b/rowers/views.py index 774dd29d..8a3e650b 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6528,73 +6528,93 @@ def workout_fusion_list(request,id=0,message='',successmessage='', try: r = getrower(request.user) - u = User.objects.get(id=r.user.id) - if request.method == 'POST': - dateform = DateRangeForm(request.POST) - if dateform.is_valid(): - startdate = dateform.cleaned_data['startdate'] - enddate = dateform.cleaned_data['enddate'] - else: - dateform = DateRangeForm(initial={ - 'startdate':startdate, - 'enddate':enddate, - }) - - if startdatestring: - startdate = iso8601.parse_date(startdatestring) - if enddatestring: - enddate = iso8601.parse_date(enddatestring) - - startdate = datetime.datetime.combine(startdate,datetime.time()) - enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) - #enddate = enddate+datetime.timedelta(days=1) - - if enddate < startdate: - s = enddate - enddate = startdate - startdate = s - - workouts = Workout.objects.filter(user=r, - startdatetime__gte=startdate, - startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=id) - - query = request.GET.get('q') - if query: - query_list = query.split() - workouts = workouts.filter( - reduce(operator.and_, - (Q(name__icontains=q) for q in query_list)) | - reduce(operator.and_, - (Q(notes__icontains=q) for q in query_list)) - ) - - paginator = Paginator(workouts,15) # show 25 workouts per page - page = request.GET.get('page') - - try: - workouts = paginator.page(page) - except PageNotAnInteger: - workouts = paginator.page(1) - except EmptyPage: - workouts = paginator.page(paginator.num_pages) - row = get_workout(id) - - messages.info(request,successmessage) - messages.error(request,message) - - return render(request, 'fusion_list.html', - {'id':int(id), - 'workout':row, - 'workouts': workouts, - 'last_name':u.last_name, - 'first_name':u.first_name, - 'dateform':dateform, - 'startdate':startdate, - 'enddate':enddate, - 'teams':get_my_teams(request.user), - }) except Rower.DoesNotExist: raise Http404("User has no rower instance") + + u = User.objects.get(id=r.user.id) + if request.method == 'POST': + dateform = DateRangeForm(request.POST) + if dateform.is_valid(): + startdate = dateform.cleaned_data['startdate'] + enddate = dateform.cleaned_data['enddate'] + else: + dateform = DateRangeForm(initial={ + 'startdate':startdate, + 'enddate':enddate, + }) + + if startdatestring: + startdate = iso8601.parse_date(startdatestring) + if enddatestring: + enddate = iso8601.parse_date(enddatestring) + + startdate = datetime.datetime.combine(startdate,datetime.time()) + enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59)) + #enddate = enddate+datetime.timedelta(days=1) + + if enddate < startdate: + s = enddate + enddate = startdate + startdate = s + + workouts = Workout.objects.filter(user=r, + startdatetime__gte=startdate, + startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=id) + + query = request.GET.get('q') + if query: + query_list = query.split() + workouts = workouts.filter( + reduce(operator.and_, + (Q(name__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(notes__icontains=q) for q in query_list)) + ) + + paginator = Paginator(workouts,15) # show 25 workouts per page + page = request.GET.get('page') + + try: + workouts = paginator.page(page) + except PageNotAnInteger: + workouts = paginator.page(1) + except EmptyPage: + workouts = paginator.page(paginator.num_pages) + row = get_workout(id) + + messages.info(request,successmessage) + messages.error(request,message) + + breadcrumbs = [ + { + 'url':'/rowers/list-workouts', + 'name':'Workouts' + }, + { + 'url':get_workout_default_page(request,row.id), + 'name': str(row.id) + }, + { + 'url':reverse(workout_fusion_list,kwargs={'id':id}), + 'name': 'Sensor Fusion' + } + + ] + + return render(request, 'fusion_list.html', + {'id':int(id), + 'workout':row, + 'rower':r, + 'active':'nav-workouts', + 'breadcrumbs':breadcrumbs, + 'workouts': workouts, + 'last_name':u.last_name, + 'first_name':u.first_name, + 'dateform':dateform, + 'startdate':startdate, + 'enddate':enddate, + 'teams':get_my_teams(request.user), + }) # Basic view of workout def workout_view(request,id=0): @@ -11021,6 +11041,9 @@ def workout_split_view(request,id=id): # Fuse two workouts @user_passes_test(ispromember,login_url="/",redirect_field_name=None) def workout_fusion_view(request,id1=0,id2=1): + + r = getrower(request.user) + try: w1 = Workout.objects.get(id=id1) w2 = Workout.objects.get(id=id2) @@ -11061,20 +11084,36 @@ def workout_fusion_view(request,id1=0,id2=1): }) return HttpResponseRedirect(url) - else: - return render(request, 'fusion.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'workout1':w1, - 'workout2':w2, - }) - - - form = FusionMetricChoiceForm(instance=w2) + else: + form = FusionMetricChoiceForm(instance=w2) + + breadcrumbs = [ + { + 'url':'/rowers/list-workouts', + 'name':'Workouts' + }, + { + 'url':get_workout_default_page(request,w1.id), + 'name': str(w1.id) + }, + { + 'url':reverse(workout_fusion_list,kwargs={'id':id1}), + 'name': 'Sensor Fusion' + }, + { + 'url':reverse(workout_fusion_view,kwargs={'id1':id1,'id2':id2}), + 'name': 'Sensor Fusion' + } + + ] return render(request, 'fusion.html', {'form':form, 'teams':get_my_teams(request.user), + 'workout':w1, + 'rower':r, + 'breadcrumbs':breadcrumbs, + 'active':'nav-workouts', 'workout1':w1, 'workout2':w2, })