Private
Public Access
1
0

Merge branch 'develop' into feature/fastestchallenges

This commit is contained in:
Sander Roosendaal
2020-11-11 15:56:39 +01:00
5 changed files with 38 additions and 5 deletions

View File

@@ -404,6 +404,7 @@ def getfastest(df,thevalue,mode='distance'):
ones = 1+np.zeros(len(G))
Ghor = np.outer(ones,G)
Thor = np.outer(ones,T)
Tver = np.outer(T,ones)
Gver = np.outer(G,ones)
Gdif = Ghor-Gver
Gdif = np.tril(Gdif.T).T
@@ -422,7 +423,7 @@ def getfastest(df,thevalue,mode='distance'):
restime.append(deltat*i)
cp = np.diag(F,i).max()
loc = np.argmax(np.diag(F,i))
thestarttime = np.diag(Thor,i)[loc]
thestarttime = tt[loc]
starttimes.append(thestarttime)
distance.append(cp)
@@ -444,13 +445,14 @@ def getfastest(df,thevalue,mode='distance'):
starttime = griddata(distance,starttimes,[thevalue],method='linear',rescale=True)
distance = griddata(distance,distance,[thevalue],method='linear',rescale=True)
endtime = starttime+duration
print(duration,starttime,endtime)
#print(duration,starttime,endtime,'aa')
return duration[0]/1000.,starttime[0]/1000.,endtime[0]/1000.
else:
distance = griddata(restime,distance,[thevalue*60*1000],method='linear',rescale=True)
starttime = griddata(restime,starttimes,[thevalue*60*1000],method='linear',rescale=True)
duration = griddata(restime,restime,[thevalue*60*1000],method='linear',rescale=True)
endtime = starttime+duration
#print(distance,starttime,endtime )
return distance[0],starttime[0]/1000.,endtime[0]/1000.
return 0

View File

@@ -59,7 +59,11 @@
{% if result|lookup:'coursecompleted' %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ result|lookup:'name' }}</td>
<td>
<a href="{% url 'workout_view' id=result|lookup:'workoutid'|encode sessionresult=result|lookup:'sessionresult' %}">
{{ result|lookup:'name' }}
</a>
</td>
<td>{{ result|lookup:'distance' }}</td>
<td>{{ result|lookup:'time'|deltatimeprint }}</td>
<td>{{ result|lookup:'date'|date:"Y-m-d" }}</td>

View File

@@ -458,6 +458,7 @@ urlpatterns = [
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/split/$',views.workout_split_view,name='workout_split_view'),
# re_path(r'^workout/(?P<id>\d+)/interactiveplot/$',views.workout_biginteractive_view),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/view/entry/(?P<raceresult>\d+)/$',views.workout_view,name='workout_view'),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/view/session/(?P<sessionresult>\d+)/$',views.workout_view,name='workout_view'),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/view/$',views.workout_view,name='workout_view'),
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/video/$',views.workout_video_create_view,
name='workout_video_create_view'),

View File

@@ -1933,6 +1933,8 @@ def plannedsession_view(request,id=0,userid=0):
'time': dddelta,
'type': w.workouttype,
'coursecompleted':True,
'sessionresult':0,
'workoutid':w.id,
}
if ps.sessiontype == 'coursetest':
vs = CourseTestResult.objects.filter(plannedsession=ps,
@@ -1952,6 +1954,7 @@ def plannedsession_view(request,id=0,userid=0):
)
wdict['distance'] = int(round(coursemeters))
wdict['coursecompleted'] = coursecompleted
wdict['sessionresult'] = record.id
else:
record = CourseTestResult(
userid=w.user.id,
@@ -1996,7 +1999,9 @@ def plannedsession_view(request,id=0,userid=0):
'date': w.date,
'distance': record.distance,
'type': w.workouttype,
'workoutid':w.id,
'coursecompleted':True,
'sessionresult':record.id
}
coursecompleted = record.coursecompleted
@@ -2029,7 +2034,9 @@ def plannedsession_view(request,id=0,userid=0):
'date': w.date,
'distance': record.distance,
'type': w.workouttype,
'workoutid':w.id,
'coursecompleted':True,
'sessionresult':record.id,
}
coursecompleted = record.coursecompleted

View File

@@ -2323,7 +2323,7 @@ def workout_fusion_list(request,id=0,
# Basic view of workout
@permission_required('workout.view_workout',fn=get_workout_by_opaqueid,raise_exception=True)
def workout_view(request,id=0,raceresult=0):
def workout_view(request,id=0,raceresult=0,sessionresult=0):
request.session['referer'] = absolute(request)['PATH']
if not request.user.is_anonymous:
@@ -2352,8 +2352,27 @@ def workout_view(request,id=0,raceresult=0):
except:
pass
# get raceresult
# get raceresult or session result
intervaldata = {}
if sessionresult != 0:
try:
result = CourseTestResult.objects.get(id=sessionresult)
startsecond = result.startsecond
endsecond = result.endsecond
duration = row.duration
durationsecs = duration.hour*3600+duration.minute*60+duration.second
itime = [startsecond,endsecond-startsecond]
itype = [3,4]
intervaldata['itime'] = itime
intervaldata['itype'] = itype
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',0.1,mode='larger',
debug=False,smoothwindow=15.,
activewindow = [startsecond,endsecond])
summary = rowdata.allstats()
except CourseTestResult.DoesNotExist:
pass
if raceresult != 0:
try:
result = VirtualRaceResult.objects.get(id=raceresult)