AnsweredAssumed Answered

Need to run a queryTask as part of infoTemplate content

Question asked by schlot on Jun 21, 2016

I know I need to have some sort of Deferred defined here, but I'm not sure where to insert it.  I have a point layer with school names and school districts.  I have a table that has the school districts and names again, plus results of testing for radon.

 

I do not have this set up as a relate in my service.  Names of schools are not unique across the state, and I have no unique ID provided in that table.  Instead, I need to be able to run a query on the table, and before showing the infoWindow, I want to capture the tabular data too and append it to the data coming from the graphic (name, address, city etc). 

 

Right now I only have one year's worth of data per school, but there is also the potential for additional years as time goes by.

My InfoTemplate definition:

 

//infoTemplates

var schoolPtInfoTemplate = new InfoTemplate("Test Results");
schoolPtInfoTemplate.setContent(myInfoTemplate.schoolInfoContent);

 

my pointLayer

 

  app.pointLayer = new FeatureLayer (pathName+"/arcgis/rest/services/radonSchool/MapServer/0", {
  id: "schoolLayer",
  outFields: ["*"],
  infoTemplate: schoolPtInfoTemplate
  });

 

//myInfoTemplate

define ([  
"dojo/dom-construct",
"dojo/on",
"dojo/dom",
"dojo/Deferred"   ,
"dojo/_base/array",
"dojo/_base/lang", 
"dojo/query",
"dojo/date/locale",
"dojo/number",
"esri/tasks/query",
"esri/tasks/QueryTask",
"js/myRelates"
  ] , function (domConstruct,on,dom,Deferred,arrayUtils, lang,query,locale,number, Query,QueryTask, myRelates) {  
    return {
      schoolInfoContent: function(graphic){
        var currentGraphic = graphic;
        var formatString = "";   
  var oid = graphic.attributes.OBJECTID;
  var ctyDist = graphic.attributes.CtyDist;
  var locTest = graphic.attributes.Loc_Code;
  var nm = graphic.attributes.Facility
   
         formatString ="<b>" + graphic.attributes.Facility + "</b><br/>"
  + graphic.attributes.Address + "<br/>" 
  + graphic.attributes.City+ ", MO  " + graphic.attributes.ZIP

  var addedString = findSchRelatedRecords (nm, ctyDist);
  formatString += addedString;

  function findSchRelatedRecords (nm, id){
        var schQuery = new Query;
       var queryTask = new QueryTask(app.testTable.url);
       var whereClause = "Facility = '" + nm + "' AND Dist_Code = '" + id + "'"; 
       schQuery.where = whereClause;
          schQuery.returnGeometry = false;  
       schQuery.outFields = ['*'];    

      queryTask.execute(schQuery, lang.hitch(this,function(results){ 
              var addedString = " "; 
           var len = results.features.length;
       if (len = 0) {
            addedString += "No test results found";
            }else {
            arrayUtils.forEach(results, function (r) {
            addedString += "Start Year: " + r.attributes.ScholYearStart;
       });
  }

  })
  );
  return addedString;
  }
          return formatString;
      } 
    }
});

Outcomes