From 988da6ded8dcdafbf6b49baef8a70647caa33a24 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Sun, 10 May 2020 14:17:54 +0200
Subject: [PATCH] adding bar chart
---
rowers/interactiveplots.py | 36 +++++++++++++++++++++++++++--------
rowers/templates/history.html | 14 ++++++++++++--
rowers/views/analysisviews.py | 3 +++
3 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py
index c657a2da..f1f79cbe 100644
--- a/rowers/interactiveplots.py
+++ b/rowers/interactiveplots.py
@@ -26,7 +26,7 @@ from bokeh.models import CustomJS,Slider, TextInput,BoxAnnotation
from bokeh.resources import CDN,INLINE
from bokeh.embed import components
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 column as layoutcolumn
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['angle'] = data['value']/data['value'].sum() * 2*pi
if len(datadict)>2:
- data['color'] = Category20c[len(datadict)]
+ data['color'] = Category10[len(datadict)]
elif len(datadict)==2:
data['color'] = ['orange','lightblue']
else:
@@ -414,6 +414,13 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
seen = ['seen']
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:
aantal=1
@@ -432,9 +439,15 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
for w in workouts:
dd = w.date.strftime('%m/%d')
dd2 = w.date.strftime('%Y/%m/%d')
+ dd3 = w.date.strftime('%Y/%m')
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)
links.append(
"{siteurl}/rowers/workout/{code}/".format(
@@ -451,21 +464,25 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
try:
d = utc.localize(startdate)
- except ValueError:
+ except (ValueError,AttributeError):
d = startdate
try:
enddate = utc.localize(enddate)
- except ValueError:
+ except (ValueError,AttributeError):
pass
# add dates with no activity
while d<=enddate:
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)
links.append('')
types.append('rower')
@@ -489,6 +506,9 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type',toolbar_lo
'link':links,
}
+ types_ind = list(set(types))
+
+
df = pd.DataFrame(thedict)
source = ColumnDataSource(df)
diff --git a/rowers/templates/history.html b/rowers/templates/history.html
index b9539700..480592b2 100644
--- a/rowers/templates/history.html
+++ b/rowers/templates/history.html
@@ -23,7 +23,10 @@
{{ tscript|safe}}
-
+
+
+
+
+
+
+
+
{{ tdiv|safe }}
@@ -143,11 +150,14 @@
var div = json.div;
var totalsdict = json.totalsdict
var listofdicts = json.listofdicts
+ var activities_script = json.activities_script
+ var activities_chart = json.activities_chart
$("#id_sitready").remove();
$("#id_chart").append(div);
- console.log(div);
// $("#id_script").append(""+script+"");
$("#id_script").append(script);
+ $("#id_activities").append(activities_chart)
+ $("#activities_script").append(activities_script)
$("#total_hr").append(totalsdict.hrmean);
$("#total_maxhr").append(totalsdict.hrmax);
$("#total_power").append(totalsdict.powermean);
diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py
index 902b8a29..0c383938 100644
--- a/rowers/views/analysisviews.py
+++ b/rowers/views/analysisviews.py
@@ -4907,6 +4907,7 @@ def history_view_data(request,userid=0):
totalsdict['nrworkouts'] = g_workouts.count()
# activity chart
+ activity_script, activity_div = interactive_activitychart(g_workouts,startdate,enddate)
# interactive hr pie chart
if typeselect == 'All':
@@ -4933,4 +4934,6 @@ def history_view_data(request,userid=0):
'div':totaldiv,
'totalsdict':totalsdict,
'listofdicts':listofdicts,
+ 'activities_script':activity_script,
+ 'activities_chart':activity_div,
})