adding click to open workout
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user