# HG changeset patch # User Dennis Fink # Date 2016-03-02 23:43:10 # Node ID 8c3fc026b081e00f2336904422214d074f1681a2 # Parent 5ab361a51ad07c52bff09d227eeec7a7f6fb0776 Begin selectable dates in charts diff --git a/ennstatus/data/views.py b/ennstatus/data/views.py --- a/ennstatus/data/views.py +++ b/ennstatus/data/views.py @@ -14,11 +14,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import json + from collections import defaultdict from flask import Blueprint, jsonify from ennstatus.status.functions import split_all_servers_to_types +from ennstatus.donate.functions import all_csv_to_dict, year_sum, month_sum data_page = Blueprint('data', __name__) @@ -40,3 +43,30 @@ def worldmap(): countries['max'] = maximum return jsonify(countries) + + +@data_page.route('/year') +def yeardata(): + data = all_csv_to_dict() + data = year_sum(data) + datalist = [] + + for key, values in data.items(): + datalist.append({"key": key, "value": float(values)}) + datalist.sort(key=lambda x: x["key"]) + + return json.dumps(datalist) + + +@data_page.route('/month') +def monthdata(): + data = all_csv_to_dict() + data = month_sum(data) + data_list = [] + + for key, values in data.items(): + data_list.append({"key": key, "value": float(values)}) + + data_list.sort(key=lambda x: x["key"]) + + return json.dumps(data_list) diff --git a/ennstatus/donate/views.py b/ennstatus/donate/views.py --- a/ennstatus/donate/views.py +++ b/ennstatus/donate/views.py @@ -32,8 +32,6 @@ from ennstatus.donate.functions import ( get_highest_donation, get_median_donation, get_mode_donation, - year_sum, - month_sum, ) from ennstatus.root.forms import BPMForm @@ -140,6 +138,7 @@ def received(): @donate_page.route('/statistics') def statistics(): data = all_csv_to_dict() + all_years_mean = format_decimal( get_all_years_mean(data), locale='de' @@ -167,6 +166,12 @@ def statistics(): locale='de' ) + dates = [name for name in get_choices()] + dates.sort() + + last_default_date = dates[-1] + first_default_date = dates[-12] + return render_template('donate/statistics.html', all_years_mean=all_years_mean, month_mean=month_mean, @@ -174,31 +179,8 @@ def statistics(): best_month=best_month, highest_donation=highest_donation, median_donation=median_donation, - mode_donation=mode_donation + mode_donation=mode_donation, + dates=dates, + first_default_date=first_default_date, + last_default_date=last_default_date ) - -@donate_page.route('/data/year') -def yeardata(): - data = all_csv_to_dict() - data = year_sum(data) - datalist = [] - - for key, values in data.items(): - datalist.append({"key": key, "value": float(values)}) - datalist.sort(key=lambda x: x["key"]) - - return json.dumps(datalist) - - -@donate_page.route('/data/month') -def monthdata(): - data = all_csv_to_dict() - data = month_sum(data) - data_list = [] - - for key, values in data.items(): - data_list.append({"key": key, "value": float(values)}) - - data_list.sort(key=lambda x: x["key"]) - - return json.dumps(data_list) diff --git a/ennstatus/static/js/barcharts.js b/ennstatus/static/js/barcharts.js --- a/ennstatus/static/js/barcharts.js +++ b/ennstatus/static/js/barcharts.js @@ -34,7 +34,7 @@ function setup(ywidth, yheight, mwidth, } function draw(ywidth, yheight, mwidth, mheight) { - d3.json("/donate/data/year", function(err, data) { + d3.json("/data/year", function(err, data) { var xscale = d3.scale.ordinal().rangeRoundBands([0, ywidth], .1); xscale.domain(data.map(function(d) { return d.key; })); var yscale = d3.scale.linear().range([yheight, 0]); @@ -83,11 +83,21 @@ function draw(ywidth, yheight, mwidth, m .on("mouseout", tip.hide) }); - d3.json("/donate/data/month", function(err, data) { - var xscale = d3.scale.ordinal().rangeRoundBands([0, mwidth], .1); - xscale.domain(data.map(function(d) { return d.key })); + d3.json("/data/month", function(err, data) { + var firstdate = d3.select("#monthfirstdate").node().value; + var lastdate = d3.select("#monthlastdate").node().value; + var newdata = []; + for (var key in data) { + if (data[key]["key"] >= firstdate && data[key]["key"] <= lastdate) { + console.log(key) + newdata.push(data[key]) + } + } + + var xscale = d3.scale.ordinal().rangeRoundBands([0, mwidth - (newdata.length - 3) * 5], .1); + xscale.domain(newdata.map(function(d) { return d.key })); var yscale = d3.scale.linear().range([mheight, 0]); - yscale.domain([0, d3.max(data, function(d) { return d.value; })]); + yscale.domain([0, d3.max(newdata, function(d) { return d.value; })]); var key = function(d) { return d.key; }; var xaxis = d3.svg.axis() @@ -111,7 +121,7 @@ function draw(ywidth, yheight, mwidth, m .style("text-anchor", "end"); monthchart.selectAll("rect") - .data(data, key) + .data(newdata, key) .enter() .append("rect") .attr("class", "bar") diff --git a/ennstatus/templates/donate/statistics.html b/ennstatus/templates/donate/statistics.html --- a/ennstatus/templates/donate/statistics.html +++ b/ennstatus/templates/donate/statistics.html @@ -58,6 +58,22 @@
Donations per month
+
+
+ + + + +
+