From c6030d4325c017d7bc3ee419d164df0f49e29996 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 5 Nov 2019 11:09:45 +0100 Subject: [PATCH] now working with json object - to prepare for future AJAX calls --- rowers/templates/embedded_video.html | 7 ++++--- rowers/views/workoutviews.py | 15 +++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/rowers/templates/embedded_video.html b/rowers/templates/embedded_video.html index 5751495a..fff9c356 100644 --- a/rowers/templates/embedded_video.html +++ b/rowers/templates/embedded_video.html @@ -66,9 +66,10 @@ // after the API code downloads. var player; var videotime = 0; - var boatspeed = [{% for s in boatspeed %}{{ s|floatformat:4 }},{% endfor %}]; - var latitude = [{% for lat in latitude %}{{ lat }},{% endfor %}]; - var longitude = [{% for lon in longitude %}{{ lon }},{% endfor %}]; + var data = JSON.parse('{{ data|safe }}'); + var boatspeed = data["boatspeed"]; + var latitude = data["latitude"]; + var longitude = data["longitude"]; function onYouTubeIframeAPIReady() { player = new YT.Player('player', { diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 4fcd1d07..94b0e7a0 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -6,6 +6,12 @@ from __future__ import unicode_literals from rowers.views.statements import * import rowers.teams as teams +import numpy + +def default(o): + if isinstance(o, numpy.int64): return int(o) + raise TypeError + # Show a video compared with data @user_passes_test(ispromember,login_url="/rowers/paidplans/", message="This functionality requires a Pro plan or higher", @@ -17,7 +23,7 @@ def workout_video_view(request,id=0): df.sort_values(by='time',inplace=True) df.set_index(pd.to_timedelta(df['time'],unit='s'),inplace=True) df2 = df.resample('1s').mean().interpolate() - boatspeed = df2['velo'] + boatspeed = (100*df2['velo']).astype(int)/100. coordinates = dataprep.get_latlon_time(w.id) coordinates.set_index(pd.to_timedelta(coordinates['time'],unit='s'),inplace=True) @@ -30,9 +36,9 @@ def workout_video_view(request,id=0): w.name) # bundle data - data = {'boatspeed':boatspeed.values, - 'latitude':latitude.values, - 'longitude':longitude.values} + data = {'boatspeed':[ v for v in boatspeed.values], + 'latitude':[ l for l in latitude.values], + 'longitude':[ l for l in longitude.values]} return render(request, 'embedded_video.html', @@ -42,6 +48,7 @@ def workout_video_view(request,id=0): 'boatspeed': boatspeed.values, 'latitude': latitude.values, 'longitude': longitude.values, + 'data': json.dumps(data,default=default), 'mapscript': mapscript, 'mapdiv': mapdiv, })