Enhanced Search Widget Version 2.23.1 - 11/22/22

592102
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
glennhazelton
Deactivated User

Robert

could you explain in a bit more detail about the proxy and setting it up. I have not ever fully grasped how or what to do with this. and are you saying that after we export a app out of the webappbuilder-dev and have finished modifying it (ha-ha), that we can turn off the node.js?

is there clear documentation on all this somewhere?

thanks

Glenn

RobertScheitlin__GISP
MVP Emeritus

Glenn,

   Node.js® is a platform built on Chrome's JavaScript runtime and can act as a web server for application development. So when you are running WAB Dev version on your development machine everything is going through Node JS hence the localhost:3344 of all the urls. Once you download and move your app to your production web server you are no longer running the app in the Node JS environment and thus do not have access to the proxy that is built into Node JS (by the dev team).

  My eSearch allows for some pretty large requests to ArcGIS Server due to the spatial search and buffered graphics capabilities and thus will need a proxy to switch to http put requests instead of using http get requests that are generally limited to 4000 characters (but this number can be variable) thus esris proxy will switch to use PUT for Requests that exceed 2048 characters.

   There is no turning off anything, as mentioned above the simple fact that you moved the app to your web server means that it is not running JS Node.

   You simply need to go to the Esri/resource-proxy · GitHub website and download the proxy and follow the instructions in the readme for the web server version you are using (i.e. IIS on a windows machine means you use the DotNet proxy). Once you have the proxy setup on your web server, all you need to do is add the URL to the apps config.json file.

"httpProxy": {

    "useProxy": true,

    "alwaysUseProxy": false,

    "url": "/WAB/Proxy/proxy.ashx",

    "rules": []

  }

LukeMiles1
Deactivated User

Robert Scheitlin, GISP

Thanks for showing me how the list works fine in IE and Firefox and is just a Chrome issue. I should have had the foresight to check it myself. Many apologies.

RobertScheitlin__GISP
MVP Emeritus

Luke,

   Determining it had an issue in Chrome helped me discover an issue with my sorting that only Chrome objected to. The list sort order will be fixed in the next release as soon as I had the option to limit the search by the maps extent.

RavitejaViswanadha1
Deactivated User

@ rscheitlin , Thank you so much for the Widget, We have an observation in the Log  Can you please have a look at this and let us know the cause and Fix for this :

Below is the error message

TypeError: Cannot read property 'values' of undefined {stack: (...), message: "Cannot read property 'values' of undefined"} "TypeError: Cannot read property 'values' of undefined

    at null.<anonymous> (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:469:89)

    at g.hitch (https://js.arcgis.com/3.13/init.js:177:296)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at https://js.arcgis.com/3.13/init.js:815:56

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    ----------------------------------------

    rejected at a (https://js.arcgis.com/3.13/init.js:200:337)

    at k (https://js.arcgis.com/3.13/init.js:200:89)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at https://js.arcgis.com/3.13/init.js:815:56

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    ----------------------------------------

Error

    at f.then.b.then [as then] (https://js.arcgis.com/3.13/init.js:202:253)

    at declare._initLayerSelect (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:432:21)

    at declare.postCreate (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:106:14)

    at k.create (https://js.arcgis.com/3.13/init.js:1123:348)

    at k.postscript (https://js.arcgis.com/3.13/init.js:1122:99)

    at new <anonymous> (https://js.arcgis.com/3.13/init.js:108:192)

    at declare.createWidget (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/jimu.js/WidgetManager.js:252:20)

    at null.<anonymous> (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/jimu.js/WidgetManager.js:98:39)

    at g.hitch (https://js.arcgis.com/3.13/init.js:177:296)

    at k (https://js.arcgis.com/3.13/init.js:199:431)"

init.js:209 TypeError: Cannot read property 'values' of undefined {stack: (...), message: "Cannot read property 'values' of undefined"} "TypeError: Cannot read property 'values' of undefined

    at null.<anonymous> (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:469:89)

    at g.hitch (https://js.arcgis.com/3.13/init.js:177:296)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at https://js.arcgis.com/3.13/init.js:815:56

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    ----------------------------------------

    rejected at a (https://js.arcgis.com/3.13/init.js:200:337)

    at k (https://js.arcgis.com/3.13/init.js:200:89)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at https://js.arcgis.com/3.13/init.js:815:56

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    at f.resolve (https://js.arcgis.com/3.13/init.js:201:441)

    at k (https://js.arcgis.com/3.13/init.js:199:431)

    at m (https://js.arcgis.com/3.13/init.js:199:357)

    ----------------------------------------

Error

    at f.then.b.then [as then] (https://js.arcgis.com/3.13/init.js:202:253)

    at declare._initLayerSelect (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:432:21)

    at declare.postCreate (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/widgets/eSearch/Widget.js:106:14)

    at k.create (https://js.arcgis.com/3.13/init.js:1123:348)

    at k.postscript (https://js.arcgis.com/3.13/init.js:1122:99)

    at new <anonymous> (https://js.arcgis.com/3.13/init.js:108:192)

    at declare.createWidget (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/jimu.js/WidgetManager.js:252:20)

    at null.<anonymous> (https://iewvdgis02.scet.eixt.com:3344/webappbuilder/apps/8/jimu.js/WidgetManager.js:98:39)

    at g.hitch (https://js.arcgis.com/3.13/init.js:177:296)

    at k (https://js.arcgis.com/3.13/init.js:199:431)"init.js:209 ninit.js:209 (anonymous function)init.js:230 g.filterinit.js:209 k

We would be glad if you can spare some time on this.

Appreciate your support all times.

And Can you also please suggest that if I want to use only By Shape not the By Attribute or By Spatial , can you provide us the configuration (currently we are able to update your code as per my necessity )

Observation :

In the By Shape tab we have an checkbox called "Enable multi-part graphics" and once we check it we get a button called search ,  here when we have no graphic on the map and click on Search we get an message "Search Failed" , Can you please consider this in your next build.

Finally - I would say all the developers are thankful to you and we always appreciate your supports and patience.

RobertScheitlin__GISP
MVP Emeritus

Raviteja,

   I would need to see your config_Enhanced Search.json in order to make a proper assessment of this error.

Currently there is no configuration to disable tabs like the spatial or graphical. But I am planning to add that feature that was part of my Flex version of the widget to this WAB version.

What version are you using? Using the most current 1.1.5 and enable multi-part graphics and click in search without drawing any graphics does not produce a "search failed" message. But does produce an error in the web console (I will have this fixed in the next release).

RavitejaViswanadha1
Deactivated User

Thank you so much for the reply Robert.

I am using the latest version of the enhanced search widget from this

morning,

Please find my config file below

That error is not in WebConsole but its the onscreen error.

That error may be due to our configuration ?

On Fri, Apr 17, 2015 at 7:24 PM, Robert Scheitlin, GISP <geonet@esri.com>

RobertScheitlin__GISP
MVP Emeritus

Raviteja,

   Somehow your json is not attached. I would recommend zipping it and adding it as an attachment using the advanced editor.

DAVIDDAS1
Frequent Contributor

Hi Robert,

Thanks so much for the new enhancements to your eSearch Widget version 1.1.5

I made a new Web App to test out some of the new features of your eSearch Widget 1.1.5 and Identify Widget 1.1.1

http://www.tapasdas.com/Maps/Phones/app28

They way you could now limit your Text Search to features within your current map extent is awesome! This will come in handy.

Here I am searching for all Schools that contain the string MADISON in the Name field.

11 Schools are found.

p01.jpg

Now if I zoom in, and check the Limit results to maps extent option, I get the results that fall within the current display area. Wonderful!!

p02.jpg

This will be an extremely useful feature for us when we are trying to find parcels. For example, finding the parcel that belongs to John while you are zoomed into the Zipcode where John resides. Without this option, the result will display all parcels with first name John in the entire County.

I like the way "Search Results" appears before the name of the Layer being searched.

p03.jpg

I like the way the Title is no longer duplicated in the Popup.

The external links are nicely spaced giving it a professional look.

Just one minor observation.

On the Results pane, the Item Names appear in Italics. This make it easier to differentiate the Item Name from the Attribute value.

Could we have the same styling in the Popup with Item Names in Italics?

p04.jpg

I am still trying to get your Identify 1.1.1 Widget to play nice with your eSearch 1.1.5 Widget.

If I run an Identify to identify a Zip Code after the eSearch has found a Zip Code, I get duplicate listings.

p05.jpg

I know you have mentioned the workaround of clearing the results of the previous eSearch first. This works.

However, I still cannot get the attributes to show up correctly in the results pane or in the Popup.

p06.jpg

There are the correct attributes in the Attribute Table

p07.jpg

Here is the map service I am using:

ZIP Codes:

http://arcgis2.geo.az.gov/ArcGIS/rest/services/Zipcodes/MapServer/0

Fields:

    OBJECTID ( type: esriFieldTypeOID , alias: OBJECTID )

    SHAPE ( type: esriFieldTypeGeometry , alias: SHAPE )

    ZIPCODE ( type: esriFieldTypeString , alias: Zip Code , length: 5 )

    SqMiles ( type: esriFieldTypeDouble , alias: Sq. Miles )

    SqKm ( type: esriFieldTypeDouble , alias: Sq. Km )

    Acres ( type: esriFieldTypeDouble , alias: Acres )

    Name ( type: esriFieldTypeString , alias: Name , length: 15 )

    CityData ( type: esriFieldTypeString , alias: CityData , length: 100 )

    SocioEcon ( type: esriFieldTypeString , alias: SocioEcon , length: 100 )

I remember in your Flex version of the Identify Widget, all the item names had to be referenced by their Item Aliases and not their Item Names.

Here is a listing of config_Identify.json

      {

"name": "ZIP Code",

"url": "http://arcgis2.geo.az.gov/ArcGIS/rest/services/Zipcodes/MapServer",

"id": 0,

"zoomscale": "",

"forcescale": false,

"fields": {

"all": false,

"field": [

            {

"name": "Zip Code",

"alias": "Zip Code"

            },

            {

"name": "Sq. Miles",

"alias": "Sq. Miles",

"isnumber": true

            },

            {

"name": "Sq. Km",

"alias": "Sq. Km",

"isnumber": true

            },

            {

"name": "Acres",

"alias": "Acres",

"isnumber": true

            }

          ]

        },

"links": {

"link": [

            {

              "alias": "Detailed Profile",

"disablelinksifnull": true,

"disableinpopup": false,

"popuptype": "text",

"content": "{CityData}",

"icon": ""

            }

          ]

        }

      }

    ],

I know you mentioned that for the Identify Widget to work, the Item Name and Alias must not be the same.

In my case, the Item Name = ZIPCODE, and the alias = Zip Code

The attributes for ZIPCODE, SqMiles, SqKm does not show up.

However the attributes for Acres does show up!

I am puzzled. Perhaps you can shed some light!

Once again, thank you so much for these constant stream of enhancements. This thread had become the number one example on GeoNet of a successful community driven project. You have added so many features and user requests over the last 9 months.

Best regards,

Tapas

RobertScheitlin__GISP
MVP Emeritus

Tapas,

Here is your identify widget json fixed. The issue is the name attribute need to be the actual field name and not some alias. I am still puzzled how this got off if you used the GUI to do all your configuring of the identify widget.

I like the idea of the popup having the field names with emphasis like the widgets results, so consider that added to the next release.

I am hoping the duplicate in the identify has to do with the configuration issue you are having as I can find no reason for this issue to still be present.

{

        "name": "ZIP Codes",

        "url": "http://159.87.10.253/ArcGIS/rest/services/Zipcodes/MapServer",

        "id": 0,

        "zoomscale": "",

        "forcescale": false,

        "fields": {

          "all": false,

          "field": [

            {

              "name": "ZIPCODE",

              "alias": "Zip Code"

            },

            {

              "name": "SqMiles",

              "alias": "Sq. Miles",

              "isnumber": true

            }

          ]

        },

        "links": {

          "link": [

            {

              "alias": "Detailed Profile",

              "disablelinksifnull": true,

              "disableinpopup": false,

              "popuptype": "text",

              "content": "{CityData}",

              "icon": ""

            }

          ]

        }

      },

      {

        "name": "Places",

        "url": "http://159.87.10.253/ArcGIS/rest/services/Places/MapServer",

        "id": 0,

        "zoomscale": "",

        "forcescale": false,

        "fields": {

          "all": false,

          "field": [

            {

              "name": "PLACE",

              "alias": "Place Name"

            },

            {

              "name": "Population",

              "alias": "Population",

              "isnumber": true

            },

            {

              "name": "MedianAge",

              "alias": "Median Age",

              "isnumber": true

            },

            {

              "name": "Households",

              "alias": "Households",

              "isnumber": true

            },

            {

              "name": "AvgHHSize",

              "alias": "Average Household Size",

              "isnumber": true

            },

            {

              "name": "SqMiles",

              "alias": "Sq. Miles",

              "isnumber": true

            }

          ]

        },

        "links": {

          "link": [

            {

              "alias": "Detailed Profile",

              "disablelinksifnull": true,

              "disableinpopup": false,

              "popuptype": "text",

              "content": "{CityData}",

              "icon": ""

            }

          ]

        }

      },

      {

        "name": "Counties",

        "url": "http://159.87.10.253/ArcGIS/rest/services/County/MapServer",

        "id": 0,

        "zoomscale": "",

        "forcescale": false,

        "fields": {

          "all": false,

          "field": [

            {

              "name": "COUNTY",

              "alias": "COUNTY"

            },

            {

              "name": "Population",

              "alias": "Population",

              "isnumber": true

            },

            {

              "name": "MedianAge",

              "alias": "Median Age",

              "isnumber": true

            },

            {

              "name": "Households",

              "alias": "Households",

              "isnumber": true

            },

            {

              "name": "AvgHHSize",

              "alias": "Average Household Size",

              "isnumber": true

            },

            {

              "name": "SqMiles",

              "alias": "Sq. Miles",

              "isnumber": true

            }

          ]

        },

        "links": {

          "link": [

            {

              "alias": "Detailed Profile",

              "disablelinksifnull": true,

              "disableinpopup": false,

              "popuptype": "text",

              "content": "{CityData}",

              "icon": ""

            },

            {

              "alias": "Property Records",

              "disablelinksifnull": true,

              "disableinpopup": false,

              "popuptype": "text",

              "content": "{Property}",

              "icon": ""

            },

            {

              "alias": "Public Records",

              "disablelinksifnull": true,

              "disableinpopup": false,

              "popuptype": "text",

              "content": "{Search}",

              "icon": ""

            }

          ]

        }

      }

    ],

DAVIDDAS1
Frequent Contributor

Hi Robert,

Yes, that did the trick!!!

You are faster that the wind. Thanks for fixing my JSON file.

I am puzzled too as to why the alias names instead of the Field Names showed up in the config_Identify.json file.

I did all the configuration through your GUI. This is how it appears:

pic01.jpg

Once I doctored the config_Identify.json file with your edits like so:

pic02.jpg

Everything worked like a charm. I could now see all the Attribute values listed next to the Field Aliases in the Results Pane and the Popup.

However, is there a way to get rid of this [:undefined] Artifact?

pic03.jpg

Here is one more enhancement request.

On your Identify Widget, I can limit the graphical search methods to a simple set like:

Points, Rectangle, Circle, and Polygon

pic04.jpg

On your Enhanced Search Widget, I get too many choices.

pic05.jpg

Can you include a way to limit these choices, just the way you have it for the Identify Widget?

pic06.jpg

This turned out to be a very productive afternoon!

Your Identify Widget and Enhanced Search Widget are the mainstays of all my web applications.

Best regards,

Tapas

RavitejaViswanadha1
Deactivated User

Hi Robert,

Please find the attached JSON file.

Apologies for the delays.

Thanks in Advance.

RobertScheitlin__GISP
MVP Emeritus

Raviteja,

  Looks like you need to open a new discussion. Because these comment are part of a document and not a discussion you do not have the ability to attach items or get to the advanced editor that you would in a normal discussion/question.

https://community.esri.com/discussion/create.jspa?containerType=700&containerID=1294

RobertScheitlin__GISP
MVP Emeritus

Tapas,

    OK I have found the issue and it it is in the Identify widget when identifying a layer in the map that is added as a FeatureLayer. Every thing I said about the field name and alias needing to be different was me think how I had the FLEX version of the identify widget setup and not the WAB version, and should be ignored.  Anyway I have an issue to fix in the Identify widget and I will get that fixed as soon as possible.

   As far as the ability to limit the graphical selection tools, I think that is another good idea and I will get that added in the next release.

DAVIDDAS1
Frequent Contributor

Sounds great Robert!!!

Tapas

CameronJohnsen
Deactivated User

Does anyone know how to configure the sql text to search for a field with domains that has a forward slash(/) in one of the values? I keep getting search failed.

            "alias": "Search by Permit Status",

            "textsearchlabel": "Search by Permit Status",

            "values": {

              "value": [

                {

                  "fieldObj": {

                    "name": "status",

                    "label": "status",

                    "shortType": "string",

                    "type": "esriFieldTypeString"

                  },

                  "valueObj": {

                    "value": "CLOSED/COMPLETED"

                  },

                  "prompt": "status contains",

                  "textsearchhint": "CLOSED/COMPLETED",

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

                  "operation": "stringOperatorContains"

RobertScheitlin__GISP
MVP Emeritus

Cameron,

EDIT: OK I just noticed that you said Domain that has slash. I will test that and report back.

   I tested this by setting up a service that had a text field with "CLOSED/COMPLETED" as the value in that field and then set by expression up just like yours:

"alias": "slash",

            "textsearchlabel": "Search by Slash",

            "values": {

              "value": [

                {

                  "fieldObj": {

                    "name": "test",

                    "label": "test",

                    "shortType": "string",

                    "type": "esriFieldTypeString"

                  },

                  "valueObj": {

                    "value": "CLOSED/COMPLETED"

                  },

                  "prompt": "test contains",

                  "textsearchhint": "CLOSED/COMPLETED",

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

                  "operation": "stringOperatorContains"

And it worked fine for me...

RobertScheitlin__GISP
MVP Emeritus

Cameron Johnsen

    So the description of the coded value domain is "CLOSED/COMPLETED" what is the code (that actual value that is entered into the database)?

RobertScheitlin__GISP
MVP Emeritus

Cameron,

   So because you are using a field with a domain you need to change the operator in the expression to "is" instead of "contains". There is no reason to use contains as the user must choose from a drop down list of domain values and thus will always be entering a valid value in the query.

Preview.jpg

RobertScheitlin__GISP
MVP Emeritus

Tapas,

   The Identify Widget has been fixed. Please note the BREAKING changes though.

CameronJohnsen
Deactivated User

I have attempted it with the "Is" operator as well as "Contains" with the same search failed result. It must be another issue then. I will look into it. Thank you a ton for your help.

Cameron Johnsen

Cache County

GIS Specialist

435-755-1635

cameron.johnsen@cachecounty.org

>>> "Robert Scheitlin, GISP" <geonet@esri.com> 4/21/2015 8:21 AM >>>

GeoNet

Enhanced Search Widget Version 1.1.5 - 4/17/15

new comment by Robert Scheitlin, GISP View all comments on this document

Cameron,

So because you are using a field with a domain you need to change the operator in the expression to "is" instead of "contains". There is no reason to use contains as the user must choose from a drop down list of domain values and thus will always be entering a valid value in the query.

https://community.esri.com/servlet/JiveServlet/downloadImage/105-12330-87666/Preview.jpg

Reply to this email to respond to Robert Scheitlin, GISP's comment.

Following Enhanced Search Widget Version 1.1.5 - 4/17/15 in these streams: Inbox

This email was sent by GeoNet because you are a registered user.

You may unsubscribe instantly from GeoNet, or adjust email frequency in your email preferences

CCWeedcontrol
Frequent Contributor

Hi Robert, thanks for adding the "Show in Attribute Table Widget" to this widget.

I do notice that if i do a search by attribute then click on the select "open Attribute table" of the search results in the Layers List widget with out clearing the previous search results the attribute table just thinks and doesn't return anything. Would there be a way to clear the previous search automatically once you try to search for something else, so you don't have to hit " Clear" in the results every time?

DAVIDDAS1
Frequent Contributor

Hi Robert,

Your new Identify Widget version 1.1.2 Rocks!!!

Thank you so much for spending your Saturday and Sunday afternoon coding this new version.

Do you ever take a break?

I made a new app with your Identify Widget version 1.1.2 and Enhanced Search Widget version 1.1.5.

 

http://www.tapasdas.com/Maps/Phones/app29

The Results Pane and the Popups in the Identify Widget looks picture perfect. All the artifacts are gone. I can add my own alias names. All the attributes show up. The hyperlinks work perfectly.

I like the way the Item Names appear in Italics in both the Results Pane and the Popup Window.

pic07.jpg

Your Identify Widget is ready for Prime Time.

This is a great companion tool to your Enhanced Search Widget where I may want to list the attributes of a specific layer or drill down all the layers.

I had a minor enhancement request on your Identify Widget. This is not a showstopper.

When I go to add a link, I find that I could not scroll down all the way to the bottom.

I am using Firefox 37.0.1

pic01.jpg

Your Enhanced Search Widget does not have this issue. I can scroll all the way down to select my link item {CityData}.

pic02.jpg

There is another great feature you have implemented on your Enhanced Search Widget.

I can reorder the Search Layers any way I wish.

pic03.jpg

Will it be possible to add this feature on your Identify Widget?

pic04.jpg

Here is another feature that I find very useful on your Identify Widget.

You allow certain items to appear in the Popup only. This makes it possible to have an uncluttered listing in the Results Pane, while the details are displayed in the Popup.

pic05.jpg

Would it be possible to add this feature to your Enhanced Search Widget?

pic06.jpg

What can I say Robert? You are the ultimate Widget Wizard.

I check your discussion threads every morning to see what new goodies you have created for us!

I have no clue how your ported over 8000 lines of Flex code from your Enhanced Search Widget.

We are grateful that you are designing all these fancy widgets for our Web AppBuilder Community.

Tapas

DAVIDDAS1
Frequent Contributor

Hi Robert,

Thanks again for the new features in your Enhanced Search Widget version 1.1.6 today!

I like the way you can now select the collection of Graphical search tools.

pic01.jpg

This gives it a simpler and cleaner look.

pic04.jpg

I made another app to test how it works alongside your Identify Widget version 1.1.2

http://www.tapasdas.com/Maps/Phones/app30

I like how you can have the same set of Graphical tools on your Identify Widget.

pic05.jpg

I like the way you can disable some of the Search Tabs to make the interface even simpler.

pic02.jpg

I like the way you can format numeric fields, set the precision and specify a thousands separator.

pic03.jpg

This gives it a professional look when displaying numbers.

pic06.jpg

I also like the fact that I can dive directly into the "config_Enhanced Search.json" file and make any changes I like.

pic07.jpg

This is the best of both worlds. In the Flex version, we had to directly edit the xml file.

In this Web AppBuilder version, all the configuration can be done via an elegant GUI. This makes it idiot proof.

Robert you have done an amazing job with the Enhanced Search Widget. This offers so much functionality and flexibility, while keeping the interface deceptively simple.

This widget is going into each of my Web Apps!!

Tapas

NicholasBarger
Frequent Contributor

Hi Robert,

I'm running into a strange problem.  I was using the previous version of the eSearch widget and I am making the jump to the latest version.  I have been hunting for a solution to this for several days now.  I have even tried recreating all of the sites from a backup (Pre 1.1.6) and I keep getting the same results.  So here we go...

I started updating my apps with the new eSearch widget.  The first 3 widgets that I updated worked perfectly.  They were all updated the same way.  Once I hit the 4th App things began working poorly for me.  I am trying to update the app the same way as the previous 3 but it appears that the attribute table is no populating.  It opens but it is blank.  If I close it and rerun a search it opens and then places the table of the selected set but never return any results.  I get caught in the spinning loading symbol.  I close it  and clear the search a second time, and re run the search and now there are 2 table open.  Sometimes, of I leave run long enough one of them (the first in the list), will have data.  I have found that if I open the attribute table prior to ever running a search then everything works correctly.

I thought that there may be something wrong with that app so I tried another app....same results.

Any thoughts?  I read the problems directly above.  I'm going to add another search layer and see if that corrects things.

This widget is really coming along.  Love it!

Thanks,

Nick

NicholasBarger
Frequent Contributor

Just tried adding another search and its still not working.  Initially it did... but now nothing.

RobertScheitlin__GISP
MVP Emeritus

Nick,

  You are describing your issue but not providing any details that can assist in troubleshooting... What does the web console say? What does the config_Enhanced Search.json look like?

AmyKnight
Occasional Contributor

I am having a similar problem.  But as soon as I hit the refresh button on the table the results come in. This has resolved it consistently so far. 

NicholasBarger
Frequent Contributor

Here is a link to a test web app.

ArcGIS Web Application

Here are the errors from the consol

TypeError: a[0] is undefined init.js:1299:101

TypeError: this.tabContainer is null

This error is followed by a lengthy stack trace

NicholasBarger
Frequent Contributor

I also get this...

Error in parsing value for 'line-height'.  Declaration dropped. test

and when I open the Attribute Table first I get this...

Error in parsing value for 'width'.  Declaration dropped. test

Error in parsing value for 'height'.  Declaration dropped. test

I still get this error...

TypeError: a[0] is undefined init.js:1299:101

but the table is populated.

NicholasBarger
Frequent Contributor

{

"layers": [

{

"name": "Parcels",

"url": "http://gissites.co.centre.pa.us:6080/arcgis/rest/services/WEBIA/MapServer/9",

"definitionexpression": "",

"spatialsearchlayer": false,

"zoomScale": 10000,

"shareResult": true,

"addToAttrib": true,

"expressions": {

"expression": [

{

"alias": "Tax ID Number",

"textsearchlabel": "Search by Tax ID Number",

"values": {

"value": [

{

"fieldObj": {

"name": "TAXIDNUM",

"label": "TAXIDNUM",

"shortType": "string",

"type": "esriFieldTypeString"

},

"valueObj": {

"value": ""

},

"prompt": "TAXIDNUM contains",

"textsearchhint": "32-102-,281-,0000-",

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

"operation": "stringOperatorContains"

}

]

}

}

]

},

"titlefield": null,

"fields": {

"all": false,

"field": [

{

"name": "TAXIDNUM",

"alias": "TAXIDNUM"

}

]

},

"links": {

"link": []

},

"showattachments": false,

"layersymbolfrom": "config"

},

{

"name": "Buildings",

"url": "http://gissites.co.centre.pa.us:6080/arcgis/rest/services/WEBIA/MapServer/8",

"definitionexpression": "",

"spatialsearchlayer": false,

"zoomScale": 10000,

"shareResult": true,

"addToAttrib": true,

"expressions": {

"expression": [

{

"alias": "Address",

"textsearchlabel": "Address",

"values": {

"value": [

{

"fieldObj": {

"name": "ADDRESS",

"label": "ADDRESS",

"shortType": "string",

"type": "esriFieldTypeString"

},

"valueObj": {

"value": ""

},

"prompt": "ADDRESS contains",

"textsearchhint": "420 Holmes St",

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

"operation": "stringOperatorContains"

}

]

}

}

]

},

"titlefield": null,

"fields": {

"all": false,

"field": [

{

"name": "AID",

"alias": "AID"

},

{

"name": "ADDRESS",

"alias": "ADDRESS"

}

]

},

"links": {

"link": []

},

"showattachments": false,

"layersymbolfrom": "config"

}

],

"initialView": "text",

"multipartgraphicsearchchecked": false,

"addpointtolerancechecked": false,

"keepgraphicalsearchenabled": true,

"autozoomtoresults": true,

"toleranceforpointgraphicalselection": 6,

"bufferDefaults": {

"bufferUnits": {

"bufferUnit": [

{

"name": "UNIT_FOOT",

"label": "Feet"

},

{

"name": "UNIT_STATUTE_MILE",

"label": "Miles"

},

{

"name": "UNIT_METER",

"label": "Meter"

}

]

},

"bufferDefaultValue": 5,

"bufferWKID": 102003,

"simplefillsymbol": {

"color": [

1,

185,

253,

128

],

"outline": {

"color": [

1,

185,

253,

204

],

"width": 1,

"type": "esriSLS",

"style": "esriSLSSolid"

},

"type": "esriSFS",

"style": "esriSFSSolid"

}

},

"spatialrelationships": {

"spatialrelationship": [

{

"name": "esriSpatialRelContains",

"label": "entirely contained in"

},

{

"name": "esriSpatialRelIntersects",

"label": "intersected by"

},

{

"name": "esriSpatialRelEnvelopeIntersects",

"label": "intersected by envelope of"

}

]

},

"graphicalsearchoptions": {

"enablepointselect": true,

"enablelineselect": true

},

"symbols": {

"simplemarkersymbol": null,

"picturemarkersymbol": {

"url": "/widgets/eSearch/images/i_search.png",

"height": "20",

"width": "20",

"type": "esriPMS",

"angle": "0"

},

"simplelinesymbol": {

"type": "esriSLS",

"style": "esriSLSSolid",

"color": [

255,

0,

0,

204

],

"width": 2

},

"simplefillsymbol": {

"color": [

255,

0,

0,

128

],

"outline": {

"color": [

255,

0,

0,

204

],

"width": 2,

"type": "esriSLS",

"style": "esriSLSSolid"

},

"type": "esriSFS",

"style": "esriSFSSolid"

}

}

}

~ Nick

NicholasBarger
Frequent Contributor

Robert,

I'm thinking this is serviced based and here is why...

I tried to duplicate a working app using WAB.  The copy worked.  As soon as I changed the service in the Local Layer Widget to one of the services that are not working then the eSearch widget breaks.  As a further test I used a working service in the local layer widget and the service that didn't work in the eSearch widget and the search successfully opened the attribute table and populated it.

I have yet to figure out what is different between the services.

NicholasBarger
Frequent Contributor

So,

Based on my preliminary findings this morning I'm thinking this problem is a service related problem with the Local Layer Widget.

The only difference between this service and the other is that I do not have groups... let me explain.  To allow for more control over labels I add streets, buildings, and parcels into my project multiple times.  One Buildings layer will have the geometry completely clear, but I will turn on labels for address.  I set up visible scale ranges to further control the draw time.  I do the same thing for address ranges and street names on our street center lines, and owner names and parcel number on the parcels layer.

On all of the services that worked correctly I had these duplicate layers grouped (as Labels) in my service.  In this service I did not.  They were all listed in the TOC as is.  They had different names... i.e. Street Name, Building Address, Streets, Buildings, etc.  Once I grouped the Labels (duplicate layers) and republished the service the eSearch widget worked... more specifically the attribute table was populated with the information from the eSearch tool.  I narrowed this down to a service by adding a working service into the WAB Local Layer widget and using my other service (not working) into the eSearch widget.  This produced the correct results.

Amy Knight​ - I'm curious... do you have multiple instances of the same layer in your service?

Thanks,

Nick

AmyKnight
Occasional Contributor

Nicholas,  yes, actually I did.  Similar to what you describe I had layers used for labeling that were duplicates of the primary symbolized layers.  I tried grouping the labels in my service as you describe and tested both ways. The grouping definitely fixed the problem.  The eSearch 1.1.6 results now display the attribute table with good performance and the full attribute tables for layers also perform well alongside the search result table.  Thank you!

glennhazelton
Deactivated User

Robert

once I have the WAB-dev app built I know I can export it and run it in as a registered Portal app. But is there a way to export it and run it  in AGOL?

RavitejaViswanadha1
Deactivated User

Thank you so much Robert , This is marvelous.  And special thanks for considering my inputs.

Can you please also support on the error log that we are facing the issues on the eSearch configuration where the Attribute table are giving the issues.

Please find the Screen grabs

Log.png

Also Please find the Screenshot for the configurations

Config.png

And also we are facing issues for pupulating the Attribute tables after the results are being populated , Please find the Log below.

Attribute.png

We will be pleased if you can help to understand this Log and also provide a resolution for the Attribute table.

RobertScheitlin__GISP
MVP Emeritus

Glenn,

   I think that would have something to do with exporting a template, but I am not a avid AGOL user so I am not real sure.

RobertScheitlin__GISP
MVP Emeritus

Raviteja,

   Based on your second screenshot it looks like you have neglected to define any search expressions.

RavitejaViswanadha1
Deactivated User

Yes Robert you are correct , I wanted to use only By Shape , I disabled By Shape and By Attribute. So I ignored the Search Expression.,

AndrewNiederhauser1
Deactivated User

Hi Robert,

I'm using WAB 1.1 and your Enhanced Search Widget Version 1.1.6 - 4/22/15 Download Link widget. I noticed that this latest release resolves an issue where the Attribute Table widget doesn't load the eSearch results consistently. When I run an eSearch in my app, the results are returned in the results panel but when the Attribute Table opens automatically, no eSearch results are listed. An spinning icon appears and seems like records are loading but never appear. A similar issue was discussed in this thread Enhanced Search Widget 1.1.1 Issue

This is likely something wrong with my app and/or setup but thought I'd ask if you or the group had any insight. A link to the app is below.

ArcGIS Web Application

A search of Trail Designs and value Bike Lane should show the issue described above.

Thank you,

Andrew

DAVIDDAS1
Frequent Contributor

Hi Robert,

I created a PDF Guide with screenshots that shows all the steps for installing and testing your Enhanced Search Widget in the Developer Edition of the Web AppBuilder.

This is more like a hands-on demo that covers the entire process of creating a web application with your custom widgets, setting up a proxy, and deploying the web application on a web server.

This may help a beginner how to:

  • Download the Developer Edition of the Web AppBuilder
  • Download and install your custom widgets
  • Create a Web Map
  • Launch the Developer Edition of the Web AppBuilder
  • Create a Web Application
  • Configure and test your custom widgets
  • Set up a proxy
  • Deploy the Web Application

Here is the download link:

http://www.TapasDas.com/WAB.pdf

Here is a link to the working demo:

Schools

image31.jpg

Thanks so much for spending all your free time in designing these absolutely essential tools for the Web AppBuilder Community!

Best regards,

Tapas

RavitejaViswanadha1
Deactivated User

Robert ,

Also please also note that the attribute tables is not getting populated in this version , this was working on 1.1.5 version , Can you please let us know what configurations will get it working. Please refer to the above screenshots for your reference.

NicholasBarger
Frequent Contributor

Andrew,

Do you have multiple instances of the same layer in your service? For example, do you have multiple street layers? I had a similar problem as this and found that if the service had multiple copies of the same layer that you needed to group one of the duplicate layers for the attribute table to work correctly. I used a duplicate of several layers for labeling purposes in my apps. I found that while ungrouped I saw the same behavior as your site.

~ Nick

AndrewNiederhauser1
Deactivated User

Nick,

I have multiple services in the app. One of the services does have the same layer multiple times. This layer is grouped, however, and isn't included in the eSearch widget.

The services used for the eSearch widget have multiple layers but these layers are included in the service only once.

Thanks,

Andrew

NicholasBarger
Frequent Contributor

It doesn’t have to be. I had another app that was not working. My main service was working fine, but I had a weather service in the app as a secondary service. That caused me problems as well. Try removing services / adding services one at a time until the eSearch tool breaks. Then you know which service it is. You may also want to continue to see if other services cause it problems.

~ Nick

AndrewNiederhauser1
Deactivated User

All,

As Nick suggested, I removed some layers from the web map I was using but am still seeing the issue. I have tested against map and feature service REST URLs. I also tried to use the default configuration for the eSearch widget that uses Louisville Zoning and some other layers. The only change was that I checked the box that allows the results to be shown in the Attribute Table. While I did get this default configuration eSearch setting with Louisville Zoning to show results in the Attribute Table, I couldn't get it to work on a consistent basis after several attempts.

Thanks,

Andrew

RobertJenkins3
Deactivated User

Robert,

We have a request to return any link attribute as hyperlinks in the results table. This is contingent on the user's mapservice using fully formed hyperlinks. Would this be something you might consider?

Thanks,

Robert Jenkins

DGI

Commonwealth of Kentucky

RobertScheitlin__GISP
MVP Emeritus

Robert,

   How does your request differ from the link ability that is already provided in the widget? I am not sure I understand.

RobertScheitlin__GISP
MVP Emeritus

Andrew,

   Do you have issues using the Live Preview site? I have not seen any issues in my testing using the latest version so it is hard from me to diagnose something I am not seeing?

RobertScheitlin__GISP
MVP Emeritus

Raviteja,

   Not sure how else I can help I don't see these issues in my testing.

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