Merge branch 'release/v5.89'
This commit is contained in:
+46
-29
@@ -104,7 +104,8 @@ def get_session_metrics(ps):
|
|||||||
completedatev = ''
|
completedatev = ''
|
||||||
statusv = 0
|
statusv = 0
|
||||||
|
|
||||||
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
ws = Workout.objects.filter(user=r,plannedsession=ps).order_by("date")
|
||||||
|
|
||||||
if len(ws) != 0:
|
if len(ws) != 0:
|
||||||
for w in ws:
|
for w in ws:
|
||||||
distancev += w.distance
|
distancev += w.distance
|
||||||
@@ -112,8 +113,11 @@ def get_session_metrics(ps):
|
|||||||
trimpv += dataprep.workout_trimp(w)
|
trimpv += dataprep.workout_trimp(w)
|
||||||
rscorev += dataprep.workout_rscore(w)[0]
|
rscorev += dataprep.workout_rscore(w)[0]
|
||||||
|
|
||||||
ratio,statusv = is_session_complete_ws(ws,ps)
|
ratio,statusv,completiondate = is_session_complete_ws(ws,ps)
|
||||||
completedatev = ws[0].date.strftime('%Y-%m-%d')
|
try:
|
||||||
|
completedatev = completiondate.strftime('%Y-%m-%d')
|
||||||
|
except AttributeError:
|
||||||
|
completedatev = ''
|
||||||
durationv /= 60.
|
durationv /= 60.
|
||||||
|
|
||||||
trimp.append(int(trimpv))
|
trimp.append(int(trimpv))
|
||||||
@@ -139,16 +143,35 @@ def get_session_metrics(ps):
|
|||||||
return thedict
|
return thedict
|
||||||
|
|
||||||
def is_session_complete_ws(ws,ps):
|
def is_session_complete_ws(ws,ps):
|
||||||
|
ws = ws.order_by("date")
|
||||||
if len(ws)==0:
|
if len(ws)==0:
|
||||||
today = date.today()
|
today = date.today()
|
||||||
if today > ps.enddate:
|
if today > ps.enddate:
|
||||||
status = 'missed'
|
status = 'missed'
|
||||||
ratio = 0
|
ratio = 0
|
||||||
return ratio,status
|
return ratio,status,None
|
||||||
else:
|
else:
|
||||||
return 0,'not done'
|
return 0,'not done',None
|
||||||
|
|
||||||
|
value = ps.sessionvalue
|
||||||
|
if ps.sessionunit == 'min':
|
||||||
|
value *= 60.
|
||||||
|
elif ps.sessionunit == 'km':
|
||||||
|
value *= 1000.
|
||||||
|
|
||||||
|
cratiomin = 1
|
||||||
|
cratiomax = 1
|
||||||
|
if ps.criterium == 'none':
|
||||||
|
if ps.sessiontype == 'session':
|
||||||
|
cratiomin = 0.8
|
||||||
|
cratiomax = 1.2
|
||||||
|
else:
|
||||||
|
cratiomin = 0.9167
|
||||||
|
cratiomax = 1.0833
|
||||||
|
|
||||||
|
|
||||||
score = 0
|
score = 0
|
||||||
|
completiondate = None
|
||||||
for w in ws:
|
for w in ws:
|
||||||
if ps.sessionmode == 'distance':
|
if ps.sessionmode == 'distance':
|
||||||
score += w.distance
|
score += w.distance
|
||||||
@@ -161,12 +184,8 @@ def is_session_complete_ws(ws,ps):
|
|||||||
elif ps.sessionmode == 'rScore':
|
elif ps.sessionmode == 'rScore':
|
||||||
rscore = dataprep.workout_rscore(w)[0]
|
rscore = dataprep.workout_rscore(w)[0]
|
||||||
score += rscore
|
score += rscore
|
||||||
|
if not completiondate and score>=cratiomin*value:
|
||||||
value = ps.sessionvalue
|
completiondate = w.date
|
||||||
if ps.sessionunit == 'min':
|
|
||||||
value *= 60.
|
|
||||||
elif ps.sessionunit == 'km':
|
|
||||||
value *= 1000.
|
|
||||||
|
|
||||||
ratio = score/float(value)
|
ratio = score/float(value)
|
||||||
|
|
||||||
@@ -175,49 +194,47 @@ def is_session_complete_ws(ws,ps):
|
|||||||
if ps.sessiontype in ['session','cycletarget']:
|
if ps.sessiontype in ['session','cycletarget']:
|
||||||
if ps.criterium == 'exact':
|
if ps.criterium == 'exact':
|
||||||
if ratio == 1.0:
|
if ratio == 1.0:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
elif ps.criterium == 'minimum':
|
elif ps.criterium == 'minimum':
|
||||||
if ratio >= 1.0:
|
if ratio >= 1.0:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
else:
|
else:
|
||||||
if ratio>0.8 and ratio<1.2 and ps.sessiontype=='session':
|
if ratio>cratiomin and ratio<cratiomax:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
elif ratio>0.9167 and ratio<1.0833 and ps.sessiontype=='cycletarget':
|
|
||||||
return ratio,'completed'
|
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
elif ps.sessiontype == 'test':
|
elif ps.sessiontype == 'test':
|
||||||
if ratio==1.0:
|
if ratio==1.0:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
elif ps.sessiontype == 'challenge':
|
elif ps.sessiontype == 'challenge':
|
||||||
if ps.criterium == 'exact':
|
if ps.criterium == 'exact':
|
||||||
if ratio == 1.0:
|
if ratio == 1.0:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
elif ps.criterium == 'minimum':
|
elif ps.criterium == 'minimum':
|
||||||
if ratio > 1.0:
|
if ratio > 1.0:
|
||||||
return ratio,'completed'
|
return ratio,'completed',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
else:
|
else:
|
||||||
return ratio,'partial'
|
return ratio,'partial',completiondate
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return ratio,status
|
return ratio,status,completiondate
|
||||||
|
|
||||||
|
|
||||||
def is_session_complete(r,ps):
|
def is_session_complete(r,ps):
|
||||||
status = 'not done'
|
status = 'not done'
|
||||||
|
|
||||||
if r not in ps.rower.all():
|
if r not in ps.rower.all():
|
||||||
return 0,'not assigned'
|
return 0,'not assigned',None
|
||||||
|
|
||||||
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
e408191@CZ27LT9RCGN72.36632:1518629534
|
|
||||||
@@ -92,10 +92,14 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<a class="button gray small grid_2" href="/rowers/sessions/multicreate/thisweek/rower/{{ rower.id }}/extra/{{ extrasessions }}">Add More</a>
|
<a class="button gray small grid_2" href="/rowers/sessions/multicreate/{{ timeperiod }}/rower/{{ rower.id }}/extra/{{ extrasessions }}">Add More</a>
|
||||||
<button class="button green small grid_2" type="submit">Submit</button>
|
<button class="button green small grid_2" type="submit">Submit</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<div class="grid_6 prefix_6" id="id_guidance">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
@@ -117,34 +121,72 @@
|
|||||||
$( myrow ).find('*[id*=sessionmode]').change(function() {
|
$( myrow ).find('*[id*=sessionmode]').change(function() {
|
||||||
if (this.value == 'TRIMP') {
|
if (this.value == 'TRIMP') {
|
||||||
$( myrow ).find("*[id*=sessionunit]").prop('value','None');
|
$( myrow ).find("*[id*=sessionunit]").prop('value','None');
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'distance') {
|
if (this.value == 'distance') {
|
||||||
$( myrow ).find("*[id*=sessionunit]").prop('value','m');
|
$( myrow ).find("*[id*=sessionunit]").prop('value','m');
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'time') {
|
if (this.value == 'time') {
|
||||||
$( myrow ).find("*[id*=sessionunit]").prop('value','min');
|
$( myrow ).find("*[id*=sessionunit]").prop('value','min');
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'rScore') {
|
if (this.value == 'rScore') {
|
||||||
$( myrow ).find("*[id*=sessionunit]").prop('value','None');
|
$( myrow ).find("*[id*=sessionunit]").prop('value','None');
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$( myrow ).find('*[id*=sessionunit]').change(function() {
|
$( myrow ).find('*[id*=sessionunit]').change(function() {
|
||||||
if (this.value == 'km') {
|
if (this.value == 'km') {
|
||||||
$( myrow ).find("*[id*=sessionmode]").prop('value','distance');
|
$( myrow ).find("*[id*=sessionmode]").prop('value','distance');
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'm') {
|
if (this.value == 'm') {
|
||||||
$( myrow ).find("*[id*=sessionmode]").prop('value','distance');
|
$( myrow ).find("*[id*=sessionmode]").prop('value','distance');
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'None') {
|
if (this.value == 'None') {
|
||||||
$( myrow ).find("*[id*=sessionmode]").prop('value','rScore');
|
$( myrow ).find("*[id*=sessionmode]").prop('value','rScore');
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'min') {
|
if (this.value == 'min') {
|
||||||
$( myrow ).find("*[id*=sessionmode]").prop('value','time');
|
$( myrow ).find("*[id*=sessionmode]").prop('value','time');
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$( myrow ).find('*[id*=sessiontype]').change(function() {
|
||||||
|
if (this.value == 'session') {
|
||||||
|
$( myrow ).find("*[id*=criterium]").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'challenge') {
|
||||||
|
$( myrow ).find("*[id*=criterium]").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'cycletarget') {
|
||||||
|
$( myrow ).find("*[id*=criterium]").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'test') {
|
||||||
|
$( myrow ).find("*[id*=criterium]").prop("value","exact");
|
||||||
|
$( myrow ).find("*[id*=sessionmode]").prop("value","distance");
|
||||||
|
$( myrow ).find("*[id*=sessionunit]").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -124,6 +124,9 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="grid_6 prefix_6" id="id_guidance">
|
||||||
|
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
@@ -134,16 +137,20 @@
|
|||||||
|
|
||||||
if (this.value == 'TRIMP') {
|
if (this.value == 'TRIMP') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'distance') {
|
if (this.value == 'distance') {
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'time') {
|
if (this.value == 'time') {
|
||||||
$("td #id_sessionunit").prop("value","min");
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'rScore') {
|
if (this.value == 'rScore') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -152,18 +159,22 @@
|
|||||||
|
|
||||||
if (this.value == 'session') {
|
if (this.value == 'session') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'test') {
|
if (this.value == 'test') {
|
||||||
$("td #id_criterium").prop("value","exact");
|
$("td #id_criterium").prop("value","exact");
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'challenge') {
|
if (this.value == 'challenge') {
|
||||||
$("td #id_criterium").prop("value","minimum");
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'cycletarget') {
|
if (this.value == 'cycletarget') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -174,21 +185,27 @@
|
|||||||
|
|
||||||
if (this.value == 'm') {
|
if (this.value == 'm') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'km') {
|
if (this.value == 'km') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'None') {
|
if (this.value == 'None') {
|
||||||
$("td #id_sessionmode").prop("value","rScore");
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'min') {
|
if (this.value == 'min') {
|
||||||
$("td #id_sessionmode").prop("value","time");
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -124,6 +124,10 @@
|
|||||||
<div id="formbutton" class="grid_1 suffix_1 omega">
|
<div id="formbutton" class="grid_1 suffix_1 omega">
|
||||||
<input class="button green" type="submit" value="Save">
|
<input class="button green" type="submit" value="Save">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="grid_6" id="id_guidance">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -139,16 +143,20 @@
|
|||||||
|
|
||||||
if (this.value == 'TRIMP') {
|
if (this.value == 'TRIMP') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'distance') {
|
if (this.value == 'distance') {
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'time') {
|
if (this.value == 'time') {
|
||||||
$("td #id_sessionunit").prop("value","min");
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'rScore') {
|
if (this.value == 'rScore') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -157,18 +165,22 @@
|
|||||||
|
|
||||||
if (this.value == 'session') {
|
if (this.value == 'session') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'test') {
|
if (this.value == 'test') {
|
||||||
$("td #id_criterium").prop("value","exact");
|
$("td #id_criterium").prop("value","exact");
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'challenge') {
|
if (this.value == 'challenge') {
|
||||||
$("td #id_criterium").prop("value","minimum");
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'cycletarget') {
|
if (this.value == 'cycletarget') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -179,15 +191,19 @@
|
|||||||
|
|
||||||
if (this.value == 'm') {
|
if (this.value == 'm') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'km') {
|
if (this.value == 'km') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'None') {
|
if (this.value == 'None') {
|
||||||
$("td #id_sessionmode").prop("value","rScore");
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'min') {
|
if (this.value == 'min') {
|
||||||
$("td #id_sessionmode").prop("value","time");
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -199,4 +215,5 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -92,7 +92,11 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="/rowers/sessions/{{ key }}">
|
<a href="/rowers/sessions/{{ key }}">
|
||||||
|
{% if thedict|lookup:'name' %}
|
||||||
{{ thedict|lookup:'name' }}
|
{{ thedict|lookup:'name' }}
|
||||||
|
{% else %}
|
||||||
|
Unnamed Session
|
||||||
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
{% for r in rowers %}
|
{% for r in rowers %}
|
||||||
|
|||||||
@@ -116,6 +116,9 @@
|
|||||||
<input class="button green" type="submit" value="Save">
|
<input class="button green" type="submit" value="Save">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<div class="grid_6" id="id_guidance">
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -123,69 +126,84 @@
|
|||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$("td #id_sessionmode").change(function() {
|
$("td #id_sessionmode").change(function() {
|
||||||
|
|
||||||
if (this.value == 'TRIMP') {
|
|
||||||
$("td #id_sessionunit").prop("value","None");
|
|
||||||
}
|
|
||||||
if (this.value == 'distance') {
|
|
||||||
$("td #id_sessionunit").prop("value","m");
|
|
||||||
}
|
|
||||||
if (this.value == 'time') {
|
|
||||||
$("td #id_sessionunit").prop("value","min");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.value == 'rScore') {
|
|
||||||
$("td #id_sessionunit").prop("value","None");
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$("td #id_sessiontype").change(function() {
|
|
||||||
|
|
||||||
if (this.value == 'session') {
|
|
||||||
$("td #id_criterium").prop("value","none");
|
|
||||||
}
|
|
||||||
if (this.value == 'test') {
|
|
||||||
$("td #id_criterium").prop("value","exact");
|
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
|
||||||
$("td #id_sessionunit").prop("value","m");
|
|
||||||
}
|
|
||||||
if (this.value == 'challenge') {
|
|
||||||
$("td #id_criterium").prop("value","minimum");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.value == 'cycletarget') {
|
|
||||||
$("td #id_criterium").prop("value","none");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
$("td #id_sessionunit").change(function() {
|
|
||||||
|
|
||||||
if (this.value == 'm') {
|
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
|
||||||
}
|
|
||||||
if (this.value == 'km') {
|
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
|
||||||
}
|
|
||||||
if (this.value == 'None') {
|
|
||||||
$("td #id_sessionmode").prop("value","rScore");
|
|
||||||
}
|
|
||||||
if (this.value == 'min') {
|
|
||||||
$("td #id_sessionmode").prop("value","time");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (this.value == 'TRIMP') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'distance') {
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'time') {
|
||||||
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'rScore') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("td #id_sessiontype").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'session') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'test') {
|
||||||
|
$("td #id_criterium").prop("value","exact");
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'challenge') {
|
||||||
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'cycletarget') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$("td #id_sessionunit").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'm') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'km') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'None') {
|
||||||
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'min') {
|
||||||
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -131,8 +131,12 @@
|
|||||||
<div id="formbutton" class="grid_1 suffix_1 omega">
|
<div id="formbutton" class="grid_1 suffix_1 omega">
|
||||||
<input class="button green" type="submit" value="Save">
|
<input class="button green" type="submit" value="Save">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
<div class="grid_6" id="id_guidance">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
@@ -144,16 +148,20 @@
|
|||||||
|
|
||||||
if (this.value == 'TRIMP') {
|
if (this.value == 'TRIMP') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'distance') {
|
if (this.value == 'distance') {
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'time') {
|
if (this.value == 'time') {
|
||||||
$("td #id_sessionunit").prop("value","min");
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'rScore') {
|
if (this.value == 'rScore') {
|
||||||
$("td #id_sessionunit").prop("value","None");
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -162,18 +170,22 @@
|
|||||||
|
|
||||||
if (this.value == 'session') {
|
if (this.value == 'session') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'test') {
|
if (this.value == 'test') {
|
||||||
$("td #id_criterium").prop("value","exact");
|
$("td #id_criterium").prop("value","exact");
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
$("td #id_sessionunit").prop("value","m");
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'challenge') {
|
if (this.value == 'challenge') {
|
||||||
$("td #id_criterium").prop("value","minimum");
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.value == 'cycletarget') {
|
if (this.value == 'cycletarget') {
|
||||||
$("td #id_criterium").prop("value","none");
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -184,15 +196,19 @@
|
|||||||
|
|
||||||
if (this.value == 'm') {
|
if (this.value == 'm') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'km') {
|
if (this.value == 'km') {
|
||||||
$("td #id_sessionmode").prop("value","distance");
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'None') {
|
if (this.value == 'None') {
|
||||||
$("td #id_sessionmode").prop("value","rScore");
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
}
|
}
|
||||||
if (this.value == 'min') {
|
if (this.value == 'min') {
|
||||||
$("td #id_sessionmode").prop("value","time");
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-10
@@ -11844,7 +11844,7 @@ def plannedsession_teamcreate_view(request,timeperiod='thisweek',
|
|||||||
'teamform':sessionteamselectform,
|
'teamform':sessionteamselectform,
|
||||||
'timeperiod':timeperiod,
|
'timeperiod':timeperiod,
|
||||||
'plannedsessions':sps,
|
'plannedsessions':sps,
|
||||||
'rower':r,
|
'rower':getrower(request.user),
|
||||||
})
|
})
|
||||||
|
|
||||||
# Manager edits sessions for entire team
|
# Manager edits sessions for entire team
|
||||||
@@ -11991,7 +11991,7 @@ def plannedsessions_coach_view(request,timeperiod='thisweek',
|
|||||||
for ps in sps:
|
for ps in sps:
|
||||||
rowerstatus = {}
|
rowerstatus = {}
|
||||||
for r in rowers:
|
for r in rowers:
|
||||||
ratio, status = is_session_complete(r,ps)
|
ratio, status,completiondate = is_session_complete(r,ps)
|
||||||
rowerstatus[r.id] = status
|
rowerstatus[r.id] = status
|
||||||
sessiondict = {
|
sessiondict = {
|
||||||
'results':rowerstatus,
|
'results':rowerstatus,
|
||||||
@@ -12046,15 +12046,11 @@ def plannedsessions_view(request,timeperiod='thisweek',rowerid=0):
|
|||||||
completiondate = {}
|
completiondate = {}
|
||||||
|
|
||||||
for ps in sps:
|
for ps in sps:
|
||||||
ratio,status = is_session_complete(r,ps)
|
ratio,status,cdate = is_session_complete(r,ps)
|
||||||
actualvalue[ps.id] = int(ps.sessionvalue*ratio)
|
actualvalue[ps.id] = int(ps.sessionvalue*ratio)
|
||||||
completeness[ps.id] = status
|
completeness[ps.id] = status
|
||||||
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
ws = Workout.objects.filter(user=r,plannedsession=ps)
|
||||||
if len(ws):
|
completiondate[ps.id] = cdate
|
||||||
date = min([w.date for w in ws])
|
|
||||||
completiondate[ps.id] = date
|
|
||||||
else:
|
|
||||||
completiondate[ps.id] = ''
|
|
||||||
|
|
||||||
unmatchedworkouts = Workout.objects.filter(
|
unmatchedworkouts = Workout.objects.filter(
|
||||||
user=r,
|
user=r,
|
||||||
@@ -12361,7 +12357,7 @@ def plannedsession_view(request,id=0,rowerid=0,
|
|||||||
|
|
||||||
ws = get_workouts_session(r,ps)
|
ws = get_workouts_session(r,ps)
|
||||||
|
|
||||||
ratio,status = is_session_complete(r,ps)
|
ratio,status,completiondate = is_session_complete(r,ps)
|
||||||
|
|
||||||
ratio = int(100.*ratio)
|
ratio = int(100.*ratio)
|
||||||
|
|
||||||
@@ -12391,7 +12387,7 @@ def plannedsession_view(request,id=0,rowerid=0,
|
|||||||
'psdict': psdict,
|
'psdict': psdict,
|
||||||
'attrs':[
|
'attrs':[
|
||||||
'name','startdate','enddate','sessiontype',
|
'name','startdate','enddate','sessiontype',
|
||||||
'sessionmode',
|
'sessionmode','criterium',
|
||||||
'sessionvalue','sessionunit'
|
'sessionvalue','sessionunit'
|
||||||
],
|
],
|
||||||
'workouts': ws,
|
'workouts': ws,
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$("td #id_sessionmode").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'TRIMP') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'distance') {
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'time') {
|
||||||
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'rScore') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("td #id_sessiontype").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'session') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'test') {
|
||||||
|
$("td #id_criterium").prop("value","exact");
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'challenge') {
|
||||||
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'cycletarget') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$("td #id_sessionunit").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'm') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'km') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'None') {
|
||||||
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'min') {
|
||||||
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$("td #id_sessionmode").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'TRIMP') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>TRIMP has no unit</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'distance') {
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Distance: Set value to meters</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'time') {
|
||||||
|
$("td #id_sessionunit").prop("value","min");
|
||||||
|
$('#id_guidance').html("<p>Time: Set value to minutes</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'rScore') {
|
||||||
|
$("td #id_sessionunit").prop("value","None");
|
||||||
|
$('#id_guidance').html("<p>rScore has no unit</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("td #id_sessiontype").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'session') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'test') {
|
||||||
|
$("td #id_criterium").prop("value","exact");
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$("td #id_sessionunit").prop("value","m");
|
||||||
|
$('#id_guidance').html("<p>Set mode to distance. For Mandatory Tests, only distance or time are allowed.</p><p>For Mandatory Tests, the only criterium is 'Exactly'</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'challenge') {
|
||||||
|
$("td #id_criterium").prop("value","minimum");
|
||||||
|
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.value == 'cycletarget') {
|
||||||
|
$("td #id_criterium").prop("value","none");
|
||||||
|
$('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
$("td #id_sessionunit").change(function() {
|
||||||
|
|
||||||
|
if (this.value == 'm') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'km') {
|
||||||
|
$("td #id_sessionmode").prop("value","distance");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to distance</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'None') {
|
||||||
|
$("td #id_sessionmode").prop("value","rScore");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to rScore</p>");
|
||||||
|
}
|
||||||
|
if (this.value == 'min') {
|
||||||
|
$("td #id_sessionmode").prop("value","time");
|
||||||
|
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user