diff options
Diffstat (limited to 'js/dojo/dojox/geo/charting/widget/Map.js')
| -rw-r--r-- | js/dojo/dojox/geo/charting/widget/Map.js | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/js/dojo/dojox/geo/charting/widget/Map.js b/js/dojo/dojox/geo/charting/widget/Map.js new file mode 100644 index 0000000..dc28e7d --- /dev/null +++ b/js/dojo/dojox/geo/charting/widget/Map.js @@ -0,0 +1,182 @@ +//>>built + +define("dojox/geo/charting/widget/Map", ["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare","dojo/_base/html","dojo/dom-geometry", + "dijit/_Widget","dojox/geo/charting/Map"], + function(dojo, lang, declare, html,domGeom, Widget, Map) { + +return declare("dojox.geo.charting.widget.Map", Widget, { + // summary: + // A map viewer widget based on the dojox.geo.charting.Map component + // + // description: + // The `dojox.geo.charting.widget.Map` widget combines map display together with charting capabilities. + // It encapsulates an `dojox.geo.charting.Map` object on which most operations are delegated. + // Parameters can be passed as argument at construction time to specify map data file (json shape format) + // as well as charting data. + // + // The parameters are : + // + // * `shapeData`: The json object containing map data or the name of the file containing map data. + // * `dataStore`: the dataStore to fetch the charting data from + // * `dataBindingAttribute`: property name of the dataStore items to use as value for charting + // * `markerData`: tooltips to display for map features, handled as json style. + // * `adjustMapCenterOnResize`: if true, the center of the map remains the same when resizing the widget + // * `adjustMapScaleOnResize`: if true, the map scale is adjusted to leave the visible portion of the map identical as much as possible + // + // example: + // + // | var map = new dojox.geo.charting.widget.Map({ + // | shapeData : 'map.json', + // | adjustMapCenterOnresize : true, + // | adjustMapScaleOnresize : true, + // | }); + + shapeData : "", + dataStore : null, + dataBindingAttribute : "", + dataBindingValueFunction: null, + markerData : "", + series : "", + adjustMapCenterOnResize: null, + adjustMapScaleOnResize: null, + animateOnResize: null, + onFeatureClick: null, + onFeatureOver: null, + enableMouseSupport: null, + enableTouchSupport: null, + enableMouseZoom: null, + enableMousePan: null, + enableKeyboardSupport: false, + showTooltips: false, + enableFeatureZoom: null, + colorAnimationDuration: 0, + mouseClickThreshold: 2, + _mouseInteractionSupport:null, + _touchInteractionSupport:null, + _keyboardInteractionSupport:null, + constructor : function(/* Object */options, /* HtmlNode */div){ + // summary: + // Constructs a new Map widget + this.map = null; + }, + + startup : function(){ + this.inherited(arguments); + if (this.map) { + this.map.fitToMapContents(); + } + + }, + + postMixInProperties : function(){ + this.inherited(arguments); + }, + + create : function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){ + this.inherited(arguments); + }, + + getInnerMap: function() { + return this.map; + }, + + + buildRendering : function(){ + // summary: + // Construct the UI for this widget, creates the underlying real dojox.geo.charting.Map object. + // tags: + // protected + this.inherited(arguments); + if (this.shapeData) { + this.map = new Map(this.domNode, this.shapeData); + if (this.markerData && (this.markerData.length > 0)) + this.map.setMarkerData(this.markerData); + + if (this.dataStore) { + if (this.dataBindingValueFunction) { + this.map.setDataBindingValueFunction(this.dataBindingValueFunction); + } + this.map.setDataStore(this.dataStore,this.dataBindingAttribute); + } + + if (this.series && (this.series.length > 0)) { + this.map.addSeries(this.series); + } + + if (this.onFeatureClick) { + this.map.onFeatureClick = this.onFeatureClick; + } + if (this.onFeatureOver) { + this.map.onFeatureOver = this.onFeatureOver; + } + if (this.enableMouseSupport) { + + if (!dojox.geo.charting.MouseInteractionSupport) { + throw Error("Can't find dojox.geo.charting.MouseInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + var options = {}; + options.enablePan = this.enableMousePan; + options.enableZoom = this.enableMouseZoom; + options.mouseClickThreshold = this.mouseClickThreshold; + this._mouseInteractionSupport = new dojox.geo.charting.MouseInteractionSupport(this.map,options); + this._mouseInteractionSupport.connect(); + } + + if (this.enableTouchSupport) { + if (!dojox.geo.charting.TouchInteractionSupport) { + throw Error("Can't find dojox.geo.charting.TouchInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + this._touchInteractionSupport = new dojox.geo.charting.TouchInteractionSupport(this.map,{}); + this._touchInteractionSupport.connect(); + } + if (this.enableKeyboardSupport) { + if (!dojox.geo.charting.KeyboardInteractionSupport) { + throw Error("Can't find dojox.geo.charting.KeyboardInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + this._keyboardInteractionSupport = new dojox.geo.charting.KeyboardInteractionSupport(this.map,{}); + this._keyboardInteractionSupport.connect(); + } + this.map.showTooltips = this.showTooltips; + this.map.enableFeatureZoom = this.enableFeatureZoom; + this.map.colorAnimationDuration = this.colorAnimationDuration; + + + } + }, + + + resize : function(b){ + // summary: + // Resize the widget. + // description: + // Resize the domNode and the widget to the dimensions of a box of the following form: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // box: + // If passed, denotes the new size of the widget. + + var box; + switch (arguments.length) { + case 0: + // case 0, do not resize the div, just the surface + break; + case 1: + // argument, override node box + box = lang.mixin({}, b); + domGeom.getMarginBox(this.domNode, box); + break; + case 2: + // two argument, width, height + box = { + w : arguments[0], + h : arguments[1] + }; + domGeom.getMarginBox(this.domNode, box); + break; + } + + if (this.map) { + this.map.resize(this.adjustMapCenterOnResize,this.adjustMapScaleOnResize,this.animateOnResize); + } + } +}); +}); |
