diff options
author | yvesf <yvesf-git@xapek.org> | 2011-07-24 11:05:42 +0200 |
---|---|---|
committer | yvesf <yvesf-git@xapek.org> | 2011-07-24 11:05:42 +0200 |
commit | 75017423563a18986aa096566d8a2969c32c3588 (patch) | |
tree | bd86ab746dd06f71ebd1b723e3bec754805e8736 /ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js | |
parent | a0382ecfbef32b47b7438170feaa7b81d7bc22db (diff) | |
download | ebus-alt-75017423563a18986aa096566d8a2969c32c3588.tar.gz ebus-alt-75017423563a18986aa096566d8a2969c32c3588.zip |
clean up file structure, use bottle soup plugin
Diffstat (limited to 'ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js')
-rw-r--r-- | ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js b/ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js new file mode 100644 index 0000000..a32fe31 --- /dev/null +++ b/ebus/webapp/static/lib/flot-0.7/jquery.flot.symbol.js @@ -0,0 +1,70 @@ +/* +Flot plugin that adds some extra symbols for plotting points. + +The symbols are accessed as strings through the standard symbol +choice: + + series: { + points: { + symbol: "square" // or "diamond", "triangle", "cross" + } + } + +*/ + +(function ($) { + function processRawData(plot, series, datapoints) { + // we normalize the area of each symbol so it is approximately the + // same as a circle of the given radius + + var handlers = { + square: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.rect(x - size, y - size, size + size, size + size); + }, + diamond: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) + var size = radius * Math.sqrt(Math.PI / 2); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y - size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x - size, y); + }, + triangle: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) + var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); + var height = size * Math.sin(Math.PI / 3); + ctx.moveTo(x - size/2, y + height/2); + ctx.lineTo(x + size/2, y + height/2); + if (!shadow) { + ctx.lineTo(x, y - height/2); + ctx.lineTo(x - size/2, y + height/2); + } + }, + cross: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); + } + } + + var s = series.points.symbol; + if (handlers[s]) + series.points.symbol = handlers[s]; + } + + function init(plot) { + plot.hooks.processDatapoints.push(processRawData); + } + + $.plot.plugins.push({ + init: init, + name: 'symbols', + version: '1.0' + }); +})(jQuery); |