Naming Conventions
- The Name key is one that allows us to differentiate between types of inputs. The following types are valid
- End of Form* - prefixed by
eof__
- X percent completion* - prefixed by
comp_X__
- All other normal ODK related
- Common Hidden fields provided are (to be added manually by form creator)
isUserRegistered
- Managing Choices
- Label should always be in the following format -
1. <Name of the option>
-
- Points of form data persistence/telemetry events of completion.
Regex
For verifying a specific answer by the user. This could either be done for validations like phone number or for assessments, this can be used to verify if the answer for a particular question is correct or not.
Hidden Fields
Hidden fields are used for
- Prefilling the user
context
- Aggregating and Calculating scores
Global Menu
- The Global form is part of a global Bot.
- The
formID
should be global_menu
. Any form that has this formID
would be treated differently.
- All flows that lead to end of the form need to be explicitly mentioned by prefixing the Name with
eof_
. So for example if on selecting the options, it exits from global form to normal form, opt_gender_criteria
should be changed to eof__opt_gender_criteria
. (Note the use of double underscore)
- The Global form needs to know to which Conversation Logic it needs to go next. This is done by post fixing the next linked BotID to the Name. So for example in point 3, it would get modified to
eof_44a9df72-3d7a-4ece-94c5-98cf26307324__opt_gender_criteria
. (Note the use of double underscore)
Form Update
Form updates are brute forced and if the previous xPath
is not found, the user is sent back to the first question.