TNRIS / dataHub

ReactJS frontend web application for browsing, downloading, and inquiring about TNRIS public data and historical imagery.
https://data.tnris.org
7 stars 0 forks source link

Survey Modal Form Component #279

Closed jwhaney closed 3 years ago

jwhaney commented 3 years ago

the purpose of this feature is to collect objective information from actual users to help direct future enhancements to the application.

summary: implement a survey component (modal form) that will exist temporarily. if desired, we can potentially expand this survey modal to consume managed content from the api so it can be re-used regularly to collect user feedback. the api idea may be something we look at doing at a later point, while in the more near future we approach this feature in a more straight-forward fashion. fyi, this idea is in its infancy at the moment, so there will be more clarification at a later point and additional information may be added to this issue. the following are some of the ideas as of now (9/14/20):

If needed, please contribute any ideas, questions, or concerns to this issue via comments below

Ldsmiths commented 3 years ago

Here are some sample questions I put together. Feel free to suggest any changes--those of you who have been working on this will have a better idea of what would be valuable for us to know.

“Why did you visit data.TNRIS.org today?” -multiple choice

“Were you able to find what you were looking for?” -Yes -No -Partially -Not sure/still looking

“How would you rate data.TNRIS.org on the following:” (1 – 5) -Searchability -Navigation -Presentation of map data

“Do you agree with the following:” (yes/no/not sure) -Easy to understand -Up to date -Would recommend to others

"How can we improve data.tnris.org? Send us your ideas and suggestions." -Open-ended

Demographics

"Which of the following best describes you:" -private contractor, government employee, general public, student, etc.

"Which browser are you using?"
-Chrome, Firefox, Safari, Edge, etc.

"Would you be willing to participate in a follow-up interview so we can learn about your experiences more in-depth?" -If yes, input name, email address, job title

Ldsmiths commented 3 years ago

Other ideas that would be nice to implement if we can:

-Having the survey pop up after a set amount of time (90-120 seconds?) would make sure the user had time to click around and they're not being asked to fill out a survey before even using the site. (Average session time is about 4 minutes according to Google Analytics)

-If we can have a progress indicator at the bottom of the survey it can encourage completion. ex.) if a user sees they're already at 60% after 3 questions they're more likely to continue, rather than wondering if there might be 20 more questions and closing out.

ctrepka commented 3 years ago
  • public for 30 days? 60?
  • modal pop-up form following Material design principles (just like the rest of the app)
  • local storage so that once user has filled it out once, they won't receive the modal pop-up again
  • re-usable component?

I think the local storage idea is a great choice for persisting data about participation. You mentioned it in your original post, but I think tracking using the Events function from 'react-ga' could help determine if there are duplicate survey responses as well (if, for example, a user clears their browser cache). We could also use the event to cross reference survey responses with the user's activity on the website ( are they returning users, etc. ).

jwhaney commented 3 years ago

i just discovered another state agency, the texas parks and wildlife department, is currently doing something similar to what we are looking to do with this issue. it's a different way to accomplish the same goal, and thought it was interesting to share. looks like they are using a third party or atleast a different software package to provide instructions to the user to see how quickly they can find a certain topic on the home page (i think the home page shown in the survey is a new design because the current one looks different). the software they use looks to just log the click location on an image or maybe a grid overlaying the image, not sure. this information might be more applicable to @Ldsmiths just to maybe get some ideas and to see how others in the state are doing things.

tpwd home page - https://tpwd.texas.gov

survey url - https://tpwd.optimalworkshop.com/chalkmark/homepageherodeskb20

JasonKleinert commented 3 years ago

Great find @jwhaney!

I like the way TPWD has done this. I went through it and found it to be very clear and not that much of a burden. It didn't take much time at all. I liked that the box to link out to the survey was non intrusive and in the lower right of the view. Interestingly, after agreeing to help and completing the activity the option is no longer visible to me when I visit the homepage. Similar to discussions we have had they are using local storage to track that I have chosen to help out or dismissed the idea.

Ldsmiths commented 3 years ago

This example is great. Optimal Workshop has some really good tools (including surveys) for collecting data on how users interact with your site/app. It's kind of expensive though ($166/user per month)

I found another tool (SurveyJS) which might help with what we're trying to do. Looks like it's completely free and you can use it to create a survey it gives you the code to embed.

ctrepka commented 3 years ago

I think taking the user to an external webpage might be a lot easier. In my time at the iSchool, we used Qualtrics. Not sure if we have a free subscription as a state agency, but at UT everybody received free Qualtrics accounts for research.

I took a look at @Ldsmiths recommendation above and SurveyJS seems pretty cool. It serializes forms from JSON . Wondering if we could design an API endpoint that replicates their forms schema, create forms using the Django admin, and then use the serializers provided by SurveyJS to render in React.

The second option is a lot to maintain, though. I think the question here is whether it is worth it to develop an entire survey app, or should we just use the timed modal option to link out to an external resource

ctrepka commented 3 years ago

Referencing my comment made previously, I think another potential solution would be to generate surveys using the SurveyJS website and then copy the serialized JSON directly to our survey endpoint rather than replicating the entire SurveyJS schema in the Django Models. That way the Django admin would have a Surveys entity which has only fields like survey name and survey JSON.

I took a look at @Ldsmiths recommendation above and SurveyJS seems pretty cool. It serializes forms from JSON . Wondering if we could design an API endpoint that replicates their forms schema, create forms using the Django admin, and then use the serializers provided by SurveyJS to render in React.

jwhaney commented 3 years ago

the more i think about this, the more i like the idea of using a third party service like SurveyJS maybe. whatever service we use, we'd like to figure out a free or cheap option. we'll need to discuss the pros and cons of using an easy third party service that may cost money versus a custom in-house developed survey solution that will require more maintenance. this brings up the issue that if it does cost money, we will have to go through the twdb purchasing process which is kind of in chaos right now since their director left. i have no clue how long it would take to get the purchase completed.

Ldsmiths commented 3 years ago

At the end of the day, as long as we can make the survey highly visible we're good. I don't think completing it via a modal pop-up vs. a link to an external site would impact willingness to participate too much, if at all. It could even be as simple as making a survey with Google Forms and inviting users to take it with a banner at the top of the page. Getting it up quickly to start collecting data might be more valuable than taking the time to make it highly customized.