dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
95 lines (86 loc) • 11.9 kB
JavaScript
/**
* @license
* Copyright 2015 Petr Shevtsov (petr.shevtsov@gmail.com)
* MIT-licenced: https://opensource.org/licenses/MIT
*/
/* loader wrapper to allow browser use and ES6 imports */
(function _extras_crosshair_wrapper() {
'use strict';
var Dygraph;
if (window.Dygraph) {
Dygraph = window.Dygraph;
} else if (typeof module !== 'undefined') {
Dygraph = require('../dygraph');
if (typeof Dygraph.NAME === 'undefined' && typeof Dygraph["default"] !== 'undefined') Dygraph = Dygraph["default"];
}
/* end of loader wrapper header */
Dygraph.Plugins.Crosshair = function _extras_crosshair_closure() {
"use strict";
/**
* Creates the crosshair
*
* @constructor
*/
var crosshair = function crosshair(opt_options) {
this.canvas_ = document.createElement("canvas");
opt_options = opt_options || {};
this.direction_ = opt_options.direction || null;
this.strokeStyle_ = opt_options.strokeStyle || "rgba(0, 0, 0, 0.3)";
};
crosshair.prototype.toString = function toString() {
return "Crosshair Plugin";
};
/**
* @param {Dygraph} g Graph instance.
* @return {object.<string, function(ev)>} Mapping of event names to callbacks.
*/
crosshair.prototype.activate = function activate(g) {
g.graphDiv.appendChild(this.canvas_);
return {
select: this.select,
deselect: this.deselect
};
};
crosshair.prototype.select = function select(e) {
if (this.direction_ === null) {
return;
}
var width = e.dygraph.width_;
var height = e.dygraph.height_;
this.canvas_.width = width;
this.canvas_.height = height;
this.canvas_.style.width = width + "px"; // for IE
this.canvas_.style.height = height + "px"; // for IE
var ctx = this.canvas_.getContext("2d");
ctx.clearRect(0, 0, width, height);
ctx.strokeStyle = this.strokeStyle_;
ctx.beginPath();
var canvasx = Math.floor(e.dygraph.selPoints_[0].canvasx) + 0.5; // crisper rendering
if (this.direction_ === "vertical" || this.direction_ === "both") {
ctx.moveTo(canvasx, 0);
ctx.lineTo(canvasx, height);
}
if (this.direction_ === "horizontal" || this.direction_ === "both") {
for (var i = 0; i < e.dygraph.selPoints_.length; i++) {
var canvasy = Math.floor(e.dygraph.selPoints_[i].canvasy) + 0.5; // crisper rendering
ctx.moveTo(0, canvasy);
ctx.lineTo(width, canvasy);
}
}
ctx.stroke();
ctx.closePath();
};
crosshair.prototype.deselect = function deselect(e) {
var ctx = this.canvas_.getContext("2d");
ctx.clearRect(0, 0, this.canvas_.width, this.canvas_.height);
};
crosshair.prototype.destroy = function destroy() {
this.canvas_ = null;
};
return crosshair;
}();
/* loader wrapper */
Dygraph._require.add('dygraphs/src/extras/crosshair.js', /* exports */{});
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0cmFzX2Nyb3NzaGFpcl93cmFwcGVyIiwiRHlncmFwaCIsIndpbmRvdyIsIm1vZHVsZSIsInJlcXVpcmUiLCJOQU1FIiwiUGx1Z2lucyIsIkNyb3NzaGFpciIsIl9leHRyYXNfY3Jvc3NoYWlyX2Nsb3N1cmUiLCJjcm9zc2hhaXIiLCJvcHRfb3B0aW9ucyIsImNhbnZhc18iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJkaXJlY3Rpb25fIiwiZGlyZWN0aW9uIiwic3Ryb2tlU3R5bGVfIiwic3Ryb2tlU3R5bGUiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImFjdGl2YXRlIiwiZyIsImdyYXBoRGl2IiwiYXBwZW5kQ2hpbGQiLCJzZWxlY3QiLCJkZXNlbGVjdCIsImUiLCJ3aWR0aCIsImR5Z3JhcGgiLCJ3aWR0aF8iLCJoZWlnaHQiLCJoZWlnaHRfIiwic3R5bGUiLCJjdHgiLCJnZXRDb250ZXh0IiwiY2xlYXJSZWN0IiwiYmVnaW5QYXRoIiwiY2FudmFzeCIsIk1hdGgiLCJmbG9vciIsInNlbFBvaW50c18iLCJtb3ZlVG8iLCJsaW5lVG8iLCJpIiwibGVuZ3RoIiwiY2FudmFzeSIsInN0cm9rZSIsImNsb3NlUGF0aCIsImRlc3Ryb3kiLCJfcmVxdWlyZSIsImFkZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRyYXMvY3Jvc3NoYWlyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE1IFBldHIgU2hldnRzb3YgKHBldHIuc2hldnRzb3ZAZ21haWwuY29tKVxuICogTUlULWxpY2VuY2VkOiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxuICovXG5cbi8qIGxvYWRlciB3cmFwcGVyIHRvIGFsbG93IGJyb3dzZXIgdXNlIGFuZCBFUzYgaW1wb3J0cyAqL1xuKGZ1bmN0aW9uIF9leHRyYXNfY3Jvc3NoYWlyX3dyYXBwZXIoKSB7XG4ndXNlIHN0cmljdCc7XG52YXIgRHlncmFwaDtcbmlmICh3aW5kb3cuRHlncmFwaCkge1xuICBEeWdyYXBoID0gd2luZG93LkR5Z3JhcGg7XG59IGVsc2UgaWYgKHR5cGVvZihtb2R1bGUpICE9PSAndW5kZWZpbmVkJykge1xuICBEeWdyYXBoID0gcmVxdWlyZSgnLi4vZHlncmFwaCcpO1xuICBpZiAodHlwZW9mKER5Z3JhcGguTkFNRSkgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZihEeWdyYXBoLmRlZmF1bHQpICE9PSAndW5kZWZpbmVkJylcbiAgICBEeWdyYXBoID0gRHlncmFwaC5kZWZhdWx0O1xufVxuLyogZW5kIG9mIGxvYWRlciB3cmFwcGVyIGhlYWRlciAqL1xuXG5EeWdyYXBoLlBsdWdpbnMuQ3Jvc3NoYWlyID0gKGZ1bmN0aW9uIF9leHRyYXNfY3Jvc3NoYWlyX2Nsb3N1cmUoKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBjcm9zc2hhaXJcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuXG4gIHZhciBjcm9zc2hhaXIgPSBmdW5jdGlvbiBjcm9zc2hhaXIob3B0X29wdGlvbnMpIHtcbiAgICB0aGlzLmNhbnZhc18gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIG9wdF9vcHRpb25zID0gb3B0X29wdGlvbnMgfHwge307XG4gICAgdGhpcy5kaXJlY3Rpb25fID0gb3B0X29wdGlvbnMuZGlyZWN0aW9uIHx8IG51bGw7XG4gICAgdGhpcy5zdHJva2VTdHlsZV8gPSBvcHRfb3B0aW9ucy5zdHJva2VTdHlsZSB8fCBcInJnYmEoMCwgMCwgMCwgMC4zKVwiO1xuICB9O1xuXG4gIGNyb3NzaGFpci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJDcm9zc2hhaXIgUGx1Z2luXCI7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RHlncmFwaH0gZyBHcmFwaCBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7b2JqZWN0LjxzdHJpbmcsIGZ1bmN0aW9uKGV2KT59IE1hcHBpbmcgb2YgZXZlbnQgbmFtZXMgdG8gY2FsbGJhY2tzLlxuICAgKi9cbiAgY3Jvc3NoYWlyLnByb3RvdHlwZS5hY3RpdmF0ZSA9IGZ1bmN0aW9uIGFjdGl2YXRlKGcpIHtcbiAgICBnLmdyYXBoRGl2LmFwcGVuZENoaWxkKHRoaXMuY2FudmFzXyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdCxcbiAgICAgIGRlc2VsZWN0OiB0aGlzLmRlc2VsZWN0XG4gICAgfTtcbiAgfTtcblxuICBjcm9zc2hhaXIucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uIHNlbGVjdChlKSB7XG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uXyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB3aWR0aCA9IGUuZHlncmFwaC53aWR0aF87XG4gICAgdmFyIGhlaWdodCA9IGUuZHlncmFwaC5oZWlnaHRfO1xuICAgIHRoaXMuY2FudmFzXy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuY2FudmFzXy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdGhpcy5jYW52YXNfLnN0eWxlLndpZHRoID0gd2lkdGggKyBcInB4XCI7ICAgIC8vIGZvciBJRVxuICAgIHRoaXMuY2FudmFzXy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcInB4XCI7ICAvLyBmb3IgSUVcblxuICAgIHZhciBjdHggPSB0aGlzLmNhbnZhc18uZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5zdHJva2VTdHlsZV87XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuXG4gICAgdmFyIGNhbnZhc3ggPSBNYXRoLmZsb29yKGUuZHlncmFwaC5zZWxQb2ludHNfWzBdLmNhbnZhc3gpICsgMC41OyAvLyBjcmlzcGVyIHJlbmRlcmluZ1xuXG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uXyA9PT0gXCJ2ZXJ0aWNhbFwiIHx8IHRoaXMuZGlyZWN0aW9uXyA9PT0gXCJib3RoXCIpIHtcbiAgICAgIGN0eC5tb3ZlVG8oY2FudmFzeCwgMCk7XG4gICAgICBjdHgubGluZVRvKGNhbnZhc3gsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGlyZWN0aW9uXyA9PT0gXCJob3Jpem9udGFsXCIgfHwgdGhpcy5kaXJlY3Rpb25fID09PSBcImJvdGhcIikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlLmR5Z3JhcGguc2VsUG9pbnRzXy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2FudmFzeSA9IE1hdGguZmxvb3IoZS5keWdyYXBoLnNlbFBvaW50c19baV0uY2FudmFzeSkgKyAwLjU7IC8vIGNyaXNwZXIgcmVuZGVyaW5nXG4gICAgICAgIGN0eC5tb3ZlVG8oMCwgY2FudmFzeSk7XG4gICAgICAgIGN0eC5saW5lVG8od2lkdGgsIGNhbnZhc3kpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN0eC5zdHJva2UoKTtcbiAgICBjdHguY2xvc2VQYXRoKCk7XG4gIH07XG5cbiAgY3Jvc3NoYWlyLnByb3RvdHlwZS5kZXNlbGVjdCA9IGZ1bmN0aW9uIGRlc2VsZWN0KGUpIHtcbiAgICB2YXIgY3R4ID0gdGhpcy5jYW52YXNfLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzXy53aWR0aCwgdGhpcy5jYW52YXNfLmhlaWdodCk7XG4gIH07XG5cbiAgY3Jvc3NoYWlyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICB0aGlzLmNhbnZhc18gPSBudWxsO1xuICB9O1xuXG4gIHJldHVybiBjcm9zc2hhaXI7XG59KSgpO1xuXG4vKiBsb2FkZXIgd3JhcHBlciAqL1xuRHlncmFwaC5fcmVxdWlyZS5hZGQoJ2R5Z3JhcGhzL3NyYy9leHRyYXMvY3Jvc3NoYWlyLmpzJywg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
;