<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Filter feature layer in map in Experience Builder Custom Widgets</title>
    <link>https://community.esri.com/t5/experience-builder-custom-widgets/filter-feature-layer-in-map/m-p/1515755#M357</link>
    <description>&lt;P&gt;&lt;SPAN&gt;I am new to custom widget development for experience builder and Javascript. I would like to filter a hard coded feature layer based on a field. I have studied the code at&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/experience-builder/sample-code/widgets/filter-feature-layer/" target="_blank" rel="nofollow noopener noreferrer"&gt;https://developers.arcgis.com/experience-builder/sample-code/widgets/filter-feature-layer/&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;but it's relying on a feature layer set by the user. In my case, I am not getting any input from the user. I would like to filter the feature layer after it's added to the map on the click of a button.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;import { React, type SqlQueryParams, type AllWidgetProps, DataSourceManager, type FeatureLayerDataSource } from 'jimu-core'
import { JimuMapViewComponent, type JimuMapView } from 'jimu-arcgis'
import FeatureLayer from 'esri/layers/FeatureLayer'

const { useState } = React //{} allow destructuring of this constant

const Widget = (props: AllWidgetProps&amp;lt;any&amp;gt;) =&amp;gt; {
  const omLyr = new FeatureLayer({
    url: 'https://services5.arcgis.com/M4Fx5dTKFkYlecLTsdsdsd/arcgis/rest/services/OpenMarketSm/FeatureServer'
  })
  const [jmv, setJmv] = useState&amp;lt;JimuMapView&amp;gt;()
  const activeViewChangeHandler = (jimumapview: JimuMapView) =&amp;gt; {
    if (jimumapview) {
      setJmv(jimumapview)
    }
  }
  const addLayerHandler = (evt) =&amp;gt; {
    evt.preventDefault()
    jmv.view.map.add(omLyr)
  }

  const filterLayerHandler = (evt) =&amp;gt; {
    evt.preventDefault()
    //filter layer. Property 'filter' does not exist on type 'FeatureLayer'
    omLyr.filter = {
      where: "ServiceAreaType ='Comm. Recycling'"
    }
  }
  return (
      &amp;lt;div&amp;gt;
      &amp;lt;div&amp;gt;
  {props.useMapWidgetIds &amp;amp;&amp;amp; props.useMapWidgetIds.length === 1 &amp;amp;&amp;amp;
        (&amp;lt;JimuMapViewComponent useMapWidgetId={props.useMapWidgetIds?.[0]} onActiveViewChange={activeViewChangeHandler}/&amp;gt;)}
      &amp;lt;/div&amp;gt;
      &amp;lt;form onSubmit={addLayerHandler}&amp;gt;
        &amp;lt;button className='btn btn-primary'&amp;gt;
          Add Layer
        &amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;
      &amp;lt;form onSubmit={filterLayerHandler}&amp;gt;
        &amp;lt;button className='btn btn-primary'&amp;gt;
          Filter Layer
        &amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;
      &amp;lt;/div&amp;gt;
  )
}

export default Widget
//activeViewChangeHandler is called once when the map is ready
// {/* ?. checks if object is null  */}&lt;/LI-CODE&gt;</description>
    <pubDate>Tue, 06 Aug 2024 20:14:06 GMT</pubDate>
    <dc:creator>MK13</dc:creator>
    <dc:date>2024-08-06T20:14:06Z</dc:date>
    <item>
      <title>Filter feature layer in map</title>
      <link>https://community.esri.com/t5/experience-builder-custom-widgets/filter-feature-layer-in-map/m-p/1515755#M357</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I am new to custom widget development for experience builder and Javascript. I would like to filter a hard coded feature layer based on a field. I have studied the code at&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/experience-builder/sample-code/widgets/filter-feature-layer/" target="_blank" rel="nofollow noopener noreferrer"&gt;https://developers.arcgis.com/experience-builder/sample-code/widgets/filter-feature-layer/&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;but it's relying on a feature layer set by the user. In my case, I am not getting any input from the user. I would like to filter the feature layer after it's added to the map on the click of a button.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;import { React, type SqlQueryParams, type AllWidgetProps, DataSourceManager, type FeatureLayerDataSource } from 'jimu-core'
import { JimuMapViewComponent, type JimuMapView } from 'jimu-arcgis'
import FeatureLayer from 'esri/layers/FeatureLayer'

const { useState } = React //{} allow destructuring of this constant

const Widget = (props: AllWidgetProps&amp;lt;any&amp;gt;) =&amp;gt; {
  const omLyr = new FeatureLayer({
    url: 'https://services5.arcgis.com/M4Fx5dTKFkYlecLTsdsdsd/arcgis/rest/services/OpenMarketSm/FeatureServer'
  })
  const [jmv, setJmv] = useState&amp;lt;JimuMapView&amp;gt;()
  const activeViewChangeHandler = (jimumapview: JimuMapView) =&amp;gt; {
    if (jimumapview) {
      setJmv(jimumapview)
    }
  }
  const addLayerHandler = (evt) =&amp;gt; {
    evt.preventDefault()
    jmv.view.map.add(omLyr)
  }

  const filterLayerHandler = (evt) =&amp;gt; {
    evt.preventDefault()
    //filter layer. Property 'filter' does not exist on type 'FeatureLayer'
    omLyr.filter = {
      where: "ServiceAreaType ='Comm. Recycling'"
    }
  }
  return (
      &amp;lt;div&amp;gt;
      &amp;lt;div&amp;gt;
  {props.useMapWidgetIds &amp;amp;&amp;amp; props.useMapWidgetIds.length === 1 &amp;amp;&amp;amp;
        (&amp;lt;JimuMapViewComponent useMapWidgetId={props.useMapWidgetIds?.[0]} onActiveViewChange={activeViewChangeHandler}/&amp;gt;)}
      &amp;lt;/div&amp;gt;
      &amp;lt;form onSubmit={addLayerHandler}&amp;gt;
        &amp;lt;button className='btn btn-primary'&amp;gt;
          Add Layer
        &amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;
      &amp;lt;form onSubmit={filterLayerHandler}&amp;gt;
        &amp;lt;button className='btn btn-primary'&amp;gt;
          Filter Layer
        &amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;
      &amp;lt;/div&amp;gt;
  )
}

export default Widget
//activeViewChangeHandler is called once when the map is ready
// {/* ?. checks if object is null  */}&lt;/LI-CODE&gt;</description>
      <pubDate>Tue, 06 Aug 2024 20:14:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/experience-builder-custom-widgets/filter-feature-layer-in-map/m-p/1515755#M357</guid>
      <dc:creator>MK13</dc:creator>
      <dc:date>2024-08-06T20:14:06Z</dc:date>
    </item>
  </channel>
</rss>

