123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- define("dojox/charting/plot2d/_PlotEvents", ["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "dojo/_base/connect"],
- function(lang, arr, declare, hub){
- return declare("dojox.charting.plot2d._PlotEvents", null, {
- constructor: function(){
- this._shapeEvents = [];
- this._eventSeries = {};
- },
- destroy: function(){
- // summary:
- // Destroy any internal elements and event handlers.
- this.resetEvents();
- this.inherited(arguments);
- },
- plotEvent: function(o){
- // summary:
- // Stub function for use by specific plots.
- // o: Object
- // An object intended to represent event parameters.
- },
- raiseEvent: function(o){
- // summary:
- // Raises events in predefined order
- // o: Object
- // An object intended to represent event parameters.
- this.plotEvent(o);
- var t = lang.delegate(o);
- t.originalEvent = o.type;
- t.originalPlot = o.plot;
- t.type = "onindirect";
- arr.forEach(this.chart.stack, function(plot){
- if(plot !== this && plot.plotEvent){
- t.plot = plot;
- plot.plotEvent(t);
- }
- }, this);
- },
- connect: function(object, method){
- // summary:
- // Helper function to connect any object's method to our plotEvent.
- // object: Object
- // The object to connect to.
- // method: String|Function
- // The method to fire when our plotEvent is fired.
- // returns: Array
- // The handle as returned from dojo.connect (see dojo.connect).
- this.dirty = true;
- return hub.connect(this, "plotEvent", object, method); // Array
- },
- events: function(){
- // summary:
- // Find out if any event handlers have been connected to our plotEvent.
- // returns: Boolean
- // A flag indicating that there are handlers attached.
- return !!this.plotEvent.after;
- },
- resetEvents: function(){
- // summary:
- // Reset all events attached to our plotEvent (i.e. disconnect).
- if(this._shapeEvents.length){
- arr.forEach(this._shapeEvents, function(item){
- item.shape.disconnect(item.handle);
- });
- this._shapeEvents = [];
- }
- this.raiseEvent({type: "onplotreset", plot: this});
- },
- _connectSingleEvent: function(o, eventName){
- this._shapeEvents.push({
- shape: o.eventMask,
- handle: o.eventMask.connect(eventName, this, function(e){
- o.type = eventName;
- o.event = e;
- this.raiseEvent(o);
- o.event = null;
- })
- });
- },
- _connectEvents: function(o){
- if(o){
- o.chart = this.chart;
- o.plot = this;
- o.hAxis = this.hAxis || null;
- o.vAxis = this.vAxis || null;
- o.eventMask = o.eventMask || o.shape;
- this._connectSingleEvent(o, "onmouseover");
- this._connectSingleEvent(o, "onmouseout");
- this._connectSingleEvent(o, "onclick");
- }
- },
- _reconnectEvents: function(seriesName){
- var a = this._eventSeries[seriesName];
- if(a){
- arr.forEach(a, this._connectEvents, this);
- }
- },
- fireEvent: function(seriesName, eventName, index, eventObject){
- // summary:
- // Emulates firing an event for a given data value (specified by
- // an index) of a given series.
- // seriesName: String:
- // Series name.
- // eventName: String:
- // Event name to emulate.
- // index: Number:
- // Valid data value index used to raise an event.
- // eventObject: Object?:
- // Optional event object. Especially useful for synthetic events.
- // Default: null.
- var s = this._eventSeries[seriesName];
- if(s && s.length && index < s.length){
- var o = s[index];
- o.type = eventName;
- o.event = eventObject || null;
- this.raiseEvent(o);
- o.event = null;
- }
- }
- });
- });
|