aboutsummaryrefslogtreecommitdiffstats
path: root/public/javascripts/stats-graphs.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/javascripts/stats-graphs.js')
-rw-r--r--public/javascripts/stats-graphs.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/public/javascripts/stats-graphs.js b/public/javascripts/stats-graphs.js
new file mode 100644
index 000000000..73e19a6fc
--- /dev/null
+++ b/public/javascripts/stats-graphs.js
@@ -0,0 +1,87 @@
+/* From http://stackoverflow.com/a/10284006/223092 */
+function zip(arrays) {
+ return arrays[0].map(function(_,i){
+ return arrays.map(function(array){return array[i]})
+ });
+}
+
+$(document).ready(function() {
+ $.each(graphs_data, function(index, graph_data) {
+ var graph_id = graph_data.id,
+ dataset,
+ plot,
+ graph_data,
+ graph_div = $('#' + graph_id);
+
+ if (!graph_data.x_values) {
+ /* Then there's no data for this graph */
+ return true;
+ }
+
+ graph_div.css('width', '700px');
+ graph_div.css('height', '400px');
+
+ dataset = [
+ {'color': 'orange',
+ 'bars': {
+ 'show': true,
+ 'barWidth': 0.5,
+ 'align': 'center'
+ },
+ 'data': zip([graph_data.x_values,
+ graph_data.y_values])
+ }
+ ]
+
+ if (graph_data.errorbars) {
+ dataset.push({
+ 'color': 'orange',
+ 'points': {
+ // Don't show these, just draw error bars:
+ 'radius': 0,
+ 'errorbars': 'y',
+ 'yerr': {
+ 'asymmetric': true,
+ 'show': true,
+ 'upperCap': "-",
+ 'lowerCap': "-",
+ 'radius': 5
+ }
+ },
+ 'data': zip([graph_data.x_values,
+ graph_data.y_values,
+ graph_data.cis_below,
+ graph_data.cis_above])
+ });
+ }
+
+ options = {
+ 'xaxis': {
+ 'ticks': graph_data.x_ticks,
+ },
+ 'yaxis': {
+ 'min': 0,
+ 'max': graph_data.y_max
+ },
+ 'xaxes': [{
+ 'axisLabel': graph_data.x_axis,
+ 'axisLabelPadding': 20,
+ 'axisLabelColour': 'black'
+ }],
+ 'yaxes': [{
+ 'axisLabel': graph_data.y_axis,
+ 'axisLabelPadding': 20,
+ 'axisLabelColour': 'black'
+ }],
+ 'series': {
+ 'lines': {
+ 'show': false
+ }
+ },
+ }
+
+ plot = $.plot(graph_div,
+ dataset,
+ options);
+ });
+});