Select to view content in your preferred language

Pop-up only displaying attributes that have values

150
1
4 weeks ago
Labels (2)
MiljöförvaltningenAdmin
New Contributor

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;

0 Kudos
1 Reply
pc2
by
New Contributor

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
"

 

0 Kudos