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-idto refer to the question by its identifier- one of the following operators:
has-answer: an answer is presentequals: equal todifferent: different fromgreater-than: greater thanlower-than: lower thangreater-than-or-equal: greater than or equal tolower-than-or-equal: lower than or equal tocontains: containsdoes-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:
- List referentials
They are used for selection questions (checkbox, drop-down list, …). They are imported from an Excel file.
- 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.