XLSForm est une norme largement utilisée pour définir les questionnaires de collecte de données mobiles. ActivityInfo utilise un modèle de données qui se rapproche de celui d'une base de données relationnelle, ce qui entraîne des différences importantes entre un formulaire XLSForm et un formulaire ActivityInfo, en particulier en ce qui concerne les questions de Sélection complexes et les groupes répétitifs.
Les formulaires qui contiennent des fonctionnalités non prises en charge peuvent être importés avec succès dans ActivityInfo, mais les questions et les formules contenant des fonctionnalités non prises en charge sont omises.
Types de questions pris en charge
Type de question | Type de champ ActivityInfo | Limitations |
---|---|---|
integer | Quantité | ActivityInfo autorise la saisie de nombres fractionnaires. |
decimal | Quantité | |
range | Quantité | L'apparence de l'évaluation n'est pas prise en charge. |
select_one | Sélection unique ou Champ de référence |
|
select_multiple | Sélection multiple | Limité à 100 éléments. L'ajout de or_other n'est pas pris en charge. |
select_one_from_file | Non pris en charge. | |
select_multiple_from_file | Non pris en charge. | |
rank | Non pris en charge | |
note | Non pris en charge | |
geopoint | Géopoint | |
geotrace | Non pris en charge | |
geoshape | Non pris en charge | |
date | Date | |
time | Non pris en charge | |
dateTime | Non pris en charge | |
image | Pièce jointe | ActivityInfo autorise tout type de fichier, pas seulement les images. |
audio | Pièce jointe | ActivityInfo autorise tout type de fichier, pas seulement l'audio. Le paramètre de qualité audio n'est pas pris en charge. |
background-audio | Non pris en charge | |
video | Pièce jointe | ActivityInfo autorise tout type de fichier, pas seulement la vidéo. |
file | Pièce jointe | |
barcode | Non pris en charge | |
calculate | Calcul | |
acknowledge | Sélection unique | |
hidden | Texte, avec "Masquer dans la saisie de données" | |
xml-external | Non pris en charge | |
metadata (start, end, today, deviceid, phonenumber, username, email, audit) | Non pris en charge. Notez qu'ActivityInfo enregistre des informations sur qui a modifié quoi pour tous les formulaires. |
Questions de Sélection
Les questions "select_one" dans XLSForms sont soit converties en champs de Sélection unique dans ActivityInfo, soit en Champ de référence, en fonction des critères suivants :
- S'il y a plus de 100 choix, le champ est converti en champ de référence.
- Si la liste de choix comporte des colonnes d'"attributs" supplémentaires, par exemple, celles utilisées pour créer des sélections en cascade dans XLSForm, toute question qui utilise cette liste de choix devient un champ de référence dans ActivityInfo. De plus, la liste de choix est importée en tant que formulaire distinct, avec un champ pour chaque attribut de choix.
- Si la liste de choix est référencée par d'autres choice_filters, elle devient un nouveau formulaire ActivityInfo, qui est référencé par d'autres listes de choix.
Opérateur / Fonction | Explication | Support |
---|---|---|
+, -, *, div | Arithmétique de base | Entièrement pris en charge |
=, != | Égalité | Entièrement pris en charge |
+, -, *, div | Arithmétique de base | Entièrement pris en charge |
=, != | Égalité | Entièrement pris en charge |
>, <, >=, <, <= | Comparaison | Entièrement pris en charge |
and, or | Opérateurs booléens | Entièrement pris en charge |
. | Valeur de la question actuelle | Entièrement pris en charge |
.. | Groupe parent de la question actuelle | Sera pris en charge à l'avenir. |
if | Entièrement pris en charge | |
position() | Non pris en charge. Les enregistrements dans ActivityInfo ne sont pas ordonnés. | |
once() | Non pris en charge. | |
selected() | Pris en charge. | |
selected-at() | Non pris en charge | |
count-selected() | Sera pris en charge à l'avenir. | |
jr:choice-name() | Non pris en charge | |
indexed-repeat | Non pris en charge | |
count() | Sera pris en charge à l'avenir. | |
count-non-empty() | Sera pris en charge à l'avenir. | |
sum() | Sera pris en charge à l'avenir. | |
max() | Sera pris en charge à l'avenir. | |
min() | Sera pris en charge à l'avenir. | |
regex() | Traduit en MATCHREGEX() | |
contains() | Sera pris en charge à l'avenir. | |
starts-with() | Sera pris en charge à l'avenir. | |
ends-with() | Sera pris en charge à l'avenir. | |
substr() | Sera pris en charge à l'avenir. | |
substring-before() | ||
substring-after() | Sera pris en charge à l'avenir. | |
translate() | Sera pris en charge à l'avenir. | |
string-length() | Sera pris en charge à l'avenir. | |
normalize-space() | Sera pris en charge à l'avenir. | |
concat() | Sera pris en charge à l'avenir. | |
join() | Sera pris en charge à l'avenir. | |
boolean-from-string() | Sera pris en charge à l'avenir. | |
string() | Sera pris en charge à l'avenir. | |
round() | Sera pris en charge à l'avenir. | |
int() | Sera pris en charge à l'avenir. | |
number() | Sera pris en charge à l'avenir. | |
digest() | Non pris en charge | |
pow() | Sera pris en charge à l'avenir. | |
log() | Sera pris en charge à l'avenir. | |
log10() | Sera pris en charge à l'avenir. | |
abs() | Sera pris en charge à l'avenir. | |
sin() | Sera pris en charge à l'avenir. | |
cos() | Sera pris en charge à l'avenir. | |
tan() | Sera pris en charge à l'avenir. | |
asin() | Sera pris en charge à l'avenir. | |
acos() | Sera pris en charge à l'avenir. | |
atan() | Sera pris en charge à l'avenir. | |
atan2() | Sera pris en charge à l'avenir. | |
sqrt() | Sera pris en charge à l'avenir. | |
exp() | Sera pris en charge à l'avenir. | |
exp10() | Sera pris en charge à l'avenir. | |
pi() | Sera pris en charge à l'avenir. | |
today() | Pris en charge | |
now() | Sera pris en charge à l'avenir. | |
decimal-date-time() | Non pris en charge | |
date() | Partiellement pris en charge. Prend en charge la syntaxe DATE("2020-01-01") |
|
decimal-time() | Non pris en charge | |
format-date() | Sera pris en charge à l'avenir. | |
format-date-time() | Sera pris en charge à l'avenir. | |
area() | Non pris en charge | |
distance() | Non pris en charge | |
random() | Non pris en charge | |
randomize() | Non pris en charge | |
uuid() | Non pris en charge | |
boolean() | Sera pris en charge à l'avenir. | |
not(x) | Pris en charge. not(x) devient !x dans ActivityInfo | |
coalesce() | Pris en charge | |
checklist() | Non pris en charge | |
weighted-checklist() | Non pris en charge | |
true() | Pris en charge. Devient "TRUE" dans ActivityInfo |
|
false() | Pris en charge. Devient "FALSE" dans ActivityInfo |
Autres limitations
- Dans la plupart des cas, ActivityInfo ne tient pas compte de la colonne apparence des questions.
- ActivityInfo ne prend pas en charge les valeurs par défaut.
- ActivityInfo ne prend pas en charge les déclencheurs.
- ActivityInfo prend en charge les contraintes, mais pas les messages de contrainte personnalisés.