<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Custom widget settings - layerInfos class help in Web AppBuilder Custom Widgets Questions</title>
    <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793958#M4399</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Robert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm getting an error in the console now:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;TypeError: Cannot read property 'itemData' of undefined
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A755%3A55" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:755:55&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at k (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A431" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:431&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at m (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A357" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:357&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at resolve (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A191%3A441" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:191:441&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfoFactory.js%3A69%3A18" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfoFactory.js:69:18&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ha (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A22%3A473" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:22:473&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A202" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:202&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ia (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------------------------------
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rejected at a (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A190%3A337" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:190:337&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at k (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A190%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:190:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at m (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A357" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:357&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at resolve (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A191%3A441" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:191:441&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfoFactory.js%3A69%3A18" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfoFactory.js:69:18&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ha (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A22%3A473" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:22:473&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A202" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:202&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ia (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at fa (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A144" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:144&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------------------------------
Error
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at then.b.then (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A192%3A253" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:192:253&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.clazz.getInstance (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A754%3A48" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:754:48&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.clazz.getLayerInfoArrayByType (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A712%3A11" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:712:11&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at declare._getLayerList (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fapps%2F2%2Fwidgets%2FEditOpportunity%2Fsetting%2FSetting.js%3A88%3A14" target="_blank"&gt;https://localhost/webappbuilder/apps/2/widgets/EditOpportunity/setting/Setting.js:88:14&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at declare.postCreate (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fapps%2F2%2Fwidgets%2FEditOpportunity%2Fsetting%2FSetting.js%3A41%3A8" target="_blank"&gt;https://localhost/webappbuilder/apps/2/widgets/EditOpportunity/setting/Setting.js:41:8&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at l.create (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A1124%3A207" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:1124:207&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at l.postscript (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A1122%3A464" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:1122:464&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at new &amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A98%3A192" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:98:192&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FWidgetManager.js%3A338%3A33" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/WidgetManager.js:338:33&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;&lt;SPAN&gt;"n @ init.js:199(anonymous function) @ init.js:199g.filter @ init.js:220k @ init&lt;/SPAN&gt;
.js:199&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried putting in a check on layerInfo to see if it was undefined in the array.forEach but the result was the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using the Developer Web App Builder 1.2, which may be an issue?&lt;/P&gt;&lt;P&gt;(This function isn't in any of the documents, though looking at it seems similar to what I've tried with&lt;EM&gt; dojo/promise/all&lt;/EM&gt; to collect all the layer types together, I may have been doing it wrong but it was still proceeding with the settings before getting all the promised results)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 09:08:38 GMT</pubDate>
    <dc:creator>AndyE</dc:creator>
    <dc:date>2021-12-12T09:08:38Z</dc:date>
    <item>
      <title>Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793954#M4395</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new to the web app builder and JavaScript and I'm having a small problem with the settings page of my custom widget.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have 2 selection boxes listing the feature layers that are in the map, allowing the user to pick two of the layers in the map for use in my widget. The problem I have is on first loading the settings page, the chosen layers from the widgets config file are not being selected in the selection boxes.&lt;/P&gt;&lt;P&gt;When opening the settings page a second time it displays the chosen layers in the selection boxes with no problems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm assuming this has something to do with timing as the layerInfos class is deferred?&lt;/P&gt;&lt;P&gt;I think that means the selection boxes don't have any options when the settings from the config file are applied, so there are no options to select. How can I wait for the selection boxes to be fully populated before applying the settings from the config file?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If it helps, my current code is run in postCreate:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;postCreate: function() {
&amp;nbsp; //var opts = this._getLayerList();
&amp;nbsp; //this._makeSelects(opts);
&amp;nbsp; this._getLayerList();
&amp;nbsp; },&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which gets a list of feature layers:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;_getLayerList: function() {
&amp;nbsp; // Get the feature layer names...
&amp;nbsp; var lyrOptions = [];

&amp;nbsp; LayerInfos.getInstance(this.map, this.map.itemInfo).then(lang.hitch(this,function(layerInfosObject) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfosObject.traversal(lang.hitch(this,function(layerInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfo.getLayerType().then(lang.hitch(this,function(type) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (type == "FeatureLayer") {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrOptions.push( { value: layerInfo.title, label: layerInfo.title } );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp; }));

&amp;nbsp; //return lyrOptions;
&amp;nbsp; this._makeSelects(lyrOptions);
&amp;nbsp; },&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And the list of layers in then used to populate the selection boxes:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;_makeSelects: function(lyrOptions) {
&amp;nbsp; // Create selection lists
&amp;nbsp; var sel1 = new Select({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectOpportunity",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.opportunityFcList).startup();
&amp;nbsp; var sel2 = new Select({
&amp;nbsp; id: "selectRestricted",
&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.restrictedFcList).startup();
&amp;nbsp; }&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is, setConfig is happening before the seletion boxes have any options, so my chosen options are not being selected the first time the settings page is opened:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;setConfig: function(config) {
&amp;nbsp; // Load settings from the config file
&amp;nbsp; this.config = config;

&amp;nbsp; // Set select value from config
&amp;nbsp; if (config.opportunityLayer !== undefined) {
&amp;nbsp; dijit.byId('selectOpportunity').set('value', config.opportunityLayer);
&amp;nbsp; }
&amp;nbsp; if (config.restrictedLayer !== undefined) {
&amp;nbsp; dijit.byId('selectRestricted').set('value', config.restrictedLayer);
&amp;nbsp; }
&amp;nbsp; },&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Andy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793954#M4395</guid>
      <dc:creator>AndyE</dc:creator>
      <dc:date>2021-12-12T09:08:29Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793955#M4396</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Andy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are my suggested changes:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLayerList: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the feature layer names...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var lyrOptions = [];

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayerInfos.getInstance(this.map, this.map.itemInfo).then(lang.hitch(this,function(layerInfosObject) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfosObject.traversal(lang.hitch(this,function(layerInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfo.getLayerType().then(lang.hitch(this,function(type) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (type == "FeatureLayer") {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrOptions.push( { value: layerInfo.title, label: layerInfo.title } );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //return lyrOptions;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._makeSelects(lyrOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _makeSelects: function(lyrOptions) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create selection lists
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel1 = new Select({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectOpportunity",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.opportunityFcList).startup();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel2 = new Select({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectRestricted",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.restrictedFcList).startup();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.opportunityLayer !== undefined) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel1.set('value', this.config.opportunityLayer);&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.restrictedLayer !== undefined) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel2.set('value', this.config.restrictedLayer);&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setConfig: function(config) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load settings from the config file
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.config = config;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793955#M4396</guid>
      <dc:creator>RobertScheitlin__GISP</dc:creator>
      <dc:date>2021-12-12T09:08:32Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793956#M4397</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Robert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the suggestion, I've tried that and the end result is the same, the config is not loaded when first opening the settings page, but it is on subsequent opening of the settings.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've also been experimenting with Deferred/Promise and the "all" function but the end result always ends up the same (apart from the occasional error where).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've tried to unpick how the attribute table widget (the only widget I can think of that displays a list of map layers) is able to get a list of layers before loading its config but my JavaScript knowledge isn't quite there yet.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Oct 2015 15:12:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793956#M4397</guid>
      <dc:creator>AndyE</dc:creator>
      <dc:date>2015-10-07T15:12:18Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793957#M4398</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Andy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Ok try this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLayerList: function() {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the feature layer names...&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var lyrOptions = [];&amp;nbsp; 
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayerInfos.getLayerInfoArrayByType(this.map, "FeatureLayer").then(lang.hitch(this,function(layerInfosArray) {&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.forEach(layerInfosArray, lang.hitch(this, function(layerInfo){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrOptions.push( { value: layerInfo.title, label: layerInfo.title } );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //return lyrOptions;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._makeSelects(lyrOptions);&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _makeSelects: function(lyrOptions) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create selection lists&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel1 = new Select({&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectOpportunity",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.opportunityFcList).startup();&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel2 = new Select({&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectRestricted",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.restrictedFcList).startup();&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.opportunityLayer !== undefined) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel1.set('value', this.config.opportunityLayer);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.restrictedLayer !== undefined) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel2.set('value', this.config.restrictedLayer);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setConfig: function(config) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load settings from the config file&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.config = config;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793957#M4398</guid>
      <dc:creator>RobertScheitlin__GISP</dc:creator>
      <dc:date>2021-12-12T09:08:35Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793958#M4399</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Robert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm getting an error in the console now:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;TypeError: Cannot read property 'itemData' of undefined
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A755%3A55" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:755:55&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at k (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A431" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:431&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at m (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A357" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:357&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at resolve (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A191%3A441" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:191:441&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfoFactory.js%3A69%3A18" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfoFactory.js:69:18&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ha (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A22%3A473" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:22:473&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A202" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:202&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ia (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------------------------------
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rejected at a (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A190%3A337" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:190:337&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at k (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A190%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:190:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at m (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A189%3A357" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:189:357&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at resolve (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A191%3A441" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:191:441&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfoFactory.js%3A69%3A18" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfoFactory.js:69:18&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ha (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A22%3A473" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:22:473&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A202" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:202&lt;/A&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at ia (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A89" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:89&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at fa (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A23%3A144" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:23:144&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------------------------------
Error
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at then.b.then (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A192%3A253" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:192:253&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.clazz.getInstance (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A754%3A48" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:754:48&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Function.clazz.getLayerInfoArrayByType (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FLayerInfos%2FLayerInfos.js%3A712%3A11" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/LayerInfos/LayerInfos.js:712:11&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at declare._getLayerList (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fapps%2F2%2Fwidgets%2FEditOpportunity%2Fsetting%2FSetting.js%3A88%3A14" target="_blank"&gt;https://localhost/webappbuilder/apps/2/widgets/EditOpportunity/setting/Setting.js:88:14&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at declare.postCreate (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fapps%2F2%2Fwidgets%2FEditOpportunity%2Fsetting%2FSetting.js%3A41%3A8" target="_blank"&gt;https://localhost/webappbuilder/apps/2/widgets/EditOpportunity/setting/Setting.js:41:8&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at l.create (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A1124%3A207" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:1124:207&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at l.postscript (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A1122%3A464" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:1122:464&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at new &amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A98%3A192" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:98:192&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at null.&amp;lt;anonymous&amp;gt; (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Flocalhost%2Fwebappbuilder%2Fstemapp%2Fjimu.js%2FWidgetManager.js%3A338%3A33" target="_blank"&gt;https://localhost/webappbuilder/stemapp/jimu.js/WidgetManager.js:338:33&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.14%2Finit.js%3A167%3A296" target="_blank"&gt;https://js.arcgis.com/3.14/init.js:167:296&lt;/A&gt;&lt;SPAN&gt;"n @ init.js:199(anonymous function) @ init.js:199g.filter @ init.js:220k @ init&lt;/SPAN&gt;
.js:199&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried putting in a check on layerInfo to see if it was undefined in the array.forEach but the result was the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using the Developer Web App Builder 1.2, which may be an issue?&lt;/P&gt;&lt;P&gt;(This function isn't in any of the documents, though looking at it seems similar to what I've tried with&lt;EM&gt; dojo/promise/all&lt;/EM&gt; to collect all the layer types together, I may have been doing it wrong but it was still proceeding with the settings before getting all the promised results)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793958#M4399</guid>
      <dc:creator>AndyE</dc:creator>
      <dc:date>2021-12-12T09:08:38Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793959#M4400</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Andy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; OK I see that they have an error in the getLayerInfoArrayByType function. So you would need to revert back to they way you were doing it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OK here is my latest attempt:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLayerList: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var def = new Deferred();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayerInfos.getInstance(this.map, this.map.itemInfo).then(lang.hitch(this, function(layerInfosObj) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var lyrOptions = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfosObj.traversal(lang.hitch(this, function(layerInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfo.getLayerType().then(lang.hitch(this,function(type) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (type == "FeatureLayer") {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrOptions.push( { value: layerInfo.title, label: layerInfo.title } );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def.resolve(lyrOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }), lang.hitch(this, function(err) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.error(err);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def.reject(err);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return def.promise;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getLayerList().then(lang.hitch(this, function(lyrOptions){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._makeSelects(lyrOptions);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }),

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _makeSelects: function(lyrOptions) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create selection lists&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel1 = new Select({&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectOpportunity",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.opportunityFcList).startup();&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var sel2 = new Select({&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "selectRestricted",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options: lyrOptions&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }).placeAt(this.restrictedFcList).startup();&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.opportunityLayer !== undefined) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel1.set('value', this.config.opportunityLayer);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.config.restrictedLayer !== undefined) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sel2.set('value', this.config.restrictedLayer);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setConfig: function(config) {&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load settings from the config file&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.config = config;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793959#M4400</guid>
      <dc:creator>RobertScheitlin__GISP</dc:creator>
      <dc:date>2021-12-12T09:08:40Z</dc:date>
    </item>
    <item>
      <title>Re: Custom widget settings - layerInfos class help</title>
      <link>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793960#M4401</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Robert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help, the code you posted didn't resolve the issue, but it pointed me in the right direction. The final solution was to ditch &lt;EM&gt;layerInfosObject.traversal&lt;/EM&gt;, and instead generate 2 arrays of layerInfo objects and layerTypes, wait for all the types to resolve, and then set the selected values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the working code:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;postCreate: function() {
&amp;nbsp; var layerTypes = [];
&amp;nbsp; var lyrOptions = [];

&amp;nbsp; // Get the map layers
&amp;nbsp; this.getLayerList().then(lang.hitch(this, function(myLayerInfos){
&amp;nbsp; array.forEach(myLayerInfos,lang.hitch(this,function(layerInfo){
&amp;nbsp; // Get an array of map layer types
&amp;nbsp; layerTypes.push(layerInfo.getLayerType());
&amp;nbsp; }));

&amp;nbsp; // When all the type have been retrieved...
&amp;nbsp; all(layerTypes).then(lang.hitch(this,function(layerTypes) {
&amp;nbsp; for (var j=0; j&amp;lt;layerTypes.length;j++) {
&amp;nbsp; // ... build an options list of just the feature layers
&amp;nbsp; if (layerTypes&lt;J&gt; == "FeatureLayer"){&lt;/J&gt;
&amp;nbsp; lyrOptions.push({ value: myLayerInfos&lt;J&gt;.title, label: myLayerInfos&lt;J&gt;.title });&lt;/J&gt;&lt;/J&gt;
&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; this.makeSelects(lyrOptions);
&amp;nbsp; }));
&amp;nbsp; }));
},


getLayerList: function() {
&amp;nbsp; // Get an array of layerInfo for every layer in the map
&amp;nbsp; var def = new Deferred();&amp;nbsp; 
&amp;nbsp; var myLayerInfos = [];

&amp;nbsp; LayerInfos.getInstance(this.map, this.map.itemInfo).then(lang.hitch(this, function(layerInfosObj) {
&amp;nbsp; myLayerInfos.push.apply(myLayerInfos,this.iterLayers(layerInfosObj.getLayerInfoArray()));
&amp;nbsp; def.resolve(myLayerInfos);
&amp;nbsp; }), lang.hitch(this, function(err) {
&amp;nbsp; console.error(err);
&amp;nbsp; def.reject(err);
&amp;nbsp; }));

&amp;nbsp; return def.promise;
},


iterLayers: function(layerInfos){
&amp;nbsp; // Iterate through layers and sublayers to get an array of all the layers
&amp;nbsp; var result = [];

&amp;nbsp; array.forEach(layerInfos,lang.hitch(this,function(layerInfo){
&amp;nbsp; result.push(layerInfo);
&amp;nbsp; result.push.apply(result,this.iterLayers(layerInfo.getSubLayers()));
&amp;nbsp; }));

&amp;nbsp; return result;
},


makeSelects: function(lyrOptions) {
&amp;nbsp; // Create selection lists
&amp;nbsp; var sel1 = new Select({
&amp;nbsp; id: "selectOpportunity",
&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp; options: lyrOptions
&amp;nbsp; }).placeAt(this.opportunityFcList).startup();

&amp;nbsp; var sel2 = new Select({
&amp;nbsp; id: "selectRestricted",
&amp;nbsp; emptyLabel: " -- Choose a Map layer -- ",
&amp;nbsp; options: lyrOptions
&amp;nbsp; }).placeAt(this.restrictedFcList).startup();

&amp;nbsp; if (this.config.opportunityLayer !== undefined) {
&amp;nbsp; dijit.byId('selectOpportunity').set('value', this.config.opportunityLayer);
&amp;nbsp; }
&amp;nbsp; if (this.config.restrictedLayer !== undefined) {
&amp;nbsp; dijit.byId('selectRestricted').set('value', this.config.restrictedLayer);
&amp;nbsp; }
},&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your time, I didn't think it would take so long to resolve this one!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 09:08:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/web-appbuilder-custom-widgets-questions/custom-widget-settings-layerinfos-class-help/m-p/793960#M4401</guid>
      <dc:creator>AndyE</dc:creator>
      <dc:date>2021-12-12T09:08:43Z</dc:date>
    </item>
  </channel>
</rss>

