Private
Public Access
1
0

improved form processing in summary edit

This commit is contained in:
Sander Roosendaal
2018-06-14 11:38:00 +02:00
parent a14517154c
commit b1a8e84bd5
5 changed files with 108 additions and 10 deletions

View File

@@ -2364,3 +2364,23 @@ def workout_rscore(w):
tss = 0
return tss,normp
def workout_normv(w,pp=4.0):
df,row = getrowdata_db(id=w.id)
df = clean_df_stats(df,workstrokesonly=False)
if df.empty:
df,row = getrowdata_db(id=w.id)
df = clean_df_stats(df,workstrokesonly=False)
df['deltat'] = df['time'].diff()
duration = df['time'].max()-df['time'].min()
duration /= 1.0e3
df['v4'] = df['velo']**(pp)
v4mean = wavg(df,'v4','deltat')
normv = v4mean**(1./pp)
if np.isnan(normv):
return 500./120.
return normv

View File

@@ -488,8 +488,8 @@ class PowerIntervalUpdateForm(forms.Form):
('pace','Pace')
)
pace = forms.DurationField(label='Pace',required=False)
power = forms.IntegerField(label='Power',required=False)
pace = forms.DurationField(required=False,label='Pace (/500m)')
power = forms.IntegerField(required=False,label='Power (W)')
selector = forms.ChoiceField(choices=selectorchoices,
required=True,
initial='power',

View File

@@ -2138,8 +2138,8 @@ def interactive_chart(id=0,promember=0):
try:
spm = datadf['spm']
except KeyError:
datadf['spm'] = 0*datadf['pace']
datadf['spm'] = 0
#datadf,row = dataprep.getrowdata_db(id=id)
#if datadf.empty:
#return "","No Valid Data Available"

View File

@@ -164,6 +164,9 @@
{% csrf_token %}
<input type="hidden" name="{{ savebutton }}" value="{{ intervalstring }}">
<input type="hidden" name="nrintervals" value={{ nrintervals }}>
{% for key,value in formvalues.items %}
<input type="hidden" name="{{ key }}" value="{{ value }}">
{% endfor %}
{% for field in detailform %}
{{ field.as_hidden }}
{% endfor %}

View File

@@ -11295,7 +11295,23 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
pass
savebutton = 'nosavebutton'
formvalues = {}
form = SummaryStringForm()
tss,normp = dataprep.workout_rscore(row)
normv = dataprep.workout_normv(row,pp=10.0)
avpace = datetime.timedelta(seconds=int(500./normv))
data = {
'power': int(normp),
'pace': avpace,
'selector': normp,
}
powerupdateform = PowerIntervalUpdateForm(initial=data)
# We have submitted the mini language interpreter
if request.method == 'POST' and "intervalstring" in request.POST:
form = SummaryStringForm(request.POST)
@@ -11310,7 +11326,58 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
itime,idist,itype = rowdata.intervalstats_values()
nrintervals = len(idist)
savebutton = 'savestringform'
powerupdateform = PowerIntervalUpdateForm()
# we are saving the results obtained from the split by power/pace interpreter
elif request.method == 'POST' and "savepowerpaceform" in request.POST:
powerorpace = request.POST['powerorpace']
value_pace = request.POST['value_pace']
value_power = request.POST['value_power']
if powerorpace == 'power':
power = int(value_power)
pace_secs = 120.0
else:
power = 0
pace_secs = float(value_pace)
if powerorpace == 'power' and power is not None:
try:
rowdata.updateinterval_metric(' Power (watts)',power,mode='larger',
debug=False,smoothwindow=15)
except:
messages.error(request,'Error updating power')
elif powerorpace == 'pace':
try:
velo = 500./pace_secs
rowdata.updateinterval_metric(' AverageBoatSpeed (m/s)',velo,mode='larger',
debug=False,smoothwindow=15)
except:
messages.error(request,'Error updating pace')
intervalstats = rowdata.allstats()
itime,idist,itype = rowdata.intervalstats_values()
nrintervals = len(idist)
row.summary = intervalstats
row.save()
rowdata.write_csv(f1,gzip=True)
messages.info(request,"Updated interval data saved")
data = {
'power': power,
'pace': datetime.timedelta(seconds=int(pace_secs)),
'selector': powerorpace
}
form = SummaryStringForm()
powerupdateform = PowerIntervalUpdateForm(initial=data)
savebutton = 'savepowerpaceform'
formvalues = {
'powerorpace': powerorpace,
'value_power': power,
'value_pace': pace_secs
}
# we are saving the results obtained from the mini language interpreter
elif request.method == 'POST' and "savestringform" in request.POST:
s = request.POST["savestringform"]
@@ -11339,6 +11406,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
messages.info(request,"Updated interval data saved")
data = {'intervalstring':s}
form = SummaryStringForm(initial=data)
powerupdateform = PowerIntervalUpdateForm()
savebutton = 'savestringform'
# we are saving the results obtained from the power update form
@@ -11371,8 +11439,14 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
intervalstats = rowdata.allstats()
itime,idist,itype = rowdata.intervalstats_values()
nrintervals = len(idist)
savebutton = 'savestringform'
savebutton = 'savepowerpaceform'
formvalues = {
'powerorpace': powerorpace,
'value_power': power,
'value_pace': pace_secs
}
powerupdateform = PowerIntervalUpdateForm(initial=cd)
form = SummaryStringForm()
form = SummaryStringForm()
@@ -11428,6 +11502,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
messages.info(request,"Updated interval data saved")
form = SummaryStringForm()
powerupdateform = PowerIntervalUpdateForm()
# we are processing the details form
elif request.method == 'POST' and "nrintervals" in request.POST:
@@ -11472,10 +11547,9 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
form = SummaryStringForm()
else:
form = SummaryStringForm()
powerupdateform = PowerIntervalUpdateForm()
powerupdateform = PowerIntervalUpdateForm()
initial = {}
for i in xrange(nrintervals):
@@ -11500,6 +11574,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
'the_div':div,
'intervalstring':s,
'savebutton':savebutton,
'formvalues':formvalues,
})
# Page where user can manage his favorite charts