X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=abd297396150d67d14251e74517376ddebc3757e;hb=ec0e1045e6b867cdde92b1227fd48e376329170e;hp=1ebe2613a7f518408887ca788e37d59e07461f64;hpb=da1c187b3c86d2b906280c35de7ff9f744d1c000;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 1ebe261..abd2973 100644 --- a/dygraph.js +++ b/dygraph.js @@ -233,6 +233,7 @@ Dygraph.DEFAULT_ATTRS = { stepPlot: false, avoidMinZero: false, + drawAxesAtZero: false, // Sizes of the various chart labels. titleHeight: 28, @@ -407,6 +408,8 @@ Dygraph.prototype.__init__ = function(div, file, attrs) { this.setIndexByName_ = {}; this.datasetIndex_ = []; + this.registeredEvents_ = []; + // Create the containing DIV and other interactive elements this.createInterface_(); @@ -422,16 +425,11 @@ Dygraph.prototype.__init__ = function(div, file, attrs) { pluginOptions: {} }; - var registerer = (function(pluginDict) { - return { - addEventListener: function(eventName, callback) { - // TODO(danvk): validate eventName. - pluginDict.events[eventName] = callback; - } - }; - })(pluginDict); - pluginInstance.activate(this, registerer); - // TODO(danvk): prevent activate() from holding a reference to registerer. + var handlers = pluginInstance.activate(this); + for (var eventName in handlers) { + // TODO(danvk): validate eventName. + pluginDict.events[eventName] = handlers[eventName]; + } this.plugins_.push(pluginDict); } @@ -955,12 +953,12 @@ Dygraph.prototype.createInterface_ = function() { this.mouseMoveHandler = function(e) { dygraph.mouseMove_(e); }; - Dygraph.addEvent(this.mouseEventElement_, 'mousemove', this.mouseMoveHandler); + this.addEvent(this.mouseEventElement_, 'mousemove', this.mouseMoveHandler); this.mouseOutHandler = function(e) { dygraph.mouseOut_(e); }; - Dygraph.addEvent(this.mouseEventElement_, 'mouseout', this.mouseOutHandler); + this.addEvent(this.mouseEventElement_, 'mouseout', this.mouseOutHandler); this.createDragInterface_(); @@ -970,7 +968,7 @@ Dygraph.prototype.createInterface_ = function() { // Update when the window is resized. // TODO(danvk): drop frames depending on complexity of the chart. - Dygraph.addEvent(window, 'resize', this.resizeHandler); + this.addEvent(window, 'resize', this.resizeHandler); }; /** @@ -985,8 +983,14 @@ Dygraph.prototype.destroy = function() { node.removeChild(node.firstChild); } }; - - // remove mouse event handlers + + for (var idx = 0; idx < this.registeredEvents_.length; idx++) { + var reg = this.registeredEvents_[idx]; + Dygraph.removeEvent(reg.elem, reg.type, reg.fn); + } + this.registeredEvents_ = []; + + // remove mouse event handlers (This may not be necessary anymore) Dygraph.removeEvent(this.mouseEventElement_, 'mouseout', this.mouseOutHandler); Dygraph.removeEvent(this.mouseEventElement_, 'mousemove', this.mouseMoveHandler); Dygraph.removeEvent(this.mouseEventElement_, 'mousemove', this.mouseUpHandler_); @@ -1219,7 +1223,8 @@ Dygraph.prototype.createDragInterface_ = function() { boundedDates: null, // [minDate, maxDate] boundedValues: null, // [[minValue, maxValue] ...] - initializeMouseDown: function(event, g, context) { + // contextB is the same thing as this context object but renamed. + initializeMouseDown: function(event, g, contextB) { // prevents mouse drags from selecting page text. if (event.preventDefault) { event.preventDefault(); // Firefox, Chrome, etc. @@ -1228,11 +1233,11 @@ Dygraph.prototype.createDragInterface_ = function() { event.cancelBubble = true; } - context.px = Dygraph.findPosX(g.canvas_); - context.py = Dygraph.findPosY(g.canvas_); - context.dragStartX = g.dragGetX_(event, context); - context.dragStartY = g.dragGetY_(event, context); - context.cancelNextDblclick = false; + contextB.px = Dygraph.findPosX(g.canvas_); + contextB.py = Dygraph.findPosY(g.canvas_); + contextB.dragStartX = g.dragGetX_(event, contextB); + contextB.dragStartY = g.dragGetY_(event, contextB); + contextB.cancelNextDblclick = false; } }; @@ -1250,7 +1255,7 @@ Dygraph.prototype.createDragInterface_ = function() { for (var eventName in interactionModel) { if (!interactionModel.hasOwnProperty(eventName)) continue; - Dygraph.addEvent(this.mouseEventElement_, eventName, + this.addEvent(this.mouseEventElement_, eventName, bindHandler(interactionModel[eventName])); } @@ -1274,7 +1279,7 @@ Dygraph.prototype.createDragInterface_ = function() { } }; - Dygraph.addEvent(document, 'mouseup', this.mouseUpHandler_); + this.addEvent(document, 'mouseup', this.mouseUpHandler_); }; /**