Map Viewer: Enable Pop Up Elements with Conditions for showing them

289
1
08-03-2022 08:57 AM
Status: Open
jessneuner
Occasional Contributor

With the new map viewer, there's some great new patterns for designing pop ups.  One thing we still struggle with frequently is having to build arcade/html/etc to either show or hide information based on it's relevancy or completeness. 

What would be really cool is if we could show a pop up component based on a condition. 

For example... 

popup_idea_conditions.png

 It'd be neat if we could tie a simple arcade expression to it perhaps.

1 Comment
MadsBorggaard

This would be nice, or if you could use this from ArcGIS Pro

the show and dontShowIfEmpty arrays is the only things to change for this to work in Pro, but I cant get it to work in ether MapViewer or MapViewer Classic, I'm on Enterprise version 11.1

The array show contains all the aliases for the fields that should be shown
The array dontShowIfEmpty contains all the aliases for the fields that is invisible if it is empty, theses aliases has to be in the show array also

var attributes = {};
var fieldInfos = [];
var fullFeature = getfeatureset($feature);
var flds = schema(fullFeature)["fields"];
var show = ['PlanID', 'PlanID for kommuneplantillæg som rammen er knyttet til', 'PlanID for kommuneplan som rammen er knyttet til', 'Plantype', 'Plannavn', 'Plannummer', 'Plandistrikt', 'Anvendelse generel', 'Ikrafttrædelsesdato', 'Planens status', 'Min. tilladete miljøklasse', 'Max. tilladete miljøklasse', 'Generelle anvendelsesbestemmelser', 'Områdets anvendelse', 'Bebyggelsesomfang og -udformning.', 'Opholds- og fritidsarealer.', 'Miljøforhold.', 'Infrastruktur.', 'Zonestatus.', 'Lokalplaner indenfor rammen.', 'Notatfelt', 'Zone nuværende', 'Zone fremtidig', 'Særlig forhold', 'Min. udstykning', 'Max. bebyggelsesprocent', 'Max. etageareal', 'Specifik anvendelse (1)', 'Max. bebyggelsesprocent (1)', 'Max. etageareal (1)', 'Max. bebyggelsesrumfang (m3/m2) (1)', 'Max. højde (m) (1)', 'Max. antal etager (1)', 'Min. udstykning (1)', 'Specifik anvendelse (2)', 'Max. bebyggelsesprocent (2)', 'Max. etageareal (2)', 'Max. bebyggelsesrumfang (m3/m2) (2)', 'Max. højde (m) (2)', 'Max. antal etager (2)', 'Min. Udstykning (2)', 'Specifik anvendelse (3)', 'Max. bebyggelsesprocent (3)', 'Max. etageareal (3)', 'Max. bebyggelsesrumfang (m3/m2) (3)', 'Max. højde (m) (3)', 'Max. antal etager (3)', 'Min. udstykning (3)', 'Specifik anvendelse (4)', 'Max. bebyggelsesprocent (4)', 'Max. etageareal (4)', 'Max. bebyggelsesrumfang (m3/m2) (4)', 'Max. højde (m) (4)', 'Max. antal etager (4)', 'Min. udstykning (4)', 'Specifik anvendelse (5)', 'Max. bebyggelsesprocent (5)', 'Max. etageareal (5)', 'Max. bebyggelsesrumfang (m3/m2) (5)', 'Max. højde (m) (5)', 'Max. antal etager (5)', 'Min. udstykning (5)', 'Specifik anvendelse (6)', 'Max. bebyggelsesprocent (6)', 'Max. etageareal (6)', 'Max. bebyggelsesrumfang (m3/m2) (6)', 'Max. højde (m) (6)', 'Max. antal etager (6)', 'Min. udstykning (6)', 'Specifik anvendelse (7)', 'Max. bebyggelsesprocent (7)', 'Max. etageareal (7)', 'Max. bebyggelsesrumfang (m3/m2) (7)', 'Max. højde (m) (7)', 'Max. antal etager (7)', 'Min. udstykning (7)', 'Specifik anvendelse (8)', 'Max. bebyggelsesprocent (8)', 'Max. etageareal (8)', 'Max. bebyggelsesrumfang (m3/m2) (8)', 'Max. højde (m) (8)', 'Max. antal etager (8)', 'Min. udstykning (8)', 'Specifik anvendelse (9)', 'Max. bebyggelsesprocent (9)', 'Max. etageareal (9)', 'Max. bebyggelsesrumfang (m3/m2) (9)', 'Max. højde (m) (9)', 'Max. antal etager (9)', 'Min. udstykning (9)', 'Specifik anvendelse (10)', 'Max. bebyggelsesprocent (10)', 'Max. etageareal (10)', 'Max. bebyggelsesrumfang (m3/m2) (10)', 'Max. højde (m) (10)', 'Max. antal etager (10)', 'Min. udstykning (10)', 'Sidst hentet'];
var dontShowIfEmpty = ['PlanID for kommuneplantillæg som rammen er knyttet til', 'PlanID for kommuneplan som rammen er knyttet til', 'Min. tilladete miljøklasse', 'Max. tilladete miljøklasse', 'Generelle anvendelsesbestemmelser', 'Områdets anvendelse', 'Bebyggelsesomfang og -udformning.', 'Opholds- og fritidsarealer.', 'Miljøforhold.', 'Infrastruktur.', 'Zonestatus.', 'Lokalplaner indenfor rammen.', 'Notatfelt', 'Zone nuværende', 'Zone fremtidig', 'Særlig forhold', 'Min. udstykning', 'Max. bebyggelsesprocent', 'Max. etageareal', 'Specifik anvendelse (1)', 'Max. bebyggelsesprocent (1)', 'Max. etageareal (1)', 'Max. bebyggelsesrumfang (m3/m2) (1)', 'Max. højde (m) (1)', 'Max. antal etager (1)', 'Min. udstykning (1)', 'Specifik anvendelse (2)', 'Max. bebyggelsesprocent (2)', 'Max. etageareal (2)', 'Max. bebyggelsesrumfang (m3/m2) (2)', 'Max. højde (m) (2)', 'Max. antal etager (2)', 'Min. Udstykning (2)', 'Specifik anvendelse (3)', 'Max. bebyggelsesprocent (3)', 'Max. etageareal (3)', 'Max. bebyggelsesrumfang (m3/m2) (3)', 'Max. højde (m) (3)', 'Max. antal etager (3)', 'Min. udstykning (3)', 'Specifik anvendelse (4)', 'Max. bebyggelsesprocent (4)', 'Max. etageareal (4)', 'Max. bebyggelsesrumfang (m3/m2) (4)', 'Max. højde (m) (4)', 'Max. antal etager (4)', 'Min. udstykning (4)', 'Specifik anvendelse (5)', 'Max. bebyggelsesprocent (5)', 'Max. etageareal (5)', 'Max. bebyggelsesrumfang (m3/m2) (5)', 'Max. højde (m) (5)', 'Max. antal etager (5)', 'Min. udstykning (5)', 'Specifik anvendelse (6)', 'Max. bebyggelsesprocent (6)', 'Max. etageareal (6)', 'Max. bebyggelsesrumfang (m3/m2) (6)', 'Max. højde (m) (6)', 'Max. antal etager (6)', 'Min. udstykning (6)', 'Specifik anvendelse (7)', 'Max. bebyggelsesprocent (7)', 'Max. etageareal (7)', 'Max. bebyggelsesrumfang (m3/m2) (7)', 'Max. højde (m) (7)', 'Max. antal etager (7)', 'Min. udstykning (7)', 'Specifik anvendelse (8)', 'Max. bebyggelsesprocent (8)', 'Max. etageareal (8)', 'Max. bebyggelsesrumfang (m3/m2) (8)', 'Max. højde (m) (8)', 'Max. antal etager (8)', 'Min. udstykning (8)', 'Specifik anvendelse (9)', 'Max. bebyggelsesprocent (9)', 'Max. etageareal (9)', 'Max. bebyggelsesrumfang (m3/m2) (9)', 'Max. højde (m) (9)', 'Max. antal etager (9)', 'Min. udstykning (9)', 'Specifik anvendelse (10)', 'Max. bebyggelsesprocent (10)', 'Max. etageareal (10)', 'Max. bebyggelsesrumfang (m3/m2) (10)', 'Max. højde (m) (10)', 'Max. antal etager (10)', 'Min. udstykning (10)']
var rowID = 0;
for (var f in flds) {
    var fieldname = flds[f]["alias"];
    var fieldvalue = $feature[flds[f]["name"]];
    if (!includes(dontShowIfEmpty, fieldname) && isEmpty(fieldvalue)) { fieldvalue = ' ' }

    if (includes(show, fieldname) && !isEmpty(fieldvalue)) {
        var valType = flds[f]["type"];
        if (valType == 'esriFieldTypeDate') {
            fieldvalue = text(fieldvalue, 'DD-MM-Y')
        };
        attributes[fieldname] = fieldvalue;
        var fi = {
            fieldName: fieldname
        };
        insert(fieldInfos, rowID, fi);
        rowID = rowID + 1;
    };
};
return {
    type: "fields",
    fieldInfos: fieldInfos,
    attributes: attributes
};