// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+/*global Dygraph:false */
-/**
+/**
* @fileoverview Plug-in for providing unzoom-on-hover.
*
* @author konigsberg@google.com (Robert Konigsberg)
*/
Dygraph.Plugins.Unzoom = (function() {
-
+
"use strict";
-
+
/**
* Create a new instance.
*
*/
var unzoom = function() {
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() {
- return 'Unzoom Plugin';
+ return 'Unzoom Plugin';
};
unzoom.prototype.activate = function(g) {
unzoom.prototype.willDrawChart = function(e) {
var g = e.dygraph;
- if (this.button_ != null) {
- if (g.isZoomed() && this.over_) {
- this.show(true);
- }
+ 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 = 'Unzoom';
+ this.button_.innerHTML = 'Reset Zoom';
this.button_.style.display = 'none';
this.button_.style.position = 'absolute';
- this.button_.style.top = '2px';
- this.button_.style.left = '59px';
- this.button_.style.zIndex = 1000;
+ 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() {
- // TODO(konigsberg): doUnzoom_ is private.
- g.doUnzoom_();
- }
+ g.resetZoom();
+ };
g.addEvent(parent, 'mouseover', function() {
if (g.isZoomed()) {
};
unzoom.prototype.show = function(enabled) {
- this.button_.style.display = enabled ? 'block' : 'none';
+ this.button_.style.display = enabled ? '' : 'none';
};
unzoom.prototype.destroy = function() {