aboutsummaryrefslogtreecommitdiffstats
path: root/public/javascripts/stats-graphs.js
blob: 73e19a6fc7aded0b073b8ddbbc3097720f039863 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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);
    });
});