Actions

ExpressionScript sample surveys/nl: Difference between revisions

From LimeSurvey Manual

(Created page with "ExpressieScript voorbeeld enquêtes")
 
No edit summary
 
(156 intermediate revisions by 3 users not shown)
Line 4: Line 4:




=Introduction=
=Inleiding=




The best way to learn how to use the ExpressionScript is to play with working examples and modify them to your needs.
De beste manier om ExpressionScript te leren te gebruiken is door werkende voorbeelden uit te proberen en die aan te passen naar wat je nodig hebt.


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.  
De beste manier om ES te leren te gebruiken is door werkende voorbeelden uit te proberen en die aan te passen naar wat je nodig hebt.  




=Relevance, Tailoring and Equations=
=Relevantie, maatwerk en vergelijkingen=




==Overview==
==Overzicht==




The following example computes the BMI (Body Mass Index) of each respondent. See below the features that are demonstrated within this example.
De volgende functies worden gebruikt in dit voorbeeld:


==EM Features Demonstrated==
==Functies gedemonstreerd==
   
   


#'''Relevance''' - support for powerful conditional logic;
#'''Relevantie''' - ondersteuning van krachtige conditionele logica
#'''Piping / Tailoring''' - offers the ability to pipe or tailor answers and question metadata;
#'''Maatwerk''' - de mogelijkheid om antwoorden en vragen op te maken
#'''Dynamic Tailoring''' - note that reports are changed on the page as you answer questions.
#'''Dynamisch maatwerk''' - rapporten kunnen op e pagina gewijzigd worden als gevolg van het beantwoorden van een vraag
#'''Micro-Tailoring''' - conditional tailoring withing sentences and reports using if() statements
#'''Micro-maatwerk''' - conditioneel maatwerk in zinnen en rapporten met if()-statements
#'''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
#'''Vergelijkingen''' - met dit [[Question type - Equation/nl|vraagtype]] kun je berekeningen doen en de resultaten opslaan in de database, ook als de berekening verborgen is
#'''Conditional Validation''' - validation criteria, such as the minimum allowable value, can be conditional - e.g., based upon equations.
#'''Conditionele validatie''' - criteria, zoals een minimumwaarde kan conditioneel zijn, dus op basis van een vergelijking




==Screenshots==
==Schermafdruk==




This example computes the Body Mass Index, a calculation of your weight and height to determine whether you are overweight. Note that initially, all you see are the four mandatory questions:
In dit voorbeeld wordt de BMI bepaald (Body Mass Index), een berekening op grond van je gewicht en je lengte. Een norm om te bepalen of je bijvoorbeeld ondergewicht of obese hebt. Standaard zijn er 4 verplichte vragen.




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:
Na het invullen van de informatie (waaronder het selecteren welke eenheden je gebruikt) zie je een maatwerk rapport met je invoergegevens en het resultaat:




Line 46: Line 46:




Here is a different example, using non-metric units to show how the result changes dynamically:  
Een ander voorbeeld met andere eenheden, de resultaten worden vanzelfsprekend met die eenheden weergegeven:  




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.
Er zijn verborgen vragen van het [[Question type - Equation/nl|vraagtype Vergelijking]] waarmee intern de eventuele benodigde omzettingen vanwege de gekozen eenheden worden gedaan. Dit hoeft dus niet in JavaScript te worden gedaan.


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".
In de volgende set voorbeelden zie je hoe je mathematische en andere functies kunt gebruiken bij maatwerk rapporten. Voor het invoeren van gegevens ziet de pagina er als volgt uit. Er is conditionele logica om blanco gegevens te tonen als er geen of een niet-numeriek gegeven is ingevoerd, dit voorkomt het tonen van "NaN" en "Divide by Zero".




Line 60: Line 60:




As numbers are entered, the on-page report changes to show the computation being performed, and its result.
Bij numerieke invoer wordt het rapport aangepast om de berekening te doen en het resultaat te tonen.




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.
Er staan in deze enquête veel andere voorbeelden. In onderstaande schermafdruk zie je een van het dozijn manieren dat je een dynamische relevantiepagina kunt invullen. Volg de helpteksten en probeer verschillende leeftijden en vooral onlogische combinaties van invoer om de gevatte gegenereerde foutboodschappen onderaan te bekijken. Merk ook op dat de vraag afhankelijk is van eerdere antwoorden ("I hope you enjoy playing with your X children" of "I hope you enjoy playing with your child"). Een voorbeeld van een micro-maatwerk op grond van geslacht of een aantal.




Line 75: Line 75:




To access the survey sample, please click on the following link: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].
Voorbeeld [[Media:LS3_em_tailoring.zip|downloaden]].


=Sample Census=
=Voorbeeld telling=




==Overview==
==Overzicht==




This is a census example that asks how many people are in your household.
In dit voorbeeld vragen we hoeveel mensen er zijn in je huishouden.


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).
We demonstreren hoe groepsrelevantie het gemakkelijk maakt om een aantal vragen een aantal keer te stellen (een loop, de vragen worden per lid van het huishouden gesteld).  
Na het aanmaken van de groep voor de eerste persoon wordt de groep door ons geëxporteerd. Als variabele-naam is p1_name gekozen in plaats van de SGQA-code. Je kunt natuurlijk de vraag dan simpel een aantal keer kopiëren in een tekstverwerker en dan importeren nadat je de variabele-namen uniek hebt gemaakt.


You can also the [[Copy question|copy question]] feature, but it won't be as fast as the option suggested above.
Je kunt hiervoor ook, al zal dat wel iets langer duren, de functie [[Copy question/nl|vraag kopiëren]] gebruiken.


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).
We tonen ook hoe je het tonen van het afsluitbericht kunt voorkomen totdat alle verplichte groepen afgerond zijn.




==EM Features Demonstrated==
==Functies gedemonstreerd==




#'''Group-level relevance''' - The follow-up groups (Person 1-5) only show for up to the number of cohabitants specified;
#'''Groepsrelevantie''': De groepen per personen in het huishouden (1 tm 5) worden getoond afhankelijk van het opgegeven aantal leden van het huishouden.
#'''Tailoring''' - The final report summarizes the demographic data for each cohabitant;
#'''Maatwerk''': Het eindrapport bevat demografische gegevens voor elk lid van het huishouden.
#'''Progressive question display''' - Whether in group or all-in-one mode, subsequent questions only show as soon as the preceding ones are answered.
#'''Progressief tonen van vragen''': Of per groep of alles tegelijk, vervolgvragen worden pas getoond als de voorafgaande vraag is beantwoord.




==Screenshots==
==Schermafdruk==




The survey generates a tailored report showing the demographics of the specified number of cohabitants:
De enquête maakt een rapport aan waarin met maatwerk de demografische gegevens van de leden van het huishouden worden getoond.




Line 109: Line 110:




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"?
Als je kiest voor een vraag per keer dan kun je de vragen met maatwerk mooier maken. Omdat je weet dat het een vrouw is, vraag je naar haar naam. Vervolgens vraag je hoe oud zij is, waarbij je dan de net ingevulde naam gebruikt.




Line 118: Line 119:




To download the survey sample, click here: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].
Voorbeeld [[Media:LS3_group_relevance.zip|downloaden]].




=Cascading Array Filters=
=Cascading arrayfilters=




==Overview==
==Overzicht==




This survey is based on the design of a survey courtesy of Joy Lane Research, LLC.  
Deze enquête is gebaseerd op een enquête van Joy Lane Research, LLC.  




==Screenshots==
==Schermafdruk==




In the following, note that:
Hierbij staat:
*Q02 only shows the set of products checked in Q01 (by using array_filter)
*Q02 voor de verzameling geselecteerde producten in vraag Q01 (gebruik van een array_filter).
*Q02 also shows "Another product", the text entered into the "Other electronic" field in Q01
*Q02 toont ook "Another product", de ingevulde tekst bij het veld "Other electronic" in Q01.
*Q04 only shows products from Q02 that were checked (so the array filter cascades)
*Q04 voor de verzameling geselecteerde producten in Q02 (dus een herhaald filter).
*Q05 only shows products from Q02 that were not checked in Q02 (using a cascaded array_filter_exclude)
*Q05 voor de verzameling niet in Q02 geselecteerde producten (gebruik van het array_filter_exclude).




Line 149: Line 150:




Click on the following link to download the above example: [[Media:ls2_cascading_array_filter.lss|LS2_cascading_array_filter survey example]].
Voorbeeld [[Media:ls2_cascading_array_filter.lss|downloaden]].




=Piping/Tailoring Using All Question Types and Attributes=
=Maatwerk met gebruik van vraagtypes en attributen=




==Overview==
==Overzicht==




If you are confused about how to name your variables (SGQA vs Qcodes), you are not alone. Although the main documentation describes [[ExpressionScript#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.
Je bent niet alleen als je de naamgeving van je variabelen moeilijk vindt (SGQA of Qcodes). In de  documentatie beschrijven we [[ExpressionScript - Presentation/nl#Toegang tot variabelen|hoe een Qcode-naam wordt opgebouwd]], maar vermoedelijk is een werkend demo gemakkelijker te volgen.  In deze enquête tonen we hoe je vraagattributen en reacties kunt benaderen met 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.}}
{{Note| Voor dit voorbeeld raden we aan de ingebouwde HTML-editor uit te schakelen (of de pop-upmodus te kiezen) bij het bewerken van deze enquête. Het kan een minuut of wat langer duren voordat de HTML-editor een groter HTML-rapport weergeeft in de bewerkingsmodus.}}




==Content==
==Inhoud==




*Examples of every question type
* Voorbeelden van elk vraagtype.
*All questions types that can use "other" are included so that you can see how that affects variable naming
* Inclusief alle vraagtypes die "anders" kunnen gebruiken, zodat je kunt zien hoe dat van invloed is op de naamgeving van de variabelen.
*Default values for all the question types that accepts defaults
* Standaardwaarden voor alle vraagtypen die standaardinstellingen accepteren.
*Tailoring - On- and off-page reports showing all 16 available EM dot notation suffixes.
* Maatwerk : On- en off-pagina rapporten met alle 16 beschikbare ExpressionScript notatie-achtervoegsels.
*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)
* Deze rapporten tonen alle ingevoerde gegevens (je ziet hoe je eigen afdrukbare rapporten kunt genereren voor gebruikers in plaats van het afdruk- antwoordscherm)
*Proper Qcode and SGQA naming of all variables
* Goede Qcode en SGQA-naamgeving van alle variabelen.




==Screenshots==
==Schermafdruk==




This is a huge survey, so we chose not to include screen shots. Instead, please download and play with it.
Geen screenshot, want dit is een lange enquête. Probeer de download uit.




Line 184: Line 185:




Click on the following link to download the survey: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]
Voorbeeld [[Media:ls2_EM_question_attributes.lss|downloaden]].


=Traditionele validatie, opnieuw gebruiken=


=Traditional validation, re-envisioned=


==Overzicht==


==Overview==


Hier zien we alle validatietypes die gebruikmaken van expressies en hoe deze van invloed zijn op elk van de vraagtypes die validatie ondersteunen. In veel gevallen zijn de validatietips eerst verborgen en verschijnen ze alleen als een antwoord niet voldoet aan de validatiecriteria (ze verdwijnen zodra het antwoord voldoet).


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


==Validatie types gedemonstreerd==


==Validation Types Demonstrated==


#[[QS:Min_num_value_n/nl|min_num_value_n]] - Minimale waarde van de numerieke invoer
#[[QS:Max_num_value_n/nl|max_num_value_n]] - Maximale waarde van de numerieke invoer
#[[QS:Min_answers/nl|min_answers]] - Minimum aantal antwoorden
#[[QS:Max_answers/nl|max_answers]] Maximum aantal antwoorden
#[[QS:Multiflexible_min/nl|multiflexible_min]] - Minimale waarde
#[[QS:Multiflexible_max/nl|multiflexible_max]] - Maximale waarde
#[[QS:Min_num_value/nl|min_num_value]] -Minimale som
#[[QS:Max_num_value/nl|max_num_value]] - Maximale som
#[[QS:Equals_num_value/nl|equals_num_value]] - Is gelijk aan de waarde van de som
#[[QS:Preg_validation/nl|validation]] - Validatie van de vraag


#[[QS:Min_num_value_n|min_num_value_n]] - minimum value for an answer
#[[QS:Max_num_value_n|max_num_value_n]] - max value for an answer
#[[QS:Min_answers|min_answers]] - minimum number of answers required
#[[QS:Max_answers|max_answers]] maximum number of answers allowed
#[[QS:Multiflexible_min|multiflexible_min]] - minimum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_max|multiflexible_max]] - maximum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Min_num_value|min_num_value]] - minimum allowed sum across all answers for the question
#[[QS:Max_num_value|max_num_value]] - maximum allowed sum across all answers for the question
#[[QS:Equals_num_value|equals_num_value]] - the sum across all answers for the question must equal this value
#[[QS:Preg_validation|validation]] - this is the regular expression validation for the question - it can apply to individual cells


==Schermafdruk==


==Screenshots==


 
Met behulp van nieuwe CSS-styles verschijnt bij elk validatietype een afzonderlijke tip. Als ze worden getoond, kunnen ze worden verborgen via de optie hide_tip. De standaardoptie is om ze met een rood lettertype weer te geven als het antwoord niet aan de validatiecriteria voldoet en groen als het voldoet.
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:




Line 220: Line 220:




A user cannot submit a page with validation errors. He will be immediately warned if he entered wrong information:
Een gebruiker zal direct worden gewaarschuwd als hij verkeerde informatie heeft ingevoerd. De gegevens worden niet vastgelegd.




Line 226: Line 226:




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.
Validatie kan worden toegepast op afzonderlijke cellen in een array, zoals in dit voorbeeld, waarbij validatie met reguliere expressies ervoor zorgt dat elke vermelding een correct opgemaakt Amerikaans telefoonnummer is, inclusief een ''area-code''.




Line 235: Line 235:




To download the above example, click on the following link: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].
Voorbeeld [[Media:LS3_Validation_tests.zip|downloaden]].




=Validation Equations=
=Validatie vergelijkingen=




==Overview==
==Overzicht==




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.  
Soms heb je aangepaste validatie nodig die niet kan worden bereikt met behulp van de traditionele min/max-criteria. Dan moet je de opties em_validation_q en em_validation_sq gebruiken, waarmee je complexe validatievergelijkingen kunt maken op respectievelijk vraag- en subvraagniveau.  




{{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.}}
{{Note | Op het subvraagniveau introduceren we ook de "this"-variabele om het gemakkelijk te maken om elke cel in een array te valideren zonder de variabelenaam ervan te hoeven weten.}}




==EM Features Demonstrated==
==Functies gedemonstreerd==




#[[QS:Em_validation_q|em_validation_q]] - this is an equation that determines whether the whole question is valid
# [[QS: Em_validation_q/nl| em_validation_q]] : een vergelijking die bepaalt of de hele vraag valide is.
#[[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/nl| em_validation_q_tip]] : het bericht dat wordt weergegeven als niet aan de criteria wordt voldaan.
#[[QS:Em_validation_sq|em_validation_sq]] - this is the equation that determines whether each subquestion (array cell) is valid
# [[QS: Em_validation_sq/nl| em_validation_sq]] : de vergelijking die bepaalt of elke subvraag (array-cel) valide is.
#[[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/nl| em_validation_sq_tip]] : het bericht dat wordt weergegeven als niet aan de subvraag is voldaan.


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.
Als em_validation_sq wordt gebruikt wordt over het algemeen als een cel ongeldig is, de achtergrondkleur voor die cel rood, om aan te geven dat er een fout is.




==Screenshots==
==Schermafdruk==




Line 267: Line 267:




This question ensures that you enter the ages of your children in descending order by applying this validation equation:
Het invoeren van de leeftijden van de kinderen in aflopende volgorde bij deze vraag wordt afgedwongen door deze validatievergelijking.


<syntaxhighlight lang="php" enclose="div">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 278: Line 278:




In the below example, the validation ensures that no more than 3 questions are answered on any given row by applying this validation equation:
In het onderstaande voorbeeld zorgt de validatievergelijking ervoor dat niet meer dan 3 vragen in een bepaalde rij worden beantwoord.


<syntaxhighlight lang="php" enclose="div">(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">(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>


You can also write this as follows, LimeSurvey automatically converting it at run-time to the above-listed expression.
Je kunt dit ook als volgt schrijven, LimeSurvey converteert het automatisch bij het uitvoeren naar de hierboven vermelde expressie.


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




Line 293: Line 293:




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]].
Voorbeeld [[Media:ls2_test_em_sq_validation.lss|downloaden]].




=Subquestion relevance=
=Subvraag relevantie=




==Overview==
==Overzicht==




This shows how array_filter and validation criteria can interact. For validations that apply to sums, only relevant (visible) values are considered.
Dit laat zien hoe array_filter en validatiecriteria kunnen samenwerken. Bij validatie die op sommen van toepassing is, worden alleen de relevante (zichtbare) waarden in meegenomen.




==EM Features Demonstrated==
==Functies gedemonstreerd==




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


It also shows dynamic reporting of the numbers of questions answered in the core questions.
Het toont ook dynamische rapportage over het aantal vragen dat in de hoofdvragen is beantwoord.




==Screenshots==
==Schermafdruk==




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.
Als je het aantal zichtbare rijen wijzigt, wordt de som dynamisch gewijzigd. Het markeren van een deelvraag als zijnde irrelevant, wist de waarde niet, maar zorgt ervoor dat de waarde niet meegenomen wordt in vergelijkingen.




Line 326: Line 326:




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.
Let op wat er gebeurt als we de "Vijfde deelvraag" aanvinken bij de vraag '' '"Welke rijen moeten eronder verschijnen"' ''. De som voor de vraag "Vul enkele cijfers in" is nu 5. Hoewel subvraag 5 voor die vraag nog steeds de waarde 14 heeft (bijv. Als u de vijfde deelvraag uitvinkt, ziet u de waarde van 14 opnieuw), die waarde draagt ​​niet bij aan de som, omdat die op dat moment niet relevant is. Alle niet-relevante gegevens worden gewist (NULLed in de database) bij het opslaan bij het verzenden, maar blijven staan op de pagina voor het geval gebruikers hun invoer wil wijzigen.




Line 335: Line 335:




To download our example, click here: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].
Voorbeeld  [[Media:ls2_subquestion_relevance.lss|downloaden]].




=Using Comma as Radix Separator (Decimal Point)=
=Gebruik van een komma in getallen (Decimale punt)=




==Overview==
==Overzicht==




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").
ExpressieScript zorgt ervoor dat alleen geldige nummers in numerieke velden kunnen worden ingevoerd. Als u een ongeldig nummer invoert, wordt u gewaarschuwd dat er iets niet klopt (bijv. In het geval van het fruitige thema wordt de hele vraag roodgemaakt).


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.
Merk op dat de numerieke waarden altijd worden geconverteerd naar een punt als het decimaal scheidingsteken (radix) in de database. Op deze manier zullen de statistische analyses op de juiste manier werken.


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.   
Om het decimaal scheidingsteken te wijzigen, open je de [[Text elements/nl|Tekstelementen]]-opties op het tabblad [[Survey_settings/nl|Instellingen]] en zoek je naar de functie [[Text_elements/nl#Paneel enquête tekstelementen|Decimaal scheidingsteken]].   




{{Note|For more information on what a radix separator is, click [https://en.wikipedia.org/wiki/Radix_point|here].}}
{{Note|Klik voor meer informatie over wat een decimaal scheidingsteken (radix) is : [https://en.wikipedia.org/wiki/Radix_point].}}




==Question Types Using Radix Separator==
==Vraagtypes met decimale getallen==




#[[Question type - Numerical input|Numerical input]] <nowiki>[</nowiki>N]
#[[Question type - Numerical input/nl|Numerieke invoer]] <nowiki>[</nowiki>N]
#[[Question type - Multiple numerical input|Multiple numerical input]] <nowiki>[</nowiki>K]
#[[Question type - Multiple numerical input/nl|Meervoudige numerieke invoer]] <nowiki>[</nowiki>K]
#[[Question type - Array (Numbers)|Array (Numbers)]] <nowiki>[</nowiki>:]
#[[Question type - Array (Numbers)/nl|Array (getallen)]] <nowiki>[</nowiki>:]
#[[Question type - Array (Texts)|Array (Texts)]] <nowiki>[</nowiki>;], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Array (Texts)/nl|Array (teksten)]] <nowiki>[</nowiki>;], indien gebruikt met het [[QS:Numbers_only/nl|numbers_only]] attribuut
#[[Question type - List (Radio)|List (radio)]] <nowiki>[</nowiki>L], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - List (Radio)/nl|Lijst (Radioknoppen)]] <nowiki>[</nowiki>L], indien gebruikt met het  [[QS:Other_numbers_only/nl|other_numbers_only]] attribuut
#[[Question type - Short free text|Short free text]] <nowiki>[</nowiki>S], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Short free text/nl|Korte vrije tekst]] <nowiki>[</nowiki>S], indien gebruikt met het [[QS:Numbers_only/nl|numbers_only]] attribuut
#[[Question type - Multiple short text|Multiple short text]] <nowiki>[</nowiki>Q], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Multiple short text/nl|Meerdere korte vrije teksten]] <nowiki>[</nowiki>Q], indien gebruikt met het  [[QS:Numbers_only/nl|numbers_only]] attribuut
#[[Question type - Multiple choice|Multiple choice]] <nowiki>[</nowiki>M], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - Multiple choice/nl|Meerkeuzevraag]] <nowiki>[</nowiki>M], indien gebruikt met het  [[QS:Other_numbers_only/nl|other_numbers_only]] attribuut
#[[Question type - Multiple choice with comments|Multiple choice with comments]] <nowiki>[</nowiki>P], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - Multiple choice with comments/nl|Meerkeuzevraag met opmerkingen]] <nowiki>[</nowiki>P], indien gebruikt met het het  [[QS:Other_numbers_only/nl|other_numbers_only]] attribuut




==Screenshots==
==Schermafdruk==




You may note in the below screenshots that comma can be used as a radix separator.
Je kunt in de onderstaande schermafbeeldingen zien dat de komma als decimaal scheidingsteken kan worden gebruikt.




Line 380: Line 380:




To download the above example, click on the following link: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].
Voorbeeld [[Media:ls2_comma_as_radix_separator.lss|downloaden]].




=Randomization Groups=
=Randomisatie groepen=




==Overview==
==Overzicht==




This survey demonstrates how to make use of the '''random_group''' attribute.
Deze enquête laat zien hoe je gebruik kunt maken van het attribuut '' 'willekeurige groep (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.
Als dit attribuut wordt gebruikt wordt de vraagvolgorde, elke keer dat de enquête wordt gestart, gerandomiseerd. Zodra de enquête is gestart, blijft de volgorde echter ongewijzigd, ook als je de taal aanpast.




==Screenshots==
==Schermafdruk==




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.
Laten we het onderstaande voorbeeld bekijken. De eerste willekeurige vraag op de pagina is Q1, Q4 of Q7. De tweede willekeurige vraag op de pagina is Q2, Q5 of Q8.




Line 404: Line 404:




Here is the randomization generated the first time I tested this survey.
Hier is de gegenereerde volgorde bij het eerste keer testen.




Line 410: Line 410:




A different randomization was generated the second time I tested the survey.
Hier is de gegenereerde volgorde bij de tweede keer testen.




Line 416: Line 416:




But, when I switched to French (without re-starting the survey), the randomization order remained intact.
Bij het wisselen van de taal naar Frans (zonder de enquête opnieuw te starten), blijft de volgorde hetzelfde.




Line 425: Line 425:




To download the above example, click on the following link: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]
Voorbeeld [[Media:Randomization_Group_Test.lss|downloaden]].




=Randomly Ask One Question Per Group=
=Willekeurig een vraag stellen per groep=




==Overview==
==Overzicht==




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").
Deze enquête laat zien hoe je een enquête kunt configureren om willekeurig één vraag per groep weer te geven. Er zijn 5 groepen met  elk 6 vragen. In het begin zijn er in groep 0 vijf verborgen vergelijkingsvragen, ask1-ask5 genaamd. Elk heeft de waarde van {floor (rand (1,6.9999))} in het antwoord van de vraag, wat betekent dat de variabelen ask1-ask5 elk een waarde tussen 1 en 6 hebben. Verder heeft elke vraag in de groep een relevantievergelijking "ask1 == N" waarbij N de N-de vraag in de groep is (voorbeeld: de derde vraag in groep 1 heeft de relevantievergelijking "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.
Deze enquête werkt zowel in de 'alles in een keer', 'groep voor groep' als de 'vraag voor vraag'-modus. Aangezien de randomisatie is ingesteld in de eerste groep en die groep is verborgen (omdat alle vragen van ask1-ask5 zijn verborgen), blijft de randomisatie hetzelfde voor het onderwerp,  maar elk onderwerp zal een andere randomisatie hebben.




==Features Demonstrated==
==Functies gedemonstreerd==




#[[Question type - Equation|Equation question type]]
#[[Question type - Equation/nl|Vraagtype vergelijking]]
#Randomization functions
#Randomizatie functies
#Conditional (if) function
#Conditionele (if) functie




==Screenshots==
==Schermafdruk==




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.
Dit is Group0, die het [[Question type - Equation/nl|vraagtype Vergelijking]] gebruikt om willekeurige waarden van 1 tot 6 voor elke groep te selecteren (behalve de laatste groep, die slechts 4 vragen heeft). Merk op dat de functie "if ( )" eerst controleert of vraag1 al is ingesteld en zo ja, die waarde gebruikt. Als de waarde niet is ingesteld, gebruikt deze een willekeurige waarde om de waarde van ask1 in te stellen.




Line 456: Line 456:




This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.
Deze groep laat zien hoe de variabele (ask4) uit Group0 wordt gebruikt om te bepalen welke vraag zichtbaar is in de vierde groep.




Line 465: Line 465:




To download the above survey example, click here: [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]].
Voorbeeld [[Media:limesurvey_survey_55164.lss|download]].




=Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)=
=Willekeurig een bepaald aantal vragen stellen uit een groep (een subset van de vragen)=




{{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.}}
{{Alert|Dit is alleen van toepassing op alle willekeurige vragen uit één groep en alleen als de [[General_settings/nl#Paneel_algemene_instellingen|'Groep voor groep' of 'Alles in een keer']] -modus wordt gebruikt.}}




==Overview==
==Overzicht==




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.  
Deze enquête toont hoe je een aantal willekeurige vragen uit een groep kun tonen. Voorbeeld: toon 5 willekeurige vragen uit een groep met 10 vragen.  


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#Access to Variables|relevanceStatus]]" of all other questions in the group is less than the number of questions you want to show. Since [[ExpressionScript#Access to Variables|relevanceStatus]] is assigned as questions are rendered, this effectively totals the number of preceding questions.
De enquête heeft een groep met 10 vragen. Alle vragen hebben dezelfde [[QS:Random_group/nl|randomisatiegroepsnaam]]. Daardoor worden ze bij het laden van de pagina in een willekeurige volgorde getoond. Elke vraag heeft een relevantievergelijking dat de som van de "[[ExpressionScript - Presentation/nl#Toegang tot variabelen|relevantieStatus]]" van alle andere vragen in de groep kleiner is dan het aantal vragen dat je wilt laten tonen. Omdat de [[ExpressionScript - Presentation/nl#Toegang tot variabelen|status]] wordt toekent aan de vragen bij het weergeven, betekent dit dat het aantal al getoonde vragen eigenlijk geteld wordt.


So, in our 5 out of 10 example, the equation for Q1 would be:
Dus in ons voorbeeld 'toon 5 van de 10' zou de vergelijking voor Q1 zijn:


<syntaxhighlight lang="php" enclose="div">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:
Voor vraag Q2 zou het zijn:


<syntaxhighlight lang="php" enclose="div">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...
Enzovoort...




==Features Demonstrated==
==Functies gedemonstreerd==




#[[Expression_Manager#Access_to_Variables|relevanceStatus variable]]
#[[ExpressionScript - Presentation/nl#Toegang tot variabelen|relevanceStatus variable]]
#[[QS:Random group|Randomizing]]
#[[QS: Random group/nl|Randomisatie]]
 


==Download==
==Download==




To download the above example, click on the following link: [[Media:Random_5_out_of_10.lss|Random 5 out of 10 survey example]].
Voorbeeld [[Media:Random_5_out_of_10.lss|downloaden]].


=Rating User-Entered List of Products=
=Beoordelen door gebruiker geselecteerde producten=




==Overview==
==Overzicht==




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.
In het onderstaande voorbeeld zie je hoe je gebruikers kunt vragen een reeks producten te vermelden die hen interesseren, en ze vervolgens die producten laten beoordelen.




==EM Features Demonstrated==
==Functies gedemonstreerd==




#'''Tailoring answers''' - when rating products, the labels come from the comment field of the preceding multiple choice question
#'''Maatwerk antwoorden''' : bij het beoordelen van producten komen de labels uit het commentaarveld van de voorafgaande meerkeuzevraag.
#'''Tailoring scales''' - many advanced questions options, like scale headings, can also be tailored.
#'''Maatwerk schalen''' : veel geavanceerde vragenopties, zoals schaalrubrieken, kunnen ook op maat worden gemaakt.




==Screenshots==
==Schermafdruk==




This image shows that even though 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.
Deze afbeelding laat zien dat omdat alleen producten 1, 3 en 5 zijn geselecteerd, daarna alleen die 3 worden weergegeven (met behulp van het  [[QS:Array_filter/nl|array_filter]]). Verder zijn de rijlabels in de tweede vraag ofwel het productnummer (als er niets is ingevoerd in het opmerkingenveld) of de inhoud van het opmerkingenveld.




Line 529: Line 528:




This image shows how the tailored answers are specified:
Deze afbeelding laat zien hoe de op maat gemaakte vragen worden gespecificeerd.




Line 535: Line 534:




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):
Dit is het logica-bestand van deze vraag, waarmee je kunt controleren of de voorwaardelijke logica naar wens werkt (zijn er geen syntaxfouten):




Line 541: Line 540:




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:
De volgende afbeelding toont een groep waarin een 5-punts beoordelingsschaal wordt gespecificeerd (opties 1-5), de titel van de schaal en de producten die u wilt beoordelen. De laatste vraag laat zien dat elk van de onderdelen van de array-vraag kan worden aangepast met maatwerk:




Line 547: Line 546:




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.
De volgende afbeelding toont de logica-bestand van de laatste vraag. Zoals je kunt zien, kunnen de subvragen, antwoorden en schaalteksten met maatwerk worden aangepast.




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


==Download==
==Download==




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]].
Voorbeeld [[Media:Rating_User-Entered_List_of_Products_Survey.zip|downloaden]].

Latest revision as of 21:43, 17 February 2022


Inleiding

De beste manier om ExpressionScript te leren te gebruiken is door werkende voorbeelden uit te proberen en die aan te passen naar wat je nodig hebt.

De beste manier om ES te leren te gebruiken is door werkende voorbeelden uit te proberen en die aan te passen naar wat je nodig hebt.


Relevantie, maatwerk en vergelijkingen

Overzicht

De volgende functies worden gebruikt in dit voorbeeld:

Functies gedemonstreerd

  1. Relevantie - ondersteuning van krachtige conditionele logica
  2. Maatwerk - de mogelijkheid om antwoorden en vragen op te maken
  3. Dynamisch maatwerk - rapporten kunnen op e pagina gewijzigd worden als gevolg van het beantwoorden van een vraag
  4. Micro-maatwerk - conditioneel maatwerk in zinnen en rapporten met if()-statements
  5. Vergelijkingen - met dit vraagtype kun je berekeningen doen en de resultaten opslaan in de database, ook als de berekening verborgen is
  6. Conditionele validatie - criteria, zoals een minimumwaarde kan conditioneel zijn, dus op basis van een vergelijking


Schermafdruk

In dit voorbeeld wordt de BMI bepaald (Body Mass Index), een berekening op grond van je gewicht en je lengte. Een norm om te bepalen of je bijvoorbeeld ondergewicht of obese hebt. Standaard zijn er 4 verplichte vragen.



Na het invullen van de informatie (waaronder het selecteren welke eenheden je gebruikt) zie je een maatwerk rapport met je invoergegevens en het resultaat:



Een ander voorbeeld met andere eenheden, de resultaten worden vanzelfsprekend met die eenheden weergegeven:



Er zijn verborgen vragen van het vraagtype Vergelijking waarmee intern de eventuele benodigde omzettingen vanwege de gekozen eenheden worden gedaan. Dit hoeft dus niet in JavaScript te worden gedaan.

In de volgende set voorbeelden zie je hoe je mathematische en andere functies kunt gebruiken bij maatwerk rapporten. Voor het invoeren van gegevens ziet de pagina er als volgt uit. Er is conditionele logica om blanco gegevens te tonen als er geen of een niet-numeriek gegeven is ingevoerd, dit voorkomt het tonen van "NaN" en "Divide by Zero".



Bij numerieke invoer wordt het rapport aangepast om de berekening te doen en het resultaat te tonen.



Er staan in deze enquête veel andere voorbeelden. In onderstaande schermafdruk zie je een van het dozijn manieren dat je een dynamische relevantiepagina kunt invullen. Volg de helpteksten en probeer verschillende leeftijden en vooral onlogische combinaties van invoer om de gevatte gegenereerde foutboodschappen onderaan te bekijken. Merk ook op dat de vraag afhankelijk is van eerdere antwoorden ("I hope you enjoy playing with your X children" of "I hope you enjoy playing with your child"). Een voorbeeld van een micro-maatwerk op grond van geslacht of een aantal.



Download

Voorbeeld downloaden.

Voorbeeld telling

Overzicht

In dit voorbeeld vragen we hoeveel mensen er zijn in je huishouden.

We demonstreren hoe groepsrelevantie het gemakkelijk maakt om een aantal vragen een aantal keer te stellen (een loop, de vragen worden per lid van het huishouden gesteld). Na het aanmaken van de groep voor de eerste persoon wordt de groep door ons geëxporteerd. Als variabele-naam is p1_name gekozen in plaats van de SGQA-code. Je kunt natuurlijk de vraag dan simpel een aantal keer kopiëren in een tekstverwerker en dan importeren nadat je de variabele-namen uniek hebt gemaakt.

Je kunt hiervoor ook, al zal dat wel iets langer duren, de functie vraag kopiëren gebruiken.

We tonen ook hoe je het tonen van het afsluitbericht kunt voorkomen totdat alle verplichte groepen afgerond zijn.


Functies gedemonstreerd

  1. Groepsrelevantie: De groepen per personen in het huishouden (1 tm 5) worden getoond afhankelijk van het opgegeven aantal leden van het huishouden.
  2. Maatwerk: Het eindrapport bevat demografische gegevens voor elk lid van het huishouden.
  3. Progressief tonen van vragen: Of per groep of alles tegelijk, vervolgvragen worden pas getoond als de voorafgaande vraag is beantwoord.


Schermafdruk

De enquête maakt een rapport aan waarin met maatwerk de demografische gegevens van de leden van het huishouden worden getoond.



Als je kiest voor een vraag per keer dan kun je de vragen met maatwerk mooier maken. Omdat je weet dat het een vrouw is, vraag je naar haar naam. Vervolgens vraag je hoe oud zij is, waarbij je dan de net ingevulde naam gebruikt.



Download

Voorbeeld downloaden.


Cascading arrayfilters

Overzicht

Deze enquête is gebaseerd op een enquête van Joy Lane Research, LLC.


Schermafdruk

Hierbij staat:

  • Q02 voor de verzameling geselecteerde producten in vraag Q01 (gebruik van een array_filter).
  • Q02 toont ook "Another product", de ingevulde tekst bij het veld "Other electronic" in Q01.
  • Q04 voor de verzameling geselecteerde producten in Q02 (dus een herhaald filter).
  • Q05 voor de verzameling niet in Q02 geselecteerde producten (gebruik van het array_filter_exclude).




Download

Voorbeeld downloaden.


Maatwerk met gebruik van vraagtypes en attributen

Overzicht

Je bent niet alleen als je de naamgeving van je variabelen moeilijk vindt (SGQA of Qcodes). In de documentatie beschrijven we hoe een Qcode-naam wordt opgebouwd, maar vermoedelijk is een werkend demo gemakkelijker te volgen.  In deze enquête tonen we hoe je vraagattributen en reacties kunt benaderen met ExpressionScript.


Voor dit voorbeeld raden we aan de ingebouwde HTML-editor uit te schakelen (of de pop-upmodus te kiezen) bij het bewerken van deze enquête. Het kan een minuut of wat langer duren voordat de HTML-editor een groter HTML-rapport weergeeft in de bewerkingsmodus.


Inhoud

  • Voorbeelden van elk vraagtype.
  • Inclusief alle vraagtypes die "anders" kunnen gebruiken, zodat je kunt zien hoe dat van invloed is op de naamgeving van de variabelen.
  • Standaardwaarden voor alle vraagtypen die standaardinstellingen accepteren.
  • Maatwerk : On- en off-pagina rapporten met alle 16 beschikbare ExpressionScript notatie-achtervoegsels.
  • Deze rapporten tonen alle ingevoerde gegevens (je ziet hoe je eigen afdrukbare rapporten kunt genereren voor gebruikers in plaats van het afdruk- antwoordscherm)
  • Goede Qcode en SGQA-naamgeving van alle variabelen.


Schermafdruk

Geen screenshot, want dit is een lange enquête. Probeer de download uit.


Download

Voorbeeld downloaden.

Traditionele validatie, opnieuw gebruiken

Overzicht

Hier zien we alle validatietypes die gebruikmaken van expressies en hoe deze van invloed zijn op elk van de vraagtypes die validatie ondersteunen. In veel gevallen zijn de validatietips eerst verborgen en verschijnen ze alleen als een antwoord niet voldoet aan de validatiecriteria (ze verdwijnen zodra het antwoord voldoet).


Validatie types gedemonstreerd

  1. min_num_value_n - Minimale waarde van de numerieke invoer
  2. max_num_value_n - Maximale waarde van de numerieke invoer
  3. min_answers - Minimum aantal antwoorden
  4. max_answers Maximum aantal antwoorden
  5. multiflexible_min - Minimale waarde
  6. multiflexible_max - Maximale waarde
  7. min_num_value -Minimale som
  8. max_num_value - Maximale som
  9. equals_num_value - Is gelijk aan de waarde van de som
  10. validation - Validatie van de vraag


Schermafdruk

Met behulp van nieuwe CSS-styles verschijnt bij elk validatietype een afzonderlijke tip. Als ze worden getoond, kunnen ze worden verborgen via de optie hide_tip. De standaardoptie is om ze met een rood lettertype weer te geven als het antwoord niet aan de validatiecriteria voldoet en groen als het voldoet.



Een gebruiker zal direct worden gewaarschuwd als hij verkeerde informatie heeft ingevoerd. De gegevens worden niet vastgelegd.



Validatie kan worden toegepast op afzonderlijke cellen in een array, zoals in dit voorbeeld, waarbij validatie met reguliere expressies ervoor zorgt dat elke vermelding een correct opgemaakt Amerikaans telefoonnummer is, inclusief een area-code.



Download

Voorbeeld downloaden.


Validatie vergelijkingen

Overzicht

Soms heb je aangepaste validatie nodig die niet kan worden bereikt met behulp van de traditionele min/max-criteria. Dan moet je de opties em_validation_q en em_validation_sq gebruiken, waarmee je complexe validatievergelijkingen kunt maken op respectievelijk vraag- en subvraagniveau.


Op het subvraagniveau introduceren we ook de "this"-variabele om het gemakkelijk te maken om elke cel in een array te valideren zonder de variabelenaam ervan te hoeven weten.


Functies gedemonstreerd

  1. em_validation_q : een vergelijking die bepaalt of de hele vraag valide is.
  2. em_validation_q_tip : het bericht dat wordt weergegeven als niet aan de criteria wordt voldaan.
  3. em_validation_sq : de vergelijking die bepaalt of elke subvraag (array-cel) valide is.
  4. em_validation_sq_tip : het bericht dat wordt weergegeven als niet aan de subvraag is voldaan.

Als em_validation_sq wordt gebruikt wordt over het algemeen als een cel ongeldig is, de achtergrondkleur voor die cel rood, om aan te geven dat er een fout is.


Schermafdruk


Het invoeren van de leeftijden van de kinderen in aflopende volgorde bij deze vraag wordt afgedwongen door deze validatievergelijking.

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





In het onderstaande voorbeeld zorgt de validatievergelijking ervoor dat niet meer dan 3 vragen in een bepaalde rij worden beantwoord.

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

Je kunt dit ook als volgt schrijven, LimeSurvey converteert het automatisch bij het uitvoeren naar de hierboven vermelde expressie.

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



Download

Voorbeeld downloaden.


Subvraag relevantie

Overzicht

Dit laat zien hoe array_filter en validatiecriteria kunnen samenwerken. Bij validatie die op sommen van toepassing is, worden alleen de relevante (zichtbare) waarden in meegenomen.


Functies gedemonstreerd

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

Het toont ook dynamische rapportage over het aantal vragen dat in de hoofdvragen is beantwoord.


Schermafdruk

Als je het aantal zichtbare rijen wijzigt, wordt de som dynamisch gewijzigd. Het markeren van een deelvraag als zijnde irrelevant, wist de waarde niet, maar zorgt ervoor dat de waarde niet meegenomen wordt in vergelijkingen.



Let op wat er gebeurt als we de "Vijfde deelvraag" aanvinken bij de vraag '"Welke rijen moeten eronder verschijnen"' . De som voor de vraag "Vul enkele cijfers in" is nu 5. Hoewel subvraag 5 voor die vraag nog steeds de waarde 14 heeft (bijv. Als u de vijfde deelvraag uitvinkt, ziet u de waarde van 14 opnieuw), die waarde draagt ​​niet bij aan de som, omdat die op dat moment niet relevant is. Alle niet-relevante gegevens worden gewist (NULLed in de database) bij het opslaan bij het verzenden, maar blijven staan op de pagina voor het geval gebruikers hun invoer wil wijzigen.



Download

Voorbeeld downloaden.


Gebruik van een komma in getallen (Decimale punt)

Overzicht

ExpressieScript zorgt ervoor dat alleen geldige nummers in numerieke velden kunnen worden ingevoerd. Als u een ongeldig nummer invoert, wordt u gewaarschuwd dat er iets niet klopt (bijv. In het geval van het fruitige thema wordt de hele vraag roodgemaakt).

Merk op dat de numerieke waarden altijd worden geconverteerd naar een punt als het decimaal scheidingsteken (radix) in de database. Op deze manier zullen de statistische analyses op de juiste manier werken.

Om het decimaal scheidingsteken te wijzigen, open je de Tekstelementen-opties op het tabblad Instellingen en zoek je naar de functie Decimaal scheidingsteken.


Klik voor meer informatie over wat een decimaal scheidingsteken (radix) is : [1].


Vraagtypes met decimale getallen

  1. Numerieke invoer [N]
  2. Meervoudige numerieke invoer [K]
  3. Array (getallen) [:]
  4. Array (teksten) [;], indien gebruikt met het numbers_only attribuut
  5. Lijst (Radioknoppen) [L], indien gebruikt met het other_numbers_only attribuut
  6. Korte vrije tekst [S], indien gebruikt met het numbers_only attribuut
  7. Meerdere korte vrije teksten [Q], indien gebruikt met het numbers_only attribuut
  8. Meerkeuzevraag [M], indien gebruikt met het other_numbers_only attribuut
  9. Meerkeuzevraag met opmerkingen [P], indien gebruikt met het het other_numbers_only attribuut


Schermafdruk

Je kunt in de onderstaande schermafbeeldingen zien dat de komma als decimaal scheidingsteken kan worden gebruikt.



Download

Voorbeeld downloaden.


Randomisatie groepen

Overzicht

Deze enquête laat zien hoe je gebruik kunt maken van het attribuut 'willekeurige groep (random_group)' .

Als dit attribuut wordt gebruikt wordt de vraagvolgorde, elke keer dat de enquête wordt gestart, gerandomiseerd. Zodra de enquête is gestart, blijft de volgorde echter ongewijzigd, ook als je de taal aanpast.


Schermafdruk

Laten we het onderstaande voorbeeld bekijken. De eerste willekeurige vraag op de pagina is Q1, Q4 of Q7. De tweede willekeurige vraag op de pagina is Q2, Q5 of Q8.



Hier is de gegenereerde volgorde bij het eerste keer testen.



Hier is de gegenereerde volgorde bij de tweede keer testen.



Bij het wisselen van de taal naar Frans (zonder de enquête opnieuw te starten), blijft de volgorde hetzelfde.



Download

Voorbeeld downloaden.


Willekeurig een vraag stellen per groep

Overzicht

Deze enquête laat zien hoe je een enquête kunt configureren om willekeurig één vraag per groep weer te geven. Er zijn 5 groepen met elk 6 vragen. In het begin zijn er in groep 0 vijf verborgen vergelijkingsvragen, ask1-ask5 genaamd. Elk heeft de waarde van {floor (rand (1,6.9999))} in het antwoord van de vraag, wat betekent dat de variabelen ask1-ask5 elk een waarde tussen 1 en 6 hebben. Verder heeft elke vraag in de groep een relevantievergelijking "ask1 == N" waarbij N de N-de vraag in de groep is (voorbeeld: de derde vraag in groep 1 heeft de relevantievergelijking "ask1 == 3").

Deze enquête werkt zowel in de 'alles in een keer', 'groep voor groep' als de 'vraag voor vraag'-modus. Aangezien de randomisatie is ingesteld in de eerste groep en die groep is verborgen (omdat alle vragen van ask1-ask5 zijn verborgen), blijft de randomisatie hetzelfde voor het onderwerp, maar elk onderwerp zal een andere randomisatie hebben.


Functies gedemonstreerd

  1. Vraagtype vergelijking
  2. Randomizatie functies
  3. Conditionele (if) functie


Schermafdruk

Dit is Group0, die het vraagtype Vergelijking gebruikt om willekeurige waarden van 1 tot 6 voor elke groep te selecteren (behalve de laatste groep, die slechts 4 vragen heeft). Merk op dat de functie "if ( )" eerst controleert of vraag1 al is ingesteld en zo ja, die waarde gebruikt. Als de waarde niet is ingesteld, gebruikt deze een willekeurige waarde om de waarde van ask1 in te stellen.



Deze groep laat zien hoe de variabele (ask4) uit Group0 wordt gebruikt om te bepalen welke vraag zichtbaar is in de vierde groep.



Download

Voorbeeld download.


Willekeurig een bepaald aantal vragen stellen uit een groep (een subset van de vragen)

  Dit is alleen van toepassing op alle willekeurige vragen uit één groep en alleen als de 'Groep voor groep' of 'Alles in een keer' -modus wordt gebruikt.



Overzicht

Deze enquête toont hoe je een aantal willekeurige vragen uit een groep kun tonen. Voorbeeld: toon 5 willekeurige vragen uit een groep met 10 vragen.

De enquête heeft een groep met 10 vragen. Alle vragen hebben dezelfde randomisatiegroepsnaam. Daardoor worden ze bij het laden van de pagina in een willekeurige volgorde getoond. Elke vraag heeft een relevantievergelijking dat de som van de "relevantieStatus" van alle andere vragen in de groep kleiner is dan het aantal vragen dat je wilt laten tonen. Omdat de status wordt toekent aan de vragen bij het weergeven, betekent dit dat het aantal al getoonde vragen eigenlijk geteld wordt.

Dus in ons voorbeeld 'toon 5 van de 10' zou de vergelijking voor Q1 zijn:

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

Voor vraag Q2 zou het zijn:

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

Enzovoort...


Functies gedemonstreerd

  1. relevanceStatus variable
  2. Randomisatie

Download

Voorbeeld downloaden.

Beoordelen door gebruiker geselecteerde producten

Overzicht

In het onderstaande voorbeeld zie je hoe je gebruikers kunt vragen een reeks producten te vermelden die hen interesseren, en ze vervolgens die producten laten beoordelen.


Functies gedemonstreerd

  1. Maatwerk antwoorden : bij het beoordelen van producten komen de labels uit het commentaarveld van de voorafgaande meerkeuzevraag.
  2. Maatwerk schalen : veel geavanceerde vragenopties, zoals schaalrubrieken, kunnen ook op maat worden gemaakt.


Schermafdruk

Deze afbeelding laat zien dat omdat alleen producten 1, 3 en 5 zijn geselecteerd, daarna alleen die 3 worden weergegeven (met behulp van het array_filter). Verder zijn de rijlabels in de tweede vraag ofwel het productnummer (als er niets is ingevoerd in het opmerkingenveld) of de inhoud van het opmerkingenveld.



Deze afbeelding laat zien hoe de op maat gemaakte vragen worden gespecificeerd.



Dit is het logica-bestand van deze vraag, waarmee je kunt controleren of de voorwaardelijke logica naar wens werkt (zijn er geen syntaxfouten):



De volgende afbeelding toont een groep waarin een 5-punts beoordelingsschaal wordt gespecificeerd (opties 1-5), de titel van de schaal en de producten die u wilt beoordelen. De laatste vraag laat zien dat elk van de onderdelen van de array-vraag kan worden aangepast met maatwerk:



De volgende afbeelding toont de logica-bestand van de laatste vraag. Zoals je kunt zien, kunnen de subvragen, antwoorden en schaalteksten met maatwerk worden aangepast.


Download

Voorbeeld downloaden.