Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

forms

The form management application is made of two modules:

  • Composition: for managers, a tool to compose forms

  • Monitor: for managers, to monitor and review the answers

The Forms application is then used to answer the forms:

  • Forms: for managers and the public, a tool to answer forms

The referential manager is a dedicated module to add or delete referentials.

Form composition

General structure

The form composition module lets users create forms, using reference data when needed. Depending on the complexity of the form, users can choose between an interactive and a declarative composition mode.

Information: title, description, image and document

This tab holds the information about the form as a whole.

An interface lets you add the content shown on the form’s information page.

It consists of an editorial field, where users can add formatted text (markdown), an image and a document.

Markdown syntax

# A heading starts with a hash sign and a space

Text **in bold** -> Text in bold

Text *in italics* -> Text in italics

To add a link with a custom name, put the name in square brackets, directly followed by the address in parentheses:

[Perspective website](https://perspective.brussels) -> Perspective website

Information: languages and managers

This is also where you define:

  • the language(s) of the form
  • the manager(s) of the form

The left column can be collapsed.

Referentials

A dedicated interface lets users manage the referentials used in the form.

A search bar filters the referentials.

An icon shows whether a referential is a list referential, a spatial referential, or both.

Examples of referentials:

  • types of education
  • Urbis buildings

Composition: interactive mode

The form is structured into sections, subsections and questions. The toolbar adds any of these elements. They can then be reordered, deleted or edited.

The preview shows an image of the form being built. To actually test it, change its status to test and open the Forms application.

Question types

The following types are available:

  • short text
  • long text (several lines)
  • date
  • number
  • selection (single or multiple choice)
    • radio button
    • drop-down menu
    • checkbox
  • spatial selection
    • drawing a geometry (point, line or polygon)
    • selecting a geometry from a spatial referential

Composition: declarative mode

The form can also be written as text: this is the declarative mode.

On top of the features of the interactive mode, the declarative mode is used to set up cascading questions, constraints and conditions.

These commands are described, with examples, in a help widget available in the composition application itself.

The widget lists the identifiers of the questions and referentials, needed to write a condition, as well as examples of questions and conditions.

The structured text representation makes it easy to:

  • copy and paste existing forms, or parts of forms
  • create suitable templates

Users can switch between the interactive and declarative modes at any time.

Declarative mode: functional tags

Sections and questions are written with functional tags. They take the following arguments:

  • an id, the identifier. Users can change it, but it must be unique. It is used to refer to the question in conditional behaviours.
  • a type
  • a label, i.e. the title of the section or question
  • a description
Structure: sections and subsections
section

A form section is written with the section tag:

id: my-section
type: section
label:
  en: My section
description:
  en: A description of the section
  fr: Une description de la section

subsection

A form subsection is written with the subsection tag:

id: my-subsection
type: subsection
label:
  en: My subsection
description:
  en: "Example: a description of the subsection"
  fr: "Exemple : une description de la sous-section"

Note: put the label between quotes " " when it contains the sequence :

Questions
short-text

For questions expecting a short text answer.

id: my-short-question-1
type: short-text
label:
  en: My question
  fr: Ma question
description:
  en: A description to complement the title
  fr: Une description en complément du titre
placeholder:
  en: a placeholder
  fr: Un texte de saisie indicatif

long-text

For questions requiring a long text.

id: my-long-question-1
type: long-text
label:
  en: My question
  fr: Ma question
description:
  en: A description to complement the title
  fr: Une description en complément du titre
placeholder:
  en: a placeholder
  fr: Un texte de saisie indicatif

number

For numeric fields.

id: my-number-question-1
type: number
label:
  en: How many floors?
min: 1
max: 15
description:
  en: The ground floor is included.
placeholder: 3

selection

For multiple choices or checkboxes.

id: my-selection-question-1
type: selection
label:
  en: Municipality
  fr: Commune
mode: unique
reference: geo-1
description:
  en: Select the municipality you live in
  fr: Sélectionne la commune dans laquelle tu habites

id: my-selection-question-1
type: selection
label:
  en: Municipality
  fr: Commune
mode: unique
reference: geo-1
description:
  en: Do you like forms?
  fr: Aimez-vous les formulaires?

Fill in the reference tag with the identifier of the chosen referential.

date

For date fields.

id: my-date-question-1
type: date
label:
  en: Which date?
min: 1920-01-01
max: 2025-12-31
placeholder: 2025-03-07

geometry

For questions related to spatial data.

Drawing

For drawing a point, line or polygon.

id: my-geo-question-1
type: geometry
label:
  en: Where do you go for walks?
  fr: Où vous promenez-vous?
draw: Point

Selecting a geometry

Selection based on a spatial referential

id: my-geo-question-2
type: geometry
label:
  en: My geometry
  fr: Ma geometrie
select: ref-id
Behaviours

On top of these elements, you can write conditions.

The visibility of a question can depend on the answers to other questions. These conditions are written under the when keyword, which takes two arguments:

  • question: question-id to refer to the question by its identifier
  • one of the following operators:
    • has-answer: an answer is present
    • equals: equal to
    • different: different from
    • greater-than: greater than
    • lower-than: lower than
    • greater-than-or-equal: greater than or equal to
    • lower-than-or-equal: lower than or equal to
    • contains: contains
    • does-not-contain: does not contain

With the when-all and when-some keywords, you can write a list of conditions. The block is then valid if all conditions, or at least one condition, respectively, are met.

has-answer

Shows an entry depending on whether an answer is present.

when:
  question: another-question-id
  has-answer: true
equals

Shows an entry if the answer to a question equals a given value.

when:
  question: age
  equals: 18
different

Shows an entry if the answer to a question is different from a given value.

when:
  question: selection-question-id
  different: 5
greater-than

Shows an entry if the answer to a question is greater than a given value.

when:
  question: age
  greater-than: 18
lower-than

Shows an entry if the answer to a question is lower than a given value.

when:
  question: age
  lower-than: 65
greater-than-or-equal

Shows an entry if the answer to a question is greater than or equal to a given value.

when:
  question: age
  greater-than-or-equal: 18
lower-than-or-equal

Shows an entry if the answer to a question is lower than or equal to a given value.

when:
  question: age
  lower-than-or-equal: 65
contains

Shows an entry if the answer to a multiple-choice question contains a given value.

when:
  question: transport-modes
  contains: 3
does-not-contain

Shows an entry if the answer to a multiple-choice question does not contain a given value.

when:
  question: transport-modes
  does-not-contain: 3
when-all

Shows an entry if all the listed conditions are met.

when-all:
  - question: uses-public-transports
    has-answer: true
  - question: age
    greater-than: 18
when-some

Shows an entry if at least one of the listed conditions is met.

when-some:
  - question: uses-public-transports
    has-answer: true
  - question: closest-bus-stop
    has-answer: true

Declarative mode: conditional question example

The preview also shows the conditional relations between questions.

id: my-section
type: section
label:
  en: My section
description:
  en: A description of the section
  fr: Une description de la section

Appendices

This tab describes the appendices that the person filling in the form must attach.

The expected document type and quantity can be specified.

Finalisation

The Finalisation tab sets the publication status of the form and its audience.

If the form is in test or published, sharing links are available here.

Form monitoring

Statistics

The monitoring module of the forms application tracks the progress of a form.

The statistics page follows the number of answers and their content over time.

A timeline shows the number of answers submitted per day.

Statistics: answer details

Below, a statistical view of the form, answer by answer, gives a more detailed picture. For spatial questions, a map summarises the answers.

The section structure of the form is kept. Conditional questions are highlighted to show how questions are linked.

Review questions

This review section lets the manager add fields to the form to review the answers.

These fields allow:

  • qualitative analysis through a text field
  • tracking indicators (for example: a “request analysed” checkbox).

Fields are added as in form composition, with an interactive mode and a declarative mode. This gives flexibility to users, whose needs for analysing, validating and consolidating data vary.

Answers: table configuration

First, users choose with checkboxes which fields to add to the summary table of answers.

Users can come back to this configuration later. This configuration is used when the data is projected.

Everything can be selected at once.

Answers: table view

The table then lists all submitted answers. For each answer, you can either:

  • download the answer sheet as a PDF
  • view the answers in detail

All answers can be downloaded as an .xls file.

Finally, the data can be projected into a database table, keeping the table configuration. The date of the last data projection is also shown.

Answers: details of a selected answer

The detailed view shows one answer to the form, and lets you fill in the review questions.

Referential management

The referential manager adds and deletes referentials.

Forms use two types of referentials:

  1. List referentials

They are used for selection questions (checkbox, drop-down list, …). They are imported from an Excel file.

  1. Spatial referentials

They are used for spatial questions (choosing a feature on the map). They can also be used as list referentials for selection questions, provided a column has been chosen as label.

They are imported by copying the geometries and identifiers from a spatial data table that has a metadata record on geodata.