Enhanced Search Widget Version 2.23.1 - 11/22/22

689056
2821
07-14-2014 03:57 PM
Labels (1)

Enhanced Search Widget Version 2.23.1 - 11/22/22

Live Preview Site

Web AppBuilder for ArcGIS | Help - Enhanced Search widget

 

List of the latest enhancements and changes:

  1. Fixed issue with Spatial Relationship settings

Older enhancements or changes

Check the "Older enhancements or changes.txt" in the download for a complete list.

 

Older Versions

Last 2.21 version

Last 2.17 version

Last 2.13 version

Last 2.12 version

Last 2.11 version

Last 2.9 version

Last 2.7 version

Last 2.6 version

Last 2.5 version

Labels (1)
Attachments
Comments
RobertScheitlin__GISP
MVP Emeritus

James,

   It is a possibility but would be limited to map services that meed the minimum suggest requirements

10.3 feature layer that supports pagination, i.e. supportsPagination = true.

I consider this enhancement request.

DavidColey
MVP Regular Contributor

Hi James - there is a way to batch prepare a pick or user list.  In the expression portion of the eSeach config.json you can supply a pipe seperated list of code and value pairs:

"userlist": "10th St|10TH ST,10th Way|10TH WAY,11th Pl|11TH PL,11th St|11TH ST,12th St|12TH ST,13th St|13TH ST"

Once you have the list configured the dojo combo box that Robert uses will begin to show suggestions as soon as you begin typing.

David

JamesMarok1
Regular Contributor

I'm no good at code but could I make that search box in the widget reference my Autocomplete in my REST

Query: AuglaizeCounty.DBO.AutoComplete (ID: 1) 

Keith-Bornhorst
Emerging Contributor

Hi Robert, thanks for your fantastic widget! Our eSearch config file has multiple unique expressions set up and I modified the PagingQueryTask.js file to boost the initialization performance a bit. I wanted to inform you of this scenario in case I'm missing a configuration element that can solve our problem.

Our map service has 100,000 records. We've set up expressions for a few of the fields (e.g. sqltext: FIELD12 = '[value]', uniquevalsfromfield: FIELD12) and we love that we then get autocomplete support within the search form. The problem is that the unique list of values is almost always about 200-500 entries... too many that we'd rather not predefine the list, but given our large number of records we're seeing a pretty bad initialization hit for all the QueryTask.executeForCount() requests.

This might bite us in the butt months from now, but I modified your code to force the "query.returnDistinctValues = true" logic branch in execute() function within PagingQueryTask.js. Basically, if this.version >= 10.1 I force this.query.returnDistinctValues = true and this.queryTask.execute().

Is there an eSearch configuration or map service option that I'm not aware of that will help in this scenario (large # of records, search/filter expressions (autocomplete search fields) based on fields containing ultimately only a few records in comparison to total number of records)?

Thanks!

Keith-Bornhorst
Emerging Contributor

Hello again, Robert. Another performance issue we've run into that required some JS tweaking is also related to our high record count and likelihood of a high number of results. With 100k records and the possibility of returning 2k or more records we found that editing the List.js file to remove the record "striping" logic improved display performance quite a lot. By removing the domClass.remove(), array.map(), and domClass.add() logic from within the clearSelection() method we were able to display 2700 results in 9 seconds (down from 34 seconds). I understand that our number of record, the number of results we allow might be larger than most, and that forcing display styles through CSS isn't ideal for most widget users but I just wanted to throw this out there. We also removed some of the domStyle.set() call within the add() function to help boost display performance.

Again, thanks for all your development work - the widgets are awesome!

RobertScheitlin__GISP
MVP Emeritus

Keith,

   So the result from your code change is that if your query even produced more results than the max feature count of your map service then you would not get all the unique values from that service. Yes it will definitely bite you if you ever hit that situation. 

RobertScheitlin__GISP
MVP Emeritus

Keith,

   I see that I am running the clearSelection() method each time a record is added to the list and that could be optimized better if it was only run once all records are added. I will make this change in the next release. Thanks

Keith-Bornhorst
Emerging Contributor

Robert - Agreed, I believe we set the max to 4 or 8,000 and added a note/warning to that effect. Not ideal, but...  Cheers.

Anish_Adhikari
Frequent Contributor

Hi Robert,

 

Thank You so much for such a powerful widget. I have been been experimenting with it and I am having some issues with the widget.

 

Issue #1 - Show popups from webmap setting: I have a parcel layer which uses custom formatting in the webmap popup. I have custom formatted it so that it passes parcel id or account number as values to different web services and it works well in the webmap as well as when through app created using web appbuilder developer edition. However, when I enable this in esearch, it is giving me incomplete results. For example look at the screenshot below which is the default popup configured in webmap.

 

Correct Popup (Configured in Webmap) :

 

  

Incorrect Popup (Returned by esearch when show popups from webmap is used):

 

            Notice that in the screenshot below, the popup is not showing a value for OssSystem type(Should be sewer) even though it is showing on the eSearch results and default webmap popup(See above)

 .

 

            Also the esearch returned popup is cutting off some url parameters.

Example: The url Assessor Link is showing:    

https://psearch.kitsapgov.com/webappa/index.html?parcelID=

 

Instead of

 

https://psearch.kitsapgov.com/webappa/index.html?parcelID=81490000000005

 

Issue # 2 - Blank Popup Window : When Disable Search results pop-up is checked either globally or on individual Search configuration, when you perform a search and click on result on the map, it will show a blank popup panel window.

 

Blank Popup Window when using Disable Search Results

 

 

 

 

 

 

 

 

 

Issue # 2 seems to go away when you check Add Result as Operational Layer setting on the configuration settings.

 

 

I am using Version 2.2 of the Web appbuilder and version 2.2.1 of esearch. I am using Foldable theme. My ArcGIS Server, Desktop and Portal versions are 10.4.1.Parcel layer and its custom popup is enabled by default on application start.

 

I have tested it on brand new webappbuilder install and esearch as well as with other versions and still gives me same results. I would greatly appreciate any assistance.

 

 

     

 

 

 

 

 

RyanKelso
Frequent Contributor

I've also ran into issues when using custom webmap popups with the Use Popup From: Web Map option in eSearch.  Except with mine, the search just fails without any response in the app.  This error is thrown in the console:

Uncaught TypeError: Cannot read property '_fieldLabels' of undefined
 at Object.<anonymous> (Widget.js?wab_dv=2.1:1494)
 at Object.forEach (init.js:70)
 at Object._createSearchResultLayer (Widget.js?wab_dv=2.1:1480)
 at Object.search (Widget.js?wab_dv=2.1:2107)
 at Object.<anonymous> (Widget.js?wab_dv=2.1:1773)
 at Object.<anonymous> (init.js:63)
 at Object.c [as onDrawEnd] (init.js:119)
 at Object._onDrawEnd (DrawBox.js?wab_dv=2.1:471)
 at Object.<anonymous> (init.js:63)
 at Object.<anonymous> (init.js:644)‍‍‍‍‍‍‍‍‍‍‍

In my case, I could create popups in eSearch that were almost identical to what I had created in the web map, so I just went that route.

Anish_Adhikari
Frequent Contributor

Hi Ryan, Thank You for your reply. I found out at least part of the issue for my problem. It seems like web map is forgiving as far as case sensitivity on variable names such as TaxID is same as taxid. On the other hand, looks like eSearch is not. so when I had a parameter name taxid which is actually named TaxID on the Service definition, it gives you unexpected results. Changing the name to the correct case as the service definition seemed to solve the problem.

RobertScheitlin__GISP
MVP Emeritus

Anish,

   So which issue did that fix?

RobertScheitlin__GISP
MVP Emeritus

Ryan,

  Does your custom web map popup not use any fields from the layer?

RobertScheitlin__GISP
MVP Emeritus

Anish,

   OK I got your #2 issue fixed for the 2.3 release.

RyanKelso
Frequent Contributor

Yes Robert it uses some fields.

eSearch results and popup:

Web map popup:

So you can see the popups are almost identical, I just gave my web map popup a title of "Parcels:".  So this is not a big deal for me.  I just mentioned it in case it was somehow related to the problem Anish was having.

Anish_Adhikari
Frequent Contributor

Thanks Robert !!

Issue #1 is fixed by changing the variable name. I just tested it. I am looking forward to your next release.

RobertScheitlin__GISP
MVP Emeritus

Ryan,

   I am still curious why you were getting the _fieldLabels is undefined error. Is your site publicly accessible?

CCWeedcontrol
Frequent Contributor

How do you update versions say from 2.2 to 2.3, do i just replace the eSearch folder in the clien/stemapp/widgets?

If you have applications with say 2.2 to update do you just replace the eSearch folder in the App widget folder?

my apologies for the question i am sure it's probably been asked but couldn't find anything.

I can't find a way to search a post.

Thanks.

Anish_Adhikari
Frequent Contributor
CCWeedcontrol
Frequent Contributor

Thanks Anish.

DavidColey
MVP Regular Contributor

Nice update Robert.  Just as an fyi to all: My testing shows that for the attachment link to display in the popup, the user must activate the popup from a result in the results panel, and an attachement must be present for that feature.  Simply clicking the graphic in the map will not display the link.  Not a big deal to me or our users.  Hope to see you in March.

LeoLadefian5
Frequent Contributor

Hi Tapas, I'd love to be able to integrate our accela data into enhanced search as well.  Are you just using the XAPO datasets within the E Search?  Or are you pulling data via the API? thanks!

DAVIDDAS1
Frequent Contributor

Hi Leo,

Yes, we are indeed using Accela to track our permits at Maricopa County. We have turned on the XAPO (External Address, Parcel, and Owner) Search features within Accela 8.0. We are not using the API.

This makes it very easy to maintain the Accela GIS Integration. We have a Parcel Map Service with around 1.5 million parcel polygons, and an Address Point Map Service.  By enabling the XAPO feature within Accela, we do not have to maintain a parallel internal database within Accela. This saves us a lot of headaches of having to keep the internal Accela Database in sync with the Parcel Map Service.

With the XAPO feature turned on, when you go into the Accela interface and use any of the Address, Parcel, or Owner portlets within the APO Tab, and perform a search, the software pulls the data from the external Parcel and 
Address Point map services. When you open the GIS Tab, a map shows up zoomed to the selected parcel. 

All of this works smoothly.

So how does this all relate to Robert's Enhanced Search Widget?

We found that it is much easier to create a standalone Web Application incorporating the Enhanced Search Widget that finds a parcel based on an Address, Parcel Number or Owner search, and zooms to the selected parcel displaying all the attributes that can be exported readily into Excel.

So now we have two ways to get to a parcel. The end users have the familiar option to launch Accela, open the APO Tab, and enter an Address, Parcel Number or Owner Name, and then open the GIS Tab to display the map showing the parcel. 

Or, the end user can bypass Accela, and open the Web App using Robert's Enhanced Search Widget and get to the results right away. As an added advantage, this also works on a Smartphone.

We also created a Web App using the Customizable HTML Viewer from Geocortex. This lets us find a parcel in less than 2 seconds thanks to the Elastic Search Engine incorporated into the Geocortex software. Without Elastic Search, it takes anywhere from 5 to 20 seconds to find a parcel from the feature class with about 1.5 million records.

Cheers!

Tapas

LeoLadefian5
Frequent Contributor

Thanks Tapas, we are currently configuring the XAPO schema in our SDE database.  I guess the only thing I'm still not grasping is how the XAPO data is linked to the Accela tables and how the information is pulled into webappbuilder.  Is the XAPO joined to the Accela records somehow in the parcel map service?  I probably need to do more reading on the topic.

DAVIDDAS1
Frequent Contributor

Hi Leo,

The XAPO data is linked to the internal Accela Tables via the Unique ID field.

For the Parcel Map Service, we are using the Parcel Number as the Unique ID field.

Typically you would launch the Accela GIS Administration Page, and define the Map Integration Environment. This is where you get to add the Map Services that you want to include in the GIS Map.

At the very bottom of this Edit Integration Environment Page, there is a link named "Modify Additional Settings" under Additional Settings.

When you click on this link, it lets you set up the Accela XAPO Integration.

You would need to set up 3 Accela Reference Objects:

Address

Parcel

Owner

For each reference object, you must specify a unique ID.

In our situation, the Address Reference Object points to the AddressPoint Map Service.

The Parcel and Owner Reference Objects points to the Parcel Map Service. The Unique ID field is the Parcel Number in both cases.

Once you have set up these Reference Objects, you must launch the Accela Web Server, and open the Classic Tab.

Next, open the  Admin Tools Tab and select "Standard Choices" under Agency Profile.

You must add 3 Standard Choices and enable them to make the XAPO architecture work within Accela.

These Standard Choices are:

EXTERNAL_ADDRESS_SOURCE

EXTERNAL_PARCEL_SOURCE

EXTERNAL_OWNER_SOURCE

Each of these Standard Choices must be configured with a set of Parameters.

Finally, under the Admin Tools Tab, open the GIS Tab and add a GIS Service.

Make sure the GIS Service ID matches the one you entered while adding the Map Services in the GIS Administration Page.

All of these parameters must be set up for Accela to Join its internal tables to the external Parcel and AddressPoint Map Services.

LeoLadefian5
Frequent Contributor

Thanks so much, can't wait to get this configured!

RichBell
Regular Contributor

Robert,

I am seeing 2 "Statistics" when using the eSearch widget 2.3.

Any ideas on how to remove one?

Rich

Statistics

RobertScheitlin__GISP
MVP Emeritus

Rich,

  Strange I am not seeing that on the live Preview site and I can't seem to duplicate that in my development environment either.

LeoLadefian5
Frequent Contributor

Robert, I was wondering if you could add "have their centroid in" to the spatial relationship task.  I use this a lot for selecting parcels within a zoning district etc.  Is this already an option? just named something else?

RobertScheitlin__GISP
MVP Emeritus

Leo,

   I can only work with what the API exposes:

SPATIAL_REL_CONTAINSPart or all of a feature from feature class 1 is contained within a feature from feature class 2.
SPATIAL_REL_CROSSESThe feature from feature class 1 crosses a feature from feature class 2.
SPATIAL_REL_ENVELOPEINTERSECTSThe envelope of feature class 1 intersects with the envelope of feature class 2.
SPATIAL_REL_INDEXINTERSECTSThe envelope of the query feature class intersects the index entry for the target feature class.
SPATIAL_REL_INTERSECTSPart of a feature from feature class 1 is contained in a feature from feature class 2.
SPATIAL_REL_OVERLAPSFeatures from feature class 1 overlap features in feature class 2.
SPATIAL_REL_RELATIONAllows specification of any relationship defined using the Shape Comparison Language.
SPATIAL_REL_TOUCHESThe feature from feature class 1 touches the border of a feature from feature class 2.
SPATIAL_REL_WITHINThe feature from feature class 1 is completely enclosed by the feature from feature class 2.
LeoLadefian5
Frequent Contributor

Ah, fair enough. thanks for the update, maybe ESRI will expose more in the future.

JamesMarok1
Regular Contributor

Thanks David your suggestion on the Userlist worked very nicely! The only issue I have is that it forces me to select something from the Userlist.

For example if I know its 1234West Street I am good, but if I don't know the No# and just enter West Street I'll get no results, is there a way to get multi results and the specific Userlist ones.

CCWeedcontrol
Frequent Contributor

I have an app that i deployed with your Enhanced Basemap widget. I recently received some new imagery for our area and i was wondering since the application is deployed how do you add base maps to deployed applications? One other thing, is there a way to move/rearrange the basemaps in the basemap gallery widget?

Thanks!

FrancescoTonini2
Frequent Contributor

Robert Scheitlin, GISP‌ Does the eSearch work with imageserver URLs? Or is it only with Mapserver/featureserver URLs? I am trying to add the URL of a world population estimated density from https://landscape7.arcgis.com/arcgis/rest/services/World_Population_Estimated_Density_2015/ImageServ... but the widget editor displays a red exclamation point...thanks in advance!

RobertScheitlin__GISP
MVP Emeritus

Francesco,

   No the widget currently does not accept ImageServer urls. I can't say I have gotten many requests for that.

Anish_Adhikari
Frequent Contributor

Hi Robert,

I am using version 2.3 of your widget with the same version of webappbuilder and in my application, I realized that Search by Spatial tab is missing. Is there a reason why it is doing that?

Thanks

RobertScheitlin__GISP
MVP Emeritus

Anish,

   The tab is not shown if you do not have at least one layer checked as "Spatial Search Layer".

Web AppBuilder for ArcGIS | Help - Enhanced Search widget 

RobertScheitlin__GISP
MVP Emeritus

CC Weedcontrol,

  As this is the eSearch widget thread and it is already 72 pages long, I will have to ask you to start a new question when it is about something other than the eSearch widget.

CCWeedcontrol
Frequent Contributor

oops my bad Robbert i thought i was in the Enhanced Basmap widget.

TedHoward
New Member

Robert, first of all thanks for all the work you do on these widgets. I noticed an issue with certain queries breaking the map window when a "Zoom to" was performed. Results were returned correctly in the widget, but the map would go gray and not display any features. After a lot of searching I finally figured out this was due to a scale range applied on the map service layer. Every time I performed a query that would zoom the map to a scale outside of the set range, the map would break. This was because no x,y values were being passed into the Export Map operation. Below is an example of the request URL I was seeing:

https://dtdapps.coloradodot.info/arcgis/rest/services/MapView/Boundaries_MapView_ext/MapServer/expor...NaN%2CNaN%2CNaN%2CNaN&bboxSR=102100&imageSR=102100&size=711%2C822&f=image

Anyways, getting rid of the scale range was the easy fix. Might be good to add this into the help documentation to save someone a headache. Also I have no idea if it's possible to alter the widget to get around this scale range issue. Let me know what you think.

RobertScheitlin__GISP
MVP Emeritus

Ted,

  So you are saying that zooming to the extent of the queried feature would take the map beyond the services scale range or the base maps scale range?

TedHoward
New Member

Correct, querying on scale dependent layers can cause problems with the "zoom to" action if the zoom is outside of the set scale range. For example if I have a layer set to only be visible "In beyond" 1:100,000 and I perform a query that returns a results extent that takes the map window to 1:200,000, the map will break. In this scenario clicking on a specific feature in the results tab will also not show anything in the map.

To be clear the scale dependency I am talking about is set at the map service level.

RobertScheitlin__GISP
MVP Emeritus

Ted,

   Thanks I think I have enough info to work on this now.

Anish_Adhikari
Frequent Contributor

Thanks Robert. This tool has been really helpful.

RupaliKiran
Deactivated User

Does the current version 2.3 of the widget work with WAB 2.4? I tried and having problems loading the widget in the app.

Getting the attached errors    

.

-Rupali

RobertScheitlin__GISP
MVP Emeritus

Rupali,

   I have not tested in WAB Dev 2.4 yet but all I see is errors coming from your chrome extension in your image and nothing related to the widget.

RupaliKiran
Deactivated User

Sorry copied the wrong info.

When I open the widget, the panel is blank with the loading image.

Here’s the error..

RupaliKiran
Deactivated User

Thank you very much!!

RobertScheitlin__GISP
MVP Emeritus

All,

   If you are using version 2.4 of WAB dev then you MUST update to eSearch version 2.4

SteveAdams
Occasional Contributor

Been trying to edit the config file for the Enhanced Search 2.4 (which by the way is really great) to take out all "periods"

sqltext": "Upper(ADDRESS) LIKE Upper('[value]%')

trying something like:

sqltext": "Upper(ADDRESS) LIKE Upper('Replace([value],',','')%')

and a few other variations but just no luck.

Any thoughts?

Version history
Last update:
‎11-22-2022 07:31 AM
Updated by: