<?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: infoTemplate - content from a function - field aliases in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/infotemplate-content-from-a-function-field-aliases/m-p/710474#M66057</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I had a similar &lt;A _jive_internal="true" href="https://community.esri.com/message/407629#407629"&gt;issue&lt;/A&gt; with the Query returning the field names and the Identify returning field aliases. I was trying to get an attribute from a feature that could be returned from either a Query or an Identify. I resolved this by first attempting to use the field alias on a returned feature. If that returned a null, then I used the field name.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 18 Nov 2014 21:49:31 GMT</pubDate>
    <dc:creator>KenBuja</dc:creator>
    <dc:date>2014-11-18T21:49:31Z</dc:date>
    <item>
      <title>infoTemplate - content from a function - field aliases</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/infotemplate-content-from-a-function-field-aliases/m-p/710473#M66056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have an infoTemplate with a function for generating the content.&amp;nbsp; I'd like to be able to use this same function again for my click event on my grid.&amp;nbsp; The problem is that I have some field aliases.&amp;nbsp; For my map click, it finds the alias fields just fine.&amp;nbsp; When I do the grid click, I'm executing a queryTask and the graphic result doesn't know about the field aliases.&amp;nbsp; I've read through another thread this is 'expected behavior', that the identifyTask uses the aliases just fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have multiple layers I want to be able to click on on the map, but only one layer that's populated in a grid.&amp;nbsp; At the moment, that layer is loaded as a ArcGISDynamicMapServiceLayer.&amp;nbsp; Would it help to load this as a featureLayer instead and do a featureLayer.selectFeatures?&amp;nbsp; Do featureLayers honor aliases any better than a queryTask does?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've created a series of arrays to use for each layer, since I want to control which fields will appear in the infoTemplate:&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14163444146974041 jive_text_macro" jivemacro_uid="_14163444146974041"&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pubSchoolAtt = ['OBJECTID','Facility','Address', 'City','Phone', 'County', 'Enrollment', 'Teachers', 'BeginningGrade', 'EndingGrade'];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var schoolDistAtt = ['OBJECTID','District Name', 'District Code'];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var legisDistAtt = ['OBJECTID','District'];&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;My infoTemplate is defined as&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14163444874215354" jivemacro_uid="_14163444874215354"&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; generateInfoTemplate = new InfoTemplate();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; generateInfoTemplate.setContent(generateWindowContent);&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;function generateWindowContent(graphic) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var attString = "";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; var layerName = graphic.attributes.layerName;//case sensitive field names&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (!layerName){&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerName = "School";&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; var fieldNamesArr = [];&lt;/P&gt;
&lt;P&gt;for (fieldName in graphic.attributes) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (graphic.attributes.hasOwnProperty(fieldName) &amp;amp;&amp;amp; fieldName !=='Shape' &amp;amp;&amp;amp; fieldName !== 'Shape.area' &amp;amp;&amp;amp; fieldName !== 'Shape.len') {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldNamesArr.push(fieldName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;}&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(layerName){&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "House":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, legisDistAtt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "Senate":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, legisDistAtt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "School":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, pubSchoolAtt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "Public School":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, pubSchoolAtt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "School District":&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, schoolDistAtt);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attString = createAttRows(graphic, fieldNamesArr, layerName);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; initTable = "&amp;lt;b class = 'infoHeader'&amp;gt;"+ layerName +" Information&amp;lt;/b&amp;gt;";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; initTable = initTable + "&amp;lt;table id='infoWindowTable' data-dojo-type='dgrid/OnDemandGrid',' data-dojo-props='class:'infoTable'' &amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;"; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; initTable = initTable + attString;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; initTable = initTable + "&amp;lt;/table&amp;gt;";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return initTable;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;Here's my grid click event&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14163445812163233 jive_text_macro" jivemacro_uid="_14163445812163233"&gt;
&lt;P&gt;function highlightGridSelection(event, dGrid) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = dGrid.row(event);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var query = new Query();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var schName = [row.data.facility];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cityName = [row.data.city];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.where = "Facility = '" + schName + "' and " + "City = '" + cityName + "'";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.returnGeometry = true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.outFields = ["*"];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.outSpatialReference = spatialReference;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var queryTask = new QueryTask(educationLayer.url+"/0");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryTask.execute(query, highlightResults);&lt;/P&gt;
&lt;P&gt;}&amp;nbsp; &lt;/P&gt;
&lt;P&gt;function highlightResults(results) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (results) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var feature = results.features[0];//already esri.Graphic&lt;/P&gt;
&lt;P&gt; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var featType = feature.geometry.type;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var graphic = new Graphic(feature.geometry, highlightMarkerSymbol);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; feature.setInfoTemplate(generateInfoTemplate);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.infoWindow.setFeatures(results.features);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.infoWindow.show(feature.geometry);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.graphics.add(graphic);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("No records by that ID");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;Does anybody have any clever ideas on how I can my one function work for both type of events?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Nov 2014 21:04:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/infotemplate-content-from-a-function-field-aliases/m-p/710473#M66056</guid>
      <dc:creator>TracySchloss</dc:creator>
      <dc:date>2014-11-18T21:04:04Z</dc:date>
    </item>
    <item>
      <title>Re: infoTemplate - content from a function - field aliases</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/infotemplate-content-from-a-function-field-aliases/m-p/710474#M66057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I had a similar &lt;A _jive_internal="true" href="https://community.esri.com/message/407629#407629"&gt;issue&lt;/A&gt; with the Query returning the field names and the Identify returning field aliases. I was trying to get an attribute from a feature that could be returned from either a Query or an Identify. I resolved this by first attempting to use the field alias on a returned feature. If that returned a null, then I used the field name.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Nov 2014 21:49:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/infotemplate-content-from-a-function-field-aliases/m-p/710474#M66057</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2014-11-18T21:49:31Z</dc:date>
    </item>
  </channel>
</rss>

