Actions

Exemples d’enquêtes Expression Manager

From LimeSurvey Manual

Revision as of 16:06, 4 October 2023 by Maren.fritz (talk | contribs) (Created page with "==Aperçu==")


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 des phrases et des 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 êtes en surpoids. 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. Ils seront immédiatement avertis s’ils ont 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

This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation  "ask1==3").

This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.


Features Demonstrated

  1. Equation question type
  2. Randomization functions
  3. Conditional (if) function


Screenshots

This is Group0, which uses the Equation question type to select random values from 1 to 6 for each group (except the last group, which has only 4 questions).  Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.



This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.



Download

To download the above survey example, click here: Random questions within a group survey example.


Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)

  This applies only to all random questions from one group and only if the Group by group or All in one format is used.



Overview

This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.

The survey has one group containing 10 questions. All questions are assigned the same randomization group name. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "relevanceStatus" of all other questions in the group is less than the number of questions you want to show. Since relevanceStatus is assigned as questions are rendered, this effectively totals the number of preceding questions.

So, in our 5 out of 10 example, the equation for Q1 would be:

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

For Q2, it would be:

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

And so on...


Features Demonstrated

  1. relevanceStatus variable
  2. Randomizing


Download

To download the above example, click on the following link: Random 5 out of 10 survey example.

Rating User-Entered List of Products

Overview

The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.


EM Features Demonstrated

  1. Tailoring answers - when rating products, the labels come from the comment field of the preceding multiple choice question
  2. Tailoring scales - many advanced questions options, like scale headings, can also be tailored.


Screenshots

This image shows that even though only products 1,3, and 5 were selected, only those 3 are displayed (using the array_filter attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.



This image shows how the tailored answers are specified:



Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):



The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:



The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.



Download

To download the survey example from above, click on the following link: Rating user-entered list of products survey example.