Merge branch 'release/v3.14'
This commit is contained in:
@@ -2344,6 +2344,9 @@ def interactive_comparison_chart(id1=0,id2=0,xparam='distance',yparam='spm',
|
|||||||
data2
|
data2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ymean1 = data1['y1'].mean()
|
||||||
|
ymean2 = data2['y2'].mean()
|
||||||
|
|
||||||
# create interactive plot
|
# create interactive plot
|
||||||
plot = Figure(x_axis_type=x_axis_type,y_axis_type=y_axis_type,
|
plot = Figure(x_axis_type=x_axis_type,y_axis_type=y_axis_type,
|
||||||
tools=TOOLS,
|
tools=TOOLS,
|
||||||
@@ -2412,6 +2415,25 @@ def interactive_comparison_chart(id1=0,id2=0,xparam='distance',yparam='spm',
|
|||||||
plot.xaxis.axis_label = axlabels[xparam]
|
plot.xaxis.axis_label = axlabels[xparam]
|
||||||
plot.yaxis.axis_label = axlabels[yparam]
|
plot.yaxis.axis_label = axlabels[yparam]
|
||||||
|
|
||||||
|
ylabel1 = Label(x=100,y=90,x_units='screen',y_units='screen',
|
||||||
|
text=axlabels[yparam]+": {ymean1:6.2f}".format(
|
||||||
|
ymean1=ymean1
|
||||||
|
),
|
||||||
|
background_fill_alpha=.7,
|
||||||
|
background_fill_color='white',
|
||||||
|
text_color='blue'
|
||||||
|
)
|
||||||
|
ylabel2 = Label(x=100,y=110,x_units='screen',y_units='screen',
|
||||||
|
text=axlabels[yparam]+": {ymean2:6.2f}".format(
|
||||||
|
ymean2=ymean2
|
||||||
|
),
|
||||||
|
background_fill_alpha=.7,
|
||||||
|
background_fill_color='white',
|
||||||
|
text_color='red'
|
||||||
|
)
|
||||||
|
plot.add_layout(ylabel1)
|
||||||
|
plot.add_layout(ylabel2)
|
||||||
|
|
||||||
if xparam == 'time':
|
if xparam == 'time':
|
||||||
plot.xaxis[0].formatter = DatetimeTickFormatter(
|
plot.xaxis[0].formatter = DatetimeTickFormatter(
|
||||||
hours = ["%H"],
|
hours = ["%H"],
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid_6 omega">
|
<div class="grid_6 omega">
|
||||||
<div class="grid_2 suffix_4 alpha">
|
<div class="grid_2 alpha">
|
||||||
<p>
|
<p>
|
||||||
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
||||||
<a class="button blue small" href="/rowers/otw-bests">OTW Ranking Pieces</a>
|
<a class="button blue small" href="/rowers/otw-bests">OTW Ranking Pieces</a>
|
||||||
@@ -95,7 +95,17 @@
|
|||||||
Analyse power vs piece duration to make predictions.
|
Analyse power vs piece duration to make predictions.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="grid_2 suffix_2 omega">
|
||||||
|
<p>
|
||||||
|
{% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
|
||||||
|
<a class="button blue small" href="/rowers/team-compare-select/team/0/">Multi Compare</a>
|
||||||
|
{% else %}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Compare many workouts
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -3127,6 +3127,8 @@ def team_comparison_select(request,
|
|||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
except Rower.DoesNotExist:
|
except Rower.DoesNotExist:
|
||||||
raise Http404("Rower doesn't exist")
|
raise Http404("Rower doesn't exist")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
dateform = DateRangeForm(request.POST)
|
dateform = DateRangeForm(request.POST)
|
||||||
@@ -3156,13 +3158,16 @@ def team_comparison_select(request,
|
|||||||
try:
|
try:
|
||||||
theteam = Team.objects.get(id=teamid)
|
theteam = Team.objects.get(id=teamid)
|
||||||
except Team.DoesNotExist:
|
except Team.DoesNotExist:
|
||||||
raise Http404("Team doesn't exist")
|
theteam = 0
|
||||||
|
|
||||||
if theteam.viewing == 'allmembers' or theteam.manager == request.user:
|
if r.rowerplan == 'basic' and theteam==0:
|
||||||
|
raise Http404("Not allowed")
|
||||||
|
|
||||||
|
if theteam and (theteam.viewing == 'allmembers' or theteam.manager == request.user):
|
||||||
workouts = Workout.objects.filter(team=theteam,
|
workouts = Workout.objects.filter(team=theteam,
|
||||||
startdatetime__gte=startdate,
|
startdatetime__gte=startdate,
|
||||||
startdatetime__lte=enddate).order_by("-date", "-starttime")
|
startdatetime__lte=enddate).order_by("-date", "-starttime")
|
||||||
elif theteam.viewing == 'coachonly':
|
elif theteam and theteam.viewing == 'coachonly':
|
||||||
workouts = Workout.objects.filter(team=theteam,user=r,
|
workouts = Workout.objects.filter(team=theteam,user=r,
|
||||||
startdatetime__gte=startdate,
|
startdatetime__gte=startdate,
|
||||||
startdatetime__lte=enddate).order_by("-date","-starttime")
|
startdatetime__lte=enddate).order_by("-date","-starttime")
|
||||||
@@ -3187,7 +3192,12 @@ def team_comparison_select(request,
|
|||||||
form = WorkoutMultipleCompareForm()
|
form = WorkoutMultipleCompareForm()
|
||||||
form.fields["workouts"].queryset = workouts
|
form.fields["workouts"].queryset = workouts
|
||||||
|
|
||||||
chartform = ChartParamChoiceForm(initial={'teamid':theteam.id})
|
if theteam:
|
||||||
|
theid = theteam.id
|
||||||
|
else:
|
||||||
|
theid = 0
|
||||||
|
|
||||||
|
chartform = ChartParamChoiceForm(initial={'teamid':0})
|
||||||
|
|
||||||
messages.info(request,successmessage)
|
messages.info(request,successmessage)
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
|
|||||||
Reference in New Issue
Block a user