SEL-Columbia / enketo

A lightweight offline-capable web survey application that is compatible with JavaRosa/OpenRosa XForm-derived format and compliant servers.
https://enketo.org
Apache License 2.0
16 stars 13 forks source link

Idea: Survey commits and pagination #323

Closed rubenarslan closed 11 years ago

rubenarslan commented 11 years ago

For psychology surveys it would be necessary to have the option to "commit" data:

In most cases, the implementation is to have a button to commit, which has the effect of

  1. committing and hiding the items up to that button
  2. showing the items after that button.

so it serves both for committing and pagination. It is the norm with most php-based survey engines, not as a design decision, just by default. In enketo, it should be possible to paginate without committing and to commit without paginating.

I think the committing is somewhat foreign to development surveys, i.e. people like to go back and change what they put in later.

It might also pose a problem for locally stored data like enketo's, where a partial submit might be necessary to ensure locally stored data is not tampered with later.

What would be a way to go about this?

MartijnR commented 11 years ago

pagination: yes, would be nice to have. We could either use appearance=field-list (limitation: tables always become a page) or use a new appearance=page. Main challenge is design/usability of these pages and flicking between (technically not hard).

committing: interesting that this is a requirement for psych surveys. Why? Would be hard to implement elegantly, I think.

rubenarslan commented 11 years ago

Thanks for reacting!

Yes, I realise committing survey responses is somewhat odd for most of your use cases.

I think it's quite essential to the way most psychologists conduct surveys and definitely the default for most (especially when there's personal feedback involved which we often do for various reasons, sometimes just to encourage participation).

For me some committing use cases are:

I realise that, whichever way committing is implemented, it would be easy to circumvent by deleting cookies or restarting a session. However, we would also often deal with people who are identified already and are enrolled in longitudinal research, so for these people, it actually works. And others are discouraged.

MartijnR commented 11 years ago

Thanks, that totally clarifies the requirement! In ODK Collect, you could perhaps just disable the ability to traverse backwards through the form to meet this requirement, without having to add any commit logic (and if enketo has pagination, the same trick could be used).

rubenarslan commented 11 years ago

Great to know this is possible in ODK Collect already! The tweak sounds like a good idea to me. It sounds of course better if anything could be grouped into sections/pages and tables weren't automatically separate.

I wrote to the list once about "finishing" a survey. In our case this is often a redirect or a feedback with a link back to the main page (while in development data collection that's not from the "end user" I think people stay on the form for repeated entries more often). So the latter would then be possible in enketo through the use of pagination, disabling going back and showing only feedback with a link on the last page, right?

MartijnR commented 11 years ago

Sorry, it's probably not possible in ODK Collect right now, but just seemed like that should be quick to add (for Java people) because the pagination is there already.

The ability to automatically redirect to another (any) url is already available in the webform/edit view. It would be reasonably straightforward to create a webform/single view that would do this (although using a different mechanism perhaps and store the return_url in the surveys table of the database). Otherwise a note to display the link should be possible indeed (just have to add a link detection regex in the 'readonly widget' and create a link)

MartijnR commented 11 years ago

https://github.com/MartijnR/enketo-core/issues/38