Private
Public Access
1
0

Merge branch 'release/v10.72'

This commit is contained in:
Sander Roosendaal
2019-12-22 20:17:06 +01:00
11 changed files with 78 additions and 60 deletions

View File

@@ -1388,7 +1388,7 @@ def parsenonpainsled(fileformat,f2,summary):
try: try:
row = parsers[fileformat](f2) row = parsers[fileformat](f2)
hasrecognized = True hasrecognized = True
except KeyError: except (KeyError,IndexError):
hasrecognized = False hasrecognized = False
return None, hasrecognized, '', 'unknown' return None, hasrecognized, '', 'unknown'

View File

@@ -715,6 +715,8 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
data = [] data = []
columns = [c for c in columns if c != 'None'] columns = [c for c in columns if c != 'None']
df = pd.DataFrame()
if len(ids)>1: if len(ids)>1:
for id, f in zip(ids,csvfilenames): for id, f in zip(ids,csvfilenames):
try: try:
@@ -728,11 +730,13 @@ def getsmallrowdata_db(columns,ids=[],debug=False):
df = pd.concat(data,axis=0) df = pd.concat(data,axis=0)
except ValueError: except ValueError:
df = pd.DataFrame() df = pd.DataFrame()
else: elif len(ids)==1:
try: try:
df = pd.read_parquet(csvfilenames[0],columns=columns,engine='pyarrow') df = pd.read_parquet(csvfilenames[0],columns=columns,engine='pyarrow')
except (OSError,IndexError): except (OSError,IndexError):
df = pd.DataFrame() df = pd.DataFrame()
else:
df = pd.DataFrame()
return df return df

View File

@@ -1754,15 +1754,15 @@ def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False,
def handle_updatecp(rower_id,workoutids,debug=False,table='cpdata',**kwargs): def handle_updatecp(rower_id,workoutids,debug=False,table='cpdata',**kwargs):
columns = ['power','workoutid','time'] columns = ['power','workoutid','time']
df = getsmallrowdata_db(columns,ids=workoutids,debug=debug) df = getsmallrowdata_db(columns,ids=workoutids,debug=debug)
dfgrouped = df.groupby(['workoutid'])
if not df.empty: if df.empty:
maxt = 1.05*df['time'].max()/1000. return 0
else:
maxt = 1000. maxt = 1.05*df['time'].max()/1000.
logarr = datautils.getlogarr(maxt) logarr = datautils.getlogarr(maxt)
dfgrouped = df.groupby(['workoutid'])
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr) delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)

View File

@@ -44,7 +44,7 @@
function copyText() { function copyText() {
var tempInput = document.createElement("input"); var tempInput = document.createElement("input");
tempInput.style = "position: absolute; left: -1000px; top: -1000px"; 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); document.body.appendChild(tempInput);
tempInput.select(); tempInput.select();
document.execCommand("copy"); document.execCommand("copy");
@@ -123,7 +123,7 @@ function copyText() {
{% if analysis %} {% if analysis %}
<li class="grid_2"> <li class="grid_2">
<span class="fb-share-button" style="height:20px; vertical-align: top;" <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"> data-layout="button" data-size="small" data-mobile-iframe="false">
<a class="fb-xfbml-parse-ignore" target="_blank" <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 }}/"> href="https://www.facebook.com/sharer/sharer.php?u=https://rowsandall.com/rowers/video/{{ analysis.id|encode }}/">
@@ -132,7 +132,7 @@ function copyText() {
<span> <span>
<a class="twitter-share-button" <a class="twitter-share-button"
href="https://twitter.com/intent/tweet" 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> data-text="@rowsandall #rowingdata">Tweet</a>
</span> </span>
<span> <span>
@@ -306,7 +306,7 @@ function copyText() {
} }
</script> </script>
</li> </li>
{% if user.is_authenticated and user == workout.user.user %} {% if user.is_authenticated and workout|may_edit:request %}
<li class="grid_4"> <li class="grid_4">
<input type="checkbox" name="lock" id="lock" value="Lock">Lock Data and Video <input type="checkbox" name="lock" id="lock" value="Lock">Lock Data and Video
</li> </li>
@@ -322,7 +322,7 @@ function copyText() {
<li class="grid_2"> <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> <table>
{{ form.as_table }} {{ form.as_table }}

View File

@@ -35,7 +35,7 @@
Please correct the error{{ form.errors|pluralize }} below. Please correct the error{{ form.errors|pluralize }} below.
</p> </p>
{% endif %} {% endif %}
<table> <table>
{{ form.as_table }} {{ form.as_table }}
</table> </table>
@@ -89,9 +89,9 @@
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a>
</td> </td>
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
@@ -144,7 +144,7 @@
$("td #id_course").hide(); $("td #id_course").hide();
$("th label[for='id_course']").hide(); $("th label[for='id_course']").hide();
$("td #id_sessionmode").change(function() { $("td #id_sessionmode").change(function() {
if (this.value == 'TRIMP') { if (this.value == 'TRIMP') {
@@ -192,7 +192,7 @@
$("th label[for='id_course']").hide(); $("th label[for='id_course']").hide();
$("td #id_course").hide(); $("td #id_course").hide();
} }
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>"); $('#id_guidance').html("<p>For Challenges, the default criterium is 'At Least'</p>");
@@ -228,7 +228,7 @@
} }
); );

View File

@@ -23,14 +23,14 @@
</p> </p>
</li> </li>
<li class="grid_2"> <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> {{ timeperiod|timedeltadays }} days</a>
</p> </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> {{ timeperiod|timedeltadays }} days</a>
</p> </p>
</li> </li>
<li class="grid_4"> <li class="grid_4">
<table width="90%" class="listtable"> <table width="90%" class="listtable">
@@ -80,7 +80,7 @@
</td> </td>
{% endfor %} {% endfor %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
<p> <p>
@@ -129,7 +129,7 @@
{% else %} {% else %}
<td> <td>
<a href={% url rower.defaultlandingpage id=workout.id|encode %}>No Name <a href={% url rower.defaultlandingpage id=workout.id|encode %}>No Name
</a></td> </a></td>
{% endif %} {% endif %}
{% else %} {% else %}
@@ -144,7 +144,7 @@
<td> {{ workout.duration |durationprint:"%H:%M:%S.%f" }} </td> <td> {{ workout.duration |durationprint:"%H:%M:%S.%f" }} </td>
<td> {{ workout.averagehr }} </td> <td> {{ workout.averagehr }} </td>
<td> {{ workout.maxhr }} </td> <td> {{ workout.maxhr }} </td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
@@ -153,7 +153,7 @@
{% endif %} {% endif %}
</ul> </ul>

View File

@@ -19,10 +19,10 @@
</p> </p>
</li> </li>
<li class="grid_2"> <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> {{ timeperiod|timedeltadays }} days</a>
</p> </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> {{ timeperiod|timedeltadays }} days</a>
</p> </p>
</li> </li>
@@ -34,21 +34,21 @@
Please correct the error{{ form.errors|pluralize }} below. Please correct the error{{ form.errors|pluralize }} below.
</p> </p>
{% endif %} {% endif %}
<ul class="main-content"> <ul class="main-content">
<li class="grid_2"> <li class="grid_2">
{% csrf_token %} {% csrf_token %}
<h1>New Team Session</h1> <h1>New Team Session</h1>
<table> <table>
{{ teamform.as_table }} {{ teamform.as_table }}
</table> </table>
<table> <table>
{{ form.as_table }} {{ form.as_table }}
</table> </table>
<input class="button green" type="submit" value="Save"> <input class="button green" type="submit" value="Save">
<div id="id_guidance" class="padded"> <div id="id_guidance" class="padded">
</div> </div>
</li> </li>
{% if plannedsessions %} {% if plannedsessions %}
@@ -90,15 +90,18 @@
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/clone/">Clone</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/clone/">Clone</a>
</td> </td>
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm/">Delete</a>
</td> </td>
<td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</p> </p>
</li> </li>
{% endif %} {% endif %}
<li class="grid_2"> <li class="grid_2">
@@ -150,7 +153,7 @@
$(document).ready(function(){ $(document).ready(function(){
$("td #id_course").hide(); $("td #id_course").hide();
$("th label[for='id_course']").hide(); $("th label[for='id_course']").hide();
$("td #id_sessionmode").change(function() { $("td #id_sessionmode").change(function() {
if (this.value == 'TRIMP') { if (this.value == 'TRIMP') {
@@ -165,16 +168,16 @@
$("td #id_sessionunit").prop("value","min"); $("td #id_sessionunit").prop("value","min");
$('#id_guidance').html("<p>Time: Set value to minutes</p>"); $('#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>"); $('#id_guidance').html("<p>rScore has no unit</p>");
} }
}); });
$("td #id_sessiontype").change(function() { $("td #id_sessiontype").change(function() {
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>"); $('#id_guidance').html("<p>For Training Sessions, the default criterium is 'Approximately'</p>");
@@ -205,18 +208,18 @@
$("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>"); $('#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>"); $('#id_guidance').html("<p>For Cycle Targets, the default criterium is 'Approximately'</p>");
} }
} }
); );
$("td #id_sessionunit").change(function() { $("td #id_sessionunit").change(function() {
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>"); $('#id_guidance').html("<p>Mode was set to distance</p>");
@@ -233,13 +236,13 @@
$("td #id_sessionmode").prop("value","time"); $("td #id_sessionmode").prop("value","time");
$('#id_guidance').html("<p>Mode was set to time</p>"); $('#id_guidance').html("<p>Mode was set to time</p>");
} }
} }
); );
}); });
</script> </script>

View File

@@ -19,10 +19,10 @@
</p> </p>
</li> </li>
<li class="grid_2"> <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> {{ timeperiod|timedeltadays }} days</a>
</p> </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> {{ timeperiod|timedeltadays }} days</a>
</p> </p>
</li> </li>
@@ -41,10 +41,10 @@
<p> <p>
Selecting a team assigns this session to all members of the team. Selecting a team assigns this session to all members of the team.
Unselecting a team does not remove rowers 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> </p><p>
<table> <table>
{{ teamform.as_table }} {{ teamform.as_table }}
</table></p> </table></p>
</li> </li>
<li class="grid_2"> <li class="grid_2">
@@ -112,15 +112,18 @@
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/clone">Clone</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/clone">Clone</a>
</td> </td>
<td> <td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm">Delete</a> <a class="small" href="/rowers/sessions/{{ ps.id }}/deleteconfirm">Delete</a>
</td> </td>
<td>
<a class="small" href="/rowers/sessions/{{ ps.id }}/maketemplate/">Save</a>
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
</table> </table>
</p> </p>
{% endif %} {% endif %}
</li> </li>
@@ -134,7 +137,7 @@
$(document).ready(function(){ $(document).ready(function(){
var o = $("td #id_sessiontype").find(":selected").val(); var o = $("td #id_sessiontype").find(":selected").val();
if (o != 'coursetest') { if (o != 'coursetest') {
$("td #id_course").hide(); $("td #id_course").hide();
$("th label[for='id_course']").hide(); $("th label[for='id_course']").hide();
@@ -230,7 +233,7 @@
} }
); );

View File

@@ -19,6 +19,9 @@
&nbsp; &nbsp;
{% endif %} {% endif %}
</p> </p>
<p>
Login <em>{{ rower.user }}</em>
</p>
{% if userform.errors %} {% if userform.errors %}
<p style="color: red;"> <p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below. Please correct the error{{ form.errors|pluralize }} below.
@@ -26,7 +29,7 @@
{% endif %} {% endif %}
{% if accountform.errors %} {% if accountform.errors %}
<p style="color: red;"> <p style="color: red;">
</p> </p>
{% endif %} {% endif %}
<form enctype="multipart/form-data" action="" method="post"> <form enctype="multipart/form-data" action="" method="post">

View File

@@ -156,6 +156,7 @@ def workout_video_view(request,id=''):
'locked': True, 'locked': True,
'metricsform':metricsform, 'metricsform':metricsform,
'metricsgroups': metricsgroups, 'metricsgroups': metricsgroups,
'siteurl': settings.SITE_URL,
}) })
@@ -171,6 +172,9 @@ def workout_video_create_view(request,id=0):
else: else:
mode = 'erg' mode = 'erg'
mayedit = checkworkoutuser(request.user,w) and isprorower(request.user.rower)
# get video ID and offset # get video ID and offset
if request.method == 'POST': if request.method == 'POST':
form = VideoAnalysisCreateForm(request.POST) form = VideoAnalysisCreateForm(request.POST)
@@ -265,6 +269,7 @@ def workout_video_create_view(request,id=0):
'metrics':metrics, 'metrics':metrics,
'metricsgroups': metricsgroups, 'metricsgroups': metricsgroups,
'locked': False, 'locked': False,
'siteurl': settings.SITE_URL,
}) })
# Show the EMpower Oarlock generated Stroke Profile # Show the EMpower Oarlock generated Stroke Profile

View File

@@ -58,7 +58,7 @@
}(document, 'script', 'facebook-jssdk'));</script> }(document, 'script', 'facebook-jssdk'));</script>
<script> <script>
$(document).ready(function (){ $(document).ready(function (){
FB.XFBML.parse(); FB.XFBML.parse();
}) })
</script> </script>