I am trying to create popups in map viewer that show different fields depending on the activity type of the polygon. I've written this expression (see below) and when I run it in the expression editor it works perfectly. When I look at my popup, I get all of the correct field names, but only some of the data. Any idea what I'm missing here? Photos attached of what I see in the test space vs the popup.
Thanks!
//create feature set from Activities layer
var fs = FeatureSetByName($map, 'Activities')
//define categories of activity types
var harvest = ['Clearcut','Overstory Removal','Improvement Thinning','Cluster Thinning','Free Thinning','Thinning From Above (Release Cut)','Crown Thinning','Crop Tree Release','Early Commercial Thinning','Group Shelterwood','Two-Stage Shelterwood','Three-Stage Shelterwood','Irregular Shelterwood','Deferred or Low Density Shelterwood','Shelterwood w/Reserves or Retention','Patch Cuts or Progressive Clearcuts','Seed Tree','Strip Cuts','Group Selection','Individual Tree Selection','Combined Group & Individual Tree Sel','Salvage Harvest','Wildlife Habitat Improvement']
var sitePrep = ['Chemical Site Prep','Mechanical Site Prep']
var inventory = ['Cruise','Planting','Survival','Crown Closure','Carbon Cruise','Growth and Yield','Audit Cruise','EFI','Post Ops Cruise','Permanent Growth Plots','CFI','Regen','Maple Taps',]
//define fields to display for each category
var harvestfields = ['Type','Status','JOB_NAME','Activity_Manager','ForestryNotificationfNum','CERTIFICATION','EASEMENT','T_E_PRESENCE','Method','HU_STATUS','EstimatedStart','ActualStart','EstimatedStop','ActualEnd','Contractor','Subcontractor','ACRES','MGT_RESTRICTION','RESTRICTION_DSC','Budget','EstimatedGrossRevenue','ActualGrossRevenue','EstimatedNetRevenue','ActualNetRevenue','OPERABILITY','Season','MARKED','StandAge','SILV_SYS','Document_Link','NOTES','Township','County','State','LVI_CODE','CreatedBy','CreatedOn','ModifiedBy','ModifiedOn','SUPER_TYPE','CERT_NUMB','Prescriptions','POST_OP_STATUS','POST_OP_STRATA','POST_OP_OS_TYPE','POST_OP_US_TYPE','OS_SP_1','OS_SP_2','US_SP_1','US_SP_2','OvYrEstabR','UnYrEstabR','YR_COMPLETE']
var siteprepfields = ['Type','Status','JOB_NAME','Activity_Manager','CERTIFICATION','EASEMENT','T_E_PRESENCE','Method','EstimatedStart','ActualStart','EstimatedStop','ActualEnd','Contractor','Subcontractor','ACRES','MGT_RESTRICTION','RESTRICTION_DSC','Budget','TotalEstimatedCost','TotalActualCost','EstimatedLaborCost','ActualLaborCost','EstimatedMaterialsCost','ActualMaterialsCost','OPERABILITY','Season','PRE_COM_TREATMENT_1','PRE_COM_TREATMENT_2','PRE_COM_YR_1','PRE_COM_YR_2','StandAge','Document_Link','NOTES','Township','County','State','LVI_Code','CreatedBy','CreatedOn','ModifiedBy','ModifiedOn']
var inventoryfields = ['Type','Status','JOB_NAME','Activity_Manager','CERTIFICATION','EASEMENT','EstimatedStart','ActualStart','EstimatedStop','ActualEnd','Contractor','ACRES','Method','Budget','TotalEstimatedCost','TotalActualCost','EstimatedLaborCost','ActualLaborCost','EstimatedMaterialsCost','ActualMaterialsCost','Miscellaneous_Cost','Project_Source','Document_Link','NOTES','Township','County','State','LVI_Code','CreatedBy','CreatedOn','ModifiedBy','ModifiedOn']
//create popup
function createPopup (fieldsList) {
var popup = ''
for (var f in fieldslist){
var field = fieldslist[f]
var value = DomainName(fs, field, $feature[field])
popup += field + ": " + value + TextFormatting.NewLine
}
return popup
}
//call createPopup function
if (Includes(harvest, DomainName($feature, 'Type'))) {
createPopup(harvestfields)
} else if (Includes(sitePrep, DomainName($feature, 'Type'))) {
createPopup(siteprepfields)
} else if (Includes(inventory, DomainName($feature, 'Type'))) {
createPopup(inventoryfields)
} else {
return "not found"
}
Solved! Go to Solution.
Resolved the issue. I needed to add this to the beginning of the expression:
Expects($feature, '*')
This community post helped me get there.
Resolved the issue. I needed to add this to the beginning of the expression:
Expects($feature, '*')
This community post helped me get there.