In migrating applications from WAB to Ex Builder, I am configuring pop ups via Arcade. The idea of the code below is to not display the fields in "fieldsToExclude", then display all other fields in every layer for the webmap using the same code and hyperlink when applicable. The issue I have been having is I cannot find a way to have the pop ups display the field alias, where it is only displaying the field name. The second issue is that the pop up is not displaying the fields in order of how the service is published.
// General and URL Fields Formatting
var fieldsToExclude = ["OBJECTID", "SHAPE", "LAYERNAME", "GLOBALID", "SHAPE.STAREA()", "SHAPE.STLENGTH()", "CREATED_USER", "CREATED_DATE", "LAST_EDITED_USER", "LAST_EDITED_DATE", "LASTMODBY", "LASTMODDATE", "LASTSYNDATE"];
var content = "";
var seenUrls = {};
// Function to format URL fields
function formatURL(label, value) {
return "<b>" + label + ":</b> <a target='_blank' href='" + value + "'>Click here for more info.</a><br/>";
}
// Iterate over each field in the $feature
for (var field in $feature) {
var value = $feature[field];
var alias = field; // Use the field name as a fallback alias
// Exclude certain fields and check if value is not empty
if (IndexOf(fieldsToExclude, Upper(field)) == -1 && !IsEmpty(value) && Upper(value) != "NULL") {
// Check if the field value is a URL and format accordingly
if (Upper(Left(value, 7)) == "HTTP://" || Upper(Left(value, 8)) == "HTTPS://") {
if (!HasKey(seenUrls, value)) {
content += formatURL(alias, value);
seenUrls[value] = true;
}
} else {
content += "<b>" + alias + ":</b> " + Text(value) + "<br/>";
}
}
}
return {
type: 'text',
text: content // this property supports HTML tags
};