From cd94649e0bba2048ca82834012d5befe9b508362 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sat, 6 Jan 2018 09:59:18 +0100 Subject: [PATCH] bug fix order of activity chart --- rowers/interactiveplots.py | 16 ++++++++++-- rowers/views.py | 50 ++++++++++++++++++++++++++------------ 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 57405046..49d8cb7f 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -13,6 +13,7 @@ import itertools from bokeh.plotting import figure, ColumnDataSource, Figure,curdoc from bokeh.models import CustomJS,Slider, TextInput,BoxAnnotation from bokeh.charts import Histogram,HeatMap,Area,BoxPlot,Bar +from bokeh.charts.attributes import CatAttr from bokeh.resources import CDN,INLINE from bokeh.embed import components from bokeh.layouts import layout,widgetbox @@ -227,6 +228,7 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): return "","" dates = [] + dates_sorting = [] types = [] rowers = [] durations = [] @@ -234,8 +236,10 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): for w in workouts: if w.privacy == 'visible': dd = w.date.strftime('%m/%d') + dd2 = w.date.strftime('%Y/%m/%d') du = w.duration.hour*60+w.duration.minute dates.append(dd) + dates_sorting.append(dd2) durations.append(du) types.append(w.workouttype) try: @@ -253,9 +257,10 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): except ValueError: pass - + # add dates with no activity while d<=enddate: dates.append(d.strftime('%m/%d')) + dates_sorting.append(d.strftime('%Y/%m/%d')) durations.append(0) types.append('rower') rowers.append('Sander') @@ -263,12 +268,19 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): df = pd.DataFrame({ 'date':dates, + 'date_sorting':dates_sorting, 'duration':durations, 'type':types, 'rower':rowers, }) + + df.sort_values('date_sorting',inplace=True) - p = Bar(df,'date',values='duration',title='Activity', + p = Bar(df,values='duration', + label = CatAttr(columns=['date'], sort=False), + xlabel='Date', + ylabel='Time', + title='Activity', stack=stack, plot_width=350, plot_height=250, diff --git a/rowers/views.py b/rowers/views.py index 759b49a9..5364fbdc 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -2957,9 +2957,15 @@ def histo(request,theuser=0, if 'options' in request.session: options = request.session['options'] - workouttypes = options['workouttypes'] - includereststrokes = options['includereststrokes'] - waterboattype = options['waterboattype'] + try: + workouttypes = options['workouttypes'] + includereststrokes = options['includereststrokes'] + waterboattype = options['waterboattype'] + except KeyError: + workouttypes = ['water','rower','dynamic','slides'] + waterboattype = ['1x','2x','2-','4x','4-','8+'] + includereststrokes = False + workstrokesonly = not includereststrokes @@ -5760,15 +5766,25 @@ def boxplot_view_data(request,userid=0, if 'options' in request.session: options = request.session['options'] - - includereststrokes = options['includereststrokes'] - spmmin = options['spmmin'] - spmmax = options['spmmax'] - workmin = options['workmin'] - workmax = options['workmax'] - ids = options['ids'] - userid = options['userid'] - plotfield = options['plotfield'] + + try: + includereststrokes = options['includereststrokes'] + spmmin = options['spmmin'] + spmmax = options['spmmax'] + workmin = options['workmin'] + workmax = options['workmax'] + ids = options['ids'] + userid = options['userid'] + plotfield = options['plotfield'] + except KeyError: + includereststrokes = False + spmmin = 15 + spmmax = 55 + workmin = 0 + workmax = 55 + ids = [] + userid = 0 + plotfield = 'spm' workstrokesonly = not includereststrokes @@ -5840,8 +5856,13 @@ def boxplot_view(request,userid=0, if 'options' in request.session: options = request.session['options'] + + try: + includereststrokes = options['includereststrokes'] + except KeyError: + includereststrokes = False + options['includereststrokes'] = False - includereststrokes = options['includereststrokes'] workstrokesonly = not includereststrokes if userid==0: @@ -5960,7 +5981,6 @@ def workouts_view(request,message='',successmessage='', except ValueError: activity_enddate = enddate - if teamid: try: theteam = Team.objects.get(id=teamid) @@ -6027,7 +6047,7 @@ def workouts_view(request,message='',successmessage='', stack='rower' else: stack='type' - + script,div = interactive_activitychart(g_workouts, activity_startdate, activity_enddate,