dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
110 lines (103 loc) • 13.6 kB
JavaScript
;
// Copyright (c) 2013 Google, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
/* loader wrapper to allow browser use and ES6 imports */
(function _extras_unzoom_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 */
/**
* @fileoverview Plug-in for providing unzoom-on-hover.
*
* @author konigsberg@google.com (Robert Konigsberg)
*/
Dygraph.Plugins.Unzoom = function _extras_unzoom_closure() {
'use strict';
/**
* Create a new instance.
*
* @constructor
*/
var unzoom = function unzoom() {
this.button_ = null;
// True when the mouse is over the canvas. Must be tracked
// because the unzoom button state can change even when the
// mouse-over state hasn't.
this.over_ = false;
};
unzoom.prototype.toString = function toString() {
return 'Unzoom Plugin';
};
unzoom.prototype.activate = function activate(g) {
return {
willDrawChart: this.willDrawChart
};
};
unzoom.prototype.willDrawChart = function willDrawChart(e) {
var g = e.dygraph;
if (this.button_ !== null) {
// short-circuit: show the button only when we're moused over, and zoomed in.
var showButton = g.isZoomed() && this.over_;
this.show(showButton);
return;
}
this.button_ = document.createElement('button');
this.button_.innerHTML = 'Reset Zoom';
this.button_.style.display = 'none';
this.button_.style.position = 'absolute';
var area = g.plotter_.area;
this.button_.style.top = area.y + 4 + 'px';
this.button_.style.left = area.x + 4 + 'px';
this.button_.style.zIndex = 11;
var parent = g.graphDiv;
parent.insertBefore(this.button_, parent.firstChild);
var self = this;
this.button_.onclick = function onclick() {
g.resetZoom();
};
g.addAndTrackEvent(parent, 'mouseover', function mouseover() {
if (g.isZoomed()) {
self.show(true);
}
self.over_ = true;
});
g.addAndTrackEvent(parent, 'mouseout', function mouseout() {
self.show(false);
self.over_ = false;
});
};
unzoom.prototype.show = function show(enabled) {
this.button_.style.display = enabled ? '' : 'none';
};
unzoom.prototype.destroy = function destroy() {
this.button_.parentElement.removeChild(this.button_);
};
return unzoom;
}();
/* loader wrapper */
Dygraph._require.add('dygraphs/src/extras/unzoom.js', /* exports */{});
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0cmFzX3Vuem9vbV93cmFwcGVyIiwiRHlncmFwaCIsIndpbmRvdyIsIm1vZHVsZSIsInJlcXVpcmUiLCJOQU1FIiwiUGx1Z2lucyIsIlVuem9vbSIsIl9leHRyYXNfdW56b29tX2Nsb3N1cmUiLCJ1bnpvb20iLCJidXR0b25fIiwib3Zlcl8iLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImFjdGl2YXRlIiwiZyIsIndpbGxEcmF3Q2hhcnQiLCJlIiwiZHlncmFwaCIsInNob3dCdXR0b24iLCJpc1pvb21lZCIsInNob3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJzdHlsZSIsImRpc3BsYXkiLCJwb3NpdGlvbiIsImFyZWEiLCJwbG90dGVyXyIsInRvcCIsInkiLCJsZWZ0IiwieCIsInpJbmRleCIsInBhcmVudCIsImdyYXBoRGl2IiwiaW5zZXJ0QmVmb3JlIiwiZmlyc3RDaGlsZCIsInNlbGYiLCJvbmNsaWNrIiwicmVzZXRab29tIiwiYWRkQW5kVHJhY2tFdmVudCIsIm1vdXNlb3ZlciIsIm1vdXNlb3V0IiwiZW5hYmxlZCIsImRlc3Ryb3kiLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJfcmVxdWlyZSIsImFkZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRyYXMvdW56b29tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxMyBHb29nbGUsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vKiBsb2FkZXIgd3JhcHBlciB0byBhbGxvdyBicm93c2VyIHVzZSBhbmQgRVM2IGltcG9ydHMgKi9cbihmdW5jdGlvbiBfZXh0cmFzX3Vuem9vbV93cmFwcGVyKCkge1xuJ3VzZSBzdHJpY3QnO1xudmFyIER5Z3JhcGg7XG5pZiAod2luZG93LkR5Z3JhcGgpIHtcbiAgRHlncmFwaCA9IHdpbmRvdy5EeWdyYXBoO1xufSBlbHNlIGlmICh0eXBlb2YobW9kdWxlKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgRHlncmFwaCA9IHJlcXVpcmUoJy4uL2R5Z3JhcGgnKTtcbiAgaWYgKHR5cGVvZihEeWdyYXBoLk5BTUUpID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoRHlncmFwaC5kZWZhdWx0KSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgRHlncmFwaCA9IER5Z3JhcGguZGVmYXVsdDtcbn1cbi8qIGVuZCBvZiBsb2FkZXIgd3JhcHBlciBoZWFkZXIgKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFBsdWctaW4gZm9yIHByb3ZpZGluZyB1bnpvb20tb24taG92ZXIuXG4gKlxuICogQGF1dGhvciBrb25pZ3NiZXJnQGdvb2dsZS5jb20gKFJvYmVydCBLb25pZ3NiZXJnKVxuICovXG5EeWdyYXBoLlBsdWdpbnMuVW56b29tID0gKGZ1bmN0aW9uIF9leHRyYXNfdW56b29tX2Nsb3N1cmUoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlLlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIHZhciB1bnpvb20gPSBmdW5jdGlvbiB1bnpvb20oKSB7XG4gICAgdGhpcy5idXR0b25fID0gbnVsbDtcblxuICAgIC8vIFRydWUgd2hlbiB0aGUgbW91c2UgaXMgb3ZlciB0aGUgY2FudmFzLiBNdXN0IGJlIHRyYWNrZWRcbiAgICAvLyBiZWNhdXNlIHRoZSB1bnpvb20gYnV0dG9uIHN0YXRlIGNhbiBjaGFuZ2UgZXZlbiB3aGVuIHRoZVxuICAgIC8vIG1vdXNlLW92ZXIgc3RhdGUgaGFzbid0LlxuICAgIHRoaXMub3Zlcl8gPSBmYWxzZTtcbiAgfTtcblxuICB1bnpvb20ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdVbnpvb20gUGx1Z2luJztcbiAgfTtcblxuICB1bnpvb20ucHJvdG90eXBlLmFjdGl2YXRlID0gZnVuY3Rpb24gYWN0aXZhdGUoZykge1xuICAgIHJldHVybiB7XG4gICAgICB3aWxsRHJhd0NoYXJ0OiB0aGlzLndpbGxEcmF3Q2hhcnRcbiAgICB9O1xuICB9O1xuXG4gIHVuem9vbS5wcm90b3R5cGUud2lsbERyYXdDaGFydCA9IGZ1bmN0aW9uIHdpbGxEcmF3Q2hhcnQoZSkge1xuICAgIHZhciBnID0gZS5keWdyYXBoO1xuXG4gICAgaWYgKHRoaXMuYnV0dG9uXyAhPT0gbnVsbCkge1xuICAgICAgLy8gc2hvcnQtY2lyY3VpdDogc2hvdyB0aGUgYnV0dG9uIG9ubHkgd2hlbiB3ZSdyZSBtb3VzZWQgb3ZlciwgYW5kIHpvb21lZCBpbi5cbiAgICAgIHZhciBzaG93QnV0dG9uID0gZy5pc1pvb21lZCgpICYmIHRoaXMub3Zlcl87XG4gICAgICB0aGlzLnNob3coc2hvd0J1dHRvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5idXR0b25fID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgdGhpcy5idXR0b25fLmlubmVySFRNTCA9ICdSZXNldCBab29tJztcbiAgICB0aGlzLmJ1dHRvbl8uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmJ1dHRvbl8uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHZhciBhcmVhID0gZy5wbG90dGVyXy5hcmVhO1xuICAgIHRoaXMuYnV0dG9uXy5zdHlsZS50b3AgPSAoYXJlYS55ICsgNCkgKyAncHgnO1xuICAgIHRoaXMuYnV0dG9uXy5zdHlsZS5sZWZ0ID0gKGFyZWEueCArIDQpICsgJ3B4JztcbiAgICB0aGlzLmJ1dHRvbl8uc3R5bGUuekluZGV4ID0gMTE7XG4gICAgdmFyIHBhcmVudCA9IGcuZ3JhcGhEaXY7XG4gICAgcGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLmJ1dHRvbl8sIHBhcmVudC5maXJzdENoaWxkKTtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLmJ1dHRvbl8ub25jbGljayA9IGZ1bmN0aW9uIG9uY2xpY2soKSB7XG4gICAgICBnLnJlc2V0Wm9vbSgpO1xuICAgIH07XG5cbiAgICBnLmFkZEFuZFRyYWNrRXZlbnQocGFyZW50LCAnbW91c2VvdmVyJywgZnVuY3Rpb24gbW91c2VvdmVyKCkge1xuICAgICAgaWYgKGcuaXNab29tZWQoKSkge1xuICAgICAgICBzZWxmLnNob3codHJ1ZSk7XG4gICAgICB9XG4gICAgICBzZWxmLm92ZXJfID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGcuYWRkQW5kVHJhY2tFdmVudChwYXJlbnQsICdtb3VzZW91dCcsIGZ1bmN0aW9uIG1vdXNlb3V0KCkge1xuICAgICAgc2VsZi5zaG93KGZhbHNlKTtcbiAgICAgIHNlbGYub3Zlcl8gPSBmYWxzZTtcbiAgICB9KTtcbiAgfTtcblxuICB1bnpvb20ucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbiBzaG93KGVuYWJsZWQpIHtcbiAgICB0aGlzLmJ1dHRvbl8uc3R5bGUuZGlzcGxheSA9IGVuYWJsZWQgPyAnJyA6ICdub25lJztcbiAgfTtcblxuICB1bnpvb20ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIHRoaXMuYnV0dG9uXy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuYnV0dG9uXyk7XG4gIH07XG5cbiAgcmV0dXJuIHVuem9vbTtcblxufSkoKTtcblxuLyogbG9hZGVyIHdyYXBwZXIgKi9cbkR5Z3JhcGguX3JlcXVpcmUuYWRkKCdkeWdyYXBocy9zcmMvZXh0cmFzL3Vuem9vbS5qcycsIC8qIGV4cG9ydHMgKi8ge30pO1xufSkoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7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