Merge branch 'feature/videoview' into release/v10.79
This commit is contained in:
@@ -40,6 +40,10 @@
|
|||||||
$(this).removeAttr('disabled');
|
$(this).removeAttr('disabled');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
document.getElementById("smallscreen").style.display = "none";
|
||||||
|
if ($(window).width() <= 950) {
|
||||||
|
$("#smallscreen").show()
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
@@ -104,6 +108,12 @@ function copyText() {
|
|||||||
{% language 'en' %}
|
{% language 'en' %}
|
||||||
<h1>Video Analysis for {{ workout.name }}</h1>
|
<h1>Video Analysis for {{ workout.name }}</h1>
|
||||||
<ul class="main-content">
|
<ul class="main-content">
|
||||||
|
<li class="grid_4" id="smallscreen">
|
||||||
|
<p>Your screen is too small to show the full functionality. Click
|
||||||
|
<a href="/rowers/video/{{ analysis.id|encode }}/m">here</a>
|
||||||
|
to get to a version that is better suited for small screens.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
{% if user.is_authenticated and user == workout.user.user and not locked %}
|
{% if user.is_authenticated and user == workout.user.user and not locked %}
|
||||||
<li class="grid_2">
|
<li class="grid_2">
|
||||||
<p>Paste link to you tube video below</p>
|
<p>Paste link to you tube video below</p>
|
||||||
|
|||||||
@@ -348,6 +348,8 @@ urlpatterns = [
|
|||||||
re_path(r'^video/(?P<pk>\d+)/delete/$',views.VideoDelete.as_view(),name='video_delete'),
|
re_path(r'^video/(?P<pk>\d+)/delete/$',views.VideoDelete.as_view(),name='video_delete'),
|
||||||
re_path(r'^video/(?P<id>\w.+)/$',views.workout_video_view,
|
re_path(r'^video/(?P<id>\w.+)/$',views.workout_video_view,
|
||||||
name='workout_video_view'),
|
name='workout_video_view'),
|
||||||
|
re_path(r'^video/(?P<id>\w.+)/m$',views.workout_video_view_mini,
|
||||||
|
name='workout_video_view_mini'),
|
||||||
re_path(r'^videos/',views.list_videos,name='list_videos'),
|
re_path(r'^videos/',views.list_videos,name='list_videos'),
|
||||||
re_path(r'^add-video/',views.video_selectworkout,name='video_selectworkout'),
|
re_path(r'^add-video/',views.video_selectworkout,name='video_selectworkout'),
|
||||||
# re_path(r'^workout/(?P<id>\d+)/$',views.workout_view,name='workout_view'),
|
# re_path(r'^workout/(?P<id>\d+)/$',views.workout_view,name='workout_view'),
|
||||||
|
|||||||
@@ -48,6 +48,116 @@ def get_video_id(url):
|
|||||||
else:
|
else:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
|
# Show a video compared with data
|
||||||
|
def workout_video_view_mini(request,id=''):
|
||||||
|
try:
|
||||||
|
id = encoder.decode_hex(id)
|
||||||
|
analysis = VideoAnalysis.objects.get(id=id)
|
||||||
|
except VideoAnalysis.DoesNotExist:
|
||||||
|
raise Http404("Video Analysis does not exist")
|
||||||
|
|
||||||
|
w = analysis.workout
|
||||||
|
delay = analysis.delay
|
||||||
|
|
||||||
|
if w.workouttype in mytypes.otwtypes:
|
||||||
|
mode = 'water'
|
||||||
|
else:
|
||||||
|
mode = 'erg'
|
||||||
|
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
mayedit = checkworkoutuser(request.user,w) and isprorower(request.user.rower)
|
||||||
|
rower = request.user.rower
|
||||||
|
else:
|
||||||
|
mayedit = False
|
||||||
|
rower = None
|
||||||
|
|
||||||
|
# get video ID and offset
|
||||||
|
if mayedit and request.method == 'POST':
|
||||||
|
form = VideoAnalysisCreateForm(request.POST)
|
||||||
|
metricsform = VideoAnalysisMetricsForm(request.POST,mode=mode)
|
||||||
|
if form.is_valid() and metricsform.is_valid():
|
||||||
|
video_id = form.cleaned_data['url']
|
||||||
|
try:
|
||||||
|
video_id = get_video_id(form.cleaned_data['url'])
|
||||||
|
except (TypeError,ValueError):
|
||||||
|
pass
|
||||||
|
delay = form.cleaned_data['delay']
|
||||||
|
metricsgroups = metricsform.cleaned_data['groups']
|
||||||
|
if 'save_button' in request.POST:
|
||||||
|
analysis.name = form.cleaned_data['name']
|
||||||
|
analysis.video_id = video_id
|
||||||
|
analysis.delay = delay
|
||||||
|
analysis.metricsgroups = metricsgroups
|
||||||
|
analysis.save()
|
||||||
|
else:
|
||||||
|
video_id = id
|
||||||
|
delay = 0
|
||||||
|
elif mayedit:
|
||||||
|
form = VideoAnalysisCreateForm(
|
||||||
|
initial = {
|
||||||
|
'name':analysis.name,
|
||||||
|
'delay': analysis.delay,
|
||||||
|
'url': analysis.video_id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
metricsform = VideoAnalysisMetricsForm(initial={'groups':analysis.metricsgroups},
|
||||||
|
mode=mode)
|
||||||
|
metricsgroups = analysis.metricsgroups
|
||||||
|
video_id = analysis.video_id
|
||||||
|
else:
|
||||||
|
form = None
|
||||||
|
metricsform = None
|
||||||
|
metricsgroups = analysis.metricsgroups
|
||||||
|
|
||||||
|
data, metrics, maxtime = dataprep.get_video_data(w,groups=metricsgroups,mode=mode)
|
||||||
|
hascoordinates = pd.Series(data['latitude']).std() > 0
|
||||||
|
# create map
|
||||||
|
if hascoordinates:
|
||||||
|
mapscript, mapdiv = leaflet_chart_video(data['latitude'],data['longitude'],
|
||||||
|
w.name)
|
||||||
|
else:
|
||||||
|
mapscript, mapdiv = interactive_chart_video(data)
|
||||||
|
data['longitude'] = data['spm']
|
||||||
|
data['latitude'] = list(range(len(data['spm'])))
|
||||||
|
|
||||||
|
|
||||||
|
breadcrumbs = [
|
||||||
|
{
|
||||||
|
'url':'/rowers/list-workouts/',
|
||||||
|
'name':'Workouts'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'url':get_workout_default_page(request,encoder.encode_hex(w.id)),
|
||||||
|
'name': w.name
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'url':reverse('workout_video_view',kwargs={'id':encoder.encode_hex(analysis.id)}),
|
||||||
|
'name': 'Video Analysis'
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
return render(request,
|
||||||
|
'embedded_video_mini.html',
|
||||||
|
{
|
||||||
|
'workout':w,
|
||||||
|
'rower':rower,
|
||||||
|
'data': json.dumps(data,default=default),
|
||||||
|
'mapscript': mapscript,
|
||||||
|
'mapdiv': mapdiv,
|
||||||
|
'video_id': analysis.video_id,
|
||||||
|
'form':form,
|
||||||
|
'breadcrumbs':breadcrumbs,
|
||||||
|
'analysis':analysis,
|
||||||
|
'maxtime':maxtime,
|
||||||
|
'metrics':metrics,
|
||||||
|
'locked': True,
|
||||||
|
'metricsform':metricsform,
|
||||||
|
'metricsgroups': metricsgroups,
|
||||||
|
'siteurl': settings.SITE_URL,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
# Show a video compared with data
|
# Show a video compared with data
|
||||||
def workout_video_view(request,id=''):
|
def workout_video_view(request,id=''):
|
||||||
|
|||||||
Reference in New Issue
Block a user