Merge branch 'feature/cp2' into develop
This commit is contained in:
@@ -1023,14 +1023,17 @@ def fetchcp_new(rower,workouts):
|
|||||||
cpfile = 'media/cpdata_{id}.parquet.gz'.format(id=workout.id)
|
cpfile = 'media/cpdata_{id}.parquet.gz'.format(id=workout.id)
|
||||||
try:
|
try:
|
||||||
df = pd.read_parquet(cpfile)
|
df = pd.read_parquet(cpfile)
|
||||||
|
df['workout'] = str(workout)
|
||||||
data.append(df)
|
data.append(df)
|
||||||
except OSError:
|
except OSError:
|
||||||
# CP data file doesn't exist yet. has to be created
|
# CP data file doesn't exist yet. has to be created
|
||||||
data.append(setcp(workout)[0])
|
df, delta, cpvalues = setcp(workout)
|
||||||
|
df['workout'] = str(workout)
|
||||||
|
data.append(df)
|
||||||
|
|
||||||
|
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
return pd.Series(),pd.Series(),0
|
return pd.Series(),pd.Series(),0,pd.Series()
|
||||||
if len(data)>1:
|
if len(data)>1:
|
||||||
df = pd.concat(data,axis=0)
|
df = pd.concat(data,axis=0)
|
||||||
|
|
||||||
@@ -1039,7 +1042,7 @@ def fetchcp_new(rower,workouts):
|
|||||||
|
|
||||||
df = df.sort_values(['delta']).reset_index()
|
df = df.sort_values(['delta']).reset_index()
|
||||||
|
|
||||||
return df['delta'],df['cp'],0
|
return df['delta'],df['cp'],0,df['workout']
|
||||||
|
|
||||||
def setcp(workout):
|
def setcp(workout):
|
||||||
strokesdf = getsmallrowdata_db(['power','workoutid','time'],ids = [workout.id])
|
strokesdf = getsmallrowdata_db(['power','workoutid','time'],ids = [workout.id])
|
||||||
@@ -1501,7 +1504,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
workouttype__in=otwtypes,
|
workouttype__in=otwtypes,
|
||||||
)
|
)
|
||||||
|
|
||||||
dd,cpcp,avgpower = fetchcp_new(r,workouts)
|
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
||||||
|
|
||||||
powerdf = pd.DataFrame({
|
powerdf = pd.DataFrame({
|
||||||
'Delta':dd,
|
'Delta':dd,
|
||||||
@@ -1533,7 +1536,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
date__gte=firstdate,
|
date__gte=firstdate,
|
||||||
workouttype__in=otetypes,
|
workouttype__in=otetypes,
|
||||||
)
|
)
|
||||||
dd,cpcp,avgpower = fetchcp_new(r,workouts)
|
dd,cpcp,avgpower,workoutnames = fetchcp_new(r,workouts)
|
||||||
powerdf = pd.DataFrame({
|
powerdf = pd.DataFrame({
|
||||||
'Delta':dd,
|
'Delta':dd,
|
||||||
'CP':cpcp,
|
'CP':cpcp,
|
||||||
|
|||||||
@@ -2881,7 +2881,8 @@ def interactive_agegroupcpchart(age,normalized=False):
|
|||||||
return script,div
|
return script,div
|
||||||
|
|
||||||
|
|
||||||
def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data'):
|
def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data',
|
||||||
|
title=''):
|
||||||
powerdf = powerdf[~(powerdf == 0).any(axis=1)]
|
powerdf = powerdf[~(powerdf == 0).any(axis=1)]
|
||||||
# plot tools
|
# plot tools
|
||||||
if (promember==1):
|
if (promember==1):
|
||||||
@@ -2921,13 +2922,15 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data')
|
|||||||
|
|
||||||
deltas = fitt.apply(lambda x: timedeltaconv(x))
|
deltas = fitt.apply(lambda x: timedeltaconv(x))
|
||||||
ftime = niceformat(deltas)
|
ftime = niceformat(deltas)
|
||||||
|
workouts = powerdf['workout']
|
||||||
|
|
||||||
sourcecomplex = ColumnDataSource(
|
sourcecomplex = ColumnDataSource(
|
||||||
data = dict(
|
data = dict(
|
||||||
CP = fitpower,
|
CP = fitpower,
|
||||||
CPmax = ratio*fitpower,
|
CPmax = ratio*fitpower,
|
||||||
duration = fitt,
|
duration = fitt,
|
||||||
ftime = ftime
|
ftime = ftime,
|
||||||
|
workout = workouts,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2970,7 +2973,9 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data')
|
|||||||
plot.y_range = Range1d(0,1.5*max(theavpower))
|
plot.y_range = Range1d(0,1.5*max(theavpower))
|
||||||
plot.x_range = Range1d(1,2*max(thesecs))
|
plot.x_range = Range1d(1,2*max(thesecs))
|
||||||
plot.legend.orientation = "vertical"
|
plot.legend.orientation = "vertical"
|
||||||
plot.title.text = "Critical Power for "+rowername
|
if not title:
|
||||||
|
title = "Critical Power for "+rowername
|
||||||
|
plot.title.text = title
|
||||||
|
|
||||||
hover = plot.select(dict(type=HoverTool))
|
hover = plot.select(dict(type=HoverTool))
|
||||||
|
|
||||||
@@ -2978,6 +2983,7 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data')
|
|||||||
('Duration ','@ftime'),
|
('Duration ','@ftime'),
|
||||||
('Power (W)','@CP{int}'),
|
('Power (W)','@CP{int}'),
|
||||||
('Power (W) upper','@CPmax{int}'),
|
('Power (W) upper','@CPmax{int}'),
|
||||||
|
('Workout','@workout'),
|
||||||
])
|
])
|
||||||
|
|
||||||
hover.mode = 'mouse'
|
hover.mode = 'mouse'
|
||||||
|
|||||||
@@ -521,10 +521,11 @@ def cpdata(workouts, options):
|
|||||||
|
|
||||||
|
|
||||||
ids = [w.id for w in workouts]
|
ids = [w.id for w in workouts]
|
||||||
delta, cpvalue, avgpower = dataprep.fetchcp_new(r,workouts)
|
delta, cpvalue, avgpower,workoutnames = dataprep.fetchcp_new(r,workouts)
|
||||||
powerdf = pd.DataFrame({
|
powerdf = pd.DataFrame({
|
||||||
'Delta':delta,
|
'Delta':delta,
|
||||||
'CP':cpvalue,
|
'CP':cpvalue,
|
||||||
|
'workout':workoutnames,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -539,8 +540,15 @@ def cpdata(workouts, options):
|
|||||||
rowername = r.user.first_name+" "+r.user.last_name
|
rowername = r.user.first_name+" "+r.user.last_name
|
||||||
|
|
||||||
if len(powerdf) !=0 :
|
if len(powerdf) !=0 :
|
||||||
|
datefirst = pd.Series(w.date for w in workouts).min()
|
||||||
|
datelast = pd.Series(w.date for w in workouts).max()
|
||||||
|
title = 'CP chart for {name}, from {d1} to {d2}'.format(
|
||||||
|
name = rowername,
|
||||||
|
d1 = datefirst,
|
||||||
|
d2 = datelast,
|
||||||
|
)
|
||||||
res = interactive_otwcpchart(powerdf,promember=True,rowername=rowername,r=r,
|
res = interactive_otwcpchart(powerdf,promember=True,rowername=rowername,r=r,
|
||||||
cpfit=cpfit)
|
cpfit=cpfit,title=title)
|
||||||
script = res[0]
|
script = res[0]
|
||||||
div = res[1]
|
div = res[1]
|
||||||
p1 = res[2]
|
p1 = res[2]
|
||||||
@@ -2426,6 +2434,7 @@ def otwrankings_view(request,userid=0,
|
|||||||
powerdf = pd.DataFrame({
|
powerdf = pd.DataFrame({
|
||||||
'Delta':delta,
|
'Delta':delta,
|
||||||
'CP':cpvalue,
|
'CP':cpvalue,
|
||||||
|
'workout':pd.Series(),
|
||||||
})
|
})
|
||||||
|
|
||||||
if powerdf.empty:
|
if powerdf.empty:
|
||||||
|
|||||||
Reference in New Issue
Block a user