diff --git a/rowers/templates/menu_racing.html b/rowers/templates/menu_racing.html index 305818c4..e377f57f 100644 --- a/rowers/templates/menu_racing.html +++ b/rowers/templates/menu_racing.html @@ -16,6 +16,12 @@ {% if race %} + {% if results %} +
  • + +  Compare Results +
  • + {% endif %} {% if reguest.user.is_anonymous %}
  • {% if race.sessiontype == 'race' %} diff --git a/rowers/templates/multicompare.html b/rowers/templates/multicompare.html index 3096a343..78d59f2c 100644 --- a/rowers/templates/multicompare.html +++ b/rowers/templates/multicompare.html @@ -41,5 +41,9 @@ {% endblock %} {% block sidebar %} +{% if active == 'nav-racing' %} +{% include 'menu_racing.html' %} +{% else %} {% include 'menu_workouts.html' %} +{% endif %} {% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 242c07b4..c64090b0 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -278,6 +278,7 @@ urlpatterns = [ url(r'^workout/(?P\d+)/interactiveotwplot$',views.workout_otwpowerplot_view), url(r'^workout/(?P\d+)/wind$',views.workout_wind_view), url(r'^workout/(?P\d+)/image$',views.workout_uploadimage_view), + url(r'^virtualevent/(?P\d+)/compare$',views.virtualevent_compare_view), url(r'^virtualevent/(?P\d+)/image$', views.virtualevent_uploadimage_view), url(r'^virtualevent/(?P\d+)/setimage/(?P\d+)/$', diff --git a/rowers/views.py b/rowers/views.py index 609192f0..c4a69681 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -5598,6 +5598,139 @@ def team_comparison_select(request, 'teams':get_my_teams(request.user), }) +def virtualevent_compare_view(request,id=0): + results = [] + + promember = 0 + if not request.user.is_anonymous(): + r = getrower(request.user) + result = request.user.is_authenticated() and ispromember(request.user) + if result: + promember=1 + else: + r = None + + try: + race = VirtualRace.objects.get(id=id) + except VirtualRace.DoesNotExist: + raise Http404("Virtual Race does not exist") + + if race.sessiontype == 'race': + script,div = course_map(race.course) + resultobj = VirtualRaceResult + else: + script = '' + div = '' + resultobj = IndoorVirtualRaceResult + + results = resultobj.objects.filter( + race=race, + workoutid__isnull=False, + coursecompleted=True, + ).order_by("duration","-distance") + + workoutids = [result.workoutid for result in results] + + if request.method == 'GET': + xparam = race.sessionmode if race.sessionmode in ['distance','time'] else 'time' + yparam = 'pace' + plottype = 'line' + + + + request.session['ids'] = workoutids + request.session['plottype'] = plottype + request.session['xparam'] = xparam + request.session['yparam'] = yparam + + + workouts = [] + for id in workoutids: + try: + workouts.append(Workout.objects.get(id=id)) + except Workout.DoesNotExist: + pass + + labeldict = { + int(w.id): w.__unicode__() for w in workouts + } + + chartform = ChartParamChoiceForm( + initial = { + 'xparam':xparam, + 'yparam':yparam, + 'plottype':plottype, + 'teamid':0 + } + ) + elif request.method == 'POST': + chartform = ChartParamChoiceForm(request.POST) + if chartform.is_valid(): + xparam = chartform.cleaned_data['xparam'] + yparam = chartform.cleaned_data['yparam'] + plottype = chartform.cleaned_data['plottype'] + teamid = chartform.cleaned_data['teamid'] + workoutids = request.session['ids'] + request.session['ids'] = workoutids + workouts = [] + for id in workoutids: + try: + workouts.append(Workout.objects.get(id=id)) + except Workout.DoesNotExist: + pass + + labeldict = { + int(w.id): w.__unicode__() for w in workouts + } + res = interactive_multiple_compare_chart(workoutids,xparam,yparam, + promember=promember, + plottype=plottype, + labeldict=labeldict) + script = res[0] + div = res[1] + errormessage = res[3] + if errormessage != '': + messages.error(request,errormessage) + + breadcrumbs = [ + { + 'url': reverse(virtualevents_view), + 'name': 'Racing' + }, + { + 'url':reverse(virtualevent_view, + kwargs={ + 'id':race.id, + } + ), + 'name': race.name + }, + { + 'url':reverse(virtualevent_compare_view, + kwargs={ + 'id':race.id, + } + ), + 'name': 'Compare' + } + ] + + + return render(request,'multicompare.html', + {'interactiveplot':script, + 'the_div':div, + 'breadcrumbs':breadcrumbs, + 'rower':r, + 'race':race, + 'results':results, + 'active':'nav-racing', + 'promember':promember, + 'teamid':0, + 'chartform':chartform, + 'teams':[] + }) + + @login_required() def plannedsession_compare_view(request,id=0,userid=0): r = getrequestrower(request,userid=userid)