summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/geo/charting/widget/Legend.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/geo/charting/widget/Legend.js')
-rw-r--r--js/dojo/dojox/geo/charting/widget/Legend.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/js/dojo/dojox/geo/charting/widget/Legend.js b/js/dojo/dojox/geo/charting/widget/Legend.js
new file mode 100644
index 0000000..f307d77
--- /dev/null
+++ b/js/dojo/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);
+ }
+});
+});