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 plus proche 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, notamment 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 avec 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 fractions. |
decimal | Quantité | |
range | Quantité | L'apparence de notation 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 | Geopoint | |
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 les fichiers 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 les vidéos. |
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 les XLSForms sont converties soit en champs de Sélection unique dans ActivityInfo, soit en Champ de référence, selon les 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 a des colonnes « attribut » supplémentaires, par exemple, comme celles utilisées pour créer des sélections en cascade dans XLSForm, alors 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 comme un 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 | Prise en charge |
---|---|---|
+, -, *, 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 par 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 respecte pas la colonne appearance 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.