diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index e1a1f0eb..9568069c 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -51,6 +51,7 @@ from rowers.courses import ( polygon_coord_center ) +from rowers import mytypes from rowers.models import course_spline import datetime @@ -234,7 +235,8 @@ def interactive_hr_piechart(df,rower,title): tools=TOOLS, ) - for start, end , legend, color in zip(source_starts, source_ends, source_legends, colors[0:len(source_starts)]): + for start, end , legend, color in zip(source_starts, source_ends, source_legends, + colors[0:len(source_starts)]): z.wedge(x=0, y=0, radius=1, start_angle=start, end_angle=end, color=color, legend=legend) @@ -249,6 +251,67 @@ def interactive_hr_piechart(df,rower,title): return components(z) +def interactive_workouttype_piechart(workouts): + if len(workouts) == 0: + return "","Not enough workouts to make a chart" + + datadict = {} + labels = [] + types = [] + + for w in workouts: + try: + datadict[w.workouttype] += 3600*w.duration.hour+60*w.duration.minute+w.duration.second + except KeyError: + datadict[w.workouttype] = 3600*w.duration.hour+60*w.duration.minute+w.duration.second + types += [w.workouttype] + try: + labels += [mytypes.workouttypes_ordered[w.workouttype]] + except KeyError: + labels += [w.workouttype] + + total = 0 + source_starts = [0] + source_ends = [] + for type in types: + total += datadict[type] + source_starts.append(total) + source_ends.append(total) + + source_ends.append(total) + + source_starts = pd.Series(source_starts)*2*pi/total + source_ends = pd.Series(source_ends)*2*pi/total + + size = 350 + TOOLS = 'save' + + z = figure(title="Workout Types", x_range=(-1,1), y_range=(-1,1), width=size, height=size, + tools=TOOLS, + ) + + colors = palette + + print(source_ends) + print(labels) + + for start, end , legend, color in zip(source_starts, source_ends, labels, + colors[0:len(source_starts)]): + print(start,end,color,legend) + z.wedge(x=0, y=0, radius=1, start_angle=start, end_angle=end, color=color, legend=legend) + + + z.toolbar_location = 'right' + z.legend.location = 'top_right' + #z.legend.visible = False + z.axis.visible = False + z.xgrid.grid_line_color = None + z.ygrid.grid_line_color = None + z.outline_line_color = None + + return components(z) + + def interactive_boxchart(datadf,fieldname,extratitle='', spmmin=0,spmmax=0,workmin=0,workmax=0): diff --git a/rowers/templates/history.html b/rowers/templates/history.html index c7507a58..9f7c87b2 100644 --- a/rowers/templates/history.html +++ b/rowers/templates/history.html @@ -21,6 +21,10 @@