diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 6f2b42e0..57ed3723 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -354,6 +354,17 @@ def interactive_boxchart(datadf, fieldname, extratitle='', def interactive_planchart(data, startdate, enddate): + # data = data.melt(id_vars=['startdate'], value_vars=['executed', 'planned']) + + data = data.with_columns((pl.col("startdate").apply(lambda x: x.strftime("%Y-%m-%d"))).alias("startdate")) + data_dict = data.to_dicts() + chart_data = { + 'data': data_dict, + } + + script, div = get_chart("/plan", chart_data, debug=False) + return script, div + hv.extension('bokeh') yaxmaximum = data['executed'].max() diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 3ecda13e..dc2c4a08 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -25,6 +25,7 @@ from rowingdata import rower as rrower from rowingdata import rowingdata as rrdata import arrow import pandas as pd +import polars as pl import json # Python @@ -203,16 +204,8 @@ def get_execution_report(rower, startdate, enddate, plan=None): startdate__gte=enddate) else: # pragma: no cover plans = TrainingPlan.objects.filter(rowers__in=[rower]) - #plans2 = TrainingPlan.objects.filter( - # enddate__lte=enddate, startdate__lte=enddate, rowers__in=[rower]) - #plans = plans | plans2 - - #plans = plans.exclude(status=False).order_by("-enddate") if not plans: - # make week cycles here - # get monday before startdate - micros = [] else: sorted_plans = sorted(plans, key= lambda t: t.overlap(startdate,enddate)) @@ -313,7 +306,7 @@ def get_execution_report(rower, startdate, enddate, plan=None): planned += [plannedscore] executed += [actualscore] - data = pd.DataFrame({ + data = pl.DataFrame({ 'startdate': startdates, 'planned': planned, 'executed': executed, diff --git a/rowers/templates/trainingplan_chart.html b/rowers/templates/trainingplan_chart.html index 3b1c5c11..bd8b523e 100644 --- a/rowers/templates/trainingplan_chart.html +++ b/rowers/templates/trainingplan_chart.html @@ -6,25 +6,22 @@ {% block main %} - - - +

Training Plan - {{ plan.name }}

-{{ the_script | safe }}
  • -
    - {{ the_div|safe }} -
    + {{ the_div|safe }}
+ +{{ the_script | safe }} + + {% endblock %} {% block scripts %} diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index e44609ac..eb0db639 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -3569,7 +3569,7 @@ def rower_trainingplan_execution_view(request, else: # pragma: no cover data, message = get_execution_report(r, startdate, enddate) - if not data.empty: + if not data.is_empty(): script, div = interactive_planchart(data, startdate, enddate) else: # pragma: no cover script = ''