Actions

Exemples d'enquêtes ExpressionScript

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript sample surveys and the translation is 100% complete.


Présentation

La meilleure façon d'apprendre à utiliser ExpressionScript est de jouer avec des exemples fonctionnels et de les modifier selon vos besoins.

Vous trouverez ci-dessous un ensemble d’échantillons d’enquêtes pour démontrer (et tester) comment l’EM peut être utilisé pour améliorer votre enquête. Ces enquêtes se trouvent dans le dossier /docs/demosurveys de la distribution.


Pertinence, adaptation et équations

Aperçu

L'exemple suivant calcule l'IMC (indice de masse corporelle) de chaque répondant. Voir ci-dessous les fonctionnalités démontrées dans cet exemple.

Fonctionnalités EM démontrées

  1. Pertinence - prise en charge d'une logique conditionnelle puissante ;
  2. Piping / Tailoring - offre la possibilité de canaliser ou d'adapter les réponses et les métadonnées des questions;
  3. Adaptation dynamique - notez que les rapports sont modifiés sur la page à mesure que vous répondez aux questions.
  4. Micro-Tailoring - personnalisation conditionnelle dans les phrases et les rapports à l'aide des instructions if()
  5. Equations - un nouveau type de question qui vous permet de faire des calculs et de stocker les résultats dans la base de données, même si le calcul est masqué
  6. Validation conditionnelle - validation les critères, tels que la valeur minimale admissible, peuvent être conditionnels, par exemple basés sur des équations.


Captures d'écran

Cet exemple calcule l'indice de masse corporelle, un calcul de votre poids et de votre taille pour déterminer si vous avez un poids insuffisant, un poids normal, un surpoids ou une obésité. Notez qu’au départ, vous ne voyez que les quatre questions obligatoires :



Une fois que vous avez saisi vos informations (et que vous avez choisi d'utiliser des unités métriques ou non métriques), vous voyez un rapport personnalisé qui résume ce que vous avez saisi, vous indiquant votre statut de poids :



Voici un autre exemple, utilisant des unités non métriques pour montrer comment le résultat change dynamiquement :



Il existe des Questions de type équation masquées au niveau interne qui convertissent les données en métriques (si nécessaire), stockant la taille métrique, le poids, l'IMC et l'état du poids dans la base de données sans avoir besoin de JavaScript personnalisé. .

Vous pouvez voir dans la série d’exemples suivante comment utiliser des fonctions mathématiques et autres dans des rapports personnalisés. Voici à quoi ressemble la page avant de saisir des données. Il existe une logique conditionnelle pour afficher les cellules vides si aucune donnée (ou non numérique) n'est saisie, plutôt que d'afficher « NaN » ou « Diviser par zéro ».



Au fur et à mesure que les nombres sont saisis, le rapport sur la page change pour afficher le calcul en cours d'exécution et son résultat.



Il existe de nombreux autres exemples dans cette enquête par sondage. Par exemple, la capture d'écran ci-dessous montre l'une des dizaines de façons de remplir la page de pertinence dynamique. Comme le note le texte d'aide, essayez différents âges, et surtout des combinaisons illogiques de réponses pour voir les messages amusants générés en bas. Notez également que si vous dites que vous avez plus d'un enfant, le message dira « J'espère que vous apprécierez jouer avec vos X enfants », plutôt que « J'espère que vous apprécierez jouer avec votre enfant ». Cela montre comment vous pouvez facilement micro-adapter des phrases pour les faire correspondre au sexe et/ou au nombre de vos sujets. Vous pouvez même facilement conjuguer des verbes et décliner des noms en fonction du genre et du nombre.



Télécharger

Pour accéder à l'échantillon de l'enquête, veuillez cliquer sur le lien suivant : LS3_em_tailoring.zip.

Exemple de recensement

Aperçu

Il s'agit d'un exemple de recensement qui demande combien de personnes composent votre foyer.

Il démontre comment la pertinence au niveau du groupe peut faciliter la mise en œuvre d'une « boucle » de questions. Après avoir créé le groupe pour la Personne 1, j'ai exporté le groupe. Depuis que j'ai utilisé des noms de variables qcode comme p1_name au lieu du code SGQA, j'ai pu utiliser un éditeur de texte pour modifier et réimporter rapidement le groupe plusieurs fois (par exemple, il a fallu environ 10 secondes pour modifier et réimporter chaque groupe répétitif, en garantissant que toutes les variables avaient des noms de variables uniques et que la logique au niveau du groupe était correcte).

Vous pouvez également utiliser la fonctionnalité copier la question, mais elle ne sera pas aussi rapide que l'option suggérée ci-dessus.

Cela montre également comment vous pouvez empêcher le message Terminé d'apparaître jusqu'à ce que l'enquête soit réellement terminée (par exemple, lorsque tous les groupes nécessaires sont terminés).


Fonctionnalités EM démontrées

  1. Pertinence au niveau du groupe - Les groupes de suivi (Personnes 1 à 5) ne s'affichent que pour le nombre de cohabitants spécifié ;
  2. Adaptation - Le rapport final résume les données démographiques de chaque cohabitant;
  3. Affichage progressif des questions - Que ce soit en mode groupe ou tout-en-un, les questions suivantes ne s'affichent que dès qu'on répond aux précédentes.


Captures d'écran

L'enquête génère un rapport personnalisé montrant les données démographiques du nombre spécifié de cohabitants :



Si vous passez en mode question par question, vous constatez que l'index adapte les questions. Puisque l'utilisateur a déclaré que la personne est une femme, il demande "Quel est son nom". Et puisque nous avons répondu « Marie », la question suivante dit « Quel âge a Marie » ?



Télécharger

Pour télécharger l'échantillon de l'enquête, cliquez ici : LS3_group_relevance.zip.


Filtres de tableau en cascade

Aperçu

Cette enquête est basée sur la conception d'une enquête gracieuseté de Joy Lane Research, LLC.


Captures d'écran

Dans ce qui suit, notez que :

  • Q02 affiche uniquement l'ensemble des produits vérifiés en Q01 (en utilisant array_filter)
  • Q02 affiche également "Un autre produit", le texte saisi dans le champ "Autre électronique" en Q01.
  • Q04 affiche uniquement les produits de Q02 qui ont été vérifiés (donc le filtre de tableau est en cascade)
  • Q05 affiche uniquement les produits de Q02 qui n'ont pas été vérifiés en Q02 (en utilisant un array_filter_exclude en cascade)




Télécharger

Cliquez sur le lien suivant pour télécharger l'exemple ci-dessus : Exemple d'enquête LS2_cascading_array_filter.


Tuyauterie/adaptation utilisant tous les types et attributs de questions

Aperçu

Si vous ne savez pas comment nommer vos variables (SGQA vs Qcodes), vous n'êtes pas seul. Bien que la documentation principale décrit comment composer les noms de variables Qcode, rien ne vaut de le voir dans une démo fonctionnelle. Cette enquête montre comment vous pouvez accéder aux attributs des questions et aux réponses à l'aide d'ExpressionScript.


Template:Remarque


Contenu

  • Exemples de chaque type de question 
  • Tous les types de questions pouvant utiliser « autre » sont inclus afin que vous puissiez voir comment cela affecte la dénomination des variables
  • Valeurs par défaut pour tous les types de questions qui acceptent les valeurs par défaut
  • Adaptation - Rapports sur page et hors page affichant les 16 suffixes de notation par points EM disponibles.
  • Ces rapports affichent toutes les données actuellement saisies (vous montrent donc comment vous pouvez générer vos propres rapports imprimables pour les utilisateurs au lieu de l'impression- écran des réponses) 
  • Nom Qcode et SGQA correct de toutes les variables


Captures d'écran

Il s’agit d’une vaste enquête, c’est pourquoi nous avons choisi de ne pas inclure de captures d’écran. Au lieu de cela, veuillez le télécharger et jouer avec.


Télécharger

Cliquez sur le lien suivant pour télécharger l'enquête : LS3_EM_question_attributes.lss

Validation traditionnelle, repensée

Aperçu

Cela montre tous les types de validation qui utilisent des expressions et comment ils affectent chacun des types de questions prenant en charge la validation. Dans de nombreux cas, les conseils de validation commencent masqués et n'apparaissent que si une question échoue aux critères de validation (disparaissant ainsi également une fois que la question satisfait aux critères de validation).


Types de validation démontrés

  1. min_num_value_n - valeur minimale pour une réponse
  2. max_num_value_n - valeur maximale pour une réponse
  3. min_answers - minimum nombre de réponses requis
  4. max_answers nombre maximum de réponses autorisé
  5. multiflexible_min - valeur minimale autorisée pour une réponse (pour le type de question à nombres multiflexi)
  6. multiflexible_max - valeur maximale autorisée pour une réponse (pour le type de question à nombres multiflexi)
  7. min_num_value - somme minimale autorisée pour toutes les réponses de la question
  8. max_num_value - somme maximale autorisée pour toutes les réponses à la question
  9. equals_num_value - la somme pour toutes les réponses à la question doit être égale à cette valeur #validation - il s'agit de la validation de l'expression régulière pour la question - elle peut s'appliquer à des cellules individuelles


Captures d'écran

Grâce aux nouveaux styles CSS, chaque type de validation affiche une astuce distincte. S'ils sont affichés, ils peuvent être masqués via l'option hide_tip. L'option par défaut est de les afficher en rouge si la question ne répond pas aux critères de validation, et en vert si elle les satisfait :



Un utilisateur ne peut pas soumettre une page contenant des erreurs de validation. Il sera immédiatement averti s’il a saisi des informations erronées :



La validation peut être appliquée à des cellules individuelles au sein d'un tableau, comme dans cet exemple où les validations d'expressions régulières garantissent que chaque entrée est un numéro de téléphone américain correctement formaté, y compris l'indicatif régional.



Télécharger

Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : LS3_Validation_tests.zip.


Équations de validation

Aperçu

Parfois, vous avez besoin d'une validation personnalisée qui ne peut pas être obtenue à l'aide des critères min/max traditionnels. Pour cela, vous devrez utiliser les options em_validation_q et em_validation_sq qui vous permettent de construire des équations de validation complexes au niveau de la question et de la sous-question, respectivement.


Template:Remarque


Fonctionnalités EM démontrées

  1. em_validation_q - c'est une équation qui détermine si toute la question est valide
  2. em_validation_q_tip - c'est le message à afficher si la question ne répond pas aux critères em_validation_q !
  3. em_validation_sq - c'est l'équation qui détermine si chaque sous-question (cellule du tableau) est valide
  4. em_validation_sq_tip - c'est le message à afficher le cas échéant des sous-questions est invalide.

En général, lorsque em_validation_sq est utilisé, si une cellule n'est pas valide, la couleur d'arrière-plan de cette cellule devient rouge pour indiquer qu'il y a une erreur.


Captures d'écran


Cette question garantit que vous saisissez les âges de vos enfants par ordre décroissant en appliquant cette équation de validation :

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





Dans l'exemple ci-dessous, la validation garantit que pas plus de 3 questions reçoivent une réponse sur une ligne donnée en appliquant cette équation de validation :

(somme(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (somme(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (somme(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) < = 3)

Vous pouvez également l'écrire comme suit, LimeSurvey le convertissant automatiquement au moment de l'exécution en l'expression répertoriée ci-dessus.

(somme(self.sq_A) <= 3) && (somme(self.sq_B) <= 3) && (somme(self.sq_C) <= 3)



Télécharger

Pour télécharger l'échantillon d'enquête utilisé dans les exemples ci-dessus, cliquez sur le lien suivant : ls2_test_em_sq_validation.lss.


Pertinence de la sous-question

Aperçu

Cela montre comment array_filter et les critères de validation peuvent interagir. Pour les validations qui s'appliquent aux sommes, seules les valeurs pertinentes (visibles) sont prises en compte.


Fonctionnalités EM démontrées

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_num_value

Il montre également un rapport dynamique du nombre de questions répondues dans les questions principales.


Captures d'écran

La modification du nombre de lignes visibles modifie dynamiquement la somme. Marquer une sous-question comme non pertinente n’efface pas sa valeur. Au contraire, si cela n’est pas pertinent, ses valeurs ne contribuent à aucune équation.



Notez ce qui se passe lorsque nous vérifions la "Cinquième sous-question" pour la première question "Quelles lignes doivent apparaître ci-dessous". Notez que la somme pour la deuxième question « Entrez quelques chiffres » est désormais de 5. Même si la sous-question 5 de cette question a toujours la valeur 14 (par exemple, si vous décochez la cinquième sous-question, vous verrez à nouveau la valeur 14) , cette valeur ne contribue pas à la somme puisqu'elle n'est actuellement pas pertinente. Toutes les données non pertinentes sont effacées (nullées dans la base de données) lors de la soumission, mais elles restent disponibles sur la page au cas où les utilisateurs voudraient ou auraient besoin de changer d'avis sur les réponses.



Télécharger

Pour télécharger notre exemple, cliquez ici : ls2_subquestion_relevance.lss.


Utiliser la virgule comme séparateur de base (point décimal)

Aperçu

L'ExpressionScript garantit que seuls des nombres valides peuvent être saisis dans les champs numériques. Si vous entrez un numéro invalide, vous serez averti que quelque chose ne va pas (par exemple, dans le cas du thème fruité, toute la question est "en rouge").

Notez que les valeurs numériques sont toujours converties en utilisant un point comme séparateur de base dans la base de données. De cette manière, les analyses statistiques fonctionneront de manière appropriée.

Pour modifier le séparateur de base, accédez aux options Text elements situées sous l'onglet Settings et recherchez la fonctionnalité decimal mark.


Template:Remarque


Types de questions utilisant le séparateur de base

  1. Saisie numérique [ N]
  2. Saisie numérique multiple [ K]
  3. Tableau (Nombres) [ :]
  4. Tableau (Textes) [ ;], lors de l'utilisation de l'attribut numbers_only 
  5. Liste (radio) [ L], lors de l'utilisation de l'attribut other_numbers_only 
  6. Texte libre court [ S], lors de l'utilisation de l'attribut numbers_only 
  7. Texte court multiple [ Q], lors de l'utilisation de l'attribut numbers_only 
  8. Choix multiple [ M], lors de l'utilisation de l'attribut other_numbers_only 
  9. Choix multiple avec commentaires [ P], lors de l'utilisation de l'attribut other_numbers_only


Captures d'écran

Vous remarquerez peut-être dans les captures d'écran ci-dessous que la virgule peut être utilisée comme séparateur de base.



Télécharger

Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : ls2_comma_as_radix_separator.lss.


Groupes de randomisation

Aperçu

Cette enquête montre comment utiliser l'attribut random_group.

Si cet attribut est utilisé, chaque fois que vous démarrez l'enquête, l'ordre des questions est aléatoire. Cependant, une fois l'enquête lancée, l'ordre de randomisation reste fixe, même si vous changez de langue.


Captures d'écran

Vérifions ensemble l'exemple ci-dessous. La première question aléatoire sur la page sera soit Q1, Q4 ou Q7. La deuxième question aléatoire sur la page sera soit Q2, Q5 ou Q8.



Voici la randomisation générée la première fois que j'ai testé cette enquête.



Une randomisation différente a été générée la deuxième fois que j'ai testé l'enquête.



Mais lorsque je suis passé au français (sans recommencer l'enquête), l'ordre de randomisation est resté intact.



Télécharger

Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : Randomization_Group_Test.lss


Poser au hasard une question par groupe

Aperçu

Cette enquête montre comment configurer une enquête pour afficher de manière aléatoire une question par groupe. Il contient 5 groupes de 6 questions chacun. Au départ, dans le groupe 0, cinq questions d'équation cachée, appelées request1-ask5, sont remplies. Chacune a la valeur de {floor(rand(1,6.9999))} dans le champ de texte de la question, ce qui signifie que les variables request1-ask5 auront chacune une valeur comprise entre 1 et 6. Ensuite, chaque question du groupe a un équation de pertinence comme "ask1==N" où N est la Nième question du groupe (donc la troisième question du groupe 1 a l'équation de pertinence "ask1==3").

Cette enquête fonctionne aussi bien en mode enquête à la fois, groupe par groupe et question par question. Puisque la randomisation est définie dans le premier groupe et que ce groupe est effectivement masqué (puisque toutes les questions poser1 à poser5 sont masquées), la randomisation reste la même pour le sujet ; mais chaque sujet différent aura une randomisation distincte.


Fonctionnalités démontrées

  1. Type de question équation
  2. Fonctions de randomisation
  3. Fonction conditionnelle (si)


Captures d'écran

Il s'agit du Groupe0, qui utilise le Type de question Équation pour sélectionner des valeurs aléatoires de 1 à 6 pour chaque groupe (sauf le dernier groupe, qui ne comporte que 4 questions). Notez que la fonction "if()" vérifie d'abord si Ask1 a déjà été défini et, si c'est le cas, utilise cette valeur. Si la valeur n'a pas été définie, il utilise une valeur aléatoire pour définir la valeur de Ask1.



Ce groupe montre comment la variable (ask4) du groupe 0 est utilisée pour contrôler quelle question est visible dans le quatrième groupe.



Télécharger

Pour télécharger l'exemple d'enquête ci-dessus, cliquez ici : Questions aléatoires dans un exemple d'enquête de groupe.


Poser au hasard un nombre spécifique de questions dans un groupe (un sous-ensemble de questions)

Template:Alerte


Aperçu

Cette enquête montre comment poser un sous-ensemble aléatoire de questions dans un groupe. Par exemple, affichez 5 questions aléatoires sur 10 questions situées au sein d'un groupe.

L'enquête comporte un groupe contenant 10 questions. Toutes les questions reçoivent le même nom du groupe de randomisation. En conséquence, ils seront affichés dans un ordre aléatoire au chargement de la page. Chaque question reçoit une équation de pertinence selon laquelle la somme de "relevanceStatus" de toutes les autres questions du groupe est inférieure au nombre de questions que vous souhaitez afficher. Étant donné que relevanceStatus est attribué au fur et à mesure que les questions sont rendues, cela totalise effectivement le nombre de questions précédentes.

Ainsi, dans notre exemple 5 sur 10, l’équation pour Q1 serait :

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Pour le T2, ce serait :

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Et ainsi de suite...


Fonctionnalités démontrées

  1. Variable relevanceStatus
  2. Randomisation

Télécharger

Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : Exemple d'enquête aléatoire 5 sur 10.

Évaluation de la liste des produits saisie par l'utilisateur

Aperçu

L'exemple ci-dessous montre comment vous pouvez demander aux utilisateurs de répertorier un ensemble de produits qui les intéressent, puis leur demander d'évaluer ces produits.


Fonctionnalités ES démontrées

  1. Adapter les réponses - lors de l'évaluation des produits, les étiquettes proviennent du champ de commentaire de la question à choix multiple précédente
  2. Adapter les échelles - de nombreuses options de questions avancées, comme les titres d'échelle, peuvent également être adapté.


Captures d'écran

Cette image montre que puisque seuls les produits 1, 3 et 5 ont été sélectionnés, seuls ces 3 sont affichés (à l'aide de l'attribut array_filter). De plus, les étiquettes de ligne de la deuxième question sont soit les numéros de produits (si rien n'est saisi dans le champ de commentaire), soit le contenu des champs de commentaire.



Cette image montre comment les réponses personnalisées sont spécifiées :



Voici le fichier Show Logic pour cette question, qui nous permet de vérifier que la logique conditionnelle fonctionne comme souhaité (par exemple, pour voir s'il y a des erreurs de syntaxe) :



L'image suivante montre un groupe dans lequel vous spécifiez une échelle d'évaluation sur 5 points (options 1 à 5), le titre de l'échelle et les produits que vous souhaitez évaluer. La dernière question montre que chacune des parties de la question matricielle peut être adaptée :



L'image suivante montre la vue du fichier logique de la dernière question. Comme vous pouvez le constater, les sous-questions, les réponses et les en-têtes d'échelle peuvent être personnalisés.


Télécharger

Pour télécharger l'exemple d'enquête ci-dessus, cliquez sur le lien suivant : Exemple d'enquête sur la liste de produits saisie par l'utilisateur.