v1 chart stack
This commit is contained in:
@@ -18,7 +18,8 @@ import rowers.metrics as metrics
|
||||
import rowers.dataprep as dataprep
|
||||
from rowers.dataprep import rdata
|
||||
import rowers.utils as utils
|
||||
from jsmin import jsmin
|
||||
|
||||
from rowers.rower_rules import ispromember
|
||||
|
||||
from scipy.interpolate import griddata
|
||||
from scipy.signal import savgol_filter
|
||||
@@ -3907,15 +3908,20 @@ def interactive_flexchart_stacked(id, r, xparam='time',
|
||||
yparam4='spm',
|
||||
mode='erg'):
|
||||
|
||||
columns = [xparam, yparam1, yparam2, yparam3, yparam4,
|
||||
'ftime', 'distance', 'fpace',
|
||||
'power', 'hr', 'spm', 'driveenergy',
|
||||
'time', 'pace', 'workoutstate']
|
||||
columns = [name for name, d in metrics.rowingmetrics]
|
||||
columns_basic = [name for name, d in metrics.rowingmetrics if d['group'] == 'basic']
|
||||
columns = columns + ['spm', 'driveenergy', 'distance']
|
||||
columns_basic = columns_basic + ['spm', 'driveenergy', 'distance']
|
||||
|
||||
comment = None
|
||||
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id], doclean=True,
|
||||
workstrokesonly=False)
|
||||
rowdata = pd.DataFrame()
|
||||
row = Workout.objects.get(id=id)
|
||||
|
||||
if ispromember(r.user):
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id], doclean=True,
|
||||
workstrokesonly=False, for_chart=True)
|
||||
else:
|
||||
rowdata = dataprep.getsmallrowdata_db(columns_basic, ids=[id], doclean=True,
|
||||
workstrokesonly=False, for_chart=True)
|
||||
|
||||
if r.usersmooth > 1: # pragma: no cover
|
||||
for column in columns:
|
||||
@@ -3929,9 +3935,17 @@ def interactive_flexchart_stacked(id, r, xparam='time',
|
||||
pass
|
||||
|
||||
if len(rowdata) < 2:
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id],
|
||||
doclean=False,
|
||||
workstrokesonly=False)
|
||||
if ispromember(r.user):
|
||||
rowdata = dataprep.getsmallrowdata_db(columns, ids=[id],
|
||||
doclean=False,
|
||||
workstrokesonly=False,
|
||||
for_chart=True)
|
||||
else:
|
||||
rowdata = dataprep.getsmallrowdata_db(columns_basic, ids=[id],
|
||||
doclean=False,
|
||||
workstrokesonly=False,
|
||||
for_chart=True)
|
||||
|
||||
|
||||
if rowdata.empty:
|
||||
return "", "No valid data", '', '', comment
|
||||
@@ -3969,6 +3983,28 @@ def interactive_flexchart_stacked(id, r, xparam='time',
|
||||
except KeyError: # pragma: no cover
|
||||
rowdata['y4'] = 0*rowdata.loc[:, 'time']
|
||||
rowdata[yparam4] = rowdata['y4']
|
||||
|
||||
# replace nans
|
||||
rowdata.fillna(value=0, inplace=True)
|
||||
|
||||
data_dict = rowdata.to_dict("records")
|
||||
|
||||
metrics_list = [{'name': name, 'rowingmetrics':d } for name, d in metrics.rowingmetrics]
|
||||
|
||||
chart_data = {
|
||||
'title': row.name,
|
||||
'x': xparam,
|
||||
'y1': yparam1,
|
||||
'y2': yparam2,
|
||||
'y3': yparam3,
|
||||
'y4': yparam4,
|
||||
'data': data_dict,
|
||||
'metrics': metrics_list,
|
||||
}
|
||||
|
||||
script, div = get_chart("/stacked", chart_data)
|
||||
|
||||
return script, div
|
||||
|
||||
if xparam == 'time':
|
||||
xaxmax = tseconds.max()
|
||||
|
||||
Reference in New Issue
Block a user