x

Capitolele principale

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Ghid de inițiere rapidă
  3. LimeSurvey CE - Instalare
  4. Cum să proiectați un sondaj bun (Ghid)
  5. Noțiuni de bază
  6. Configurați LimeSurvey
  7. Sondaje - Introducere
  8. Setările sondajului
  9. Vizualizați meniul sondajului
  10. Vedeți structura sondajului
  11. Introducere - Întrebări
  12. Introducere - Grupuri de întrebări
  13. Introducere - Managementul Sondajelor
  14. Opțiunile barei de instrumente pentru sondaj
  15. Sondaj multilingv
  16. Ghid de inițiere rapidă - ExpressionScript
  17. Caracteristici avansate
  18. Întrebări generale frrecvente
  19. Depanare
  20. Soluții alternative
  21. Licență
  22. Jurnal de modificare a versiunii
  23. Pluginuri - Avansat
 Actions

ExpressionScript How-tos/ro: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Instrucțiuni pentru ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "<center>Fișier:em-nested-if-edit-screen.jpg</center>"
 
(77 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Prezentare generală a ceea ce a fost explicat anterior=




If you have followed so far the structure of the LimeSurvey manual, it means that you already the [[ExpressionScript - Presentation#Key_Definitions|LimeSurvey terminology]]. Next, we covered expressions and variables in order to learn how to enhance our surveys. In the next part, we moved to the types and meanings of [[ExpressionScript - Presentation#Syntax Highlighting|syntax highlighting]] to learn how to correct syntax errors.  
Dacă ați urmat până acum structura manualului LimeSurvey, înseamnă că aveți deja [[ExpressionScript - Presentation#Key_Definitions|Terminologia LimeSurvey]]. Apoi, am acoperit expresii și variabile pentru a învăța cum să ne îmbunătățim sondajele. În partea următoare, am trecut la tipurile și semnificațiile [[ExpressionScript - Presentation#Syntax Highlighting|sintaxă evidențiere]] pentru a afla cum să corectăm erorile de sintaxă.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
Cu aceste noțiuni de bază acoperite, am putea trece către exemple și să explicăm cum funcționează expresiile în LimeSurvey.  




=Syntax Highlighting=
=Evidențierea sintaxei=




The following screenshots give examples, but do not show the values of the tooltips. A tooltip is an informative box which is displayed whenever you hover the mouse over any bold colored words.
Următoarele capturi de ecran oferă exemple, dar nu arată valorile sfaturile instrumente. Un sfat explicativ este o casetă informativă care este afișată ori de câte ori treceți mouse-ul peste orice cuvinte colorate îndrăznețe.


Because of this syntax highlighting, it is very easy to compose correct expressions, even the ones that are complicated. Although the LimeSurvey team plans to try to build an Expression Builder GUI, you can use the existing syntax-highlighting to quickly identify and fix typos. You can also use the tooltips to validate the accuracy of your expressions (e.g., confirm you have selected the desired variable(s)).
Datorită acestei evidențieri de sintaxă, este foarte ușor să compuneți expresii corecte, chiar și cele care sunt complicate. Deși echipa LimeSurvey plănuiește să încerce să construiască o interfață grafică Expression Builder, puteți utiliza evidențierea de sintaxă existentă pentru a identifica și a remedia rapid greșelile de scriere. De asemenea, puteți utiliza sfaturile instrumente pentru a valida acuratețea expresiilor dvs. (de exemplu, confirmați că ați selectat variabilele dorite).


In each of the examples, there are three columns:
În fiecare dintre exemple, există trei coloane:
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Sursă - acesta este textul brut pe care l-ați introduce în câmpul de întrebare LimeSurvey
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#Pretty Print - acesta este echivalentul evidențiat de sintaxă a ceea ce ați introdus! N!#*Rețineți că expresiile sunt afișate cu un fundal cafeniu, dar nu sunt înconjurate de acolade în această evidențiere.
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Din moment ce EM acceptă substituția recursivă, afișarea acoladelor în evidențiere ar provoca erori de sintaxă
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#Rezultat - aceasta este rezultatul generat atunci când EM procesează sursa
#Result - this is the output generated when EM processes the source
#*Tot ceea ce poate fi înlocuit corect este
#*Everything that can be properly substituted is
#*Expresiile cu erori sunt afișate în linie, cu evidențierea sintaxelor. Erorile sunt înconjurate de o casetă roșie.
#*Expressions with errors are shown in-line, with syntax highlighting. Errors are surrounded by a red-lined box.




==Proper Syntax==
==Sintaxă corectă==




You may find below examples of proper syntax:
Mai jos puteți găsi exemple de sintaxă adecvată:
#Values: shows that known variables are color coded according to whether are set on the current page. Old-style INSERTANS:xxxx gets its own color-coding style
#Valori: arată că variabilele cunoscute sunt codificate cu culori în funcție de dacă sunt setate pe pagina curentă. INSERTANS în stil vechi:xxxx capătă propriul stil de codare a culorilor
#Question Attributes: shows that dot notation can access some properties of questions
#Atribute întrebări: arată că notația cu puncte poate accesa unele proprietăți ale întrebărilor
#Math: shows that basic and complex calculations are supported
#Math: arată că sunt acceptate calcule de bază și complexe
#TextProcessing: shows some of the available text-processing functions
#Procesare text: arată unele dintre funcțiile de procesare a textului disponibile
#Dates: shows two of the available date-related functions
#Date: arată două dintre funcțiile disponibile legate de dată
#Conditional: shows the usage of the if() function. The choices can be nested.
#Condițional: arată utilizarea funcției if(). Opțiunile pot fi imbricate.
#Tailored paragraph: you can completely customize a report based upon prior values
#Paragraf personalizat: puteți personaliza complet un raport pe baza valorilor anterioare
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#EM procese în șiruri: arată că poate face substituții în șiruri. Acest exemplu generează un nume de imagine adaptat.
#EM doesn't process curly braces like these: shows that if the curly braces are escaped, or there is a white space between the expression and the curly braces, ES ignores the expression.
#EM nu procesează acolade ca acestea: arată că dacă acoladele sunt scapă sau există un spațiu alb între expresie și acolade, ES ignoră expresia.




<center>[[File:em-syntax-highlighting-1-v2.jpg]]</center>
<center>[[Fișier:em-syntax-highlighting-1-v2.jpg]]</center>




==EM Syntax Containing Errors==
==Sintaxa EM care conține erori==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
Iată exemple de erori comune la tastarea expresiilor ES. Rețineți că sfaturile instrumente oferă informații suplimentare.
#Inline Javascript that forgot to add spaces after curly brace
#Inline Javascript care a uitat să adauge spații după acolade
#*Since "document.write" appears right after a curly brace, EM thinks it is an expression, and red-boxes "document" and "write" since they are undefined variable and functions, respectively
#*Din moment ce „document.write” apare imediat după o acoladă, EM crede că este o expresie și roșu- casetele „document” și „scrie” deoarece sunt variabile și, respectiv, funcții nedefinite
#Unknown/Misspelled variables, functions and operators
#Variabile, funcții și operatori necunoscute/ortografiate greșit
#*Here we forgot that we are using the variable name "gender" instead of "sex", but EM catches that error. It also red-boxes '++', since that is not a supported operator.
#*Aici am uitat că folosim numele variabilei „gen” în loc de „ sex”, dar EM prinde acea eroare. De asemenea, introduce casete roșii „++, deoarece acesta nu este un operator acceptat.
#Warns if use = instead of eq, or perform value assignments
#Avertizează dacă se folosește = în loc de eq, sau se efectuează atribuiri de valori
#*Note that the '=' and '+=' are in red text instead of black. If you hover the mouse over them, you will see warnings that you are assigning a value.
#*Rețineți că „=” și „+=” sunt în text roșu în loc de negru. Dacă treceți mouse-ul peste ele, veți vedea avertismente că atribuiți o valoare.
#Wrong number of arguments for functions
#Număr greșit de argumente pentru funcții
#*if() takes 3 arguments, but it has been given 4, so hovering over the red-boxed "if" will explain the error and show the supported syntax
#*if() ia 3 argumente, dar i s-au dat 4, așa că treceți cu mouse-ul peste „dacă” în casetă roșie va explica eroarea și va afișa sintaxa acceptată! N!#*sum() ia un număr nelimitat de argumente, dar am avut o virgulă finală înainte de parantezele de închidere, așa că este în casetă roșie! N!#Paranteze nepotrivite
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*Aceasta este una dintre cele mai frecvente erori la scrierea expresiilor.
#Mismatched parentheses
#*Aceasta arată două exemple de paranteze de închidere lipsă și un exemplu de a avea una prea multe paranteze de închidere.
#*This is one of the most common errors when writing expressions.
#Sintaxă nesuportată
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#*Dacă utilizați un operator sau o semnătură de punctuație pe care ES nu le acceptă, acesta îl va afișa în casetă roșie.
#Unsuported syntax
#Atribuții nevalide
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#*Unele variabile sunt readWrite și pot avea valorile modificate. Altele sunt doar pentru citire.
#Invalid assignments
#*Dacă încercați să modificați valoarea unei variabile numai pentru citire, nu puteți. EM va marca în roșu încercarea.
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Dacă încercați să atribuiți o valoare unei ecuații sau unui șir, veți primi și o eroare
#*If you try to change the value of a read-only variable, you can't. EM will red-box the attempt.
#*If you try to assign a value to an equation or a string, you will also get an error




<center>[[File:em-syntax-highlighting-errors-v2.jpg]]</center>
<center>[[Fișier:em-syntax-highlighting-errors-v2.jpg]]</center>




=="Live" examples of Syntax Highlighting with active tooltips==
=="Exemple live de evidențiere a sintaxelor cu sfaturi active==




<table border="1">
<table border="1">
<tr><th>Source</th><th>Pretty Print</th><th>Result</th></tr><tr><td><b>Here is an example of OK syntax with tooltips</b><br>Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
<tr><th> Sursă</th><th> Pretty Print</th><th> Rezultat</th></tr><tr><td> <b>Iată un exemplu de sintaxă OK cu sfaturi</b><br> Bună ziua {if(gen=='M','Mr.','Mrs.')} {prenume}, acum este {data('g:i a',time())}. Știți unde sunt copiii și animalele dvs. de companie {sum(numPets,numKids)}?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span style="background-color: #eee8aa;"><span title="Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span>(<span title="[java61764X1X5][G:2][Q:110]: What is your gender (male/female)?; value=M" style="color: green; font-weight: bold">gender</span> == <span title="" style="color: gray">'M'</span>,<span title="" style="color: gray">'Mr.'</span>,<span title="" style="color: gray">'Mrs.'</span>)</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: What is your last/surname?; value=Smith" style="color: green; font-weight: bold">surname</span></span>, it is now <span style="background-color: #eee8aa;"><span title="Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span>(<span title="" style="color: gray">'g:i a'</span>,<span title="Return current UNIX timestamp; number time()" style="color: blue; font-weight: bold">time</span>())</span>. Do you know where your <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span> children and pets are?
</td><td><b>Iată un exemplu de sintaxă OK cu sfaturi</b><br> Bună ziua <span style="background-color: #eee8aa;"><span title="în stil Excel dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals); dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals)" style="color: blue; font-weight: bold">dacă</span> ( <span title="[java61764X1X5][G:2][Q:110]: Care este genul tău (bărbat/feminin)?; valoare=M" style="color: green; font-weight: bold">gen</span> == <span title="" style="color: gray">'M'</span> , <span title="" style="color: gray">'Mr.'</span> , <span title="" style="color: gray">'Mrs.'</span> )</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: Care este numele/numele tău?; valoare=Smith" style="color: green; font-weight: bold">nume de familie</span></span> , acum este <span style="background-color: #eee8aa;"><span title="Formatați o dată/oră locală; șir de date(format [, timestamp=time()])" style="color: blue; font-weight: bold">data</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Returnează marca temporală UNIX curentă; număr timp()" style="color: blue; font-weight: bold">ora</span> ())</span> . Știți unde sunt <span style="background-color: #eee8aa;"><span title="Calculați suma valorilor dintr-o matrice; suma numerică (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> ( <span title="[java61764X1X4][G:2][Q:50]: Câte animale de companie ai?; valoare=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][Q:40]: Câți copii aveți?; valoare=2" style="color: green; font-weight: bold">numKids</span> )</span> copiii și animalele dvs. de companie?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span id="LEMtailor_Q_40_1">Mr.</span> <span id="LEMtailor_Q_40_2">Smith</span>, it is now 6:07 am. Do you know where your <span id="LEMtailor_Q_40_4">3</span> children and pets are?
</td><td><b>Iată un exemplu de sintaxă OK cu sfaturi</b><br> Bună ziua, <span id="LEMtailor_Q_40_1">domnule</span> <span id="LEMtailor_Q_40_2">Smith</span> , acum este ora 6:07. Stii unde sunt cei <span id="LEMtailor_Q_40_4">3</span> copii si animalele tale?
</td></tr>
</td></tr>  
<tr><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: {notSetYet}<br>Unknown Function: {iff(numPets&gt;numKids,1,2)}<br>Unknown Variable: {sum(age,num_pets,numKids)}<br>Wrong # parameters: {sprintf()},{if(1,2)},{date()}<br>Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br>Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
<tr><td> <b>Iată erori comune, astfel încât să puteți vedea sfaturile instrumente</b><br> Variabilele utilizate înainte de a fi declarate: {notSetYet}<br> Funcție necunoscută: {iff(numPets>numKids,1,2)}<br> Variabilă necunoscută: {sum(age,num_pets,numKids)}<br> # parametri greșiți: {sprintf()},{if(1,2)},{date()}<br> Atribuiți variabile numai în citire:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Paranteze dezechilibrate: {pow(3,4},{(pow(3,4)},{pow(3,4))}


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Iată erori comune, astfel încât să puteți vedea sfaturile instrumente</b><br> Variabilele utilizate înainte de a fi declarate: <span style="background-color: #eee8aa;"><span title="Această variabilă nu este declarată decât pe o pagină ulterioară; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Această variabilă nu este declarată decât pe o pagină ulterioară; Nu este o expresie validă; [java61764X3X6][G:3][Q:200]: Cine va câștiga următoarele alegeri?; valoare=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Funcție necunoscută: <span style="background-color: #eee8aa;"><span title="Funcție nedefinită" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcție nedefinită" style="color: blue; font-weight: bold">ff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Câte animale de companie ai?; valoare=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Câți copii aveți?; valoare=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variabilă necunoscută: <span style="background-color: #eee8aa;"><span title="Calculați suma valorilor dintr-o matrice; suma numerică (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span> ( <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="variabila nedefinita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variabila nedefinita" style="color: red; font-weight: bold">num_animale de companie</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Câți copii aveți?; valoare=2" style="color: green; font-weight: bold">numKids</span> )</span><br> # parametri greșiți: <span style="background-color: #eee8aa;"><span title="Funcția trebuie să aibă cel puțin 1 argument(e); Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția trebuie să aibă cel puțin 1 argument(e); Nu este o expresie validă; Returnează un șir formatat; șir sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Funcția nu acceptă acel număr de argumente: 2. Funcția acceptă atâtea argumente, unde -1=nelimitat: 3; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția nu acceptă acel număr de argumente: 2. Funcția acceptă atâtea argumente, unde -1=nelimitat: 3; Nu este o expresie validă; în stil Excel dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals); dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="Funcția nu acceptă acel număr de argumente: 0. Funcția acceptă atâtea argumente, unde -1=nelimitat: 1,2; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția nu acceptă acel număr de argumente: 0. Funcția acceptă atâtea argumente, unde -1=nelimitat: 1,2; Nu este o expresie validă; Formatați o dată/oră locală; șir de date(format [, timestamp=time()])" style="color: blue; font-weight: bold">data</span></span> ()</span><br> Atribuiți variante numai pentru citire: <span style="background-color: #eee8aa;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă; ; valoare=muncitor" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Atribuirea unei noi valori unei variabile" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă; [java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span></span> <span title="Atribuirea unei noi valori unei variabile" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">„Sally”</span></span><br> Paranteze dezechilibrate: <span style="background-color: #eee8aa;"><span title="Parantezele nu sunt echilibrate" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parantezele nu sunt echilibrate; Expresie exponențială; număr pow (bază, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parantezele nu sunt echilibrate" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Expresie exponențială; număr pow (bază, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expresie exponențială; număr pow (bază, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Au fost detectate paranteze din dreapta" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Iată erori comune, astfel încât să puteți vedea sfaturile instrumente</b><br> Variabilele utilizate înainte de a fi declarate: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Această variabilă nu este declarată decât pe o pagină ulterioară; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Această variabilă nu este declarată decât pe o pagină ulterioară; Nu este o expresie validă; [java61764X3X6][G:3][Q:200]: Cine va câștiga următoarele alegeri?; valoare=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Funcție necunoscută: <span style="background-color: #eee8aa;"><span title="Funcție nedefinită" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcție nedefinită" style="color: blue; font-weight: bold">ff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Câte animale de companie ai?; valoare=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Câți copii aveți?; valoare=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variabilă necunoscută: <span style="background-color: #eee8aa;"><span title="Calculați suma valorilor dintr-o matrice; suma numerică (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span> ( <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="variabila nedefinita" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variabila nedefinita" style="color: red; font-weight: bold">num_animale de companie</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Câți copii aveți?; valoare=2" style="color: green; font-weight: bold">numKids</span> )</span><br> # parametri greșiți: <span style="background-color: #eee8aa;"><span title="Funcția trebuie să aibă cel puțin 1 argument(e); Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția trebuie să aibă cel puțin 1 argument(e); Nu este o expresie validă; Returnează un șir formatat; șir sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Funcția nu acceptă acel număr de argumente: 2. Funcția acceptă atâtea argumente, unde -1=nelimitat: 3; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția nu acceptă acel număr de argumente: 2. Funcția acceptă atâtea argumente, unde -1=nelimitat: 3; Nu este o expresie validă; în stil Excel dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals); dacă (test, rezultat_dacă_adevărat, rezultat_dacă_fals)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="Funcția nu acceptă acel număr de argumente: 0. Funcția acceptă atâtea argumente, unde -1=nelimitat: 1,2; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Funcția nu acceptă acel număr de argumente: 0. Funcția acceptă atâtea argumente, unde -1=nelimitat: 1,2; Nu este o expresie validă; Formatați o dată/oră locală; șir de date(format [, timestamp=time()])" style="color: blue; font-weight: bold">data</span></span> ()</span><br> Atribuiți variante numai pentru citire: <span style="background-color: #eee8aa;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă; ; valoare=muncitor" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Atribuirea unei noi valori unei variabile" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Valoarea acestei variabile nu poate fi modificată; Nu este o expresie validă; [java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span></span> <span title="Atribuirea unei noi valori unei variabile" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">„Sally”</span></span></span><br> Paranteze dezechilibrate: <span style="background-color: #eee8aa;"><span title="Parantezele nu sunt echilibrate" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parantezele nu sunt echilibrate; Expresie exponențială; număr pow (bază, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Parantezele nu sunt echilibrate" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Expresie exponențială; număr pow(bază, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expresie exponențială; număr pow (bază, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Au fost detectate paranteze din dreapta" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>
<tr><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': {min(++age, --age,age % 2);}<br>Nor '|', '&amp;', '^': {(sum(2 | 3,3 &amp; 4,5 ^ 6)}}<br>Nor arrays: {name[2], name['mine']}
<tr><td> <b>Iată câteva dintre sintaxa neacceptate</b><br> Nu există suport pentru „++, --, %,;: {min(++age, --age,age % 2);}<br> Nici „|, &, ^: {(sum(2 | 3,3 & 4,5 ^ 6)}}<br> Nici matrice: {nume[2], nume['al meu']}
</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td> <b>Iată câteva dintre sintaxa neacceptate</b><br> Fără suport pentru „++, --, %,;: <span style="background-color: #eee8aa;"><span title="Găsiți cea mai mică valoare; număr min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Nici „|, &, ^: <span style="background-color: #eee8aa;">( <span title="Calculați suma valorilor dintr-o matrice; suma numerică (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> (2 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Nici matrice: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">„al meu”</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td><b>Iată câteva dintre sintaxa neacceptate</b><br> Fără suport pentru „++, --, %,;: <span style="background-color: #eee8aa;"><span title="Găsiți cea mai mică valoare; număr min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> , <span title="[java61764X1X2][G:2][Q:30]: Câți ani ai?; valoare=45" style="color: green; font-weight: bold">vârstă</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Nici „|, &, ^: <span style="background-color: #eee8aa;">( <span title="Calculați suma valorilor dintr-o matrice; suma numerică (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> (2 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Nici matrice: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Care este prenumele tău?; valoare=Petru" style="color: green; font-weight: bold">nume</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">„al meu”</span> <span title="Sintaxă neacceptată" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td></tr>
</td></tr>
Line 99: Line 96:




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Exemple de personalizare (de ex. extinderea {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Stimate {domnule}/{doamna} Smith..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Utilizați funcția if() pentru a alege în mod condiționat dacă să afișați „Mr. sau „doamna”.


The syntax is if(test,do_if_true,do_if_false).
Sintaxa este if(test,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||Cod||Întrebare||Tip
|-
|-
|1||gender||What is your gender?||Gender
|1||gen||Care este genul tău?||Sex
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |example1||Dragă {if(gen=='M','Domn','Doamnă')} Smith, ...||Text lung liber
|}
|}


Line 121: Line 118:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
După cum se poate observa mai jos, „domnul” și „doamna” sunt adaptate la ceea ce respondentul selectează ca răspuns la întrebarea „sex”.




<center>[[File:em-tailoring-q-ex1-usage.jpg]]
<center>[[Fișier:em-tailoring-q-ex1-usage.jpg]]
[[File:em-tailoring-q-ex2-usage.jpg]]</center>
[[Fișier:em-tailoring-q-ex2-usage.jpg]]</center>




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Stimate {Domnule}/{Doamna} Smith..." în e-mailul de invitație==




You can use the example above in the invitation email using attributes from the token table. Use the if() function to choose whether 'Mr.' or 'Mrs.' should be used in the email.
Puteți folosi exemplul de mai sus în e-mailul de invitație folosind atribute din tabelul de simboluri. Utilizați funcția if() pentru a alege dacă „Mr.” sau „Doamna”. ar trebui folosit în e-mail.




The syntax is "if(test,do_if_true,do_if_false)".
Sintaxa este „dacă(test,do_dacă_adevărat,do_dacă_fals).


{|
{|
|#||attribute||value
|#||atribut||valoare
|-
|-
|1||Last name||Smith
|1||Nume||Smith
|-
|-
|2||Email address||test@test.com
|2||Adresă de e-mail||test@test. com
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 144:




Text in invitation email:
Text în e-mailul de invitație:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">


Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
Stimate {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},


you have been invited to participate in a survey:
ați fost invitat să participați la un sondaj:


https:/...
https:/...
Line 163: Line 160:




email View:
e-mail Vizualizare:




Line 169: Line 166:




=Calculation / Assessment Examples=
=Exemple de calcul/evaluare=




==Calculate assessment values at runtime and store the results in the survey data==
==Calculați valorile de evaluare în timpul execuției și stocați rezultatele în datele sondajului==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Acest exemplu utilizează toate caracteristicile EM, inclusiv Relevanța, Adaptarea și tipul de întrebare Ecuație.


It also shows that all of them are JavaScript-enabled, so if you have these features on a page, it will dynamically change as people set and change their answers.
De asemenea, arată că toate sunt activate pentru JavaScript, așa că dacă aveți aceste funcții pe o pagină, se va schimba dinamic pe măsură ce oamenii își stabilesc și își schimbă răspunsurile.


{|
{|
|#||Code||Question||Type||Relevance
|#||Cod||Întrebare||Tip||Relevanță
|-
|-
|1||numKids||How many children do you have?||Numerical input||1
|1||numKids||Câți copii aveți?||Introducere numerică||1
|-
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|2||kid1||Câți ani are primul tău copil?||Intrare numerică||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|3||kid2||Câți ani are al doilea tău copil copil?||Intrare numerică||numKids >= 2
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|4||kid3||Câți ani are al treilea copil?||Intrare numerică||numKids >= 3
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|5||kid4||Câți ani are al patrulea copil?||Intrare numerică||numKids >= 4
|-
|-
|6||sumKidAges||{sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)}||Equation||1
|6||sumKidAges||{sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)}||Ecuație||1
|-
|-
|7||kidSummary||You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')}||Text display||1
|7||kidSummary||Ați spus că aveți {numKids}. {dacă(numKids==1,'copil','copii')}. {if(numKids>1,implode(' ','Suma vârstelor primilor tăi ',min(numKids,4),' copii este ',sumKidAges,'.'),' ')}||Afișarea textului| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
Pentru a descărca acest exemplu, faceți clic pe următorul link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].




You may find below screenshots of representative questions. As you can see, EM syntax-highlights all fields that might contain tailoring. Here, you see examples of syntax-highlighting Relevance, the Equation question type, and substitutions within a question. You can also use substitutions within Help, Group header display, Welcome message, and End message.
Puteți găsi mai jos capturi de ecran cu întrebări reprezentative. După cum puteți vedea, sintaxa EM evidențiază toate câmpurile care ar putea conține personalizare. Aici vedeți exemple de relevanță pentru evidențierea sintaxelor, tipul de întrebare Ecuație și substituții în cadrul unei întrebări. De asemenea, puteți utiliza substituții în Ajutor, Afișare antet grup, Mesaj de bun venit și Mesaj de final.


In the next example, since the relevance is {numKids >= 2), the question will only be visible if the respondent reports that she has at least two children.
În exemplul următor, întrucât relevanța este {numKids >= 2), întrebarea va fi vizibilă doar dacă respondentul raportează că are cel puțin doi copii.




Line 209: Line 206:




Below, you may observe that each variable has the .NAOK suffix attached to it. This is because of how EM supports cascading relevance. If you did not have .NAOK, then the sum would only be computed if the person said she has 4 children (e.g., if all of the variables are relevant). The usage of .NAOK means that we want to compute the sum even if all or some of the variables are irrelevant (e.g., "Not Applicable" (NA) is alright (OK)).
Mai jos, puteți observa că fiecare variabilă are atașat sufixul .NAOK. Acest lucru se datorează modului în care EM acceptă relevanța în cascadă. Dacă nu ați avut .NAOK, atunci suma ar fi calculată numai dacă persoana a spus că are 4 copii (de exemplu, dacă toate variabilele sunt relevante). Utilizarea .NAOK înseamnă că dorim să calculăm suma chiar dacă toate sau unele dintre variabile sunt irelevante (de exemplu, „Nu se aplică” (NA) este în regulă (OK)).


However, the .NAOK attribute only affects whether variables are passed into EM. If the respondent initially says she has 3 children, and enters ages for each, then changes her mind and says she has 2, we don't want to see the sum of the 3 entered values - since the third child is "not applicable" in our case anymore:
Cu toate acestea, atributul .NAOK afectează doar dacă variabilele sunt transmise în EM. Dacă respondentul spune inițial că are 3 copii și introduce vârste pentru fiecare, apoi se răzgândește și spune că are 2, nu vrem să vedem suma celor 3 valori introduse - deoarece al treilea copil este „nu se aplică” mai in cazul nostru:




Line 217: Line 214:




Each separate Expression is color coded with a tan background. As you can see, there are three separate Expressions here. The last one contains a message that is conditionally shown only if the person has more than one child.
Fiecare expresie separată are un cod de culoare cu un fundal cafeniu. După cum puteți vedea, există trei expresii separate aici. Ultimul conține un mesaj care este afișat condiționat numai dacă persoana are mai mulți copii.




Line 223: Line 220:




Now, here are screenshots of the survey in action.
Acum, iată capturi de ecran ale sondajului în acțiune.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Când vizitați prima pagină, vedeți acest lucru. Rețineți că spune „Ai 0 „copii” în loc de „Ai 0 „copii””.




Line 231: Line 228:




If I change the value for number of children to 1, the display instantly changes to this, even though it is on the same page:
Dacă schimb valoarea pentru numărul de copii la 1, afișajul se schimbă instantaneu în aceasta, chiar dacă este pe aceeași pagină:




Line 237: Line 234:




Now notice that the grammar is correct: "You have 1 '''child'''".
Acum observați că gramatica este corectă: „Ai 1 '''copil'''.


Now I change the value for number of children to 3, and the display instantly changes to this.
Acum schimb valoarea pentru numărul de copii la 3, iar afișajul se schimbă instantaneu în aceasta.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Observați că acum vedeți mesajul condiționat în partea de jos: „Suma vârstelor primilor 3 copii ai tăi este 0..




Line 247: Line 244:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Acum voi introduce vârstele pentru copiii mei imaginari și obțin acest afișaj, care rezumă vârstele lor:




Line 253: Line 250:




Again, the score and display updates instantly as I enter the values, so you can use this to show a running total of an Assessment Score.
Din nou, scorul și afișajul se actualizează instantaneu pe măsură ce introduc valorile, așa că puteți folosi acest lucru pentru a afișa un total cumulat al unui Scor de evaluare.




Now, I change the value for the number of children to 2. The display has changed to this:
Acum, schimb valoarea pentru numărul de copii la 2. Afișajul s-a schimbat în următorul:




Line 262: Line 259:




Notice that although I had entered a value of 5.5 for the third child, the report now only sums the values of my first 2 children.
Observați că, deși am introdus o valoare de 5,5 pentru al treilea copil, raportul acum însumează doar valorile primilor mei 2 copii.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
Motivul pentru aceasta este că a treia valoare este acum irelevantă, iar valorile irelevante sunt ignorate în mod activ de EM.


If I were to change the number of kids back to 3, I would see the value of 5.5 I entered again. So, I don't lose any information I enter on the page.
Dacă ar fi să schimb numărul de copii înapoi la 3, aș vedea valoarea de 5,5 pe care am introdus-o din nou. Deci, nu pierd nicio informație pe care o introduc pe pagină.


However, if I navigate to the Next or Previous page, all irrelevant values will be NULLed out in the session and in the database. So, if I were to keep the value at 2, go to the next page, and then come back and state that I actually have 3 kids, I would no longer see the age of 5.5.
Cu toate acestea, dacă navighez la pagina Următoarea sau Anterior, toate valorile irelevante vor fi anulate în sesiune și în baza de date. Deci, dacă ar fi să mențin valoarea la 2, merg la pagina următoare, apoi revin și afirm că de fapt am 3 copii, nu aș mai vedea vârsta de 5,5 ani.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Introduceți date și vedeți un raport care se schimbă dinamic cu ceea ce a fost introdus pe aceeași pagină==




This example presents the Tailoring process within LimeSurvey.
Acest exemplu prezintă procesul de croitorie din LimeSurvey.


To download this example, click on the following link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Dynamic changes survey example]].
Pentru a descărca acest exemplu, faceți clic pe următorul link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Exemplu de sondaj privind modificările dinamice]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Iată cum arată pagina inițial. Vedeți doar întrebarea în ce oraș locuiți:




Line 284: Line 281:




Once you start to enter an answer, the tailoring process is also starting:
Odată ce începeți să introduceți un răspuns, începe și procesul de croitorie:


<center>[[File:em-on_page_report-usage-2.jpg]]</center>
<center>[[File:em-on_page_report-usage-2.jpg]]</center>




As you enter answers, the table at the bottom of the page is updated to show the answer codes and values of your responses.
Pe măsură ce introduceți răspunsurile, tabelul din partea de jos a paginii este actualizat pentru a afișa codurile de răspuns și valorile răspunsurilor dvs.




<center>[[File:em-on_page_report-usage-3.jpg]]</center>
<center>[[File:em-on_page_report-usage-3.jpg]]</center>


=Common Debugging Examples=
=Exemple comune de depanare=




==Nested if() Statements (Conditional Logic)==
==Instrucțiuni imbricate if() (logică condiționată)==




EM supports the function "if(test,do_if_true,do_if_false)" so that you can perform conditional logic or tailoring. This function can be nested to do the equivalent of "if { } else if { } else {  }". EM will let you know if the parentheses are not balanced (e.g., you are missing a closing right parenthesis), or if you have any extra right parentheses. You should try to count the parentheses as you compose long nested if statements, save it, check for syntax errors, and fix them if any are found. Let's check together the below example.  
EM acceptă funcția „if(test,do_if_true,do_if_false)”, astfel încât să puteți efectua logica condiționată sau adaptarea. Această funcție poate fi imbricată pentru a face echivalentul cu „if { } else if { } else { }. EM vă va anunța dacă parantezele nu sunt echilibrate (de exemplu, vă lipsește o paranteză de închidere din dreapta) sau dacă aveți paranteze suplimentare în dreapta. Ar trebui să încercați să numărați parantezele pe măsură ce compuneți instrucțiuni if imbricate lungi, să le salvați, să verificați erorile de sintaxă și să le remediați dacă sunt găsite. Să verificăm împreună exemplul de mai jos.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
Grupul de întrebări folosit mai jos poate fi accesat de aici: [[Media:Example_tailoring_group11.zip|Cosator de personalizare example.lsg]]




First, with nothing entered, you just see "Hello."
În primul rând, fără a intra nimic, vedeți doar „Bună ziua”.




Line 311: Line 308:




If you enter a name, it says, "Hello {name}."
Dacă introduceți un nume, acesta spune „Bună ziua {nume}.




<center>[[File:em-nested-if-name.jpg]]</center>
<center>[[Fișier:em-nested-if-name.jpg]]</center>




If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:
Dacă introduceți o vârstă, primiți un mesaj personalizat, în funcție de dacă sunteți sau nu un copil de vârstă preșcolară:




<center>[[File:em-nested-if-toddler.jpg]]</center>
<center>[[Fișier:em-nested-if-toddler.jpg]]</center>




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
De vârstă școlară, adolescent sau adult. Iată un adolescent care vrea să fie anonim:




<center>[[File:em-nested-if-teenager.jpg]]</center>
<center>[[Fișier:em-nested-if-teenager.jpg]]</center>




Here is the logic file of the group. As you can see in the "if-based" question, there are nested if statements based upon the person's age.
Aici este fișierul logic al grupului. După cum puteți vedea în întrebarea „if-based”, există declarații if imbricate bazate pe vârsta persoanei.




<center>[[File:em-nested-if-logic-file.jpg]]</center>
<center>[[Fișier:em-nested-if-logic-file.jpg]]</center>




When you are originally editing this question, it is likely that at some point, you will have the wrong number of parentheses. Here's what happens if you have too few:
Când editați inițial această întrebare, este posibil ca, la un moment dat, să aveți un număr greșit de paranteze. Iată ce se întâmplă dacă aveți prea puține:




<center>[[File:em-nested-if-missing-closing-paren.jpg]]</center>
<center>[[Fișier:em-nested-if-missing-closing-paren.jpg]]</center>




If you hover over the word "if", which is surrounded by a red box, it says "Parentheses not balanced". In this case, there should be four closing parentheses after "already an adult!", but there are only three.
Dacă treci cu mouse-ul peste cuvântul „dacă”, care este înconjurat de o căsuță roșie, se spune „Paranteze nu sunt echilibrate”. În acest caz, ar trebui să existe patru paranteze de închidere după „deja un adult!, dar sunt doar trei.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Dacă, pe de altă parte, aveți o paranteză în plus dreapta, aceasta va fi înconjurată de o casetă roșie, astfel:




<center>[[File:em-nestedd-if-extra-right-paren.jpg]]</center>
<center>[[Fișier:em-nestedd-if-extra-right-paren.jpg]]</center>




When you are actually editing the question, the question looks like this:
Când editați de fapt întrebarea, întrebarea arată astfel:




<center>[[File:em-nested-if-edit-screen.jpg]]</center>
<center>[[Fișier:em-nested-if-edit-screen.jpg]]</center>

Latest revision as of 09:19, 8 November 2023


Prezentare generală a ceea ce a fost explicat anterior

Dacă ați urmat până acum structura manualului LimeSurvey, înseamnă că aveți deja Terminologia LimeSurvey. Apoi, am acoperit expresii și variabile pentru a învăța cum să ne îmbunătățim sondajele. În partea următoare, am trecut la tipurile și semnificațiile sintaxă evidențiere pentru a afla cum să corectăm erorile de sintaxă.

Cu aceste noțiuni de bază acoperite, am putea trece către exemple și să explicăm cum funcționează expresiile în LimeSurvey.


Evidențierea sintaxei

Următoarele capturi de ecran oferă exemple, dar nu arată valorile sfaturile instrumente. Un sfat explicativ este o casetă informativă care este afișată ori de câte ori treceți mouse-ul peste orice cuvinte colorate îndrăznețe.

Datorită acestei evidențieri de sintaxă, este foarte ușor să compuneți expresii corecte, chiar și cele care sunt complicate. Deși echipa LimeSurvey plănuiește să încerce să construiască o interfață grafică Expression Builder, puteți utiliza evidențierea de sintaxă existentă pentru a identifica și a remedia rapid greșelile de scriere. De asemenea, puteți utiliza sfaturile instrumente pentru a valida acuratețea expresiilor dvs. (de exemplu, confirmați că ați selectat variabilele dorite).

În fiecare dintre exemple, există trei coloane:

  1. Sursă - acesta este textul brut pe care l-ați introduce în câmpul de întrebare LimeSurvey
  2. Pretty Print - acesta este echivalentul evidențiat de sintaxă a ceea ce ați introdus! N!#*Rețineți că expresiile sunt afișate cu un fundal cafeniu, dar nu sunt înconjurate de acolade în această evidențiere.
    • Din moment ce EM acceptă substituția recursivă, afișarea acoladelor în evidențiere ar provoca erori de sintaxă
  3. Rezultat - aceasta este rezultatul generat atunci când EM procesează sursa
    • Tot ceea ce poate fi înlocuit corect este
    • Expresiile cu erori sunt afișate în linie, cu evidențierea sintaxelor. Erorile sunt înconjurate de o casetă roșie.


Sintaxă corectă

Mai jos puteți găsi exemple de sintaxă adecvată:

  1. Valori: arată că variabilele cunoscute sunt codificate cu culori în funcție de dacă sunt setate pe pagina curentă. INSERTANS în stil vechi:xxxx capătă propriul stil de codare a culorilor
  2. Atribute întrebări: arată că notația cu puncte poate accesa unele proprietăți ale întrebărilor
  3. Math: arată că sunt acceptate calcule de bază și complexe
  4. Procesare text: arată unele dintre funcțiile de procesare a textului disponibile
  5. Date: arată două dintre funcțiile disponibile legate de dată
  6. Condițional: arată utilizarea funcției if(). Opțiunile pot fi imbricate.
  7. Paragraf personalizat: puteți personaliza complet un raport pe baza valorilor anterioare
  8. EM procese în șiruri: arată că poate face substituții în șiruri. Acest exemplu generează un nume de imagine adaptat.
  9. EM nu procesează acolade ca acestea: arată că dacă acoladele sunt scapă sau există un spațiu alb între expresie și acolade, ES ignoră expresia.


Fișier:em-syntax-highlighting-1-v2.jpg


Sintaxa EM care conține erori

Iată exemple de erori comune la tastarea expresiilor ES. Rețineți că sfaturile instrumente oferă informații suplimentare.

  1. Inline Javascript care a uitat să adauge spații după acolade
    • Din moment ce „document.write” apare imediat după o acoladă, EM crede că este o expresie și roșu- casetele „document” și „scrie” deoarece sunt variabile și, respectiv, funcții nedefinite
  2. Variabile, funcții și operatori necunoscute/ortografiate greșit
    • Aici am uitat că folosim numele variabilei „gen” în loc de „ sex”, dar EM prinde acea eroare. De asemenea, introduce casete roșii „++”, deoarece acesta nu este un operator acceptat.
  3. Avertizează dacă se folosește = în loc de eq, sau se efectuează atribuiri de valori
    • Rețineți că „=” și „+=” sunt în text roșu în loc de negru. Dacă treceți mouse-ul peste ele, veți vedea avertismente că atribuiți o valoare.
  4. Număr greșit de argumente pentru funcții
    • if() ia 3 argumente, dar i s-au dat 4, așa că treceți cu mouse-ul peste „dacă” în casetă roșie va explica eroarea și va afișa sintaxa acceptată! N!#*sum() ia un număr nelimitat de argumente, dar am avut o virgulă finală înainte de parantezele de închidere, așa că este în casetă roșie! N!#Paranteze nepotrivite
    • Aceasta este una dintre cele mai frecvente erori la scrierea expresiilor.
    • Aceasta arată două exemple de paranteze de închidere lipsă și un exemplu de a avea una prea multe paranteze de închidere.
#Sintaxă nesuportată
    • Dacă utilizați un operator sau o semnătură de punctuație pe care ES nu le acceptă, acesta îl va afișa în casetă roșie.
  1. Atribuții nevalide
    • Unele variabile sunt readWrite și pot avea valorile modificate. Altele sunt doar pentru citire.
    • Dacă încercați să modificați valoarea unei variabile numai pentru citire, nu puteți. EM va marca în roșu încercarea.
    • Dacă încercați să atribuiți o valoare unei ecuații sau unui șir, veți primi și o eroare


Fișier:em-syntax-highlighting-errors-v2.jpg


"Exemple live de evidențiere a sintaxelor cu sfaturi active

Sursă Pretty Print Rezultat
Iată un exemplu de sintaxă OK cu sfaturi
Bună ziua {if(gen=='M','Mr.','Mrs.')} {prenume}, acum este {data('g:i a',time())}. Știți unde sunt copiii și animalele dvs. de companie {sum(numPets,numKids)}?
Iată un exemplu de sintaxă OK cu sfaturi
Bună ziua dacă ( gen == 'M' , 'Mr.' , 'Mrs.' ) nume de familie , acum este data ( 'g:i a' , ora ()) . Știți unde sunt suma ( numPets , numKids ) copiii și animalele dvs. de companie?
Iată un exemplu de sintaxă OK cu sfaturi
Bună ziua, domnule Smith , acum este ora 6:07. Stii unde sunt cei 3 copii si animalele tale?
Iată erori comune, astfel încât să puteți vedea sfaturile instrumente
Variabilele utilizate înainte de a fi declarate: {notSetYet}
Funcție necunoscută: {iff(numPets>numKids,1,2)}
Variabilă necunoscută: {sum(age,num_pets,numKids)}
# parametri greșiți: {sprintf()},{if(1,2)},{date()}
Atribuiți variabile numai în citire:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Paranteze dezechilibrate: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Iată erori comune, astfel încât să puteți vedea sfaturile instrumente
Variabilele utilizate înainte de a fi declarate: notSetYet
Funcție necunoscută: ff ( numPets > numKids ,1,2)
Variabilă necunoscută: sum ( vârstă , num_animale de companie , numKids )
# parametri greșiți: sprintf () , if (1,2) , data ()
Atribuiți variante numai pentru citire: TOKEN:ATTRIBUTE_1 += 10 , nume = „Sally”
Paranteze dezechilibrate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Iată erori comune, astfel încât să puteți vedea sfaturile instrumente
Variabilele utilizate înainte de a fi declarate: notSetYet
Funcție necunoscută: ff ( numPets > numKids ,1,2)
Variabilă necunoscută: sum ( vârstă , num_animale de companie , numKids )
# parametri greșiți: sprintf () , if (1,2) , data ()
Atribuiți variante numai pentru citire: TOKEN:ATTRIBUTE_1 += 10 , nume = „Sally”
Paranteze dezechilibrate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Iată câteva dintre sintaxa neacceptate
Nu există suport pentru „++”, „--”, „%”,”;”: {min(++age, --age,age % 2);}
Nici „|”, „&”, „^”: {(sum(2 | 3,3 & 4,5 ^ 6)}}
Nici matrice: {nume[2], nume['al meu']}
Iată câteva dintre sintaxa neacceptate
Fără suport pentru „++”, „--”, „%”,”;”: min ( ++ vârstă , -- vârstă , vârstă % 2) ;
Nici „|”, „&”, „^”: ( suma (2 | 3,3 & 4,5 ^ 6) }
Nici matrice: nume [ 2 ] , nume [ „al meu” ]
Iată câteva dintre sintaxa neacceptate
Fără suport pentru „++”, „--”, „%”,”;”: min ( ++ vârstă , -- vârstă , vârstă % 2) ;
Nici „|”, „&”, „^”: ( suma (2 | 3,3 & 4,5 ^ 6) }
Nici matrice: nume [ 2 ] , nume [ „al meu” ]


Exemple de personalizare (de ex. extinderea {INSERTANS:xxx})

"Stimate {domnule}/{doamna} Smith..."

Utilizați funcția if() pentru a alege în mod condiționat dacă să afișați „Mr. sau „doamna”.

Sintaxa este if(test,do_if_true,do_if_false).

# Cod Întrebare Tip
1 gen Care este genul tău? Sex
|example1 Dragă {if(gen=='M','Domn','Doamnă')} Smith, ... Text lung liber



După cum se poate observa mai jos, „domnul” și „doamna” sunt adaptate la ceea ce respondentul selectează ca răspuns la întrebarea „sex”.


Fișier:em-tailoring-q-ex1-usage.jpg Fișier:em-tailoring-q-ex2-usage.jpg


"Stimate {Domnule}/{Doamna} Smith..." în e-mailul de invitație

Puteți folosi exemplul de mai sus în e-mailul de invitație folosind atribute din tabelul de simboluri. Utilizați funcția if() pentru a alege dacă „Mr.” sau „Doamna”. ar trebui folosit în e-mail.


Sintaxa este „dacă(test,do_dacă_adevărat,do_dacă_fals)”.

# atribut valoare
1 Nume Smith
2 Adresă de e-mail test@test. com
3 ATTRIBUTE_2 M


Text în e-mailul de invitație:

Stimate {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

ați fost invitat  participați la un sondaj:

https:/...



e-mail Vizualizare:



Exemple de calcul/evaluare

Calculați valorile de evaluare în timpul execuției și stocați rezultatele în datele sondajului

Acest exemplu utilizează toate caracteristicile EM, inclusiv Relevanța, Adaptarea și tipul de întrebare Ecuație.

De asemenea, arată că toate sunt activate pentru JavaScript, așa că dacă aveți aceste funcții pe o pagină, se va schimba dinamic pe măsură ce oamenii își stabilesc și își schimbă răspunsurile.

# Cod Întrebare Tip Relevanță
1 numKids Câți copii aveți? Introducere numerică 1
2 kid1 Câți ani are primul tău copil? Intrare numerică numKids >= 1
3 kid2 Câți ani are al doilea tău copil copil? Intrare numerică numKids >= 2
4 kid3 Câți ani are al treilea copil? Intrare numerică numKids >= 3
5 kid4 Câți ani are al patrulea copil? Intrare numerică numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Ecuație 1
7 kidSummary Ați spus că aveți {numKids}. {dacă(numKids==1,'copil','copii')}. {if(numKids>1,implode(' ','Suma vârstelor primilor tăi ',min(numKids,4),' copii este ',sumKidAges,'.'),' ')} |1


Pentru a descărca acest exemplu, faceți clic pe următorul link: Assessments_survey_example.


Puteți găsi mai jos capturi de ecran cu întrebări reprezentative. După cum puteți vedea, sintaxa EM evidențiază toate câmpurile care ar putea conține personalizare. Aici vedeți exemple de relevanță pentru evidențierea sintaxelor, tipul de întrebare Ecuație și substituții în cadrul unei întrebări. De asemenea, puteți utiliza substituții în Ajutor, Afișare antet grup, Mesaj de bun venit și Mesaj de final.

În exemplul următor, întrucât relevanța este {numKids >= 2), întrebarea va fi vizibilă doar dacă respondentul raportează că are cel puțin doi copii.



Mai jos, puteți observa că fiecare variabilă are atașat sufixul .NAOK. Acest lucru se datorează modului în care EM acceptă relevanța în cascadă. Dacă nu ați avut .NAOK, atunci suma ar fi calculată numai dacă persoana a spus că are 4 copii (de exemplu, dacă toate variabilele sunt relevante). Utilizarea .NAOK înseamnă că dorim să calculăm suma chiar dacă toate sau unele dintre variabile sunt irelevante (de exemplu, „Nu se aplică” (NA) este în regulă (OK)).

Cu toate acestea, atributul .NAOK afectează doar dacă variabilele sunt transmise în EM. Dacă respondentul spune inițial că are 3 copii și introduce vârste pentru fiecare, apoi se răzgândește și spune că are 2, nu vrem să vedem suma celor 3 valori introduse - deoarece al treilea copil este „nu se aplică” mai in cazul nostru:



Fiecare expresie separată are un cod de culoare cu un fundal cafeniu. După cum puteți vedea, există trei expresii separate aici. Ultimul conține un mesaj care este afișat condiționat numai dacă persoana are mai mulți copii.



Acum, iată capturi de ecran ale sondajului în acțiune.

Când vizitați prima pagină, vedeți acest lucru. Rețineți că spune „Ai 0 „copii” în loc de „Ai 0 „copii””.



Dacă schimb valoarea pentru numărul de copii la 1, afișajul se schimbă instantaneu în aceasta, chiar dacă este pe aceeași pagină:



Acum observați că gramatica este corectă: „Ai 1 copil”.

Acum schimb valoarea pentru numărul de copii la 3, iar afișajul se schimbă instantaneu în aceasta.

Observați că acum vedeți mesajul condiționat în partea de jos: „Suma vârstelor primilor 3 copii ai tăi este 0.”.



Acum voi introduce vârstele pentru copiii mei imaginari și obțin acest afișaj, care rezumă vârstele lor:



Din nou, scorul și afișajul se actualizează instantaneu pe măsură ce introduc valorile, așa că puteți folosi acest lucru pentru a afișa un total cumulat al unui Scor de evaluare.


Acum, schimb valoarea pentru numărul de copii la 2. Afișajul s-a schimbat în următorul:



Observați că, deși am introdus o valoare de 5,5 pentru al treilea copil, raportul acum însumează doar valorile primilor mei 2 copii.

Motivul pentru aceasta este că a treia valoare este acum irelevantă, iar valorile irelevante sunt ignorate în mod activ de EM.

Dacă ar fi să schimb numărul de copii înapoi la 3, aș vedea valoarea de 5,5 pe care am introdus-o din nou. Deci, nu pierd nicio informație pe care o introduc pe pagină.

Cu toate acestea, dacă navighez la pagina Următoarea sau Anterior, toate valorile irelevante vor fi anulate în sesiune și în baza de date. Deci, dacă ar fi să mențin valoarea la 2, merg la pagina următoare, apoi revin și afirm că de fapt am 3 copii, nu aș mai vedea vârsta de 5,5 ani.


Introduceți date și vedeți un raport care se schimbă dinamic cu ceea ce a fost introdus pe aceeași pagină

Acest exemplu prezintă procesul de croitorie din LimeSurvey.

Pentru a descărca acest exemplu, faceți clic pe următorul link: Exemplu de sondaj privind modificările dinamice.

Iată cum arată pagina inițial. Vedeți doar întrebarea în ce oraș locuiți:



Odată ce începeți să introduceți un răspuns, începe și procesul de croitorie:


Pe măsură ce introduceți răspunsurile, tabelul din partea de jos a paginii este actualizat pentru a afișa codurile de răspuns și valorile răspunsurilor dvs.


Exemple comune de depanare

Instrucțiuni imbricate if() (logică condiționată)

EM acceptă funcția „if(test,do_if_true,do_if_false)”, astfel încât să puteți efectua logica condiționată sau adaptarea. Această funcție poate fi imbricată pentru a face echivalentul cu „if { } else if { } else { }”. EM vă va anunța dacă parantezele nu sunt echilibrate (de exemplu, vă lipsește o paranteză de închidere din dreapta) sau dacă aveți paranteze suplimentare în dreapta. Ar trebui să încercați să numărați parantezele pe măsură ce compuneți instrucțiuni if imbricate lungi, să le salvați, să verificați erorile de sintaxă și să le remediați dacă sunt găsite. Să verificăm împreună exemplul de mai jos.

Grupul de întrebări folosit mai jos poate fi accesat de aici: Cosator de personalizare example.lsg


În primul rând, fără a intra nimic, vedeți doar „Bună ziua”.



Dacă introduceți un nume, acesta spune „Bună ziua {nume}”.


Fișier:em-nested-if-name.jpg


Dacă introduceți o vârstă, primiți un mesaj personalizat, în funcție de dacă sunteți sau nu un copil de vârstă preșcolară:


Fișier:em-nested-if-toddler.jpg


De vârstă școlară, adolescent sau adult. Iată un adolescent care vrea să fie anonim:


Fișier:em-nested-if-teenager.jpg


Aici este fișierul logic al grupului. După cum puteți vedea în întrebarea „if-based”, există declarații if imbricate bazate pe vârsta persoanei.


Fișier:em-nested-if-logic-file.jpg


Când editați inițial această întrebare, este posibil ca, la un moment dat, să aveți un număr greșit de paranteze. Iată ce se întâmplă dacă aveți prea puține:


Fișier:em-nested-if-missing-closing-paren.jpg


Dacă treci cu mouse-ul peste cuvântul „dacă”, care este înconjurat de o căsuță roșie, se spune „Paranteze nu sunt echilibrate”. În acest caz, ar trebui să existe patru paranteze de închidere după „deja un adult!”, dar sunt doar trei.

Dacă, pe de altă parte, aveți o paranteză în plus dreapta, aceasta va fi înconjurată de o casetă roșie, astfel:


Fișier:em-nestedd-if-extra-right-paren.jpg


Când editați de fapt întrebarea, întrebarea arată astfel:


Fișier:em-nested-if-edit-screen.jpg