aboutsummaryrefslogtreecommitdiffstats
path: root/public/javascripts/stats-graphs.js
diff options
context:
space:
mode:
authorMark Longair <mhl@pobox.com>2013-10-15 16:14:09 +0100
committerMark Longair <mhl@pobox.com>2013-10-15 16:14:09 +0100
commitf4ddaf1de89ab5929eb0ad84ed579bb674c55d34 (patch)
tree05c750310c24f677178d58febed5e11be117f14f /public/javascripts/stats-graphs.js
parent41ec32e34392439f0f8ba78561a69223ac836920 (diff)
Add a tooltip to each bar of the public body stats graphs
Since the rotated public body names on the x-axis may be difficult to read, it's helpful to have them in a tooltip as well.
Diffstat (limited to 'public/javascripts/stats-graphs.js')
-rw-r--r--public/javascripts/stats-graphs.js36
1 files changed, 35 insertions, 1 deletions
diff --git a/public/javascripts/stats-graphs.js b/public/javascripts/stats-graphs.js
index 7afbd20c1..ff3d3a11a 100644
--- a/public/javascripts/stats-graphs.js
+++ b/public/javascripts/stats-graphs.js
@@ -11,7 +11,8 @@ $(document).ready(function() {
dataset,
plot,
graph_data,
- graph_div = $('#' + graph_id);
+ graph_div = $('#' + graph_id),
+ previousPoint = null;
if (!graph_data.x_values) {
/* Then there's no data for this graph */
@@ -97,5 +98,38 @@ $(document).ready(function() {
}
});
+ /* This code is adapted from:
+ http://www.flotcharts.org/flot/examples/interacting/ */
+
+ function showTooltip(x, y, contents) {
+ $('<div id="flot-tooltip">' + contents + '</div>').css({
+ 'position': 'absolute',
+ 'display': 'none',
+ 'top': y + 10,
+ 'left': x + 10,
+ 'border': '1px solid #fdd',
+ 'padding': '2px',
+ 'background-color': '#fee',
+ 'opacity': 0.80
+ }).appendTo("body").fadeIn(200);
+ }
+
+ graph_div.bind("plothover", function (event, pos, item) {
+ var escapedName, x, y;
+ if (item) {
+ if (previousPoint != item.dataIndex) {
+ previousPoint = item.dataIndex;
+ $("#flot-tooltip").remove();
+ escapedName = $('<div />').text(
+ graph_data.tooltips[item.dataIndex]).html();
+ showTooltip(item.pageX,
+ item.pageY,
+ escapedName);
+ }
+ } else {
+ $("#flot-tooltip").remove();
+ previousPoint = null;
+ }
+ });
});
});