From 454bcde22ff18800287d824955b15b25d490d32e Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 26 Aug 2019 18:08:10 +0200 Subject: [PATCH] alerts stats on alerts page --- rowers/alerts.py | 14 +++++++++++--- rowers/templates/alerts.html | 28 ++++++++++++++++++++++++++++ rowers/templatetags/rowerfilters.py | 7 +++++++ rowers/views/analysisviews.py | 11 +++++++++++ 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/rowers/alerts.py b/rowers/alerts.py index 0865d07e..fdf00366 100644 --- a/rowers/alerts.py +++ b/rowers/alerts.py @@ -95,9 +95,9 @@ def alert_get_stats(alert,nperiod=0): columns += condition.metric workouts = Workout.objects.filter(date__gte=startdate,date__lte=enddate,user=alert.rower, - workouttype=alert.workouttype) + workouttype=alert.workouttype,duplicate=False) ids = [w.id for w in workouts] - + df = getsmallrowdata_db(columns,ids=ids,doclean=True,workstrokesonly=workstrokesonly) if df.empty: @@ -107,6 +107,7 @@ def alert_get_stats(alert,nperiod=0): 'enddate':enddate, 'nr_strokes':0, 'nr_strokes_qualifying':0, + 'percentage':0, } # check if filters are in columns list @@ -137,6 +138,7 @@ def alert_get_stats(alert,nperiod=0): 'enddate':enddate, 'nr_strokes':0, 'nr_strokes_qualifying':0, + 'percentage':0, } @@ -160,13 +162,19 @@ def alert_get_stats(alert,nperiod=0): df2 = df[mask].copy() nr_strokes_qualifying = len(df2) + + if nr_strokes > 0: + percentage = int(100.*nr_strokes_qualifying/nr_strokes) + else: + percentage = 0 return { 'workouts':len(workouts), 'startdate':startdate, 'enddate':enddate, 'nr_strokes':nr_strokes, - 'nr_strokes_qualifying':nr_strokes_qualifying + 'nr_strokes_qualifying':nr_strokes_qualifying, + 'percentage': percentage, } # run alert report diff --git a/rowers/templates/alerts.html b/rowers/templates/alerts.html index 20bb05de..e0cad516 100644 --- a/rowers/templates/alerts.html +++ b/rowers/templates/alerts.html @@ -12,6 +12,33 @@
    {% if alerts %} + {% for alert in alerts %} +
  • +

    {{ alert.name }}

    + + + + + + +
    + +
    +

    {{ stats|alertstatspercentage:forloop.counter }}%

    +
    +
    +

    + {{ alert.description }} +

    +

    + Workout type: {{ alert.workouttype }} +

    +

    + Next Run: {{ alert.next_run }} +

    +
  • + {% endfor %}
  • @@ -68,6 +95,7 @@ {% endblock %} + {% block sidebar %} {% include 'menu_analytics.html' %} {% endblock %} diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index f06dabfd..82a4afb6 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -68,6 +68,13 @@ def strfdelta(tdelta): from rowers.teams import rower_get_managers +@register.filter +def alertstatspercentage(list,i): + alertstats = list[i-1] + print(alertstats) + + return alertstats["percentage"] + @register.filter def is_coach(rower,rowers): for r in rowers: diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index ff142a34..c8d68209 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -4323,6 +4323,11 @@ def alerts_view(request,userid=0): r = getrequestrower(request,userid=userid) alerts = Alert.objects.filter(rower=r).order_by('next_run') + + stats = [] + + for alert in alerts: + stats.append(alert_get_stats(alert)) breadcrumbs = [ { @@ -4340,6 +4345,7 @@ def alerts_view(request,userid=0): 'breadcrumbs':breadcrumbs, 'alerts':alerts, 'rower':r, + 'stats':stats, }) # alert create view @@ -4443,6 +4449,11 @@ def alert_report_view(request,id=0,userid=0,nperiod=0): stats = alert_get_stats(alert,nperiod=nperiod) + if request.is_ajax(): + return JSONResponse({ + "stats":stats, + }) + breadcrumbs = [ { 'url':'/rowers/analysis',