Merge branch 'develop' into feature/fastestchallenges
This commit is contained in:
@@ -404,6 +404,7 @@ def getfastest(df,thevalue,mode='distance'):
|
|||||||
ones = 1+np.zeros(len(G))
|
ones = 1+np.zeros(len(G))
|
||||||
Ghor = np.outer(ones,G)
|
Ghor = np.outer(ones,G)
|
||||||
Thor = np.outer(ones,T)
|
Thor = np.outer(ones,T)
|
||||||
|
Tver = np.outer(T,ones)
|
||||||
Gver = np.outer(G,ones)
|
Gver = np.outer(G,ones)
|
||||||
Gdif = Ghor-Gver
|
Gdif = Ghor-Gver
|
||||||
Gdif = np.tril(Gdif.T).T
|
Gdif = np.tril(Gdif.T).T
|
||||||
@@ -422,7 +423,7 @@ def getfastest(df,thevalue,mode='distance'):
|
|||||||
restime.append(deltat*i)
|
restime.append(deltat*i)
|
||||||
cp = np.diag(F,i).max()
|
cp = np.diag(F,i).max()
|
||||||
loc = np.argmax(np.diag(F,i))
|
loc = np.argmax(np.diag(F,i))
|
||||||
thestarttime = np.diag(Thor,i)[loc]
|
thestarttime = tt[loc]
|
||||||
starttimes.append(thestarttime)
|
starttimes.append(thestarttime)
|
||||||
distance.append(cp)
|
distance.append(cp)
|
||||||
|
|
||||||
@@ -444,13 +445,14 @@ def getfastest(df,thevalue,mode='distance'):
|
|||||||
starttime = griddata(distance,starttimes,[thevalue],method='linear',rescale=True)
|
starttime = griddata(distance,starttimes,[thevalue],method='linear',rescale=True)
|
||||||
distance = griddata(distance,distance,[thevalue],method='linear',rescale=True)
|
distance = griddata(distance,distance,[thevalue],method='linear',rescale=True)
|
||||||
endtime = starttime+duration
|
endtime = starttime+duration
|
||||||
print(duration,starttime,endtime)
|
#print(duration,starttime,endtime,'aa')
|
||||||
return duration[0]/1000.,starttime[0]/1000.,endtime[0]/1000.
|
return duration[0]/1000.,starttime[0]/1000.,endtime[0]/1000.
|
||||||
else:
|
else:
|
||||||
distance = griddata(restime,distance,[thevalue*60*1000],method='linear',rescale=True)
|
distance = griddata(restime,distance,[thevalue*60*1000],method='linear',rescale=True)
|
||||||
starttime = griddata(restime,starttimes,[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)
|
duration = griddata(restime,restime,[thevalue*60*1000],method='linear',rescale=True)
|
||||||
endtime = starttime+duration
|
endtime = starttime+duration
|
||||||
|
#print(distance,starttime,endtime )
|
||||||
return distance[0],starttime[0]/1000.,endtime[0]/1000.
|
return distance[0],starttime[0]/1000.,endtime[0]/1000.
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -59,7 +59,11 @@
|
|||||||
{% if result|lookup:'coursecompleted' %}
|
{% if result|lookup:'coursecompleted' %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ forloop.counter }}</td>
|
<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:'distance' }}</td>
|
||||||
<td>{{ result|lookup:'time'|deltatimeprint }}</td>
|
<td>{{ result|lookup:'time'|deltatimeprint }}</td>
|
||||||
<td>{{ result|lookup:'date'|date:"Y-m-d" }}</td>
|
<td>{{ result|lookup:'date'|date:"Y-m-d" }}</td>
|
||||||
|
|||||||
@@ -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>\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>\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/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)/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,
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/video/$',views.workout_video_create_view,
|
||||||
name='workout_video_create_view'),
|
name='workout_video_create_view'),
|
||||||
|
|||||||
@@ -1933,6 +1933,8 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
'time': dddelta,
|
'time': dddelta,
|
||||||
'type': w.workouttype,
|
'type': w.workouttype,
|
||||||
'coursecompleted':True,
|
'coursecompleted':True,
|
||||||
|
'sessionresult':0,
|
||||||
|
'workoutid':w.id,
|
||||||
}
|
}
|
||||||
if ps.sessiontype == 'coursetest':
|
if ps.sessiontype == 'coursetest':
|
||||||
vs = CourseTestResult.objects.filter(plannedsession=ps,
|
vs = CourseTestResult.objects.filter(plannedsession=ps,
|
||||||
@@ -1952,6 +1954,7 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
)
|
)
|
||||||
wdict['distance'] = int(round(coursemeters))
|
wdict['distance'] = int(round(coursemeters))
|
||||||
wdict['coursecompleted'] = coursecompleted
|
wdict['coursecompleted'] = coursecompleted
|
||||||
|
wdict['sessionresult'] = record.id
|
||||||
else:
|
else:
|
||||||
record = CourseTestResult(
|
record = CourseTestResult(
|
||||||
userid=w.user.id,
|
userid=w.user.id,
|
||||||
@@ -1996,7 +1999,9 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
'date': w.date,
|
'date': w.date,
|
||||||
'distance': record.distance,
|
'distance': record.distance,
|
||||||
'type': w.workouttype,
|
'type': w.workouttype,
|
||||||
|
'workoutid':w.id,
|
||||||
'coursecompleted':True,
|
'coursecompleted':True,
|
||||||
|
'sessionresult':record.id
|
||||||
}
|
}
|
||||||
|
|
||||||
coursecompleted = record.coursecompleted
|
coursecompleted = record.coursecompleted
|
||||||
@@ -2029,7 +2034,9 @@ def plannedsession_view(request,id=0,userid=0):
|
|||||||
'date': w.date,
|
'date': w.date,
|
||||||
'distance': record.distance,
|
'distance': record.distance,
|
||||||
'type': w.workouttype,
|
'type': w.workouttype,
|
||||||
|
'workoutid':w.id,
|
||||||
'coursecompleted':True,
|
'coursecompleted':True,
|
||||||
|
'sessionresult':record.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
coursecompleted = record.coursecompleted
|
coursecompleted = record.coursecompleted
|
||||||
|
|||||||
@@ -2323,7 +2323,7 @@ def workout_fusion_list(request,id=0,
|
|||||||
|
|
||||||
# Basic view of workout
|
# Basic view of workout
|
||||||
@permission_required('workout.view_workout',fn=get_workout_by_opaqueid,raise_exception=True)
|
@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']
|
request.session['referer'] = absolute(request)['PATH']
|
||||||
|
|
||||||
if not request.user.is_anonymous:
|
if not request.user.is_anonymous:
|
||||||
@@ -2352,8 +2352,27 @@ def workout_view(request,id=0,raceresult=0):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# get raceresult
|
# get raceresult or session result
|
||||||
intervaldata = {}
|
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:
|
if raceresult != 0:
|
||||||
try:
|
try:
|
||||||
result = VirtualRaceResult.objects.get(id=raceresult)
|
result = VirtualRaceResult.objects.get(id=raceresult)
|
||||||
|
|||||||
Reference in New Issue
Block a user