From bcec57dafe6ab7a043979f852a2662ffa91c0aac Mon Sep 17 00:00:00 2001 From: bbe Date: Mon, 5 Oct 2020 10:20:03 +0200 Subject: [PATCH 1/2] Display total row in report output. --- helpdesk/templates/helpdesk/report_output.html | 4 ++-- helpdesk/views/staff.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/helpdesk/templates/helpdesk/report_output.html b/helpdesk/templates/helpdesk/report_output.html index 6e036586..ea6e2fe6 100644 --- a/helpdesk/templates/helpdesk/report_output.html +++ b/helpdesk/templates/helpdesk/report_output.html @@ -96,7 +96,7 @@ Morris.Line({ element: 'chart-content', data: {% autoescape on %}{{ morrisjs_data|safe }}{% endautoescape %}, xkey: 'x', - ykeys: [{% for d in data %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], + ykeys: [{% for d in data|slice:":-1" %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], labels: [{% for n in series_names %}"{{ n }}"{% if not forloop.last %}, {% endif %}{% endfor %}], xLabels: "month" }); @@ -110,7 +110,7 @@ Morris.Bar({ element: 'chart-content', data: {% autoescape on %}{{ morrisjs_data|safe }}{% endautoescape %}, xkey: 'x', - ykeys: [{% for d in data %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], + ykeys: [{% for d in data|slice:":-1" %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], labels: [{% for n in series_names %}"{{ n }}"{% if not forloop.last %}, {% endif %}{% endfor %}] }); diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py index ba7ed16a..02c21580 100644 --- a/helpdesk/views/staff.py +++ b/helpdesk/views/staff.py @@ -1309,11 +1309,17 @@ def run_report(request, report): column_headings = [col1heading] + possible_options + # Prepare a dict to store totals for each possible option + totals = {} # Pivot the data so that 'header1' fields are always first column # in the row, and 'possible_options' are always the 2nd - nth columns. for item in header1: data = [] for hdr in possible_options: + if hdr not in totals.keys(): + totals[hdr] = summarytable[item, hdr] + else: + totals[hdr] += summarytable[item, hdr] data.append(summarytable[item, hdr]) table.append([item] + data) @@ -1332,6 +1338,12 @@ def run_report(request, report): for series in table: series_names.append(series[0]) + # Add total row to table + total_data = [] + for hdr in possible_options: + total_data.append(str(totals[hdr])) + table.append(['Total'] + total_data) + return render(request, 'helpdesk/report_output.html', { 'title': title, 'charttype': charttype, From ecc7dcdc1729c0340174e2dd5651fce6d192df1b Mon Sep 17 00:00:00 2001 From: Benbb96 Date: Thu, 8 Oct 2020 00:48:03 +0200 Subject: [PATCH 2/2] Fix tests --- helpdesk/templates/helpdesk/report_output.html | 8 ++++++-- helpdesk/views/staff.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/helpdesk/templates/helpdesk/report_output.html b/helpdesk/templates/helpdesk/report_output.html index ea6e2fe6..5bbc81ca 100644 --- a/helpdesk/templates/helpdesk/report_output.html +++ b/helpdesk/templates/helpdesk/report_output.html @@ -75,6 +75,10 @@ {% for d in data %} {% for f in d %}{{ f }}{% endfor %} {% endfor %} + {# Total row #} + + {% for f in total_data %}{{ f }}{% endfor %} + @@ -96,7 +100,7 @@ Morris.Line({ element: 'chart-content', data: {% autoescape on %}{{ morrisjs_data|safe }}{% endautoescape %}, xkey: 'x', - ykeys: [{% for d in data|slice:":-1" %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], + ykeys: [{% for d in data %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], labels: [{% for n in series_names %}"{{ n }}"{% if not forloop.last %}, {% endif %}{% endfor %}], xLabels: "month" }); @@ -110,7 +114,7 @@ Morris.Bar({ element: 'chart-content', data: {% autoescape on %}{{ morrisjs_data|safe }}{% endautoescape %}, xkey: 'x', - ykeys: [{% for d in data|slice:":-1" %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], + ykeys: [{% for d in data %}{{ forloop.counter0 }}{% if not forloop.last %}, {% endif %}{% endfor %}], labels: [{% for n in series_names %}"{{ n }}"{% if not forloop.last %}, {% endif %}{% endfor %}] }); diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py index 02c21580..292c3d30 100644 --- a/helpdesk/views/staff.py +++ b/helpdesk/views/staff.py @@ -1339,15 +1339,15 @@ def run_report(request, report): series_names.append(series[0]) # Add total row to table - total_data = [] + total_data = ['Total'] for hdr in possible_options: total_data.append(str(totals[hdr])) - table.append(['Total'] + total_data) return render(request, 'helpdesk/report_output.html', { 'title': title, 'charttype': charttype, 'data': table, + 'total_data': total_data, 'headings': column_headings, 'series_names': series_names, 'morrisjs_data': morrisjs_data,