1. Home
  2. Documentation
  3. Designing forms
  4. 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

TypeCollects
textFree text. With numbers, numbers_decimal or numbers_phone as its appearance, a numeric keypad.
integerA whole number.
decimalA number with decimals.
dateA date, from a calendar that opens on today.
timeA time of day, with hour and minute pickers.
datetimeA date and a time.
noteNothing: text shown to the enumerator.
acknowledgeA single confirmation the enumerator ticks.
rangeA number chosen on a slider.
barcodeA barcode or QR code read with the camera.

Choices

TypeCollects
select_oneOne choice from a list on the choices sheet: select_one yesno.
select_multipleAny number of choices. Exports give the answer as recorded plus one 0/1 column per choice.
rankThe choices of a list, put in order.
select_one_externalOne 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

TypeCollects
imageA photo; with the signature or draw appearance, a drawing on the screen.
audioA sound recording.
videoA video.
fileAny 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

TypeCollects
geopointOne GPS reading, with its accuracy. Joripo Collect and web forms show a location screen that waits for an accurate reading; see Appearances for maps.
geotraceA line of points. In Joripo's runtime the points are typed or added one by one; there is no map to draw them on.
geoshapeA closed shape of points, entered the same way.
start-geopointA 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

TypeWhat it does
calculateA value worked out from other answers, recalculated whenever they change. Not shown on screen.
calculate_hereSurveyCTO'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

TypeWhat it does
begin group … end groupGroups questions: to show them on one screen (field-list), to give them one relevance, or to organise the form.
begin repeat … end repeatA 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.

TypeHolds
start, endWhen the interview started and ended. The duration checks read them.
todayThe interview's date.
deviceidThe device: on Joripo Collect, joripo: followed by the installation's ID. A web form leaves it blank.
username, emailThe person signed in: Joripo Collect fills both; a web form fills username with the signed-in account.
subscriberid, simserial, phonenumberSIM details. Joripo Collect does not read them: the column exists and arrives blank.
caseidThe 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

TypeRecords
text auditHow 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 auditA 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, auditAccepted, 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.