Survey123 connect - predictive text drawing from a long list

218
5
Jump to solution
3 weeks ago
JamesBuckle
New Contributor III

I have a list of 5000 plant species' names. In my survey123 form, I want a surveyor to be able to begin to type a species name, and a dropdown to respond to the characters typed, and then the surveyor can select the species in question from the reduced list (based on the characters already typed). The surveyor then should be able to repeat this process - within the same question - as many times as necessary until all species in that plot are accounted for. 

I have tried using the 'select_multiple_from_file file_name.csv' question type but that leaves me with a list of 5000 species which a surveyor has to scroll through. This is not very feasible for our surveyors when they are out in the field.

I was wondering if there is a way for me to set up this question so that my aims are achieved?

Many thanks,

JJ

Tags (1)
1 Solution

Accepted Solutions
DougBrowning
MVP Esteemed Contributor

The way I do it is have the code, scientific name, and friendly name with spaces in the label column then the name column is just the code.  This way they can search for any of these they know.  If you set the appearance to auto complete they can do type ahead to reduce the list as you want.

I strongly suggest you put these in a repeat and use select one to add one species at a time.  It will seem slower at first but Using select multiple stores the data in a comma separated list which makes it very difficult to use the data going forward.

DougBrowning_0-1712678856283.png

Hope that helps

 

View solution in original post

5 Replies
DougBrowning
MVP Esteemed Contributor

The way I do it is have the code, scientific name, and friendly name with spaces in the label column then the name column is just the code.  This way they can search for any of these they know.  If you set the appearance to auto complete they can do type ahead to reduce the list as you want.

I strongly suggest you put these in a repeat and use select one to add one species at a time.  It will seem slower at first but Using select multiple stores the data in a comma separated list which makes it very difficult to use the data going forward.

DougBrowning_0-1712678856283.png

Hope that helps

 

JamesBuckle
New Contributor III

Hi @DougBrowning, I've spoken to our surveyors and a big issue here seems to be that with this repeated Select_one approach, our surveyors are unable to see the species list in full that they have entered without cycling through using the arrow/navigational buttons which can be a bit too laborious when in the field. I.e. if they are surveying one plot which has 50 plant species in it, they need to see the species names they have entered already as they are continuing to enter new species names. Is there a way to do this? Thanks in advance

0 Kudos
DougBrowning
MVP Esteemed Contributor

You fix this by using join() to have a running list at the bottom.  Bonus I then use this to check for and stop them from adding dups.  Works slick

DougBrowning_0-1713968081034.png

I also do a summary page at the end

DougBrowning_1-1713968116058.png

In other project I even give them a full table on the summary page with all the attributes of the plants.

DougBrowning_2-1713968212864.png

We collect millions of species a year with these workflows.

Hope that helps

 

 

0 Kudos
RobertAnderson3
MVP Regular Contributor

I use the join() method as well to show a list of each entry they've entered. Though @DougBrowning how are you setting up a check to prevent duplicates? And the set up for the summary table, I think I've tried this before but found I had issues with getting the entries lined up properly.

Also I might recommend this idea that's been posted to have the repeats show in a stacked way in the app, like they do on the web, to make the review easier. This may not be great for a large number of repeats, but it's still a possibility if implemented well.

Appearance option to view Repeats stacked in Surve... - Esri Community

DougBrowning
MVP Esteemed Contributor

For dup check you put the join inside the repeat with a once like this.

once(join(", ", ${Species}))

Then add a constraint that checks against this list like (the comma is to avoid matches like PACE and PACE5 for example.

${Species}='' or not(contains(${AllPlantsCheck}+",",${Species}+","))

Note in the latest versions of 123 there is a slight bug where the first repeat acts differently than the rest.  To fix that I added a TempCount field in the repeat with a calc of once(count(${SomeOtherRepeatField}))

then change the constraint to 

if(${TempCount}=0, 1,${Species}='' or not(contains(${AllPlantsCheck}+",",${Species}+",")))

You will see how the first one is a bit off.

 

For the summary page I just use join with \n and a grid appearance and since the repeats are always in order it just all lines up for you like magic.

DougBrowning_0-1713982943381.png

Other way to do summaries is inside your repeat add a calc of concat(Field1, "  ", Field2, "  ", etc) then on your summary page do a join \n with that concat field.

Hope that makes sense.

 

0 Kudos