fix
This commit is contained in:
@@ -6566,6 +6566,7 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates = []
|
dates = []
|
||||||
dates_sorting = []
|
dates_sorting = []
|
||||||
minutes = []
|
minutes = []
|
||||||
|
hours = []
|
||||||
zones = []
|
zones = []
|
||||||
|
|
||||||
workouts = Workout.objects.filter(
|
workouts = Workout.objects.filter(
|
||||||
@@ -6608,7 +6609,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('<UT2')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append('<{ut2}'.format(ut2=hrzones[1]))
|
||||||
#print(w,dd,timeinzone,'<UT2')
|
#print(w,dd,timeinzone,'<UT2')
|
||||||
|
|
||||||
qry = '{ut2} <= hr < {ut1}'.format(ut1=rower.ut1,ut2=rower.ut2)
|
qry = '{ut2} <= hr < {ut1}'.format(ut1=rower.ut1,ut2=rower.ut2)
|
||||||
@@ -6620,7 +6622,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('UT2')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append(hrzones[1])
|
||||||
#print(w,dd,timeinzone,'UT2')
|
#print(w,dd,timeinzone,'UT2')
|
||||||
|
|
||||||
qry = '{ut1} <= hr < {at}'.format(ut1=rower.ut1,at=rower.at)
|
qry = '{ut1} <= hr < {at}'.format(ut1=rower.ut1,at=rower.at)
|
||||||
@@ -6632,7 +6635,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('UT1')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append(hrzones[2])
|
||||||
#print(w,dd,timeinzone,'UT1')
|
#print(w,dd,timeinzone,'UT1')
|
||||||
|
|
||||||
qry = '{at} <= hr < {tr}'.format(at=rower.at,tr=rower.tr)
|
qry = '{at} <= hr < {tr}'.format(at=rower.at,tr=rower.tr)
|
||||||
@@ -6644,7 +6648,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('AT')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append(hrzones[3])
|
||||||
#print(w,dd,timeinzone,'AT')
|
#print(w,dd,timeinzone,'AT')
|
||||||
|
|
||||||
qry = '{tr} <= hr < {an}'.format(tr=rower.tr,an=rower.an)
|
qry = '{tr} <= hr < {an}'.format(tr=rower.tr,an=rower.an)
|
||||||
@@ -6656,7 +6661,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('TR')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append(hrzones[4])
|
||||||
#print(w,dd,timeinzone,'TR')
|
#print(w,dd,timeinzone,'TR')
|
||||||
|
|
||||||
qry = 'hr >= {an}'.format(an=rower.an)
|
qry = 'hr >= {an}'.format(an=rower.an)
|
||||||
@@ -6668,7 +6674,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates.append(dd3)
|
dates.append(dd3)
|
||||||
dates_sorting.append(dd3)
|
dates_sorting.append(dd3)
|
||||||
minutes.append(timeinzone)
|
minutes.append(timeinzone)
|
||||||
zones.append('AN')
|
hours.append(timeinzone/60.)
|
||||||
|
zones.append(hrzones[5])
|
||||||
#print(w,dd,timeinzone,'AN')
|
#print(w,dd,timeinzone,'AN')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -6691,7 +6698,8 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
dates_sorting.append(d.strftime('%Y/%m'))
|
dates_sorting.append(d.strftime('%Y/%m'))
|
||||||
|
|
||||||
minutes.append(0)
|
minutes.append(0)
|
||||||
zones.append('<UT2')
|
hours.append(0)
|
||||||
|
zones.append(hrzones[1])
|
||||||
|
|
||||||
d += datetime.timedelta(days=1)
|
d += datetime.timedelta(days=1)
|
||||||
|
|
||||||
@@ -6701,20 +6709,47 @@ def get_zones_report(rower,startdate,enddate):
|
|||||||
'date_sorting':dates_sorting,
|
'date_sorting':dates_sorting,
|
||||||
'minutes': minutes,
|
'minutes': minutes,
|
||||||
'zones':zones,
|
'zones':zones,
|
||||||
|
'hours':hours,
|
||||||
}
|
}
|
||||||
|
|
||||||
#print(pd.DataFrame(data).head())
|
#print(pd.DataFrame(data).head())
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def interactive_zoneschart(data,startdate,enddate):
|
def interactive_zoneschart(rower,data,startdate,enddate):
|
||||||
duration = enddate-startdate
|
duration = enddate-startdate
|
||||||
|
|
||||||
totaldays = duration.total_seconds()/(24*3600)
|
totaldays = duration.total_seconds()/(24*3600)
|
||||||
|
|
||||||
colors = ['gray','yellow','lime','blue','purple','red']
|
colors = ['gray','yellow','lime','blue','purple','red']
|
||||||
|
|
||||||
|
hrzones = rower.hrzones
|
||||||
|
|
||||||
|
|
||||||
|
color_map = {
|
||||||
|
'<{ut2}'.format(ut2=hrzones[1]):'gray',
|
||||||
|
hrzones[1]:'lime',
|
||||||
|
hrzones[2]:'yellow',
|
||||||
|
hrzones[3]:'blue',
|
||||||
|
hrzones[4]:'purple',
|
||||||
|
hrzones[5]:'red',
|
||||||
|
}
|
||||||
|
|
||||||
|
zones_order = [
|
||||||
|
'<{ut2}'.format(ut2=hrzones[1]),
|
||||||
|
hrzones[1],
|
||||||
|
hrzones[2],
|
||||||
|
hrzones[3],
|
||||||
|
hrzones[4],
|
||||||
|
hrzones[5]
|
||||||
|
]
|
||||||
|
|
||||||
df = pd.DataFrame(data)
|
df = pd.DataFrame(data)
|
||||||
|
if totaldays >= 30:
|
||||||
|
df.drop('minutes',inplace=True,axis='columns')
|
||||||
|
else:
|
||||||
|
df.drop('hours',inplace=True,axis='columns')
|
||||||
|
|
||||||
|
|
||||||
source = ColumnDataSource(df)
|
source = ColumnDataSource(df)
|
||||||
|
|
||||||
@@ -6723,19 +6758,14 @@ def interactive_zoneschart(data,startdate,enddate):
|
|||||||
hv.extension('bokeh')
|
hv.extension('bokeh')
|
||||||
|
|
||||||
|
|
||||||
table = hv.Table(df,[
|
bars = hv.Bars(df, kdims = ['date','zones']).aggregate(function=np.sum).redim.values(zones=zones_order)
|
||||||
('date','Date'),
|
|
||||||
('minutes','minutes'),
|
|
||||||
('zones','zones')]
|
|
||||||
)
|
|
||||||
|
|
||||||
bars = hv.Bars(df, kdims = ['date','zones']).aggregate(function=np.sum)
|
|
||||||
|
|
||||||
#bars = table.to.bars(['date','zones'],['minutes'])
|
#bars = table.to.bars(['date','zones'],['minutes'])
|
||||||
bars.opts(
|
bars.opts(
|
||||||
opts.Bars(cmap=colors,show_legend=True,stacked=True,
|
opts.Bars(cmap=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=False)
|
legend_position='bottom',
|
||||||
|
show_frame=False)
|
||||||
)
|
)
|
||||||
|
|
||||||
p = hv.render(bars)
|
p = hv.render(bars)
|
||||||
|
|||||||
@@ -15,16 +15,32 @@
|
|||||||
|
|
||||||
<h1>Training Zones</h1>
|
<h1>Training Zones</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{ the_script | safe }}
|
{{ the_script | safe }}
|
||||||
|
|
||||||
<ul class="main-content">
|
<ul class="main-content">
|
||||||
<li class="grid_4">
|
<li class="grid_4">
|
||||||
<div id="theplot" class="flexplot">
|
<div id="id_chart">
|
||||||
{{ the_div|safe }}
|
{{ the_div|safe }}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="grid_4">
|
||||||
|
<p>
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<table>
|
||||||
|
{{ form.as_table }}
|
||||||
|
</table>
|
||||||
|
<input class="button" type="submit" value="Select Dates">
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
|
|||||||
@@ -1061,14 +1061,22 @@ def trainingzones_view(request,userid=0,mode='rower',
|
|||||||
|
|
||||||
r = getrequestrower(request,userid=userid)
|
r = getrequestrower(request,userid=userid)
|
||||||
|
|
||||||
startdate,enddate = get_dates_timeperiod(request)
|
|
||||||
enddate = timezone.now()
|
enddate = timezone.now()
|
||||||
startdate = enddate-datetime.timedelta(days=29)
|
startdate = enddate-datetime.timedelta(days=365)
|
||||||
|
|
||||||
|
form = DateRangeForm()
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = DateRangeForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
startdate = form.cleaned_data['startdate']
|
||||||
|
enddate = form.cleaned_data['enddate']
|
||||||
|
|
||||||
|
|
||||||
data = get_zones_report(r,startdate,enddate)
|
data = get_zones_report(r,startdate,enddate)
|
||||||
|
|
||||||
|
|
||||||
script, div = interactive_zoneschart(data,startdate,enddate)
|
script, div = interactive_zoneschart(r,data,startdate,enddate)
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
@@ -1088,6 +1096,7 @@ def trainingzones_view(request,userid=0,mode='rower',
|
|||||||
'rower':r,
|
'rower':r,
|
||||||
'the_script':script,
|
'the_script':script,
|
||||||
'the_div':div,
|
'the_div':div,
|
||||||
|
'form':form,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user