define([ "dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/text!./templates/Legend.html", "esri/dijit/Legend", "app/util" ], function (declare, _WidgetBase, _TemplatedMixin, template, Legend, util) { return declare("app.widgets.Legend", [_WidgetBase, _TemplatedMixin], { templateString: template, config: null, postCreate: function () { this.inherited(arguments); this._attachEventHandlers(); this.initLegend(this.config); }, _attachEventHandlers: function () { var self = this; this.own( ); }, initLegend: function(config) { var legendHTML = "", i = 0, len; if(config.legendImages && config.legendImages.length) { var legendImages = config.legendImages; for (i = 0, len = legendImages.length; i < len; i++) { legendHTML += ''; if (i < len - 1) { legendHTML += "

"; } } this.legendDiv.innerHTML = legendHTML; } else if (config.outageLayers && config.outageLayers.length) { for(i = 0; i < config.outageLayers.length; i++) { var oLayerClassBreaks = config.outageLayers[i].classBreaks; if(oLayerClassBreaks) { var rangeSymbols = oLayerClassBreaks.ranges, multiSymbol = oLayerClassBreaks.multiOutageSymbol; var lsymbolDiv, abelTxt = ""; for(i = 0; i < rangeSymbols.length; i++) { if(i === 0) { labelTxt = "< " + util.formatNumber(rangeSymbols[i].max) + " Impacted"; } else if (i === rangeSymbols.length-1) { labelTxt = "> " + util.formatNumber(rangeSymbols[i].min) + " Impacted"; } else { labelTxt = util.formatNumber(rangeSymbols[i].min) + " < " + util.formatNumber(rangeSymbols[i].max) + " Impacted"; } symbolDiv = this._createLegendRow(rangeSymbols[i].symbol, labelTxt); this.legendDiv.appendChild(symbolDiv); } if(multiSymbol) { labelTxt = "Multiple outages"; symbolDiv = this._createLegendRow(multiSymbol, labelTxt); this.legendDiv.appendChild(symbolDiv); } } } } else { // create legend using esri's legend widget } }, _createLegendRow: function(symbol, label) { var symbolDiv = document.createElement("DIV"); symbolDiv.className = "legend-row"; var symbolImgWrapper = document.createElement("SPAN"); symbolImgWrapper.className = "symbol"; var symbolImg = document.createElement("IMG"); var symbolLabel = document.createElement("SPAN"); symbolLabel.className = "label"; symbolImg.src = symbol.img; symbolImg.width = symbol.width; symbolImg.height = symbol.height; symbolLabel.innerHTML = label; symbolImgWrapper.appendChild(symbolImg); symbolDiv.appendChild(symbolImgWrapper); symbolDiv.appendChild(symbolLabel); return symbolDiv; } }); });