Merge branch 'release/v10.72'
This commit is contained in:
@@ -1388,7 +1388,7 @@ def parsenonpainsled(fileformat,f2,summary):
|
||||
try:
|
||||
row = parsers[fileformat](f2)
|
||||
hasrecognized = True
|
||||
except KeyError:
|
||||
except (KeyError,IndexError):
|
||||
hasrecognized = False
|
||||
return None, hasrecognized, '', 'unknown'
|
||||
|
||||
|
||||
@@ -715,6 +715,8 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
|
||||
data = []
|
||||
columns = [c for c in columns if c != 'None']
|
||||
|
||||
df = pd.DataFrame()
|
||||
|
||||
if len(ids)>1:
|
||||
for id, f in zip(ids,csvfilenames):
|
||||
try:
|
||||
@@ -728,11 +730,13 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
|
||||
df = pd.concat(data,axis=0)
|
||||
except ValueError:
|
||||
df = pd.DataFrame()
|
||||
else:
|
||||
elif len(ids)==1:
|
||||
try:
|
||||
df = pd.read_parquet(csvfilenames[0],columns=columns,engine='pyarrow')
|
||||
except (OSError,IndexError):
|
||||
df = pd.DataFrame()
|
||||
else:
|
||||
df = pd.DataFrame()
|
||||
|
||||
|
||||
return df
|
||||
|
||||
@@ -1754,15 +1754,15 @@ def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
|
||||
def handle_updatecp(rower_id,workoutids,debug=False,table='cpdata',**kwargs):
|
||||
columns = ['power','workoutid','time']
|
||||
df = getsmallrowdata_db(columns,ids=workoutids,debug=debug)
|
||||
dfgrouped = df.groupby(['workoutid'])
|
||||
|
||||
if not df.empty:
|
||||
maxt = 1.05*df['time'].max()/1000.
|
||||
else:
|
||||
maxt = 1000.
|
||||
if df.empty:
|
||||
return 0
|
||||
|
||||
maxt = 1.05*df['time'].max()/1000.
|
||||
|
||||
logarr = datautils.getlogarr(maxt)
|
||||
|
||||
dfgrouped = df.groupby(['workoutid'])
|
||||
|
||||
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
function copyText() {
|
||||
var tempInput = document.createElement("input");
|
||||
tempInput.style = "position: absolute; left: -1000px; top: -1000px";
|
||||
tempInput.value = "https://rowsandall.com/rowers/video/{{ analysis.id|encode }}/";
|
||||
tempInput.value = "{{ siteurl }}/rowers/video/{{ analysis.id|encode }}/";
|
||||
document.body.appendChild(tempInput);
|
||||
tempInput.select();
|
||||
document.execCommand("copy");
|
||||
@@ -123,7 +123,7 @@ function copyText() {
|
||||
{% if analysis %}
|
||||
<li class="grid_2">
|
||||
<span class="fb-share-button" style="height:20px; vertical-align: top;"
|
||||
data-href="https://rowsandall.com/rowers/video/{{ analysis.id|encode }}"
|
||||
data-href="{{ siteurl }}/rowers/video/{{ analysis.id|encode }}"
|
||||
data-layout="button" data-size="small" data-mobile-iframe="false">
|
||||
<a class="fb-xfbml-parse-ignore" target="_blank"
|
||||
href="https://www.facebook.com/sharer/sharer.php?u=https://rowsandall.com/rowers/video/{{ analysis.id|encode }}/">
|
||||
@@ -132,7 +132,7 @@ function copyText() {
|
||||
<span>
|
||||
<a class="twitter-share-button"
|
||||
href="https://twitter.com/intent/tweet"
|
||||
data-url="https://rowsandall.com/rowers/video/{{ analysis.id|encode }}/"
|
||||
data-url="{{ siteurl }}/rowers/video/{{ analysis.id|encode }}/"
|
||||
data-text="@rowsandall #rowingdata">Tweet</a>
|
||||
</span>
|
||||
<span>
|
||||
@@ -306,7 +306,7 @@ function copyText() {
|
||||
}
|
||||
</script>
|
||||
</li>
|
||||
{% if user.is_authenticated and user == workout.user.user %}
|
||||
{% if user.is_authenticated and workout|may_edit:request %}
|
||||
<li class="grid_4">
|
||||
<input type="checkbox" name="lock" id="lock" value="Lock">Lock Data and Video
|
||||
</li>
|
||||
@@ -322,7 +322,7 @@ function copyText() {
|
||||
<li class="grid_2">
|
||||
|
||||
|
||||
{% if form and user.is_authenticated and user == workout.user.user %}
|
||||
{% if form and user.is_authenticated and workout|may_edit:request %}
|
||||
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
Please correct the error{{ form.errors|pluralize }} below.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
@@ -89,9 +89,9 @@
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a>
|
||||
</td>
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
|
||||
</td>
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@@ -144,7 +144,7 @@
|
||||
|
||||
$("td #id_course").hide();
|
||||
$("th label[for='id_course']").hide();
|
||||
|
||||
|
||||
$("td #id_sessionmode").change(function() {
|
||||
|
||||
if (this.value == 'TRIMP') {
|
||||
@@ -192,7 +192,7 @@
|
||||
$("th label[for='id_course']").hide();
|
||||
$("td #id_course").hide();
|
||||
}
|
||||
|
||||
|
||||
if (this.value == 'challenge') {
|
||||
$("td #id_criterium").prop("value","minimum");
|
||||
$('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
|
||||
@@ -228,7 +228,7 @@
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,14 +23,14 @@
|
||||
</p>
|
||||
</li>
|
||||
<li class="grid_2">
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
<p><a href="/rowers/sessions/coach/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
<p><a href="/rowers/sessions/coach/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
</li>
|
||||
<li class="grid_4">
|
||||
<li class="grid_4">
|
||||
|
||||
|
||||
<table width="90%" class="listtable">
|
||||
@@ -80,7 +80,7 @@
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
@@ -129,7 +129,7 @@
|
||||
{% else %}
|
||||
<td>
|
||||
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>No Name
|
||||
</a></td>
|
||||
</a></td>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
@@ -144,7 +144,7 @@
|
||||
<td> {{ workout.duration |durationprint:"%H:%M:%S.%f" }} </td>
|
||||
<td> {{ workout.averagehr }} </td>
|
||||
<td> {{ workout.maxhr }} </td>
|
||||
</tr>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
</p>
|
||||
</li>
|
||||
<li class="grid_2">
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
<p><a href="/rowers/sessions/teamcreate/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
<p><a href="/rowers/sessions/teamcreate/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
</li>
|
||||
@@ -34,21 +34,21 @@
|
||||
Please correct the error{{ form.errors|pluralize }} below.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<ul class="main-content">
|
||||
<li class="grid_2">
|
||||
{% csrf_token %}
|
||||
|
||||
|
||||
<h1>New Team Session</h1>
|
||||
<table>
|
||||
{{ teamform.as_table }}
|
||||
{{ teamform.as_table }}
|
||||
</table>
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
<input class="button green" type="submit" value="Save">
|
||||
<div id="id_guidance" class="padded">
|
||||
|
||||
|
||||
</div>
|
||||
</li>
|
||||
{% if plannedsessions %}
|
||||
@@ -90,15 +90,18 @@
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/clone/">Clone</a>
|
||||
</td>
|
||||
|
||||
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a>
|
||||
</td>
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
</p>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="grid_2">
|
||||
@@ -150,7 +153,7 @@
|
||||
$(document).ready(function(){
|
||||
$("td #id_course").hide();
|
||||
$("th label[for='id_course']").hide();
|
||||
|
||||
|
||||
$("td #id_sessionmode").change(function() {
|
||||
|
||||
if (this.value == 'TRIMP') {
|
||||
@@ -165,16 +168,16 @@
|
||||
$("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>");
|
||||
@@ -205,18 +208,18 @@
|
||||
$("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>");
|
||||
@@ -233,13 +236,13 @@
|
||||
$("td #id_sessionmode").prop("value","time");
|
||||
$('#id_guidance').html("<p>Mode was set to time</p>");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
</p>
|
||||
</li>
|
||||
<li class="grid_2">
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
<p><a href="/rowers/sessions/coach/?startdate={{ timeperiod|previousperiodstart }}&enddate={{ timeperiod|previousperiodend}}">Back by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
<p><a href="/rowers/sessions/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
<p><a href="/rowers/sessions/coach/?startdate={{ timeperiod|nextperiodstart }}&enddate={{ timeperiod|nextperiodend}}">Forward by
|
||||
{{ timeperiod|timedeltadays }} days</a>
|
||||
</p>
|
||||
</li>
|
||||
@@ -41,10 +41,10 @@
|
||||
<p>
|
||||
Selecting a team assigns this session to all members of the team.
|
||||
Unselecting a team does not remove rowers
|
||||
who are already assigned to this session. Use the Rowers selection for that.
|
||||
who are already assigned to this session. Use the Rowers selection for that.
|
||||
</p><p>
|
||||
<table>
|
||||
{{ teamform.as_table }}
|
||||
{{ teamform.as_table }}
|
||||
</table></p>
|
||||
</li>
|
||||
<li class="grid_2">
|
||||
@@ -112,15 +112,18 @@
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/clone">Clone</a>
|
||||
</td>
|
||||
|
||||
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm">Delete</a>
|
||||
</td>
|
||||
<td>
|
||||
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
</li>
|
||||
@@ -134,7 +137,7 @@
|
||||
$(document).ready(function(){
|
||||
|
||||
var o = $("td #id_sessiontype").find(":selected").val();
|
||||
|
||||
|
||||
if (o != 'coursetest') {
|
||||
$("td #id_course").hide();
|
||||
$("th label[for='id_course']").hide();
|
||||
@@ -230,7 +233,7 @@
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
Login <em>{{ rower.user }}</em>
|
||||
</p>
|
||||
{% if userform.errors %}
|
||||
<p style="color: red;">
|
||||
Please correct the error{{ form.errors|pluralize }} below.
|
||||
@@ -26,7 +29,7 @@
|
||||
{% endif %}
|
||||
{% if accountform.errors %}
|
||||
<p style="color: red;">
|
||||
|
||||
|
||||
</p>
|
||||
{% endif %}
|
||||
<form enctype="multipart/form-data" action="" method="post">
|
||||
|
||||
@@ -156,6 +156,7 @@ def workout_video_view(request,id=''):
|
||||
'locked': True,
|
||||
'metricsform':metricsform,
|
||||
'metricsgroups': metricsgroups,
|
||||
'siteurl': settings.SITE_URL,
|
||||
})
|
||||
|
||||
|
||||
@@ -171,6 +172,9 @@ def workout_video_create_view(request,id=0):
|
||||
else:
|
||||
mode = 'erg'
|
||||
|
||||
|
||||
mayedit = checkworkoutuser(request.user,w) and isprorower(request.user.rower)
|
||||
|
||||
# get video ID and offset
|
||||
if request.method == 'POST':
|
||||
form = VideoAnalysisCreateForm(request.POST)
|
||||
@@ -265,6 +269,7 @@ def workout_video_create_view(request,id=0):
|
||||
'metrics':metrics,
|
||||
'metricsgroups': metricsgroups,
|
||||
'locked': False,
|
||||
'siteurl': settings.SITE_URL,
|
||||
})
|
||||
|
||||
# Show the EMpower Oarlock generated Stroke Profile
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
||||
<script>
|
||||
$(document).ready(function (){
|
||||
FB.XFBML.parse();
|
||||
FB.XFBML.parse();
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user