x

Principaux chapitres

  1. LimeSurvey Cloud ou LimeSurvey CE
  2. LimeSurvey Cloud - Guide de démarrage rapide
  3. LimeSurvey CE - Installation
  4. Comment concevoir une bonne enquête (Guide)
  5. Commencer
  6. Configuration de LimeSurvey
  7. Introduction - Enquêtes
  8. Afficher les paramètres de l'enquête
  9. Afficher le menu de l'enquête
  10. Afficher la structure de l'enquête
  11. Présentation - Questions
  12. Introduction - Groupes de questions
  13. Introduction - Enquêtes - Gestion
  14. Options de la barre d'outils de l'enquête
  15. Enquête multilingue
  16. Guide de démarrage rapide - ExpressionScript
  17. Fonctionnalités avancées
  18. FAQ générale
  19. Dépannage
  20. Solutions de contournement
  21. Licence
  22. Journal des changements de version
  23. Plugins - Avancé
 Actions

ExpressionScript sample surveys/fr: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Exemples d'enquêtes ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Pour télécharger l'exemple d'enquête ci-dessus, cliquez sur le lien suivant : Media:Rating_User-Entered_List_of_Products_Survey.zip|Exemple d'enquête sur la liste de pr..."
 
(112 intermediate revisions by the same user not shown)
Line 4: Line 4:




=Introduction=
=Présentation=




The best way to learn how to use the ExpressionScript is to play with working examples and modify them to your needs.
La meilleure façon d'apprendre à utiliser ExpressionScript est de jouer avec des exemples fonctionnels et de les modifier selon vos besoins.


You may find below a set of sample surveys to demonstrate (and test) how the EM can be used to enhance your survey. These surveys can be found in the distribution's /docs/demosurveys folder.  
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.  




=Relevance, Tailoring and Equations=
=Pertinence, adaptation et équations=




==Overview==
==Aperçu==




The following example computes the BMI (Body Mass Index) of each respondent. See below the features that are demonstrated within this example.
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.


==EM Features Demonstrated==
==Fonctionnalités EM démontrées==
   
   


#'''Relevance''' - support for powerful conditional logic;
#'''Pertinence''' - prise en charge d'une logique conditionnelle puissante ;
#'''Piping / Tailoring''' - offers the ability to pipe or tailor answers and question metadata;
#'''Piping / Tailoring''' - offre la possibilité de canaliser ou d'adapter les réponses et les métadonnées des questions;
#'''Dynamic Tailoring''' - note that reports are changed on the page as you answer questions.
#'''Adaptation dynamique ''' - notez que les rapports sont modifiés sur la page à mesure que vous répondez aux questions.
#'''Micro-Tailoring''' - conditional tailoring within sentences and reports using if() statements
#'''Micro-Tailoring''' - personnalisation conditionnelle dans les phrases et les rapports à l'aide des instructions if()  
#'''Equations''' - a new [[Question type - Equation|question type]] that lets you do calculations and store the results in the database, even if the calculation is hidden
#'''Equations ''' - un nouveau [[Type de question - Équation|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é
#'''Conditional Validation''' - validation criteria, such as the minimum allowable value, can be conditional - e.g., based upon equations.
#'''Validation conditionnelle''' - validation les critères, tels que la valeur minimale admissible, peuvent être conditionnels, par exemple basés sur des équations.




==Screenshots==
==Captures d'écran==




This example computes the Body Mass Index, a calculation of your weight and height to determine whether you are underweight, normal weight, overweight, or obese. Note that initially, all you see are the four mandatory questions:
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 :




Line 40: Line 40:




Once you enter your information (and you get to choose whether to use metric or non-metric units), you see a tailored report that summarizes what you entered, telling you your weight status:
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 :




Line 46: Line 46:




Here is a different example, using non-metric units to show how the result changes dynamically:  
Voici un autre exemple, utilisant des unités non métriques pour montrer comment le résultat change dynamiquement :  




Line 52: Line 52:




There are hidden [[Question type - Equation|Equation-type questions]] at the internal level that converts the data to metric (if needed), storing the metric height, weight, BMI, and weight status in the database without needing custom JavaScript.
Il existe des [[Type de question - Équation|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é. .


You can see in the next set of examples how you can use mathematical and other functions within tailored reports. This is how the page looks like before you enter any data. There is conditional logic to show blank cells if no (or non-numeric) data is entered, rather than showing "NaN" or "Divide by Zero".
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 ».




Line 60: Line 60:




As numbers are entered, the on-page report changes to show the computation being performed, and its result.
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.




Line 66: Line 66:




There are many other examples in this sample survey. For example, the below screenshot shows one of the dozens of ways you can fill out the Dynamic Relevance page. As the help text notes, try different ages, and especially illogical combinations of responses to see the amusing messages generated at the bottom. Also note that if you say that you have more than one child, the message will say "I hope you enjoy playing with your X children", rather than saying "I hope you enjoy playing with your child". This shows how you can easily micro-tailor sentences to make them match the gender and/or number of your subjects. You can even easily conjugate verbs and decline nouns based upon gender and number.
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.




Line 72: Line 72:




==Download==
==Télécharger==




To access the survey sample, please click on the following link: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].
Pour accéder à l'échantillon de l'enquête, veuillez cliquer sur le lien suivant : [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].


=Sample Census=
=Exemple de recensement=




==Overview==
==Aperçu==




This is a census example that asks how many people are in your household.
Il s'agit d'un exemple de recensement qui demande combien de personnes composent votre foyer.


It demonstrates how group-level relevance can make it easier to implement a "loop" of questions. After creating the group for Person 1, I exported the group. Since I used qcode variable names like p1_name instead of the SGQA code, I could use a text editor to quickly edit and re-import the group several times (e.g., it took about 10 seconds to edit and re-import each repeating group, ensuring that all variables had unique variables names and that the group-level logic was correct).
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).


You can also the [[Copy question|copy question]] feature, but it won't be as fast as the option suggested above.
Vous pouvez également utiliser la fonctionnalité [[Copier la question|copier la question]], mais elle ne sera pas aussi rapide que l'option suggérée ci-dessus.


This also shows how you can prevent the Finished message from appearing until the survey is truly finished (e.g., when all needed groups are completed).
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).




==EM Features Demonstrated==
==Fonctionnalités EM démontrées==




#'''Group-level relevance''' - The follow-up groups (Person 1-5) only show for up to the number of cohabitants specified;
#'''Pertinence au niveau du groupe''' - Les groupes de suivi (Personnes 1 à 5) ne s'affichent que pour le nombre de cohabitants spécifié ;
#'''Tailoring''' - The final report summarizes the demographic data for each cohabitant;
#'''Adaptation''' - Le rapport final résume les données démographiques de chaque cohabitant;
#'''Progressive question display''' - Whether in group or all-in-one mode, subsequent questions only show as soon as the preceding ones are answered.
#'''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.




==Screenshots==
==Captures d'écran==




The survey generates a tailored report showing the demographics of the specified number of cohabitants:
L'enquête génère un rapport personnalisé montrant les données démographiques du nombre spécifié de cohabitants :




Line 109: Line 109:




If you switch to question-at-a-time mode, you see that the index tailors the questions. Since the user said that the person is a woman, it asks "What is her name". And since we answered "Mary", the next question says "How old is Mary"?
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 » ?




Line 115: Line 115:




==Download==
==Télécharger==




To download the survey sample, click here: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].
Pour télécharger l'échantillon de l'enquête, cliquez ici : [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].




=Cascading Array Filters=
=Filtres de tableau en cascade=




==Overview==
==Aperçu==




This survey is based on the design of a survey courtesy of Joy Lane Research, LLC.  
Cette enquête est basée sur la conception d'une enquête gracieuseté de Joy Lane Research, LLC.  




==Screenshots==
==Captures d'écran==




In the following, note that:
Dans ce qui suit, notez que :
*Q02 only shows the set of products checked in Q01 (by using array_filter)
*Q02 affiche uniquement l'ensemble des produits vérifiés en Q01 (en utilisant array_filter)
*Q02 also shows "Another product", the text entered into the "Other electronic" field in Q01
*Q02 affiche également "Un autre produit", le texte saisi dans le champ "Autre électronique" en Q01.
*Q04 only shows products from Q02 that were checked (so the array filter cascades)
*Q04 affiche uniquement les produits de Q02 qui ont été vérifiés (donc le filtre de tableau est en cascade)  
*Q05 only shows products from Q02 that were not checked in Q02 (using a cascaded array_filter_exclude)
*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)




Line 146: Line 146:




==Download==
==Télécharger==




Click on the following link to download the above example: [[Media:ls2_cascading_array_filter.lss|LS2_cascading_array_filter survey example]].
Cliquez sur le lien suivant pour télécharger l'exemple ci-dessus : [[Media:ls2_cascading_array_filter.lss|Exemple d'enquête LS2_cascading_array_filter]].




=Piping/Tailoring Using All Question Types and Attributes=
= Tuyauterie/adaptation utilisant tous les types et attributs de questions =




==Overview==
==Aperçu==




If you are confused about how to name your variables (SGQA vs Qcodes), you are not alone. Although the main documentation describes [[ExpressionScript - Presentation#Access to Variables|how to compose Qcode variable names]], nothing beats seeing it in a working demo. This survey shows how you can access question attributes and responses using the ExpressionScript.
Si vous ne savez pas comment nommer vos variables (SGQA vs Qcodes), vous n'êtes pas seul. Bien que la documentation principale décrit [[ExpressionScript - Présentation#Accès aux variables|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.




{{Note|For this example, we recommend turning off the built-in HTML editor (or converting it to the pop-up mode) when editing this survey. It can take a minute or more for the HTML editor to render the large HTML reports in edit mode.}}
{{Remarque|Pour cet exemple, nous vous recommandons de désactiver l'éditeur HTML intégré (ou de le convertir en mode contextuel) lors de la modification de cette enquête. L'éditeur HTML peut prendre une minute ou plus pour afficher les rapports HTML volumineux en mode édition.}}




==Content==
==Contenu==




*Examples of every question type
*Exemples de chaque type de question 
*All questions types that can use "other" are included so that you can see how that affects variable naming
*Tous les types de questions pouvant utiliser « autre » sont inclus afin que vous puissiez voir comment cela affecte la dénomination des variables
*Default values for all the question types that accepts defaults
*Valeurs par défaut pour tous les types de questions qui acceptent les valeurs par défaut
*Tailoring - On- and off-page reports showing all 16 available EM dot notation suffixes.
*Adaptation - Rapports sur page et hors page affichant les 16 suffixes de notation par points EM disponibles.
*These reports show all of the currently entered data (so show you how you could generate your own printable reports for users in lieu of the print-answers screen)
*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) 
*Proper Qcode and SGQA naming of all variables
*Nom Qcode et SGQA correct de toutes les variables




==Screenshots==
==Captures d'écran==




This is a huge survey, so we chose not to include screen shots. Instead, please download and play with it.
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.




==Download==
==Télécharger==




Click on the following link to download the survey: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]
Cliquez sur le lien suivant pour télécharger l'enquête : [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]


=Traditional validation, re-envisioned=
=Validation traditionnelle, repensée=




==Overview==
==Aperçu==




This demonstrates all the validation types that make use of expressions and how they affect each of the question types that support validation. In many cases, the validation tips start hidden and only appear if a question fails validation criteria (thus also disappearing once the question passes the validation criteria).  
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).  




==Validation Types Demonstrated==
==Types de validation démontrés==




#[[QS:Min_num_value_n|min_num_value_n]] - minimum value for an answer
#[[QS:Min_num_value_n|min_num_value_n]] - valeur minimale pour une réponse
#[[QS:Max_num_value_n|max_num_value_n]] - max value for an answer
#[[QS:Max_num_value_n|max_num_value_n]] - valeur maximale pour une réponse
#[[QS:Min_answers|min_answers]] - minimum number of answers required
#[[QS:Min_answers|min_answers]] - minimum nombre de réponses requis
#[[QS:Max_answers|max_answers]] maximum number of answers allowed
#[[QS:Max_answers|max_answers]] nombre maximum de réponses autorisé
#[[QS:Multiflexible_min|multiflexible_min]] - minimum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_min|multiflexible_min]] - valeur minimale autorisée pour une réponse (pour le type de question à nombres multiflexi)
#[[QS:Multiflexible_max|multiflexible_max]] - maximum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_max|multiflexible_max]] - valeur maximale autorisée pour une réponse (pour le type de question à nombres multiflexi)
#[[QS:Min_num_value|min_num_value]] - minimum allowed sum across all answers for the question
#[[QS:Min_num_value|min_num_value]] - somme minimale autorisée pour toutes les réponses de la question
#[[QS:Max_num_value|max_num_value]] - maximum allowed sum across all answers for the question
#[[QS:Max_num_value|max_num_value]] - somme maximale autorisée pour toutes les réponses à la question  
#[[QS:Equals_num_value|equals_num_value]] - the sum across all answers for the question must equal this value
#[[QS:Equals_num_value|equals_num_value]] - la somme pour toutes les réponses à la question doit être égale à cette valeur #[[QS:Preg_validation|validation]] - il s'agit de la validation de l'expression régulière pour la question - elle peut s'appliquer à des cellules individuelles
#[[QS:Preg_validation|validation]] - this is the regular expression validation for the question - it can apply to individual cells




==Screenshots==
==Captures d'écran==




Using new CSS styles, each validation type shows up a separate tip. If they are shown, they can be hidden via the hide_tip option. The default option is to show them with red font if the question fails the validation criteria, and green if it passes them:
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 :




Line 219: Line 218:




A user cannot submit a page with validation errors. He will be immediately warned if he entered wrong information:
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 :




Line 225: Line 224:




Validation can be applied to individual cells within an array, such as in this example where regular expression validations ensure that each entry is a properly formatted US phone number including area code.
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.




Line 231: Line 230:




==Download==
==Télécharger==




To download the above example, click on the following link: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].
Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].




=Validation Equations=
=Équations de validation=




==Overview==
==Aperçu==




Sometimes you need custom validation that cannot be achieved using the traditional min/max criteria. For this, you will need to use the em_validation_q and em_validation_sq options which let you construct complex validation equations at the question and subquestion level, respectively.  
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.  




{{Note|At the subquestion level, we also introduce the "this" variable to make it easy to validate each cell in an array without needing to know its variable name. For more details about it, click here.}}
{{Remarque|Au niveau de la sous-question, nous introduisons également la variable "this" pour faciliter la validation de chaque cellule d'un tableau sans avoir besoin de connaître son nom de variable. Pour plus de détails à ce sujet, cliquez ici.}}




==EM Features Demonstrated==
==Fonctionnalités EM démontrées==




#[[QS:Em_validation_q|em_validation_q]] - this is an equation that determines whether the whole question is valid
#[[QS:Em_validation_q|em_validation_q]] - c'est une équation qui détermine si toute la question est valide
#[[QS:Em_validation_q_tip|em_validation_q_tip]] - this is the message to show if the question fails em_validation_q criteria
#[[QS:Em_validation_q_tip|em_validation_q_tip]] - c'est le message à afficher si la question ne répond pas aux critères em_validation_q !
#[[QS:Em_validation_sq|em_validation_sq]] - this is the equation that determines whether each subquestion (array cell) is valid
#[[QS:Em_validation_sq|em_validation_sq]] - c'est l'équation qui détermine si chaque sous-question (cellule du tableau) est valide
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] - this is the message to show if any of the subquestions is invalid.
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] - c'est le message à afficher le cas échéant des sous-questions est invalide.


In general, when em_validation_sq is used, if any cell is invalid, the background color for that cell turns red to indicate that there is an error.
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.




==Screenshots==
==Captures d'écran==




Line 266: Line 265:




This question ensures that you enter the ages of your children in descending order by applying this validation equation:
Cette question garantit que vous saisissez les âges de vos enfants par ordre décroissant en appliquant cette équation de validation :


<syntaxhighlight lang="php">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>
<syntaxhighlight lang="php">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>
Line 277: Line 276:




In the below example, the validation ensures that no more than 3 questions are answered on any given row by applying this validation equation:
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 :


<syntaxhighlight lang="php">(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(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)</syntaxhighlight>


You can also write this as follows, LimeSurvey automatically converting it at run-time to the above-listed expression.
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.


<syntaxhighlight lang="php">(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(somme(self.sq_A) <= 3) && (somme(self.sq_B) <= 3) && (somme(self.sq_C) <= 3)</syntaxhighlight>




Line 289: Line 288:




==Download==
==Télécharger==




To download the survey sample used in the above examples, click on the following link: [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].
Pour télécharger l'échantillon d'enquête utilisé dans les exemples ci-dessus, cliquez sur le lien suivant : [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].




=Subquestion relevance=
=Pertinence de la sous-question=




==Overview==
==Aperçu==




This shows how array_filter and validation criteria can interact. For validations that apply to sums, only relevant (visible) values are considered.
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.




==EM Features Demonstrated==
==Fonctionnalités EM démontrées==




#[[QS:Array_filter|array_filter]]
#[[QS:Array_filter|array_filter]]
#[[QS:Array filter exclude|array_filter_exclude]]
#[[QS:Array filterexclude|array_filter_exclude]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Max num value|max_num_value]]
#[[QS:Max num value| max_num_value]]
#[[QS:equals_num_value|equals_num_value]]
#[[QS:equals_num_value|equals_num_value]]


It also shows dynamic reporting of the numbers of questions answered in the core questions.
Il montre également un rapport dynamique du nombre de questions répondues dans les questions principales.




==Screenshots==
==Captures d'écran==




Changing the number of visible rows dynamically changes the sum. Marking a subquestion as being irrelevant doesn't clear its value. Rather, if it is irrelevant, its values don't contribute to any equation.
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.




Line 325: Line 324:




Note what happens when we check the "Fifth subquestion" for the first question '''"Which rows should appear below"'''. Note that the sum for the second "Enter some numbers" question is now 5. Even though subquestion 5 for that question still has the value 14 (e.g., if you un-check the fifth subquestion, you will see the value of 14 again), that value does not contribute to the sum since it is currently irrelevant. All irrelevant data is cleared (NULLed in the database) on submit, but it stays available on the page in case users want or need to change their minds about answers.
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.




Line 331: Line 330:




==Download==
==Télécharger==




To download our example, click here: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].
Pour télécharger notre exemple, cliquez ici : [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].




=Using Comma as Radix Separator (Decimal Point)=
=Utiliser la virgule comme séparateur de base (point décimal)=




==Overview==
==Aperçu==




The ExpressionScript ensures that only valid numbers can be entered into numeric fields. If you enter an invalid number, you will be warned that something is wrong (e.g., in the case of the fruity theme, the whole question is "red-ed").
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").


Note that the numeric values are always converted to using a period as the radix separator within the database. In this way, the statistical analyses will work appropriately.
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.


To change the radix separator, access the [[Text elements]] options located under the [[Survey_settings|Settings]] tab, and look for the [[Text_elements#Survey_text_elements_panel|decimal mark]] functionality.   
Pour modifier le séparateur de base, accédez aux options [[Text elements]] situées sous l'onglet [[Survey_settings|Settings]] et recherchez la fonctionnalité [[Text_elements#Survey_text_elements_panel|decimal mark]].   




{{Note|For more information on what a radix separator is, click [https://en.wikipedia.org/wiki/Radix_point|here].}}
{{Remarque|Pour plus d'informations sur ce qu'est un séparateur de base, cliquez sur [https://en.wikipedia.org/wiki/Radix_point|here].}}




==Question Types Using Radix Separator==
==Types de questions utilisant le séparateur de base==




#[[Question type - Numerical input|Numerical input]] <nowiki>[</nowiki>N]
#[[Type de question - Saisie numérique|Saisie numérique]]<nowiki> [</nowiki> N]
#[[Question type - Multiple numerical input|Multiple numerical input]] <nowiki>[</nowiki>K]
#[[Type de question - Saisie numérique multiple|Saisie numérique multiple]]<nowiki> [</nowiki> K]
#[[Question type - Array (Numbers)|Array (Numbers)]] <nowiki>[</nowiki>:]
#[[Type de question - Tableau (Nombres)|Tableau (Nombres)]]<nowiki> [</nowiki> :]
#[[Question type - Array (Texts)|Array (Texts)]] <nowiki>[</nowiki>;], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Type de question - Tableau (Textes)|Tableau (Textes)]]<nowiki> [</nowiki> ;], lors de l'utilisation de l'attribut [[QS:Numbers_only|numbers_only]] 
#[[Question type - List (Radio)|List (radio)]] <nowiki>[</nowiki>L], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Type de question - Liste (Radio)|Liste (radio)]]<nowiki> [</nowiki> L], lors de l'utilisation de l'attribut [[QS:Other_numbers_only|other_numbers_only]] 
#[[Question type - Short free text|Short free text]] <nowiki>[</nowiki>S], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Type de question - Texte libre court|Texte libre court]]<nowiki> [</nowiki> S], lors de l'utilisation de l'attribut [[QS:Numbers_only|numbers_only]] 
#[[Question type - Multiple short text|Multiple short text]] <nowiki>[</nowiki>Q], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Type de question - Texte court multiple|Texte court multiple]]<nowiki> [</nowiki> Q], lors de l'utilisation de l'attribut [[QS:Numbers_only|numbers_only]] 
#[[Question type - Multiple choice|Multiple choice]] <nowiki>[</nowiki>M], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Type de question - Choix multiple|Choix multiple]]<nowiki> [</nowiki> M], lors de l'utilisation de l'attribut [[QS:Other_numbers_only|other_numbers_only]] 
#[[Question type - Multiple choice with comments|Multiple choice with comments]] <nowiki>[</nowiki>P], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Type de question - Choix multiple avec commentaires|Choix multiple avec commentaires]]<nowiki> [</nowiki> P], lors de l'utilisation de l'attribut [[QS:Other_numbers_only|other_numbers_only]]




==Screenshots==
==Captures d'écran==




You may note in the below screenshots that comma can be used as a radix separator.
Vous remarquerez peut-être dans les captures d'écran ci-dessous que la virgule peut être utilisée comme séparateur de base.




Line 376: Line 375:




==Download==
==Télécharger==




To download the above example, click on the following link: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].
Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].




=Randomization Groups=
=Groupes de randomisation=




==Overview==
==Aperçu==




This survey demonstrates how to make use of the '''random_group''' attribute.
Cette enquête montre comment utiliser l'attribut '''random_group'''.


If this attribute is used, each time you start the survey, the question order is randomized. However, once the survey is started, the randomization order remains fixed, even if you change languages.
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.




==Screenshots==
==Captures d'écran==




Let's check together the below example. The first random question on the page will either be Q1 , Q4, or Q7. The second randomized question on the page will either be Q2, Q5, or Q8.
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.




Line 403: Line 402:




Here is the randomization generated the first time I tested this survey.
Voici la randomisation générée la première fois que j'ai testé cette enquête.




Line 409: Line 408:




A different randomization was generated the second time I tested the survey.
Une randomisation différente a été générée la deuxième fois que j'ai testé l'enquête.




Line 415: Line 414:




But, when I switched to French (without re-starting the survey), the randomization order remained intact.
Mais lorsque je suis passé au français (sans recommencer l'enquête), l'ordre de randomisation est resté intact.




Line 421: Line 420:




==Download==
==Télécharger==




To download the above example, click on the following link: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]
Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]




=Randomly Ask One Question Per Group=
=Poser au hasard une question par groupe=




==Overview==
==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").
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" N est la Nième question du groupe (donc la troisième question du groupe 1 a l'équation de pertinence "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.
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.




==Features Demonstrated==
==Fonctionnalités démontrées==




#[[Question type - Equation|Equation question type]]
#[[Type de question - Équation|Type de question équation]]
#Randomization functions
#Fonctions de randomisation
#Conditional (if) function
#Fonction conditionnelle (si)




==Screenshots==
==Captures d'écran==




This is Group0, which uses the [[Question type - Equation|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.
Il s'agit du Groupe0, qui utilise le [[Type de question - Équation|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.




Line 455: Line 454:




This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.
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.




Line 461: Line 460:




==Download==
==Télécharger==




To download the above survey example, click here: [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]].
Pour télécharger l'exemple d'enquête ci-dessus, cliquez ici : [[Media:limesurvey_survey_55164.lss|Questions aléatoires dans un exemple d'enquête de groupe]].




=Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)=
= Poser au hasard un nombre spécifique de questions dans un groupe (un sous-ensemble de questions) =




{{Alert|This applies only to all random questions from one group and only if the [[General_settings#General_settings_panel|Group by group or All in one]] format is used.}}
{{Alerte|Cela s'applique uniquement à toutes les questions aléatoires d'un groupe et uniquement si le format [[General_settings#General_settings_panel|Group by group ou All in one]] est utilisé.}}




==Overview==
==Aperçu==




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.  
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.  


The survey has one group containing 10 questions. All questions are assigned the same [[QS:Random_group|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 "[[ExpressionScript - Presentation#Access to Variables|relevanceStatus]]" of all other questions in the group is less than the number of questions you want to show. Since [[ExpressionScript - Presentation#Access to Variables|relevanceStatus]] is assigned as questions are rendered, this effectively totals the number of preceding questions.
L'enquête comporte un groupe contenant 10 questions. Toutes les questions reçoivent le même [[QS:Random_group|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 "[[ExpressionScript - Présentation#Accès aux variables|relevanceStatus]]" de toutes les autres questions du groupe est inférieure au nombre de questions que vous souhaitez afficher. Étant donné que [[ExpressionScript - Présentation#Accès aux variables|relevanceStatus]] est attribué au fur et à mesure que les questions sont rendues, cela totalise effectivement le nombre de questions précédentes.


So, in our 5 out of 10 example, the equation for Q1 would be:
Ainsi, dans notre exemple 5 sur 10, l’équation pour Q1 serait :


<syntaxhighlight lang="php">sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


For Q2, it would be:
Pour le T2, ce serait :


<syntaxhighlight lang="php">sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


And so on...
Et ainsi de suite...




==Features Demonstrated==
==Fonctionnalités démontrées==




#[[ExpressionScript - Presentation#Access to variables|relevanceStatus variable]]
#[[ExpressionScript - Présentation#Accès aux variables|Variable relevanceStatus]]
#[[QS:Random group|Randomizing]]
#[[QS:Groupe aléatoire|Randomisation]]


==Download==
==Télécharger==




To download the above example, click on the following link: [[Media:Random_5_out_of_10.lss|Random 5 out of 10 survey example]].
Pour télécharger l'exemple ci-dessus, cliquez sur le lien suivant : [[Media:Random_5_out_of_10.lss|Exemple d'enquête aléatoire 5 sur 10]].


=Rating User-Entered List of Products=
=Évaluation de la liste des produits saisie par l'utilisateur=




==Overview==
==Aperçu==




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.
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.




==ES Features Demonstrated==
==Fonctionnalités ES démontrées==




#'''Tailoring answers''' - when rating products, the labels come from the comment field of the preceding multiple choice question
#'''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
#'''Tailoring scales''' - many advanced questions options, like scale headings, can also be tailored.
#'''Adapter les échelles''' - de nombreuses options de questions avancées, comme les titres d'échelle, peuvent également être adapté.




==Screenshots==
==Captures d'écran==




This image shows that since only products 1,3, and 5 were selected, only those 3 are displayed (using the [[QS:Array_filter|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.
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 [[QS:Array_filter|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.




Line 527: Line 526:




This image shows how the tailored answers are specified:
Cette image montre comment les réponses personnalisées sont spécifiées :




Line 533: Line 532:




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):
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) :




Line 539: Line 538:




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:
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 :




Line 545: Line 544:




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.
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.




<center>[[File:mcc_filter5.jpg]]</center>
<center>[[File:mcc_filter5.jpg]]</center>


==Download==
==Télécharger==




To download the survey example from above, click on the following link: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Rating user-entered list of products survey example]].
Pour télécharger l'exemple d'enquête ci-dessus, cliquez sur le lien suivant : [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Exemple d'enquête sur la liste de produits saisie par l'utilisateur]].

Latest revision as of 16:23, 4 October 2023


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.