Private
Public Access
1
0

adding bar chart

This commit is contained in:
Sander Roosendaal
2020-05-10 14:17:54 +02:00
parent 6d648c7c18
commit 988da6ded8
3 changed files with 43 additions and 10 deletions

View File

@@ -26,7 +26,7 @@ from bokeh.models import CustomJS,Slider, TextInput,BoxAnnotation
from bokeh.resources import CDN,INLINE from bokeh.resources import CDN,INLINE
from bokeh.embed import components from bokeh.embed import components
from bokeh.layouts import layout,widgetbox from bokeh.layouts import layout,widgetbox
from bokeh.palettes import Category20c from bokeh.palettes import Category20c,Category10
from bokeh.layouts import row as layoutrow from bokeh.layouts import row as layoutrow
from bokeh.layouts import column as layoutcolumn from bokeh.layouts import column as layoutcolumn
from bokeh.models import LinearAxis,LogAxis,Range1d,DatetimeTickFormatter,HoverTool from bokeh.models import LinearAxis,LogAxis,Range1d,DatetimeTickFormatter,HoverTool
@@ -278,7 +278,7 @@ def interactive_workouttype_piechart(workouts):
data = pd.Series(datadict).reset_index(name='value').rename(columns={'index':'type'}) data = pd.Series(datadict).reset_index(name='value').rename(columns={'index':'type'})
data['angle'] = data['value']/data['value'].sum() * 2*pi data['angle'] = data['value']/data['value'].sum() * 2*pi
if len(datadict)>2: if len(datadict)>2:
data['color'] = Category20c[len(datadict)] data['color'] = Category10[len(datadict)]
elif len(datadict)==2: elif len(datadict)==2:
data['color'] = ['orange','lightblue'] data['color'] = ['orange','lightblue']
else: else:
@@ -414,6 +414,13 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
seen = ['seen'] seen = ['seen']
idseen = [] idseen = []
startdate = datetime.datetime(year=startdate.year,month=startdate.month,day=startdate.day)
enddate = datetime.datetime(year=enddate.year,month=enddate.month,day=enddate.day)
duration = enddate-startdate
totaldays = duration.total_seconds()/(24*3600)
for w in workouts: for w in workouts:
aantal=1 aantal=1
@@ -432,9 +439,15 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
for w in workouts: for w in workouts:
dd = w.date.strftime('%m/%d') dd = w.date.strftime('%m/%d')
dd2 = w.date.strftime('%Y/%m/%d') dd2 = w.date.strftime('%Y/%m/%d')
dd3 = w.date.strftime('%Y/%m')
du = w.duration.hour*60+w.duration.minute du = w.duration.hour*60+w.duration.minute
dates.append(dd)
dates_sorting.append(dd2) if totaldays<30:
dates.append(dd)
dates_sorting.append(dd2)
else:
dates.append(dd3)
dates_sorting.append(dd3)
durations.append(du) durations.append(du)
links.append( links.append(
"{siteurl}/rowers/workout/{code}/".format( "{siteurl}/rowers/workout/{code}/".format(
@@ -451,21 +464,25 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
try: try:
d = utc.localize(startdate) d = utc.localize(startdate)
except ValueError: except (ValueError,AttributeError):
d = startdate d = startdate
try: try:
enddate = utc.localize(enddate) enddate = utc.localize(enddate)
except ValueError: except (ValueError,AttributeError):
pass pass
# add dates with no activity # add dates with no activity
while d<=enddate: while d<=enddate:
dd = d.strftime('%d') dd = d.strftime('%d')
dates.append(d.strftime('%m/%d'))
dates_sorting.append(d.strftime('%Y/%m/%d')) if totaldays<30:
dates.append(d.strftime('%m/%d'))
dates_sorting.append(d.strftime('%Y/%m/%d'))
else:
dates.append(d.strftime('%Y/%m'))
dates_sorting.append(d.strftime('%Y/%m'))
durations.append(0) durations.append(0)
links.append('') links.append('')
types.append('rower') types.append('rower')
@@ -489,6 +506,9 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
'link':links, 'link':links,
} }
types_ind = list(set(types))
df = pd.DataFrame(thedict) df = pd.DataFrame(thedict)
source = ColumnDataSource(df) source = ColumnDataSource(df)

View File

@@ -23,7 +23,10 @@
<div id="t_script"> <div id="t_script">
{{ tscript|safe}} {{ tscript|safe}}
</div> </div>
<div id="activities_script">
</div>
<ul class="main-content"> <ul class="main-content">
<li class="grid_2"> <li class="grid_2">
@@ -81,6 +84,10 @@
</table> </table>
</p> </p>
</li> </li>
<li class="grid_2">
<div id="id_activities">
</div>
</li>
<li class="grid_2"> <li class="grid_2">
{{ tdiv|safe }} {{ tdiv|safe }}
</li> </li>
@@ -143,11 +150,14 @@
var div = json.div; var div = json.div;
var totalsdict = json.totalsdict var totalsdict = json.totalsdict
var listofdicts = json.listofdicts var listofdicts = json.listofdicts
var activities_script = json.activities_script
var activities_chart = json.activities_chart
$("#id_sitready").remove(); $("#id_sitready").remove();
$("#id_chart").append(div); $("#id_chart").append(div);
console.log(div);
// $("#id_script").append("<s"+"cript>"+script+"</s"+"cript>"); // $("#id_script").append("<s"+"cript>"+script+"</s"+"cript>");
$("#id_script").append(script); $("#id_script").append(script);
$("#id_activities").append(activities_chart)
$("#activities_script").append(activities_script)
$("#total_hr").append(totalsdict.hrmean); $("#total_hr").append(totalsdict.hrmean);
$("#total_maxhr").append(totalsdict.hrmax); $("#total_maxhr").append(totalsdict.hrmax);
$("#total_power").append(totalsdict.powermean); $("#total_power").append(totalsdict.powermean);

View File

@@ -4907,6 +4907,7 @@ def history_view_data(request,userid=0):
totalsdict['nrworkouts'] = g_workouts.count() totalsdict['nrworkouts'] = g_workouts.count()
# activity chart # activity chart
activity_script, activity_div = interactive_activitychart(g_workouts,startdate,enddate)
# interactive hr pie chart # interactive hr pie chart
if typeselect == 'All': if typeselect == 'All':
@@ -4933,4 +4934,6 @@ def history_view_data(request,userid=0):
'div':totaldiv, 'div':totaldiv,
'totalsdict':totalsdict, 'totalsdict':totalsdict,
'listofdicts':listofdicts, 'listofdicts':listofdicts,
'activities_script':activity_script,
'activities_chart':activity_div,
}) })