UNPKG

dojox

Version:

Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.

94 lines (84 loc) 2.57 kB
define([ "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(){ 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(){ 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); } }); });