X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=3867b290d06939922947f6c15d5937b719bd8b48;hb=6a4457b403f78ba559550f97330ac25ee4d9629f;hp=9a05677a90ccd7725406e0239c20011afe19bf9c;hpb=e2c21500ff552f97a80ed02e027df86aecac3c75;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 9a05677..3867b29 100644 --- a/dygraph.js +++ b/dygraph.js @@ -422,16 +422,10 @@ 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) { + pluginDict.events[eventName] = handlers[eventName]; + } this.plugins_.push(pluginDict); } @@ -477,17 +471,19 @@ Dygraph.prototype.cascadeEvents_ = function(name, extra_props) { }, propagationStopped: false, stopPropagation: function() { - propagationStopped = true; + e.propagationStopped = true; } }; Dygraph.update(e, extra_props); var callback_plugin_pairs = this.eventListeners_[name]; - for (var i = callback_plugin_pairs.length - 1; i >= 0; i--) { - var plugin = callback_plugin_pairs[i][0]; - var callback = callback_plugin_pairs[i][1]; - callback.call(plugin, e); - if (e.propagationStopped) break; + if (callback_plugin_pairs) { + for (var i = callback_plugin_pairs.length - 1; i >= 0; i--) { + var plugin = callback_plugin_pairs[i][0]; + var callback = callback_plugin_pairs[i][1]; + callback.call(plugin, e); + if (e.propagationStopped) break; + } } return e.defaultPrevented; };