Hoppa till huvudinnehållet

Simplified Filter Builder using workflow (use Check Group to filter layer by attributes)

Kommentarer

6 kommentarer

  • Niluka Munasinghe

    Hi Amanda,
    If the layer is already on the map, first ensure that the layer is visible (Set Layer Visibility). Then, create a definition query based on the user's selection and apply the definition expression to the layer (Set Layer Definition Expression). There's no need to query the layer at all.

    1
  • Niluka Munasinghe
    {"_properties":{"isServerWorkflow":false},"components":[{"id":2,"steps":[{"id":3,"inputs":{},"position":"0,-130","purpose":"start","title":"Start","transitions":[{"id":15,"position":"90,-70 90,0","sourceConnector":"bottom","target":{"id":14}}]},{"action":"gcx:wf:forms:form:DisplayForm","id":4,"inputs":{"form":{"accessors":[],"code":"resources.forms[values.id]","values":{"id":5}}},"name":"form1","position":"-30,110","title":"Display Form","transitions":[{"id":11,"position":"90,230 90,280","sourceConnector":"bottom","target":{"id":7}}]},{"action":"gcx:wf:core:loop:ForEach","id":7,"inputs":{"items":{"accessors":["$form1"],"annotations":[{"count":6,"index":0,"kind":"idref"}],"code":"$form1.state.checkGroup1.value.items","source":"$form1.state.checkGroup1.value.items"}},"name":"forEach1","position":"-30,280","title":"For Each","transitions":[{"id":21,"position":"90,400 90,450","sourceConnector":"bottom","target":{"id":20}}]},{"action":"gcx:wf:core::CreateValue","id":14,"inputs":{"expression":{"accessors":[],"annotations":[],"code":"[]","source":"[]"}},"name":"checked_values","position":"-30,0","title":"Create Value","transitions":[{"id":16,"position":"90,60 90,110","target":{"id":4}}]},{"action":"gcx:wf:core::CreateValue","id":20,"inputs":{"expression":{"accessors":["$checked_values"],"annotations":[{"count":15,"index":18,"kind":"idref"}],"code":"\"MARK_TYPE IN ('\".concat($checked_values.result.join(\"','\"), \"')\")","source":"`MARK_TYPE IN ('${$checked_values.result.join(\"','\")}')`"}},"name":"SqlQuery","position":"-30,450","title":"Create Value","transitions":[{"id":23,"position":"90,510 90,560","sourceConnector":"bottom","target":{"id":22}}]},{"action":"gcx:wf:arcgis::SetLayerDefinitionExpression","id":22,"inputs":{"expression":{"accessors":["$SqlQuery"],"annotations":[{"count":9,"index":0,"kind":"idref"}],"code":"$SqlQuery.result","source":"$SqlQuery.result"},"layerId":"Your Layer Name"},"name":"layerDef1","position":"-30,560","title":"Set Layer Definition Expression"}]},{"id":8,"steps":[{"id":9,"inputs":{},"position":"0,0","purpose":"start","title":"For Each","transitions":[{"id":13,"position":"90,60 90,110","sourceConnector":"bottom","target":{"id":12}}]},{"action":"gcx:wf:core::If","id":12,"inputs":{"condition":{"accessors":["$forEach1"],"annotations":[{"count":9,"index":0,"kind":"idref"}],"code":"$forEach1.item.checked","source":"$forEach1.item.checked"}},"position":"30,110","title":"If","transitions":[{"branch":"true","id":19,"position":"30,140 -70,140 -70,240","sourceConnector":"left","target":{"id":18},"targetConnector":"top"}]},{"action":"gcx:wf:core::AddItem","id":18,"inputs":{"collection":{"accessors":["$checked_values"],"annotations":[{"count":15,"index":0,"kind":"idref"}],"code":"$checked_values.result","source":"$checked_values.result"},"item":{"accessors":["$forEach1"],"annotations":[{"count":9,"index":0,"kind":"idref"}],"code":"$forEach1.item.value","source":"$forEach1.item.value"}},"position":"-190,240","title":"Add Item"}]}],"deploymentConfig":{"supportedApps":{"VSW":true}},"designerVersion":"5.39.0+33","forms":[{"defaults":{},"elements":{"checkGroup1":{"enabled":true,"index":0,"items":{"0":{"index":0,"label":{"markdown":"CheckBox1"},"value":"c1"},"1":{"index":1,"label":{"markdown":"CheckBox2"},"value":"c2"},"2":{"index":2,"label":{"markdown":"CheckBox3"},"value":"c3"}},"rowIndex":0,"rowNumber":0,"type":"CheckGroup"},"footer":{"enabled":true,"items":{"0":{"default":true,"index":0,"label":{"markdown":"Submit"},"validates":true,"value":"submit"},"1":{"index":1,"label":{"markdown":"Cancel"},"validates":false,"value":"cancel"}},"section":"footer","type":"ButtonBar"},"header":{"section":"header","title":{"markdown":"Form Title"},"type":"Header"}},"id":5}],"licenseInfo":{"licenseUrl":"https://gis-prod.cimic.com.au/vertigisstudio/workflow/service/auth/license"},"start":{"id":3},"transitions":[{"branch":"loop","id":10,"source":{"id":7},"target":{"id":9}}]}
    1
  • Amanda Putri

    Hi Niluka Munasinghe your response is much appreciated! 

    So the layer is already visible for now, I scrapped the 3 activities I used previously and replace it with the Set Layer Definition Expression as you suggested. It looks like this now:

    Using this expression 

    =`MARK_TYPE= '${$GDA2020filter.state.checkGroup1.value.items}'`

    but it still won't filter out the features. The developer tool shows this error message but I am not sure I understand what that means.  

    0
  • Niluka Munasinghe

    Import the above JSON to workflow designer and build accordingly

    0
  • Amanda Putri

    Hi Niluka Munasinghe , thanks so much for pointing me into that workflow. With a bit of modification, it works really well! 

    I was wondering if there is any way to clear all the ‘Set Layer Definition’ expression that users have submitted, i.e. to show all the mark types on the map? I searched the community posts but could not find anything so far. 

    I was thinking to include a ‘Reset’ button that will reset the layer definition and clear the filtering that users do in their previous selection.

    Your help is much appreciated!

    0
  • Zack Robison

    If you want to remove a layer definition, you could try a Set Layer Definition activity with an .expression =null or ='1=1'.  Throw that thing in a ForEach which iterates your layers (or service-layer combinations) and you should be good to go.

    0

Du måste logga in om du vill lämna en kommentar.