Private
Public Access
1
0

Merge branch 'develop' into feature/gauges

This commit is contained in:
Sander Roosendaal
2019-12-22 20:20:58 +01:00
20 changed files with 104 additions and 65 deletions

View File

@@ -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'

View File

@@ -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

View File

@@ -1398,6 +1398,7 @@ class TrainingPlan(models.Model):
status = models.BooleanField(default=True,verbose_name='Active')
target = models.ForeignKey(TrainingTarget,blank=True,null=True,on_delete=models.SET_NULL)
startdate = models.DateField(default=current_day)
notes = models.CharField(blank=True,null=True,max_length=200,verbose_name='Plan Notes')
enddate = models.DateField(
default=half_year_from_now)
@@ -1476,11 +1477,12 @@ class TrainingPlan(models.Model):
class TrainingPlanForm(ModelForm):
class Meta:
model = TrainingPlan
fields = ['name','target','startdate','enddate','status','rowers']
fields = ['name','target','startdate','enddate','status','notes','rowers']
widgets = {
'startdate': AdminDateWidget(),
'enddate': AdminDateWidget()
'enddate': AdminDateWidget(),
'notes': forms.Textarea()
}
def __init__(self,*args, **kwargs):

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):
columns = ['power','workoutid','time']
df = getsmallrowdata_db(columns,ids=workoutids,debug=debug)
dfgrouped = df.groupby(['workoutid'])
if not df.empty:
if df.empty:
return 0
maxt = 1.05*df['time'].max()/1000.
else:
maxt = 1000.
logarr = datautils.getlogarr(maxt)
dfgrouped = df.groupby(['workoutid'])
delta,cpvalue,avgpower = datautils.getcp(dfgrouped,logarr)

View File

@@ -46,7 +46,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");
@@ -125,7 +125,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 }}/">
@@ -134,7 +134,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>
@@ -310,7 +310,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>
@@ -326,7 +326,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 }}

View File

@@ -23,10 +23,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>

View File

@@ -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>
@@ -93,6 +93,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>
</tr>
{% endfor %}

View File

@@ -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>
@@ -116,6 +116,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>
</tr>
{% endfor %}
</tbody>

View File

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

View File

@@ -24,6 +24,11 @@
The training plan target is: {{ plan.target.name }} on {{ plan.target.date }}.
{% endif %}
</p>
<h2>Notes</h2>
<p>
{{ plan.notes }}
</p>
{% if plan|mayeditplan:request %}
<p><a href="/rowers/editplan/{{ plan.id }}">Edit the plan</a></p>
{% endif %}

View File

@@ -1557,7 +1557,7 @@ def plannedsession_totemplate_view(request,id=0):
ps.enddate = datetime.date(1970,1,1)
ps.save()
url = reverse(plannedsession_create_view,kwargs={'userid':request.user.id})
url = reverse(plannedsession_create_view,kwargs={'userid':r.user.id})
startdatestring = startdate.strftime('%Y-%m-%d')
enddatestring = enddate.strftime('%Y-%m-%d')
@@ -2021,6 +2021,7 @@ def rower_create_trainingplan(request,userid=0):
startdate = form.cleaned_data['startdate']
status = form.cleaned_data['status']
enddate = form.cleaned_data['enddate']
notes = form.cleaned_data['notes']
try:
athletes = form.cleaned_data['rowers']
@@ -2033,6 +2034,7 @@ def rower_create_trainingplan(request,userid=0):
manager=themanager,
startdate=startdate,
enddate=enddate,status=status,
notes=notes,
)
p.save()

View File

@@ -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

1
static/rigging/1x.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":0.9,"Mb":14,"BladeLength":0.46,"Lscull":2.425,"Nrowers":1,"RowOrScull":"scull","Span":1.6,"CatchAngle":-0.93,"DragForm":0.98}

1
static/rigging/2-.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":1.14,"Mb":27,"BladeLength":0.46,"Lscull":2.975,"Nrowers":2,"RowOrScull":"row","Span":1.6,"CatchAngle":-0.93,"DragForm":1.05}

1
static/rigging/2x.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":0.9,"Mb":27,"BladeLength":0.46,"Lscull":2.425,"Nrowers":2,"RowOrScull":"scull","Span":1.6,"CatchAngle":-0.93,"DragForm":1.05}

1
static/rigging/4-.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":1.14,"Mb":50,"BladeLength":0.545,"Lscull":2.9325,"Nrowers":4,"RowOrScull":"row","Span":1.6,"CatchAngle":-0.93,"DragForm":1}

1
static/rigging/4x.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":0.9,"Mb":52,"BladeLength":0.46,"Lscull":2.425,"Nrowers":4,"RowOrScull":"scull","Span":1.6,"CatchAngle":-0.93,"DragForm":1.11}

1
static/rigging/8+.json Normal file
View File

@@ -0,0 +1 @@
{"Lin":1.14,"Mb":151,"BladeLength":0.545,"Lscull":2.9325,"Nrowers":8,"RowOrScull":"row","Span":1.6,"CatchAngle":-0.93,"DragForm":1}

View File

@@ -56,6 +56,12 @@
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.10&appId=694685920739849";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script>
$(document).ready(function (){
FB.XFBML.parse();
})
</script>
<link rel="stylesheet" href="https://webapiv2.navionics.com/dist/webapi/webapi.min.css" >
<script type="text/javascript" src="https://webapiv2.navionics.com/dist/webapi/webapi.min.no-dep.js"></script>
<script>window.twttr = (function(d, s, id) {