improved form processing in summary edit
This commit is contained in:
@@ -2364,3 +2364,23 @@ def workout_rscore(w):
|
|||||||
tss = 0
|
tss = 0
|
||||||
|
|
||||||
return tss,normp
|
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
|
||||||
|
|
||||||
|
|||||||
@@ -488,8 +488,8 @@ class PowerIntervalUpdateForm(forms.Form):
|
|||||||
('pace','Pace')
|
('pace','Pace')
|
||||||
)
|
)
|
||||||
|
|
||||||
pace = forms.DurationField(label='Pace',required=False)
|
pace = forms.DurationField(required=False,label='Pace (/500m)')
|
||||||
power = forms.IntegerField(label='Power',required=False)
|
power = forms.IntegerField(required=False,label='Power (W)')
|
||||||
selector = forms.ChoiceField(choices=selectorchoices,
|
selector = forms.ChoiceField(choices=selectorchoices,
|
||||||
required=True,
|
required=True,
|
||||||
initial='power',
|
initial='power',
|
||||||
|
|||||||
@@ -2138,7 +2138,7 @@ def interactive_chart(id=0,promember=0):
|
|||||||
try:
|
try:
|
||||||
spm = datadf['spm']
|
spm = datadf['spm']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
datadf['spm'] = 0*datadf['pace']
|
datadf['spm'] = 0
|
||||||
|
|
||||||
#datadf,row = dataprep.getrowdata_db(id=id)
|
#datadf,row = dataprep.getrowdata_db(id=id)
|
||||||
#if datadf.empty:
|
#if datadf.empty:
|
||||||
|
|||||||
@@ -164,6 +164,9 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="{{ savebutton }}" value="{{ intervalstring }}">
|
<input type="hidden" name="{{ savebutton }}" value="{{ intervalstring }}">
|
||||||
<input type="hidden" name="nrintervals" value={{ nrintervals }}>
|
<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 %}
|
{% for field in detailform %}
|
||||||
{{ field.as_hidden }}
|
{{ field.as_hidden }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -11295,6 +11295,22 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
savebutton = 'nosavebutton'
|
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
|
# We have submitted the mini language interpreter
|
||||||
if request.method == 'POST' and "intervalstring" in request.POST:
|
if request.method == 'POST' and "intervalstring" in request.POST:
|
||||||
@@ -11310,6 +11326,57 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
itime,idist,itype = rowdata.intervalstats_values()
|
itime,idist,itype = rowdata.intervalstats_values()
|
||||||
nrintervals = len(idist)
|
nrintervals = len(idist)
|
||||||
savebutton = 'savestringform'
|
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
|
# we are saving the results obtained from the mini language interpreter
|
||||||
elif request.method == 'POST' and "savestringform" in request.POST:
|
elif request.method == 'POST' and "savestringform" in request.POST:
|
||||||
@@ -11339,6 +11406,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.info(request,"Updated interval data saved")
|
messages.info(request,"Updated interval data saved")
|
||||||
data = {'intervalstring':s}
|
data = {'intervalstring':s}
|
||||||
form = SummaryStringForm(initial=data)
|
form = SummaryStringForm(initial=data)
|
||||||
|
powerupdateform = PowerIntervalUpdateForm()
|
||||||
savebutton = 'savestringform'
|
savebutton = 'savestringform'
|
||||||
|
|
||||||
# we are saving the results obtained from the power update form
|
# 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()
|
intervalstats = rowdata.allstats()
|
||||||
itime,idist,itype = rowdata.intervalstats_values()
|
itime,idist,itype = rowdata.intervalstats_values()
|
||||||
nrintervals = len(idist)
|
nrintervals = len(idist)
|
||||||
savebutton = 'savestringform'
|
savebutton = 'savepowerpaceform'
|
||||||
|
formvalues = {
|
||||||
|
'powerorpace': powerorpace,
|
||||||
|
'value_power': power,
|
||||||
|
'value_pace': pace_secs
|
||||||
|
}
|
||||||
powerupdateform = PowerIntervalUpdateForm(initial=cd)
|
powerupdateform = PowerIntervalUpdateForm(initial=cd)
|
||||||
|
form = SummaryStringForm()
|
||||||
|
|
||||||
|
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm()
|
||||||
@@ -11428,6 +11502,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
messages.info(request,"Updated interval data saved")
|
messages.info(request,"Updated interval data saved")
|
||||||
|
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm()
|
||||||
|
powerupdateform = PowerIntervalUpdateForm()
|
||||||
|
|
||||||
# we are processing the details form
|
# we are processing the details form
|
||||||
elif request.method == 'POST' and "nrintervals" in request.POST:
|
elif request.method == 'POST' and "nrintervals" in request.POST:
|
||||||
@@ -11472,10 +11547,9 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
|
|
||||||
|
|
||||||
form = SummaryStringForm()
|
form = SummaryStringForm()
|
||||||
|
powerupdateform = PowerIntervalUpdateForm()
|
||||||
|
|
||||||
|
|
||||||
else:
|
|
||||||
form = SummaryStringForm()
|
|
||||||
powerupdateform = PowerIntervalUpdateForm()
|
|
||||||
|
|
||||||
initial = {}
|
initial = {}
|
||||||
for i in xrange(nrintervals):
|
for i in xrange(nrintervals):
|
||||||
@@ -11500,6 +11574,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
'the_div':div,
|
'the_div':div,
|
||||||
'intervalstring':s,
|
'intervalstring':s,
|
||||||
'savebutton':savebutton,
|
'savebutton':savebutton,
|
||||||
|
'formvalues':formvalues,
|
||||||
})
|
})
|
||||||
|
|
||||||
# Page where user can manage his favorite charts
|
# Page where user can manage his favorite charts
|
||||||
|
|||||||
Reference in New Issue
Block a user