Hi! I'm using ArcGIS Online and ArcGIS Enterprise, and I would like to configure a pop-up to only show the attributes that have values for one specific feature. So basically a dynamic pop-up. I try using a arcade expression, like this one below.
Yet it only returns an empty pop-up. Is there a mistake, or am I thinking in the wrong way?
Any help is appreciated.
var attribut = [
["SÅF_ID", $feature["SÅF_ID"]],
["SDF", $feature["SDF"]],
["SÅF_STRÅK", $feature["SÅF_STRÅK"]],
["SÅF_MILJÖ", $feature["SÅF_MILJÖ"]],
["ARTER", $feature["ARTER"]],
["WS_FÖRSLAG", $feature["WS_FÖRSLAG"]],
["FRITEXT", $feature["FRITEXT"]],
["ANL_ANG", $feature["ANL_ANG"]],
["ANL_BIOTOP", $feature["ANL_BIOTOP"]],
["ANL_BOFLOT", $feature["ANL_BOFLOT"]],
["ANL_EKODUK", $feature["ANL_EKODUK"]],
["ANL_GRNBLR", $feature["ANL_GRNBLR"]],
["ANL_GRODPA", $feature["ANL_GRODPA"]],
["ANL_SMVTN", $feature["ANL_SMVTN"]],
["ANL_RGNBDD", $feature["ANL_RGNBDD"]],
["ANL_VXTVGG", $feature["ANL_VXTVGG"]],
["ANP_BELYS", $feature["ANP_BELYS"]],
["BETE", $feature["BETE"]],
["FRST_GMLTR", $feature["FRST_GMLTR"]],
["PLNT_BSKBL", $feature["PLNT_BSKBL"]],
["PLNT_EK", $feature["PLNT_EK"]],
["PLNT_POLLV", $feature["PLNT_POLLV"]],
["PLNT_TALL", $feature["PLNT_TALL"]],
["PLNT_TR", $feature["PLNT_TR"]],
["PLNT_VTTVX", $feature["PLNT_VTTVX"]],
["REN_TLRVAT", $feature["REN_TLRVAT"]],
["REST_ANG", $feature["REST_ANG"]],
["REST_BTN", $feature["REST_BTN"]],
["REST_SMVTN", $feature["REST_SMVTN"]],
["REST_VTNDR", $feature["REST_VTNDR"]],
["REST_VTMRK", $feature["REST_VTMRK"]],
["SKP_BRYN", $feature["SKP_BRYN"]],
["SKP_FNDP", $feature["SKP_FNDP"]],
["SKP_HGSTBR", $feature["SKP_HGSTBR"]],
["SKP_OVRVI", $feature["SKP_OVRVI"]],
["SKP_RISVAS", $feature["SKP_RISVAS"]],
["SKP_SAND", $feature["SKP_SAND"]],
["SKP_TRRB", $feature["SKP_TRRB"]],
["SKP_VTMRK", $feature["SKP_VTMRK"]],
["STUP_FLADD", $feature["STUP_FLADD"]],
["STUP_INSHT", $feature["STUP_INSHT"]],
["STUP_MLMHL", $feature["STUP_MLMHL"]],
["STUP_TRNFL", $feature["STUP_TRNFL"]],
["TILLF_BT", $feature["TILLF_BT"]]
];
var utdata = "";
for (var i in attribut) {
if (!IsEmpty(attribut[i][1])) {
utdata += attribut[i][0] + ": " + attribut[i][1] + TextFormatting.NewLine;
}
}
return utdata;
Hello,
I used your code with test data in the playground and it worked for me. I suggest adding some logging (see example) so you can check the value(s) are expected.
Example:
The following keys in feature are empty, either "" or null, and should not be returned in the output.
"SÅF_ID"
"SDF"
"SÅF_STRÅK"
"SÅF_MILJÖ"
"ARTER"
"WS_FÖRSLAG"
"FRITEXT"
"REST_ANG"
"REST_BTN"
"REST_SMVTN"
"REST_VTNDR"
"REST_VTMRK"
var featureDict = {
attributes:
{
"SÅF_ID": "",
SDF: "",
"SÅF_STRÅK": "",
"SÅF_MILJÖ": "",
ARTER: "",
"WS_FÖRSLAG": "",
FRITEXT: "",
ANL_ANG: "foo",
ANL_BIOTOP: "foo",
ANL_BOFLOT: "foo",
ANL_EKODUK: "foo",
ANL_GRNBLR: "foo",
ANL_GRODPA: "foo",
ANL_SMVTN: "foo",
ANL_RGNBDD: "foo",
ANL_VXTVGG: "foo",
ANP_BELYS: "foo",
BETE: "foo",
FRST_GMLTR: "foo",
PLNT_BSKBL: "foo",
PLNT_EK: "foo",
PLNT_POLLV: "foo",
PLNT_TALL: "foo",
PLNT_TR: "foo",
PLNT_VTTVX: "foo",
REN_TLRVAT: "foo",
REST_ANG: null,
REST_BTN: null,
REST_SMVTN: null,
REST_VTNDR: null,
REST_VTMRK: null,
SKP_BRYN: "foo",
SKP_FNDP: "foo",
SKP_HGSTBR: "foo",
SKP_OVRVI: "foo",
SKP_RISVAS: "foo",
SKP_SAND: "foo",
SKP_TRRB: "foo",
SKP_VTMRK: "foo",
STUP_FLADD: "foo",
STUP_INSHT: "foo",
STUP_MLMHL: "foo",
STUP_TRNFL: "foo",
TILLF_BT: "foo"
}
};
// create a new feature from a dictionary attributes
var newFeature = Feature(featureDict);
var attribut = [
["SÅF_ID", newFeature["SÅF_ID"]],
["SDF", newFeature["SDF"]],
["SÅF_STRÅK", newFeature["SÅF_STRÅK"]],
["SÅF_MILJÖ", newFeature["SÅF_MILJÖ"]],
["ARTER", newFeature["ARTER"]],
["WS_FÖRSLAG", newFeature["WS_FÖRSLAG"]],
["FRITEXT", newFeature["FRITEXT"]],
["ANL_ANG", newFeature["ANL_ANG"]],
["ANL_BIOTOP", newFeature["ANL_BIOTOP"]],
["ANL_BOFLOT", newFeature["ANL_BOFLOT"]],
["ANL_EKODUK", newFeature["ANL_EKODUK"]],
["ANL_GRNBLR", newFeature["ANL_GRNBLR"]],
["ANL_GRODPA", newFeature["ANL_GRODPA"]],
["ANL_SMVTN", newFeature["ANL_SMVTN"]],
["ANL_RGNBDD", newFeature["ANL_RGNBDD"]],
["ANL_VXTVGG", newFeature["ANL_VXTVGG"]],
["ANP_BELYS", newFeature["ANP_BELYS"]],
["BETE", newFeature["BETE"]],
["FRST_GMLTR", newFeature["FRST_GMLTR"]],
["PLNT_BSKBL", newFeature["PLNT_BSKBL"]],
["PLNT_EK", newFeature["PLNT_EK"]],
["PLNT_POLLV", newFeature["PLNT_POLLV"]],
["PLNT_TALL", newFeature["PLNT_TALL"]],
["PLNT_TR", newFeature["PLNT_TR"]],
["PLNT_VTTVX", newFeature["PLNT_VTTVX"]],
["REN_TLRVAT", newFeature["REN_TLRVAT"]],
["REST_ANG", newFeature["REST_ANG"]],
["REST_BTN", newFeature["REST_BTN"]],
["REST_SMVTN", newFeature["REST_SMVTN"]],
["REST_VTNDR", newFeature["REST_VTNDR"]],
["REST_VTMRK", newFeature["REST_VTMRK"]],
["SKP_BRYN", newFeature["SKP_BRYN"]],
["SKP_FNDP", newFeature["SKP_FNDP"]],
["SKP_HGSTBR", newFeature["SKP_HGSTBR"]],
["SKP_OVRVI", newFeature["SKP_OVRVI"]],
["SKP_RISVAS", newFeature["SKP_RISVAS"]],
["SKP_SAND", newFeature["SKP_SAND"]],
["SKP_TRRB", newFeature["SKP_TRRB"]],
["SKP_VTMRK", newFeature["SKP_VTMRK"]],
["STUP_FLADD", newFeature["STUP_FLADD"]],
["STUP_INSHT", newFeature["STUP_INSHT"]],
["STUP_MLMHL", newFeature["STUP_MLMHL"]],
["STUP_TRNFL", newFeature["STUP_TRNFL"]],
["TILLF_BT", newFeature["TILLF_BT"]]
];
var utdata = "";
for (var i in attribut) {
if (!IsEmpty(attribut[i][1])) {
Console("Not empty: " + attribut[i][0] + ": " + attribut[i][1]); // check value is expected
utdata += attribut[i][0] + ": " + attribut[i][1] + TextFormatting.NewLine;
} else {
Console("Empty: " + attribut[i][0] + ": " + attribut[i][1]); // check value is expected
}
}
return utdata;
Output:
text: "ANL_ANG: foo
ANL_BIOTOP: foo
ANL_BOFLOT: foo
ANL_EKODUK: foo
ANL_GRNBLR: foo
ANL_GRODPA: foo
ANL_SMVTN: foo
ANL_RGNBDD: foo
ANL_VXTVGG: foo
ANP_BELYS: foo
BETE: foo
FRST_GMLTR: foo
PLNT_BSKBL: foo
PLNT_EK: foo
PLNT_POLLV: foo
PLNT_TALL: foo
PLNT_TR: foo
PLNT_VTTVX: foo
REN_TLRVAT: foo
SKP_BRYN: foo
SKP_FNDP: foo
SKP_HGSTBR: foo
SKP_OVRVI: foo
SKP_RISVAS: foo
SKP_SAND: foo
SKP_TRRB: foo
SKP_VTMRK: foo
STUP_FLADD: foo
STUP_INSHT: foo
STUP_MLMHL: foo
STUP_TRNFL: foo
TILLF_BT: foo
"