diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-06-13 17:23:48 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-06-13 17:46:33 +0200 |
commit | 09cd0fbcad7b62fbb7cbfb5adfbf78406db2555a (patch) | |
tree | c5df6008b289ec80f217b2c696294059287a8189 /hyperkitty/static/js/hyperkitty-overview.js | |
parent | 56d884568d52d42c6a18905fb7b2f004b1a6b296 (diff) | |
download | hyperkitty-09cd0fbcad7b62fbb7cbfb5adfbf78406db2555a.tar.gz hyperkitty-09cd0fbcad7b62fbb7cbfb5adfbf78406db2555a.tar.xz hyperkitty-09cd0fbcad7b62fbb7cbfb5adfbf78406db2555a.zip |
Split the JS code into more manageable chunks
Diffstat (limited to 'hyperkitty/static/js/hyperkitty-overview.js')
-rw-r--r-- | hyperkitty/static/js/hyperkitty-overview.js | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/hyperkitty/static/js/hyperkitty-overview.js b/hyperkitty/static/js/hyperkitty-overview.js new file mode 100644 index 0000000..bf88118 --- /dev/null +++ b/hyperkitty/static/js/hyperkitty-overview.js @@ -0,0 +1,107 @@ +/* + * Copyright (C) 1998-2012 by the Free Software Foundation, Inc. + * + * This file is part of HyperKitty. + * + * HyperKitty is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * HyperKitty is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * HyperKitty. If not, see <http://www.gnu.org/licenses/>. + * + * Author: Aurelien Bompard <abompard@fedoraproject.org> + */ + + +/* + * Recent activity graph + */ +function activity_graph(elem_id, dates, counts, baseurl) { + function merge(dates, counts) { + result = [] + for(i = 0; i < dates.length; i++) { + result.push({ + "date": dates[i], + "count": counts[i] + }) + } + return result; + } + var data = merge(dates, counts); + var margin = {top: 20, right: 20, bottom: 100, left: 50}, + width = 540 - margin.left - margin.right, + height = 330 - margin.top - margin.bottom; + + var format_in = d3.time.format("%Y-%m-%d"); + var format_out = d3.time.format("%m-%d"); + + var x = d3.time.scale() + .range([0, width]); + + var y = d3.scale.linear() + .range([height, 0]); + + var xAxis = d3.svg.axis() + .scale(x) + .orient("bottom") + .tickFormat(format_out) + .ticks(d3.time.days, 2); + + var yAxis = d3.svg.axis() + .scale(y) + .orient("left") + .ticks(5) + .tickSubdivide(1); + + var area = d3.svg.area() + .x(function(d) { return x(d.date); }) + .y0(height) + .y1(function(d) { return y(d.count); }); + + var svg = d3.select(elem_id).append("svg") + .attr("width", width + margin.left + margin.right) + .attr("height", height + margin.top + margin.bottom) + .append("g") + .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); + + data.forEach(function(d) { + d.date = format_in.parse(d.date); + d.count = parseInt(d.count); + }); + + x.domain(d3.extent(data, function(d) { return d.date; })); + y.domain([0, d3.max(data, function(d) { return d.count; })]); + + svg.append("path") + .datum(data) + .attr("class", "area") + .attr("d", area); + + svg.append("g") + .attr("class", "x axis") + .attr("transform", "translate(0," + height + ")") + .call(xAxis) + .selectAll("text") + .attr("y", -5) + .attr("x", -30) + .attr("transform", function(d) { + return "rotate(-90)" + }); + + svg.append("g") + .attr("class", "y axis") + .call(yAxis) + .append("text") + .attr("transform", "rotate(-90)") + .attr("y", 6) + .attr("dy", ".71em") + .style("text-anchor", "end") + .text("Messages"); +} |