//Add the legend to the application - the legend will be
//added to the left panel of the application.
function addLegend(layerInfo) {
var legendTb = new dijit.form.ToggleButton({
showLabel: true,
label: i18n.tools.legend.label,
title: i18n.tools.legend.title,
checked: true,
iconClass: 'esriLegendIcon',
id: 'legendButton'
}, dojo.create('div'));
dojo.byId('webmap-toolbar-left').appendChild(legendTb.domNode);
dojo.connect(legendTb, 'onClick', function () {
navigateStack('legendPanel');
});
// var aContainer = new dijit.layout.AccordionContainer({style:"height: 300px"}, "legendPanel");
var aContainer = new dijit.layout.AccordionContainer({id: "legendPanel1", style: "height:100%; width:100%"}, dojo.create('div'));
var legendDijit = new esri.dijit.Legend({
map: map,
layerInfos: layerInfo
}, dojo.create('div'));
//legendDijit.startup();
/* var layers = new dijit.layout.ContentPane({title:"Layers"});
layers.set('content', legendDijit.domNode);
legendDijit.startup();
aContainer.domNode.appendChild(layers);*/
aContainer.addChild(new dijit.layout.ContentPane({
title: "Layers",
region: 'center',
selected: true,
content: "hi",
id:'aLayers'
}));
aContainer.addChild(new dijit.layout.ContentPane({
title:"BaseMapGallery",
content:"Hi how are you?"
}));
aContainer.addChild(new dijit.layout.ContentPane({
title:"Print",
content:"Hello im fine.. thnx"
}));
//dojo.byId('aLayers').appendChild(legendDijit.domNode);
aContainer.startup();
/* var legendDijit = new esri.dijit.Legend({
map: map,
layerInfos: layerInfo
}, dojo.create('div'));
dojo.byId('aLayers').appendChild(legendDijit.domNode)
// dijit.byId('aLayers').appendChild(legendDijit.domNode)
// legendDijit.startup();
*/
var legendCp = new dijit.layout.ContentPane({
title: i18n.tools.legend.title,
selected: true,
region: 'center',
id: "legendPanel"
});
//dojo.byId('legendPanel').appendChild(aContainer.domNode);
dijit.byId('stackContainer').addChild(legendCp);
dojo.addClass(dojo.byId('legendPanel'), 'panel_content');
/*var legendDijit = new esri.dijit.Legend({
map: map,
layerInfos: layerInfo
}, dojo.create('div'));
dojo.byId('legendPanel').appendChild(legendDijit.domNode);*/
dojo.byId('legendPanel').appendChild(aContainer.domNode);
navigateStack('legendPanel');
if (dojo.isIE === 8) {
setTimeout(function () {
// legendDijit.startup();
// aContainer.startup();
}, 100);
} else {
// legendDijit.startup();
// aContainer.startup();
}
}HI Guys
I have programmatically created a function to add Accordion Container with few child contentpane. When I try to add legendsDijit to the first contentPane, I get an error from the application saying legendDijit is null or not an object.
can anyone look into this. please.//Add the legend to the application - the legend will be //added to the left panel of the application. function addLegend(layerInfo) { var legendTb = new dijit.form.ToggleButton({ showLabel: true, label: i18n.tools.legend.label, title: i18n.tools.legend.title, checked: true, iconClass: 'esriLegendIcon', id: 'legendButton' }, dojo.create('div')); dojo.byId('webmap-toolbar-left').appendChild(legendTb.domNode); dojo.connect(legendTb, 'onClick', function () { navigateStack('legendPanel'); }); // var aContainer = new dijit.layout.AccordionContainer({style:"height: 300px"}, "legendPanel"); var aContainer = new dijit.layout.AccordionContainer({id: "legendPanel1", style: "height:100%; width:100%"}, dojo.create('div')); var legendDijit = new esri.dijit.Legend({ map: map, layerInfos: layerInfo }, dojo.create('div')); //legendDijit.startup(); /* var layers = new dijit.layout.ContentPane({title:"Layers"}); layers.set('content', legendDijit.domNode); legendDijit.startup(); aContainer.domNode.appendChild(layers);*/ aContainer.addChild(new dijit.layout.ContentPane({ title: "Layers", region: 'center', selected: true, content: "hi", id:'aLayers' })); aContainer.addChild(new dijit.layout.ContentPane({ title:"BaseMapGallery", content:"Hi how are you?" })); aContainer.addChild(new dijit.layout.ContentPane({ title:"Print", content:"Hello im fine.. thnx" })); //dojo.byId('aLayers').appendChild(legendDijit.domNode); aContainer.startup(); /* var legendDijit = new esri.dijit.Legend({ map: map, layerInfos: layerInfo }, dojo.create('div')); dojo.byId('aLayers').appendChild(legendDijit.domNode) // dijit.byId('aLayers').appendChild(legendDijit.domNode) // legendDijit.startup(); */ var legendCp = new dijit.layout.ContentPane({ title: i18n.tools.legend.title, selected: true, region: 'center', id: "legendPanel" }); //dojo.byId('legendPanel').appendChild(aContainer.domNode); dijit.byId('stackContainer').addChild(legendCp); dojo.addClass(dojo.byId('legendPanel'), 'panel_content'); /*var legendDijit = new esri.dijit.Legend({ map: map, layerInfos: layerInfo }, dojo.create('div')); dojo.byId('legendPanel').appendChild(legendDijit.domNode);*/ dojo.byId('legendPanel').appendChild(aContainer.domNode); navigateStack('legendPanel'); if (dojo.isIE === 8) { setTimeout(function () { // legendDijit.startup(); // aContainer.startup(); }, 100); } else { // legendDijit.startup(); // aContainer.startup(); } }
dojo.require("esri.dijit.Legend");
Are you requiring the desired dijit on your code?dojo.require("esri.dijit.Legend");
HI Pepa
I already included the necessary required resources dojo.require("esri.dijit.Legend");
If I comment out my accordionpane variable in the code, my legend dijit works. I wanted to add the legend inside the first child of the accordionpane and the problem persist here.
regards
Ganesh