Private
Public Access
1
0

v1 chart stack

This commit is contained in:
2024-03-22 13:12:54 +01:00
parent 06cfdbc7a9
commit 82ec4c9d7c
3 changed files with 52 additions and 27 deletions

View File

@@ -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()