Private
Public Access
1
0

adding click to open workout

This commit is contained in:
Sander Roosendaal
2021-01-09 11:59:42 +01:00
parent 882c0cbf6b
commit 4c9b6b687b
3 changed files with 33 additions and 0 deletions

View File

@@ -132,6 +132,14 @@ def newtestpowerdate(x):
return x['date'] return x['date']
def workoutname(id):
try:
w = Workout.objects.get(id=id)
except Workout.DoesNotExist:
return ''
return str(w)
def all_goldmedalstandards(workouts,startdate,enddate): def all_goldmedalstandards(workouts,startdate,enddate):
dates = [] dates = []
testpowers = [] testpowers = []
@@ -1824,6 +1832,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
# all workouts # all workouts
alldates,alltestpower,allduration = all_goldmedalstandards(workouts,startdate,enddate) alldates,alltestpower,allduration = all_goldmedalstandards(workouts,startdate,enddate)
allids = [w.id for w in workouts]
nrdays = (enddate-startdate).days nrdays = (enddate-startdate).days
@@ -1832,6 +1841,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
score = [] score = []
markerduration = [] markerduration = []
duration = [] duration = []
workoutid = []
previous = 0 previous = 0
@@ -1845,6 +1855,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
markerduration.append(testduration[i]) markerduration.append(testduration[i])
score.append(np.nan) score.append(np.nan)
duration.append(np.nan) duration.append(np.nan)
workoutid.append(id)
for i in range(len(alldates)): for i in range(len(alldates)):
td.append(arrow.get(alldates[i]).datetime) td.append(arrow.get(alldates[i]).datetime)
@@ -1852,6 +1863,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
score.append(alltestpower[i]) score.append(alltestpower[i])
markerduration.append(np.nan) markerduration.append(np.nan)
duration.append(allduration[i]) duration.append(allduration[i])
workoutid.append(allids[i])
for i in range(nrdays+1): for i in range(nrdays+1):
td.append(arrow.get(startdate+datetime.timedelta(days=i)).datetime) td.append(arrow.get(startdate+datetime.timedelta(days=i)).datetime)
@@ -1859,6 +1871,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
score.append(np.nan) score.append(np.nan)
markerduration.append(np.nan) markerduration.append(np.nan)
duration.append(np.nan) duration.append(np.nan)
workoutid.append(0)
df = pd.DataFrame({ df = pd.DataFrame({
@@ -1867,6 +1880,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
'score':score, 'score':score,
'duration':duration, 'duration':duration,
'date':td, 'date':td,
'id':workoutid,
}) })
@@ -1875,6 +1889,9 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
df = df.groupby(['date']).max() df = df.groupby(['date']).max()
df['date'] = df.index.values df['date'] = df.index.values
df['url'] = df['id'].apply(lambda x:settings.SITE_URL+'/rowers/workout/{id}/'.format(id=encoder.encode_hex(x)))
df['workout'] = df['id'].apply(lambda x:workoutname(x))
source = ColumnDataSource( source = ColumnDataSource(
data = dict( data = dict(
@@ -1884,6 +1901,8 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
duration = df['duration'].apply(lambda x:totaltime_sec_to_string(x,shorten=True)), duration = df['duration'].apply(lambda x:totaltime_sec_to_string(x,shorten=True)),
date = df['date'], date = df['date'],
fdate = df['date'].map(lambda x: x.strftime('%d-%m-%Y')), fdate = df['date'].map(lambda x: x.strftime('%d-%m-%Y')),
url = df['url'],
workout = df['workout']
) )
) )
@@ -1943,8 +1962,12 @@ def goldmedalscorechart(user,startdate=None,enddate=None):
('Score','@score{int}'), ('Score','@score{int}'),
('Duration', '@duration'), ('Duration', '@duration'),
('Date','@fdate'), ('Date','@fdate'),
('Workout','@workout')
]) ])
taptool = plot.select(type=TapTool)
taptool.callback = OpenURL(url='@url')
script, div = components(plot) script, div = components(plot)
return script, div,outids return script, div,outids

View File

@@ -44,6 +44,7 @@ import datetime
#from rules.contrib.models import RulesModel #from rules.contrib.models import RulesModel
from rowers.rower_rules import * from rowers.rower_rules import *
from rowers.opaque import encoder
from rowers.rows import validate_file_extension from rowers.rows import validate_file_extension
from collections import OrderedDict from collections import OrderedDict
@@ -2992,6 +2993,13 @@ class Workout(models.Model):
duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout') duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout')
impeller = models.BooleanField(default=False,verbose_name='Impeller') impeller = models.BooleanField(default=False,verbose_name='Impeller')
def url(self):
str = '/rowers/workout/{id}/'.format(
id = encoder.encode_hex(self.id)
)
url = settings.SITE_URL+str
return url
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
user = self.user user = self.user
if self.notes is not None and len(self.notes)>1000: if self.notes is not None and len(self.notes)>1000:

View File

@@ -80,6 +80,8 @@
<ul class="main-content"> <ul class="main-content">
<li class="grid_4"> <li class="grid_4">
<p>Hover over the workout to see details, click on the workout to open in a
separate page.</p>
<div id="id_chart"> <div id="id_chart">
{{ the_div|safe }} {{ the_div|safe }}
</div> </div>