- Home
- Documentation
- Designing forms
- Question types
Designing forms
Question types
Every type the type column accepts, what each collects, and the few that are accepted but collect nothing.
Joripo documentation · https://joripo.com/docs/designing-forms/question-types
On this page
The type column names what a row is. Joripo accepts every type below; a type it does not know stops the upload and names the row, so nothing is ever dropped silently. SurveyCTO's spelling and ODK's are both accepted (select_one and select one, begin group and begin_group, geopoint and its older names gps and location).
Questions
| Type | Collects |
|---|---|
text | Free text. With numbers, numbers_decimal or numbers_phone as its appearance, a numeric keypad. |
integer | A whole number. |
decimal | A number with decimals. |
date | A date, from a calendar that opens on today. |
time | A time of day, with hour and minute pickers. |
datetime | A date and a time. |
note | Nothing: text shown to the enumerator. |
acknowledge | A single confirmation the enumerator ticks. |
range | A number chosen on a slider. |
barcode | A barcode or QR code read with the camera. |
Choices
| Type | Collects |
|---|---|
select_one | One choice from a list on the choices sheet: select_one yesno. |
select_multiple | Any number of choices. Exports give the answer as recorded plus one 0/1 column per choice. |
rank | The choices of a list, put in order. |
select_one_external | One choice from a list held in an attached CSV file instead of the choices sheet. |
A choice list can also come from preloaded data with the search() appearance; see Datasets and preloads.
Media and files
| Type | Collects |
|---|---|
image | A photo; with the signature or draw appearance, a drawing on the screen. |
audio | A sound recording. |
video | A video. |
file | Any file. |
Media answers travel with the submission as attachments. In exports they are links that open the file for a signed-in member of your organisation.
Location
| Type | Collects |
|---|---|
geopoint | One GPS reading, with its accuracy. Joripo Collect and web forms show a location screen that waits for an accurate reading; see Appearances for maps. |
geotrace | A line of points. In Joripo's runtime the points are typed or added one by one; there is no map to draw them on. |
geoshape | A closed shape of points, entered the same way. |
start-geopoint | A reading taken as the form opens, without a question on screen (SurveyCTO writes it start geopoint). The best reading is kept, answering once the accuracy threshold is met or after 20 seconds; blank if location is refused. |
Who is interviewing
enumerator is SurveyCTO's enumerator field: whoever fills in the form says who they are, and the answer is stored as "Name (ID)". The list of enumerators is the form's attached enumerators.csv, with the columns id, name and, optionally, users (the sign-ins each enumerator is listed for). The enumerator picks their name, types or scans their ID (scanning on Joripo Collect only), or adds themselves; the phone or browser remembers them and only asks them to confirm next time. One per form, and not inside a repeat group. enumerator-name() and enumerator-id() give the two parts. See Datasets and preloads for keeping the list on the server.
Calculations
| Type | What it does |
|---|---|
calculate | A value worked out from other answers, recalculated whenever they change. Not shown on screen. |
calculate_here | SurveyCTO's calculation that is worked out where it sits in the form, when the enumerator reaches it: the usual way to time a section. Joripo's runtime evaluates it where it is reached; Compatibility explains how ODK Collect differs. |
Structure
| Type | What it does |
|---|---|
begin group … end group | Groups questions: to show them on one screen (field-list), to give them one relevance, or to organise the form. |
begin repeat … end repeat | A section asked again: for each household member, each plot. Runs a fixed or computed number of times with repeat_count, or until the enumerator stops adding. Repeats may be nested. |
Collected without a question
These are filled in by the phone or the server, never asked. Each becomes a column of the data.
| Type | Holds |
|---|---|
start, end | When the interview started and ended. The duration checks read them. |
today | The interview's date. |
deviceid | The device: on Joripo Collect, joripo: followed by the installation's ID. A web form leaves it blank. |
username, email | The person signed in: Joripo Collect fills both; a web form fills username with the signed-in account. |
subscriberid, simserial, phonenumber | SIM details. Joripo Collect does not read them: the column exists and arrives blank. |
caseid | The case the form was opened from, in case management. Blank when the form was not opened from a case, and always blank from ODK Collect. |
Audits
| Type | Records |
|---|---|
text audit | How long the enumerator spent on each question, as a file (TA_<uuid>.csv) attached to the submission. Joripo Collect and web forms record it; the form's quality report turns it into time per section. |
audio audit | A background recording of the interview, attached to the submission. Joripo Collect records it natively (.m4a); a web form records it where the browser can. |
image audit, background audio, audit | Accepted, and stored as an attachment when the device sends one. |
Accepted, but nothing is collected
SurveyCTO has a few types that depend on SurveyCTO Collect's own sensors or services. Joripo accepts them so the workbook deploys unchanged, and records nothing in them: comments (SurveyCTO's per-question comment box), speed violations count, speed violations list, speed violations percent, sensor stream and sensor statistic (also written sensor_stream light_level and similar). Where the type gives a column, it arrives blank.