diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/geo/charting/widget/Legend.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/geo/charting/widget/Legend.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/geo/charting/widget/Legend.js b/js/dojo-1.7.2/dojox/geo/charting/widget/Legend.js new file mode 100644 index 0000000..f307d77 --- /dev/null +++ b/js/dojo-1.7.2/dojox/geo/charting/widget/Legend.js @@ -0,0 +1,93 @@ +//>>built + +define("dojox/geo/charting/widget/Legend", ["dojo/_base/kernel", "dojo/_base/lang","dojo/_base/array", "dojo/_base/declare","dojo/_base/html","dojo/dom", + "dojo/dom-construct","dojo/dom-class", "dojo/_base/window", "dijit/_Widget"], + function(dojo, lang, arr, declare, html,dom,domConstruct,domClass, win, Widget) { + +return declare("dojox.geo.charting.widget.Legend",Widget, { + // summary: + // A legend widget displaying association between colors and Feature value ranges. + // + // description: + // This widget basically is a table comprising (icon,string) pairs, describing the color scheme + // used for the map and its associated text descriptions. + // + + // example: + // | var legend = new dojox.geo.charting.widget.Legend({ + // | map: map + // | }); + horizontal:true, + legendBody:null, + swatchSize:18, + map:null, + postCreate: function(){ + // summary: + // inherited Dijit's postCreate function + // tags: + // protected + if(!this.map){return;} + this.series = this.map.series; + if (!this.domNode.parentNode) { + // compatibility with older version : add to map domNode if not already attached to a parentNode. + dom.byId(this.map.container).appendChild(this.domNode); + } + this.refresh(); + }, + buildRendering: function(){ + // summary: + // Construct the UI for this widget, creates the underlying real dojox.geo.charting.Map object. + // tags: + // protected + this.domNode = domConstruct.create("table", + {role: "group", "class": "dojoxLegendNode"}); + this.legendBody = domConstruct.create("tbody", null, this.domNode); + this.inherited(arguments); + }, + + refresh:function(){ + // summary: + // Refreshes this legend contents when Map series has changed. + // cleanup + while(this.legendBody.lastChild){ + domConstruct.destroy(this.legendBody.lastChild); + } + + if(this.horizontal){ + domClass.add(this.domNode,"dojoxLegendHorizontal"); + this._tr = win.doc.createElement("tr"); + this.legendBody.appendChild(this._tr); + } + + var s = this.series; + if(s.length == 0){return;} + + arr.forEach(s,function(x){ + this._addLabel(x.color, x.name); + },this); + }, + _addLabel:function(color,label){ + var icon = win.doc.createElement("td"); + var text = win.doc.createElement("td"); + var div = win.doc.createElement("div"); + domClass.add(icon, "dojoxLegendIcon"); + domClass.add(text, "dojoxLegendText"); + div.style.width = this.swatchSize + "px"; + div.style.height = this.swatchSize + "px"; + icon.appendChild(div); + + if(this.horizontal){ + this._tr.appendChild(icon); + this._tr.appendChild(text); + }else{ + var tr = win.doc.createElement("tr"); + this.legendBody.appendChild(tr); + tr.appendChild(icon); + tr.appendChild(text); + } + + div.style.background = color; + text.innerHTML = String(label); + } +}); +}); |
