Merge branch 'release/v14.82'
This commit is contained in:
@@ -351,6 +351,7 @@ def interactive_hr_piechart(df,rower,title,totalseconds=0):
|
|||||||
data = pd.Series(datadict).reset_index(name='value').rename(columns={'index':'zone'})
|
data = pd.Series(datadict).reset_index(name='value').rename(columns={'index':'zone'})
|
||||||
data['angle'] = data['value']/data['value'].sum() * 2*pi
|
data['angle'] = data['value']/data['value'].sum() * 2*pi
|
||||||
data['color'] = colors
|
data['color'] = colors
|
||||||
|
data['zone'] = ['<ut2','ut2','ut1','at','tr','an']
|
||||||
data['totaltime'] = pd.Series([pretty_timedelta(v) for v in data['value']])
|
data['totaltime'] = pd.Series([pretty_timedelta(v) for v in data['value']])
|
||||||
|
|
||||||
|
|
||||||
@@ -367,7 +368,7 @@ def interactive_hr_piechart(df,rower,title,totalseconds=0):
|
|||||||
|
|
||||||
z.wedge(x=0,y=1, radius=0.4,
|
z.wedge(x=0,y=1, radius=0.4,
|
||||||
start_angle=cumsum('angle',include_zero=True), end_angle=cumsum('angle'),
|
start_angle=cumsum('angle',include_zero=True), end_angle=cumsum('angle'),
|
||||||
line_color='white',fill_color='color',source=data,legend_label='zone')
|
line_color='white',fill_color='color',source=data,legend_group='zone')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -423,6 +424,7 @@ def interactive_workouttype_piechart(workouts):
|
|||||||
|
|
||||||
|
|
||||||
data = pd.DataFrame(data)
|
data = pd.DataFrame(data)
|
||||||
|
|
||||||
data['color'] = data['type'].apply(lambda x:mapcolors(x))
|
data['color'] = data['type'].apply(lambda x:mapcolors(x))
|
||||||
data['totaltime'] = data['value'].apply(lambda x:pretty_timedelta(x))
|
data['totaltime'] = data['value'].apply(lambda x:pretty_timedelta(x))
|
||||||
try:
|
try:
|
||||||
@@ -438,7 +440,7 @@ def interactive_workouttype_piechart(workouts):
|
|||||||
|
|
||||||
p.wedge(x=0, y=1, radius=0.4,
|
p.wedge(x=0, y=1, radius=0.4,
|
||||||
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
|
start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),
|
||||||
line_color="white", fill_color='color', source=data,legend_label='type', )
|
line_color="white", fill_color='color', source=data,legend_group='type', )
|
||||||
|
|
||||||
p.axis.axis_label=None
|
p.axis.axis_label=None
|
||||||
p.axis.visible=False
|
p.axis.visible=False
|
||||||
@@ -696,7 +698,7 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
|
|||||||
|
|
||||||
bars=table.to.bars(['date',stack],[yaxis])
|
bars=table.to.bars(['date',stack],[yaxis])
|
||||||
bars.opts(
|
bars.opts(
|
||||||
opts.Bars(color=hv.Cycle('Category10'), show_legend=True, stacked=True,
|
opts.Bars(color=dim_expr, show_legend=True, stacked=True,
|
||||||
tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)),
|
tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)),
|
||||||
legend_position='bottom',show_frame=True))
|
legend_position='bottom',show_frame=True))
|
||||||
|
|
||||||
@@ -859,11 +861,11 @@ def interactive_activitychart2(workouts,startdate,enddate,stack='type',toolbar_l
|
|||||||
|
|
||||||
df = pd.DataFrame(thedict)
|
df = pd.DataFrame(thedict)
|
||||||
|
|
||||||
|
df['color'] = df['type'].apply(lambda x:mapcolors(x))
|
||||||
source = ColumnDataSource(df)
|
|
||||||
|
|
||||||
df.sort_values('date_sorting',inplace=True)
|
df.sort_values('date_sorting',inplace=True)
|
||||||
#clrs = hv.Cycle(df['colors'].values)
|
#clrs = hv.Cycle(df['colors'].values)
|
||||||
|
source = ColumnDataSource(df)
|
||||||
|
|
||||||
hv.extension('bokeh')
|
hv.extension('bokeh')
|
||||||
|
|
||||||
@@ -875,7 +877,7 @@ def interactive_activitychart2(workouts,startdate,enddate,stack='type',toolbar_l
|
|||||||
bars=table.to.bars(['date',stack],[yaxis])
|
bars=table.to.bars(['date',stack],[yaxis])
|
||||||
|
|
||||||
bars.opts(
|
bars.opts(
|
||||||
opts.Bars(color=dim_expr, show_legend=True, stacked=True,
|
opts.Bars(cmap=mytypes.color_map, show_legend=True, stacked=True,
|
||||||
tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)),
|
tools=['tap','hover'], width=550, xrotation=45,padding=(0,(0,.1)),
|
||||||
legend_position='bottom',show_frame=True))
|
legend_position='bottom',show_frame=True))
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,7 @@
|
|||||||
console.log(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}')
|
console.log(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}')
|
||||||
$.getJSON(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}', function(json) {
|
$.getJSON(window.location.protocol + '//'+window.location.host + '/rowers/history/user/{{ rower.user.id }}/data/?startdate={{ sstartdate|date:"Y-m-d" }}&enddate={{ senddate|date:"Y-m-d" }}&workouttype={{ workouttype }}&yaxis={{ yaxis }}', function(json) {
|
||||||
|
|
||||||
|
|
||||||
var script = json.script;
|
var script = json.script;
|
||||||
var div = json.div;
|
var div = json.div;
|
||||||
var totalsdict = json.totalsdict
|
var totalsdict = json.totalsdict
|
||||||
|
|||||||
@@ -5226,16 +5226,19 @@ def history_view_data(request,userid=0):
|
|||||||
ddf['deltat'] = ddf['time'].diff().clip(lower=0)
|
ddf['deltat'] = ddf['time'].diff().clip(lower=0)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True,
|
|
||||||
|
|
||||||
|
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=False,
|
||||||
ignoreadvanced=True)
|
ignoreadvanced=True)
|
||||||
|
|
||||||
|
|
||||||
ddict['hrmean'] = int(wavg(ddf,'hr','deltat'))
|
ddict['hrmean'] = int(wavg(ddf,'hr','deltat'))
|
||||||
try:
|
try:
|
||||||
ddict['hrmax'] = ddf['hr'].max().astype(int)
|
ddict['hrmax'] = ddf['hr'].max().astype(int)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
ddict['hrmax'] = 0
|
ddict['hrmax'] = 0
|
||||||
|
|
||||||
ddict['powermean'] = int(wavg(df,'power','deltat'))
|
ddict['powermean'] = int(wavg(ddf,'power','deltat'))
|
||||||
ddict['powermax'] = ddf['power'].max().astype(int)
|
ddict['powermax'] = ddf['power'].max().astype(int)
|
||||||
ddict['nrworkouts'] = a_workouts.count()
|
ddict['nrworkouts'] = a_workouts.count()
|
||||||
listofdicts.append(ddict)
|
listofdicts.append(ddict)
|
||||||
@@ -5275,12 +5278,17 @@ def history_view_data(request,userid=0):
|
|||||||
meters, hours,minutes,seconds = get_totals(a_workouts)
|
meters, hours,minutes,seconds = get_totals(a_workouts)
|
||||||
totalseconds = 3600*hours+60*minutes+seconds
|
totalseconds = 3600*hours+60*minutes+seconds
|
||||||
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ddf['deltat'] = ddf['time'].diff().clip(lower=0)
|
ddf['deltat'] = ddf['time'].diff().clip(lower=0)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True,
|
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True,
|
||||||
ignoreadvanced=True)
|
ignoreadvanced=True)
|
||||||
|
|
||||||
|
|
||||||
totalscript, totaldiv = interactive_hr_piechart(
|
totalscript, totaldiv = interactive_hr_piechart(
|
||||||
ddf,r,mytypes.workouttypes_ordered[typeselect],
|
ddf,r,mytypes.workouttypes_ordered[typeselect],
|
||||||
totalseconds=totalseconds)
|
totalseconds=totalseconds)
|
||||||
|
|||||||
Reference in New Issue
Block a user