x

Основни глави

  1. LimeSurvey Cloud срещу LimeSurvey CE
  2. LimeSurvey Cloud - Кратко ръководство за стартиране
  3. LimeSurvey CE - Монтаж
  4. Как да проектираме добро проучване (Ръководство)
  5. Приготвяме се да започнем
  6. Конфигурация на LimeSurvey
  7. Въведение - Анкети
  8. Вижте настройките на проучването
  9. Вижте менюто за проучване
  10. Вижте структурата на проучването
  11. Въведение - Въпроси
  12. Въведение - Групи въпроси
  13. Въведение – Проучвания – Управление
  14. Опции на лентата с инструменти за проучване
  15. Многоезично проучване
  16. Кратко ръководство за стартиране - ExpressionScript
  17. Разширени функции
  18. Общи ЧЗВ
  19. Отстраняване на неизправности
  20. Заобиколни решения
  21. Разрешително
  22. Дневник на промените на версията
  23. Плъгини - Разширени
 Actions

ExpressionScript How-tos/bg: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Инструкции за ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "<center>Файл:em-nested-if-edit-screen.jpg</center>"
 
(71 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Общ преглед на обясненото по-рано=




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.  
Ако досега сте следвали структурата на ръководството на LimeSurvey, това означава, че вече използвате [[ExpressionScript - Presentation#Key_Definitions|терминологията на LimeSurvey]]. След това разгледахме изрази и променливи, за да научим как да подобрим нашите проучвания. В следващата част преминахме към типовете и значенията на [[ExpressionScript - Presentation#Syntax Highlighting|маркиране на синтаксис]], за да научим как да коригираме синтактични грешки.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
След като обхванем тези основни понятия, можем да преминем към примери и обяснение как работят изразите в LimeSurvey.  




=Syntax Highlighting=
=Осветяване на синтаксиса=




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.
Следните екранни снимки дават примери, но не показват стойностите на подсказките. Подсказката е информативно поле, което се показва всеки път, когато задържите курсора на мишката върху произволни думи с получер цвят.


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)).
Благодарение на това подчертаване на синтаксиса е много лесно да се съставят правилни изрази, дори и тези, които са сложни. Въпреки че екипът на LimeSurvey планира да се опита да изгради GUI на Expression Builder, можете да използвате съществуващото осветяване на синтаксиса, за да идентифицирате бързо и коригирате правописни грешки. Можете също така да използвате подсказките, за да потвърдите точността на вашите изрази (напр. да потвърдите, че сте избрали желаната променлива(и)).


In each of the examples, there are three columns:
Във всеки от примерите има три колони:
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Източник - това е необработеният текст, който бихте въвели в полето за въпроси на LimeSurvey
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#Красив печат - това е синтаксисно подчертаният еквивалент на въведеното от вас
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Обърнете внимание, че изразите се показват с кафяв фон, но не са заобиколени от къдрави скоби при това осветяване.
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#*Тъй като EM поддържа рекурсивно заместване, показването на къдрави скоби в осветяването би причинило синтактични грешки
#Result - this is the output generated when EM processes the source
#Резултат - това е изходът, генериран, когато EM обработва източника
#*Everything that can be properly substituted is
#*Всичко, което може да бъде правилно заменено, е
#*Expressions with errors are shown in-line, with syntax highlighting. Errors are surrounded by a red-lined box.
#*Изразите с грешки се показват на линия, с подчертаване на синтаксиса. Грешките са заобиколени от поле с червена линия.




==Proper Syntax==
==Правилен синтаксис==




You may find below examples of proper syntax:
Можете да намерите по-долу примери за правилен синтаксис:
#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
#Стойности: показва, че известните променливи са цветно кодирани според това дали са зададени на текущата страница. INSERTANS в стар стил: xxxx получава свой собствен стил на цветно кодиране
#Question Attributes: shows that dot notation can access some properties of questions
#Атрибути на въпроси: показва, че нотацията с точки има достъп до някои свойства на въпросите
#Math: shows that basic and complex calculations are supported
#Math: показва, че се поддържат основни и сложни изчисления
#TextProcessing: shows some of the available text-processing functions
#TextProcessing: показва някои от наличните функции за обработка на текст
#Dates: shows two of the available date-related functions
#Дати: показва две от наличните функции, свързани с дата
#Conditional: shows the usage of the if() function. The choices can be nested.
#Условно: показва използването на функцията if(). Изборите могат да бъдат вложени.
#Tailored paragraph: you can completely customize a report based upon prior values
#Специализиран параграф: можете напълно да персонализирате отчет въз основа на предишни стойности
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#EM процеси в рамките на низове: показва, че може да прави замествания в рамките на низове. Този пример генерира персонализирано име на изображение.
#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 не обработва фигурни скоби като тези: показва, че ако фигурните скоби са екранирани или има бяло пространство между израза и фигурните скоби, ES игнорира израза.




Line 46: Line 46:




==EM Syntax Containing Errors==
==Синтаксисът на EM съдържа грешки==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
Ето примери за често срещани грешки при въвеждане на ES изрази. Обърнете внимание, че подсказките предоставят допълнителна информация.
#Inline Javascript that forgot to add spaces after curly brace
#Вграден Javascript, който е забравил да добави интервали след къдрава скоба
#*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
#*Тъй като "document.write" се появява точно след къдрава скоба, EM смята, че това е израз, а червено- кутии "document" и "write", тъй като те са съответно недефинирана променлива и функции
#Unknown/Misspelled variables, functions and operators
#Неизвестни/Грешно изписани променливи, функции и оператори
#*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.
#*Тук забравихме, че използваме името на променливата "gender" вместо " секс", но ЕМ улавя тази грешка. Освен това маркира в червено '++', тъй като това не е поддържан оператор.
#Warns if use = instead of eq, or perform value assignments
#Предупреждава, ако използвате = вместо eq или изпълнявате присвояване на стойност
#*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.
#*Обърнете внимание, че '=' и '+=' са в червен текст вместо черен. Ако задържите курсора на мишката върху тях, ще видите предупреждения, че присвоявате стойност.
#Wrong number of arguments for functions
#Грешен брой аргументи за функции
#*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() приема 3 аргумента, но са му дадени 4, така че задържането върху "if" в червено, ще обясни грешката и ще покаже поддържания синтаксис
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*sum() приема неограничен брой аргументи, но имахме запетая в края преди затварящите скоби, така че това е в червено! N!#Несъответстващи скоби
#Mismatched parentheses
#*Това е една от най-честите грешки при писане на изрази.
#*This is one of the most common errors when writing expressions.
#*Това показва два примера за липсващи затварящи скоби и един пример за твърде много затварящи скоби.
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#Неподдържан синтаксис
#Unsuported syntax
#*Ако използвате оператор или пунктуация, които ES не поддържа, той ще го постави в червено.
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#Невалидни присвоявания
#Invalid assignments
#*Някои променливи се четат и записват и стойностите им могат да се променят. Други са само за четене.
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Ако се опитате да промените стойността на променлива само за четене, не можете. EM ще постави в червена кутия опита.
#*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




Line 73: Line 72:




=="Live" examples of Syntax Highlighting with active tooltips==
=="На живо" примери за подчертаване на синтаксиса с активни подсказки==




<table border="1">
<table border="1">!Н!<tr><th> Източник</th><th> Красив печат</th><th> Резултат</th></tr><tr><td> <b>Ето пример за ОК синтаксис с подсказки</b><br> Здравейте {if(gender=='M','Mr.','Mrs.')} {фамилия}, сега е {date('g:i a',time())}. Знаете ли къде са вашите {sum(numPets,numKids)} деца и домашни любимци?
<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?


</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>Ето пример за ОК синтаксис с подсказки</b><br> Здравейте <span style="background-color: #eee8aa;">, <span title="В стил Excel if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">ако</span> ( <span title="[java61764X1X5][G:2][Q:110]: Какъв е вашият пол (мъж/жена)?; стойност=M" style="color: green; font-weight: bold">пол</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]: Каква е вашата фамилия/фамилия?; стойност=Смит" style="color: green; font-weight: bold">фамилия</span></span> , сега е <span style="background-color: #eee8aa;"><span title="Форматиране на местна дата/час; низ дата (формат [, клеймо=време()])" style="color: blue; font-weight: bold">дата</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Връща текущото времево клеймо на UNIX; число време()" style="color: blue; font-weight: bold">час</span> ())</span> . Знаете ли къде са вашите <span style="background-color: #eee8aa;"><span title="Изчисляване на сумата от стойности в масив; число сума (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">(</span> <span title="[java61764X1X4][G:2][Q:50]: Колко домашни любимци имате?; стойност=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][Q:40]: Колко деца имате?; стойност=2" style="color: green; font-weight: bold">numKids</span> )</span> деца и домашни любимци?


</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>Ето пример за ОК синтаксис с подсказки</b><br> Здравейте <span id="LEMtailor_Q_40_1">, г-н</span> <span id="LEMtailor_Q_40_2">Смит</span> , сега е 6:07 сутринта. Знаете ли къде са вашите <span id="LEMtailor_Q_40_4">3</span> деца и домашни любимци?
</td></tr>
</td></tr> !Н!<tr><td> <b>Ето често срещани грешки, за да можете да видите подсказките</b><br> Променливи, използвани преди да бъдат декларирани: {notSetYet}<br> Неизвестна функция: {iff(numPets>numKids,1,2)}<br> Неизвестна променлива: {sum(age,num_pets,numKids)}<br> Грешен # параметър: {sprintf()},{if(1,2)},{date()}<br> Присвояване на променливи само за четене:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Небалансирани скоби: {pow(3,4},{(pow(3,4)},{pow(3,4))}
<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))}


</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>Ето често срещани грешки, за да можете да видите подсказките</b><br> Променливи, използвани преди да бъдат декларирани: <span style="background-color: #eee8aa;"><span title="Тази променлива не се декларира до следваща страница; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Тази променлива не се декларира до следваща страница; Невалиден израз; [java61764X3X6][G:3][Q:200]: Кой ще спечели следващите избори?; стойност=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Неизвестна функция: <span style="background-color: #eee8aa;"><span title="Недефинирана функция" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Недефинирана функция" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Колко домашни любимци имате?; стойност=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Колко деца имате?; стойност=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Неизвестна променлива: <span style="background-color: #eee8aa;"><span title="Изчисляване на сумата от стойности в масив; число сума (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">сума</span> ( <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="Недефинирана променлива" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Недефинирана променлива" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Колко деца имате?; стойност=2" style="color: green; font-weight: bold">numKids</span> )</span><br> Грешни # параметри: <span style="background-color: #eee8aa;"><span title="Функцията трябва да има поне 1 аргумент(а); Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията трябва да има поне 1 аргумент(а); Невалиден израз; Връща форматиран низ; низ sprintf(формат, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Функцията не поддържа този брой аргументи: 2. Функцията поддържа този брой аргументи, където -1=неограничен: 3; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията не поддържа този брой аргументи: 2. Функцията поддържа този брой аргументи, където -1=неограничен: 3; Невалиден израз; В стил Excel 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="Функцията не поддържа този брой аргументи: 0. Функцията поддържа този брой аргументи, където -1=неограничен: 1,2; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията не поддържа този брой аргументи: 0. Функцията поддържа този брой аргументи, където -1=неограничен: 1,2; Невалиден израз; Форматиране на местна дата/час; низ дата (формат [, клеймо=време()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Присвояване на променливи само за четене: <span style="background-color: #eee8aa;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз; ; стойност=работник" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Присвояване на нова стойност на променлива" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз; [java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span></span> <span title="Присвояване на нова стойност на променлива" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Сали'</span></span><br> Небалансирани скоби: <span style="background-color: #eee8aa;"><span title="Скобите не са балансирани" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Скобите не са балансирани; Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Скобите не са балансирани" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Открити са допълнителни десни скоби" 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>Ето често срещани грешки, за да можете да видите подсказките</b><br> Променливи, използвани преди да бъдат декларирани: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Тази променлива не се декларира до следваща страница; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Тази променлива не се декларира до следваща страница; Невалиден израз; [java61764X3X6][G:3][Q:200]: Кой ще спечели следващите избори?; стойност=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Неизвестна функция: <span style="background-color: #eee8aa;"><span title="Недефинирана функция" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Недефинирана функция" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Колко домашни любимци имате?; стойност=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Колко деца имате?; стойност=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Неизвестна променлива: <span style="background-color: #eee8aa;"><span title="Изчисляване на сумата от стойности в масив; число сума (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">сума</span> ( <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="Недефинирана променлива" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Недефинирана променлива" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Колко деца имате?; стойност=2" style="color: green; font-weight: bold">numKids</span> )</span><br> Грешни # параметри: <span style="background-color: #eee8aa;"><span title="Функцията трябва да има поне 1 аргумент(а); Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията трябва да има поне 1 аргумент(а); Невалиден израз; Връща форматиран низ; низ sprintf(формат, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Функцията не поддържа този брой аргументи: 2. Функцията поддържа този брой аргументи, където -1=неограничен: 3; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията не поддържа този брой аргументи: 2. Функцията поддържа този брой аргументи, където -1=неограничен: 3; Невалиден израз; В стил Excel 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="Функцията не поддържа този брой аргументи: 0. Функцията поддържа този брой аргументи, където -1=неограничен: 1,2; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Функцията не поддържа този брой аргументи: 0. Функцията поддържа този брой аргументи, където -1=неограничен: 1,2; Невалиден израз; Форматиране на местна дата/час; низ дата (формат [, клеймо=време()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Присвояване на променливи само за четене: <span style="background-color: #eee8aa;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз; ; стойност=работник" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Присвояване на нова стойност на променлива" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Стойността на тази променлива не може да се променя; Невалиден израз; [java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span></span> <span title="Присвояване на нова стойност на променлива" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Сали'</span></span></span><br> Небалансирани скоби: <span style="background-color: #eee8aa;"><span title="Скобите не са балансирани" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Скобите не са балансирани; Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Скобите не са балансирани" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Експоненциален израз; число pow(база, опит)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Открити са допълнителни десни скоби" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>!Н!<tr><td> <b>Ето част от неподдържания синтаксис</b><br> Няма поддръжка за '++', '--', '%',';': {min(++age, --age,age % 2);}<br> Нито '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}<br> Нито масиви: {име[2], име['мое']}
<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']}
</td><td> <b>Ето част от неподдържания синтаксис</b><br> Няма поддръжка за '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Намерете най-ниската стойност; номер min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">мин.</span> ( <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Нито '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Изчисляване на сумата от стойности в масив; число сума (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">сума</span> (2 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Нито масиви: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'мое'</span> <span title="Неподдържан синтаксис" 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>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>Ето част от неподдържания синтаксис</b><br> Няма поддръжка за '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Намерете най-ниската стойност; номер min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">мин.</span> ( <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> , <span title="[java61764X1X2][G:2][Q:30]: На колко години си?; стойност=45" style="color: green; font-weight: bold">възраст</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Нито '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Изчисляване на сумата от стойности в масив; число сума (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">сума</span> (2 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Нито масиви: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][Q:10]: Кое е Вашето собствено име?; стойност=Петър" style="color: green; font-weight: bold">име</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'мое'</span> <span title="Неподдържан синтаксис" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


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




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Примери за адаптиране (напр. разширяване на {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Уважаеми {г-н}/{г-жо} Смит..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Използвайте функцията if(), за да изберете условно дали да се покаже „Mr.“ или „г-жа“.


The syntax is if(test,do_if_true,do_if_false).
Синтаксисът е if(test,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||Код||Въпрос||Тип
|-
|-
|1||gender||What is your gender?||Gender
|1||пол||Какъв е вашият пол?||Пол
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |example1||Уважаеми {if(gender=='M','Mr.','Mrs.')} Смит, ...||Дълъг свободен текст
|}
|}


Line 121: Line 117:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
Както може да се види по-долу, „г-н“ и „г-жа“ са съобразени с това, което респондентът избира като отговор на въпроса „пол“.




<center>[[File:em-tailoring-q-ex1-usage.jpg]]
<center>[[Файл:em-tailoring-q-ex1-usage.jpg]]
[[File:em-tailoring-q-ex2-usage.jpg]]</center>
[[Файл:em-tailoring-q-ex2-usage.jpg]]</center>




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Уважаеми {Mr}/{Mrs} Smith..." в имейла за покана==




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.
Можете да използвате примера по-горе в имейла с поканата, като използвате атрибути от таблицата с токени. Използвайте функцията if(), за да изберете дали „Mr.“ или „г-жа“ трябва да се използва в имейла.




The syntax is "if(test,do_if_true,do_if_false)".
Синтаксисът е "if(test,do_if_true,do_if_false)".


{|
{|
|#||attribute||value
|#||атрибут||стойност
|-
|-
|1||Last name||Smith
|1||Фамилия||Смит
|-
|-
|2||Email address||test@test.com
|2||Имейл адрес||test@test. com
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 143:




Text in invitation email:
Текст в имейла с поканата:


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


Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
Уважаеми {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},


you have been invited to participate in a survey:
бяхте поканени да участвате в проучване:


https:/...
https:/...
Line 163: Line 159:




email View:
Изглед по имейл:




Line 169: Line 165:




=Calculation / Assessment Examples=
=Изчисляване/Примери за оценка=




==Calculate assessment values at runtime and store the results in the survey data==
==Изчислете стойностите на оценката по време на изпълнение и съхранете резултатите в данните от проучването==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Този пример използва всички функции на EM, включително релевантност, приспособяване и тип въпрос Equation.


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.
Също така показва, че всички те са с активиран JavaScript, така че ако имате тези функции на страница, тя ще се променя динамично, когато хората задават и променят своите отговори.


{|
{|
|#||Code||Question||Type||Relevance
|#||Код||Въпрос||Тип||Уместност
|-
|1||numKids||How many children do you have?||Numerical input||1
|-
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|1||numKids||Колко деца имате?||Въведено число||1!N !|-
|2||kid1||На колко години е първото ви дете?||Числен вход||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|3||kid2||На колко години е второто ви дете дете?||Числен вход||numKids >= 2
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|4||kid3||На колко години е третото ви дете?||Числен вход||numKids >= 3
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|5||kid4||На колко години е четвъртото ви дете?||Числен вход||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)}||Уравнение||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||Казахте, че имате {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Сборът на възрастта на вашите първи ',min(numKids,4),' деца е ',sumKidAges,'.'),' ')}||Показване на текст| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
За да изтеглите този пример, моля, щракнете върху следната връзка: [[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.
Можете да намерите по-долу екранни снимки на представителни въпроси. Както можете да видите, EM синтаксисът подчертава всички полета, които може да съдържат приспособяване. Тук виждате примери за уместност при открояване на синтаксис, тип въпрос с уравнение и замествания в рамките на въпрос. Можете също да използвате замествания в Помощ, Показване на заглавката на групата, Поздравително съобщение и Крайно съобщение.


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.
В следващия пример, тъй като уместността е {numKids >= 2), въпросът ще бъде видим само ако респондентът съобщи, че има поне две деца.




Line 209: Line 204:




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)).
По-долу може да забележите, че към всяка променлива е прикрепен суфиксът .NAOK. Това се дължи на начина, по който EM поддържа каскадна уместност. Ако не сте имали .NAOK, тогава сумата ще бъде изчислена само ако лицето каза, че има 4 деца (напр. ако всички променливи са уместни). Използването на .NAOK означава, че искаме да изчислим сумата, дори ако всички или някои от променливите са неуместни (напр. „Неприложимо“ (NA) е добре (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:
Атрибутът .NAOK обаче засяга само дали променливите се предават в EM. Ако респондентът първоначално каже, че има 3 деца и въведе възрасти за всяко, след това промени решението си и каже, че има 2, ние не искаме да видим сумата от 3 въведени стойности - тъй като третото дете е „неприложимо“ в нашия случай вече:




Line 217: Line 212:




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.
Всеки отделен Expression е цветно кодиран с кафяв фон. Както можете да видите, тук има три отделни израза. Последният съдържа съобщение, което се показва условно само ако лицето има повече от едно дете.




Line 223: Line 218:




Now, here are screenshots of the survey in action.
Ето екранни снимки на анкетата в действие.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Когато за първи път посетите страницата, виждате това. Обърнете внимание, че се казва "Имате 0 '''деца'''" вместо "Имате 0 '''дете''''".




Line 231: Line 226:




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:
Ако променя стойността за брой деца на 1, дисплеят незабавно се променя на това, въпреки че е на същата страница:




Line 237: Line 232:




Now notice that the grammar is correct: "You have 1 '''child'''".
Сега забележете, че граматиката е правилна: „Имате 1 '''дете''''".


Now I change the value for number of children to 3, and the display instantly changes to this.
Сега променям стойността за брой деца на 3 и дисплеят моментално се променя към това.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Забележете, че сега виждате условното съобщение в долната част: „Сборът на възрастта на първите ви 3 деца е 0..




Line 247: Line 242:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Сега ще въведа възрасти за моите въображаеми деца и ще получа този дисплей, обобщаващ възрастта им:




Line 253: Line 248:




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.
Отново, резултатът и дисплеят се актуализират незабавно, докато въвеждам стойностите, така че можете да използвате това, за да покажете текущия общ резултат за оценка.




Now, I change the value for the number of children to 2. The display has changed to this:
Сега променям стойността за броя на децата на 2. Дисплеят се промени на това:




Line 262: Line 257:




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.
Забележете, че въпреки че бях въвел стойност от 5,5 за третото дете, отчетът сега сумира само стойностите на първите ми 2 деца.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
Причината за това е, че третата стойност вече е неуместна, а неуместните стойности се игнорират активно от 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.
Ако трябваше да променя броя на децата обратно на 3, щях да видя отново въведената от мен стойност от 5,5. Така че не губя никаква информация, която въвеждам на страницата.


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.
Въпреки това, ако отида до следващата или предишната страница, всички неподходящи стойности ще бъдат NULL в сесията и в базата данни. Така че, ако запазя стойността на 2, отида на следващата страница и след това се върна и заявя, че всъщност имам 3 деца, вече няма да виждам възрастта 5,5.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Въведете данни и вижте динамично променящ се отчет за въведеното на същата страница==




This example presents the Tailoring process within LimeSurvey.
Този пример представя процеса на шиене в рамките на 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]].
За да изтеглите този пример, щракнете върху следната връзка: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Пример за анкета за динамични промени]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Ето как изглежда страницата първоначално. Виждате само въпроса в кой град живеете:




<center>[[File:em-on_page_report-usage-1.jpg]]</center>
<center>[[Файл:em-on_page_report-usage-1.jpg]]</center>




Once you start to enter an answer, the tailoring process is also starting:
След като започнете да въвеждате отговор, процесът на адаптиране също започва:


<center>[[File:em-on_page_report-usage-2.jpg]]</center>
<center>[[Файл: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.
Докато въвеждате отговори, таблицата в долната част на страницата се актуализира, за да показва кодовете на отговорите и стойностите на вашите отговори.




<center>[[File:em-on_page_report-usage-3.jpg]]</center>
<center>[[Файл:em-on_page_report-usage-3.jpg]]</center>


=Common Debugging Examples=
=Често срещани примери за отстраняване на грешки=




==Nested if() Statements (Conditional Logic)==
==Вложени оператори if() (условна логика)==




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 поддържа функцията "if(test,do_if_true,do_if_false)", така че да можете да изпълнявате условна логика или приспособяване. Тази функция може да бъде вложена, за да направи еквивалента на "if { } else if { } else { }". EM ще ви уведоми, ако скобите не са балансирани (напр. липсва ви затваряща дясна скоба) или ако имате допълнителни десни скоби. Трябва да опитате да преброите скобите, докато съставяте дълги вложени изрази if, да ги запишете, да проверите за синтактични грешки и да ги коригирате, ако бъдат открити такива. Нека проверим заедно примера по-долу.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
Групата от въпроси, използвани по-долу, може да бъде достъпна от тук: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]




First, with nothing entered, you just see "Hello."
Първо, без нищо въведено, вие просто виждате „Здравей“.




<center>[[File:em-nested-if-blank.jpg]]</center>
<center>[[Файл:em-nested-if-blank.jpg]]</center>




If you enter a name, it says, "Hello {name}."
Ако въведете име, то казва „Здравей, {name}.




<center>[[File:em-nested-if-name.jpg]]</center>
<center>[[Файл: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:
Ако въведете възраст, получавате персонализирано съобщение в зависимост от това дали сте дете в предучилищна възраст или не:




<center>[[File:em-nested-if-toddler.jpg]]</center>
<center>[[Файл:em-nested-if-toddler.jpg]]</center>




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
Училищна възраст, тийнейджър или възрастен. Ето един тийнейджър, който иска да остане анонимен:




<center>[[File:em-nested-if-teenager.jpg]]</center>
<center>[[Файл: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.
Ето логическия файл на групата. Както можете да видите във въпроса "базиран на ако", има вложени изрази ако, базирани на възрастта на лицето.




<center>[[File:em-nested-if-logic-file.jpg]]</center>
<center>[[Файл: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:
Когато първоначално редактирате този въпрос, е вероятно в даден момент да имате грешен брой скоби. Ето какво се случва, ако имате твърде малко:




<center>[[File:em-nested-if-missing-closing-paren.jpg]]</center>
<center>[[Файл: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.
Ако задържите курсора на мишката върху думата „ако“, която е заобиколена от червена кутия, се казва „Скобите не са балансирани“. В този случай трябва да има четири затварящи скоби след „вече възрастен!, но има само три.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Ако, от друга страна, имате допълнителна дясна скоба, тя ще бъде заобиколена от червена кутия, като тази:




<center>[[File:em-nestedd-if-extra-right-paren.jpg]]</center>
<center>[[Файл:em-nestedd-if-extra-right-paren.jpg]]</center>




When you are actually editing the question, the question looks like this:
Когато всъщност редактирате въпроса, той изглежда така:




<center>[[File:em-nested-if-edit-screen.jpg]]</center>
<center>[[Файл:em-nested-if-edit-screen.jpg]]</center>

Latest revision as of 08:04, 28 November 2023


Общ преглед на обясненото по-рано

Ако досега сте следвали структурата на ръководството на LimeSurvey, това означава, че вече използвате терминологията на LimeSurvey. След това разгледахме изрази и променливи, за да научим как да подобрим нашите проучвания. В следващата част преминахме към типовете и значенията на маркиране на синтаксис, за да научим как да коригираме синтактични грешки.

След като обхванем тези основни понятия, можем да преминем към примери и обяснение как работят изразите в LimeSurvey.


Осветяване на синтаксиса

Следните екранни снимки дават примери, но не показват стойностите на подсказките. Подсказката е информативно поле, което се показва всеки път, когато задържите курсора на мишката върху произволни думи с получер цвят.

Благодарение на това подчертаване на синтаксиса е много лесно да се съставят правилни изрази, дори и тези, които са сложни. Въпреки че екипът на LimeSurvey планира да се опита да изгради GUI на Expression Builder, можете да използвате съществуващото осветяване на синтаксиса, за да идентифицирате бързо и коригирате правописни грешки. Можете също така да използвате подсказките, за да потвърдите точността на вашите изрази (напр. да потвърдите, че сте избрали желаната променлива(и)).

Във всеки от примерите има три колони:

  1. Източник - това е необработеният текст, който бихте въвели в полето за въпроси на LimeSurvey
  2. Красив печат - това е синтаксисно подчертаният еквивалент на въведеното от вас
    • Обърнете внимание, че изразите се показват с кафяв фон, но не са заобиколени от къдрави скоби при това осветяване.
    • Тъй като EM поддържа рекурсивно заместване, показването на къдрави скоби в осветяването би причинило синтактични грешки
  3. Резултат - това е изходът, генериран, когато EM обработва източника
    • Всичко, което може да бъде правилно заменено, е
    • Изразите с грешки се показват на линия, с подчертаване на синтаксиса. Грешките са заобиколени от поле с червена линия.


Правилен синтаксис

Можете да намерите по-долу примери за правилен синтаксис:

  1. Стойности: показва, че известните променливи са цветно кодирани според това дали са зададени на текущата страница. INSERTANS в стар стил: xxxx получава свой собствен стил на цветно кодиране
  2. Атрибути на въпроси: показва, че нотацията с точки има достъп до някои свойства на въпросите
  3. Math: показва, че се поддържат основни и сложни изчисления
  4. TextProcessing: показва някои от наличните функции за обработка на текст
  5. Дати: показва две от наличните функции, свързани с дата
  6. Условно: показва използването на функцията if(). Изборите могат да бъдат вложени.
  7. Специализиран параграф: можете напълно да персонализирате отчет въз основа на предишни стойности
  8. EM процеси в рамките на низове: показва, че може да прави замествания в рамките на низове. Този пример генерира персонализирано име на изображение.
  9. EM не обработва фигурни скоби като тези: показва, че ако фигурните скоби са екранирани или има бяло пространство между израза и фигурните скоби, ES игнорира израза.



Синтаксисът на EM съдържа грешки

Ето примери за често срещани грешки при въвеждане на ES изрази. Обърнете внимание, че подсказките предоставят допълнителна информация.

  1. Вграден Javascript, който е забравил да добави интервали след къдрава скоба
    • Тъй като "document.write" се появява точно след къдрава скоба, EM смята, че това е израз, а червено- кутии "document" и "write", тъй като те са съответно недефинирана променлива и функции
  2. Неизвестни/Грешно изписани променливи, функции и оператори
    • Тук забравихме, че използваме името на променливата "gender" вместо " секс", но ЕМ улавя тази грешка. Освен това маркира в червено '++', тъй като това не е поддържан оператор.
  3. Предупреждава, ако използвате = вместо eq или изпълнявате присвояване на стойност
    • Обърнете внимание, че '=' и '+=' са в червен текст вместо черен. Ако задържите курсора на мишката върху тях, ще видите предупреждения, че присвоявате стойност.
  4. Грешен брой аргументи за функции
    • if() приема 3 аргумента, но са му дадени 4, така че задържането върху "if" в червено, ще обясни грешката и ще покаже поддържания синтаксис
    • sum() приема неограничен брой аргументи, но имахме запетая в края преди затварящите скоби, така че това е в червено! N!#Несъответстващи скоби
    • Това е една от най-честите грешки при писане на изрази.
    • Това показва два примера за липсващи затварящи скоби и един пример за твърде много затварящи скоби.
#Неподдържан синтаксис
    • Ако използвате оператор или пунктуация, които ES не поддържа, той ще го постави в червено.
  1. Невалидни присвоявания
    • Някои променливи се четат и записват и стойностите им могат да се променят. Други са само за четене.
    • Ако се опитате да промените стойността на променлива само за четене, не можете. EM ще постави в червена кутия опита.
    • Ако се опитате да присвоите стойност на уравнение или низ, вие също ще получите грешка



"На живо" примери за подчертаване на синтаксиса с активни подсказки

!Н! !Н!!Н!
Източник Красив печат Резултат
Ето пример за ОК синтаксис с подсказки
Здравейте {if(gender=='M','Mr.','Mrs.')} {фамилия}, сега е {date('g:i a',time())}. Знаете ли къде са вашите {sum(numPets,numKids)} деца и домашни любимци?
Ето пример за ОК синтаксис с подсказки
Здравейте , ако ( пол == 'M' , 'Mr.' , 'Mrs.' ) фамилия , сега е дата ( 'g:i a' , час ()) . Знаете ли къде са вашите ( numPets , numKids ) деца и домашни любимци?
Ето пример за ОК синтаксис с подсказки
Здравейте , г-н Смит , сега е 6:07 сутринта. Знаете ли къде са вашите 3 деца и домашни любимци?
Ето често срещани грешки, за да можете да видите подсказките
Променливи, използвани преди да бъдат декларирани: {notSetYet}
Неизвестна функция: {iff(numPets>numKids,1,2)}
Неизвестна променлива: {sum(age,num_pets,numKids)}
Грешен # параметър: {sprintf()},{if(1,2)},{date()}
Присвояване на променливи само за четене:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Небалансирани скоби: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Ето често срещани грешки, за да можете да видите подсказките
Променливи, използвани преди да бъдат декларирани: notSetYet
Неизвестна функция: iff ( numPets > numKids ,1,2)
Неизвестна променлива: сума ( възраст , num_pets , numKids )
Грешни # параметри: sprintf () , if (1,2) , date ()
Присвояване на променливи само за четене: TOKEN:ATTRIBUTE_1 += 10 , име = 'Сали'
Небалансирани скоби: pow (3,4 , ( pow (3,4) , pow (3,4) )
Ето често срещани грешки, за да можете да видите подсказките
Променливи, използвани преди да бъдат декларирани: notSetYet
Неизвестна функция: iff ( numPets > numKids ,1,2)
Неизвестна променлива: сума ( възраст , num_pets , numKids )
Грешни # параметри: sprintf () , if (1,2) , date ()
Присвояване на променливи само за четене: TOKEN:ATTRIBUTE_1 += 10 , име = 'Сали'
Небалансирани скоби: pow (3,4 , ( pow (3,4) , pow (3,4) )
Ето част от неподдържания синтаксис
Няма поддръжка за '++', '--', '%',';': {min(++age, --age,age % 2);}
Нито '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Нито масиви: {име[2], име['мое']}
Ето част от неподдържания синтаксис
Няма поддръжка за '++', '--', '%',';': мин. ( ++ възраст , -- възраст , възраст % 2) ;
Нито '|', '&', '^': ( сума (2 | 3,3 & 4,5 ^ 6) }
Нито масиви: име [ 2 ] , име [ 'мое' ]
Ето част от неподдържания синтаксис
Няма поддръжка за '++', '--', '%',';': мин. ( ++ възраст , -- възраст , възраст % 2) ;
Нито '|', '&', '^': ( сума (2 | 3,3 & 4,5 ^ 6) }
Нито масиви: име [ 2 ] , име [ 'мое' ]


Примери за адаптиране (напр. разширяване на {INSERTANS:xxx})

"Уважаеми {г-н}/{г-жо} Смит..."

Използвайте функцията if(), за да изберете условно дали да се покаже „Mr.“ или „г-жа“.

Синтаксисът е if(test,do_if_true,do_if_false).

# Код Въпрос Тип
1 пол Какъв е вашият пол? Пол
|example1 Уважаеми {if(gender=='M','Mr.','Mrs.')} Смит, ... Дълъг свободен текст



Както може да се види по-долу, „г-н“ и „г-жа“ са съобразени с това, което респондентът избира като отговор на въпроса „пол“.


Файл:em-tailoring-q-ex1-usage.jpg Файл:em-tailoring-q-ex2-usage.jpg


"Уважаеми {Mr}/{Mrs} Smith..." в имейла за покана

Можете да използвате примера по-горе в имейла с поканата, като използвате атрибути от таблицата с токени. Използвайте функцията if(), за да изберете дали „Mr.“ или „г-жа“ трябва да се използва в имейла.


Синтаксисът е "if(test,do_if_true,do_if_false)".

# атрибут стойност
1 Фамилия Смит
2 Имейл адрес test@test. com
3 ATTRIBUTE_2 M


Текст в имейла с поканата:

Уважаеми {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

бяхте поканени да участвате в проучване:

https:/...



Изглед по имейл:



Изчисляване/Примери за оценка

Изчислете стойностите на оценката по време на изпълнение и съхранете резултатите в данните от проучването

Този пример използва всички функции на EM, включително релевантност, приспособяване и тип въпрос Equation.

Също така показва, че всички те са с активиран JavaScript, така че ако имате тези функции на страница, тя ще се променя динамично, когато хората задават и променят своите отговори.

# Код Въпрос Тип Уместност
1 numKids Колко деца имате? Въведено число - 2 kid1 На колко години е първото ви дете? Числен вход numKids >= 1
3 kid2 На колко години е второто ви дете дете? Числен вход numKids >= 2
4 kid3 На колко години е третото ви дете? Числен вход numKids >= 3
5 kid4 На колко години е четвъртото ви дете? Числен вход numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Уравнение 1
7 kidSummary Казахте, че имате {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Сборът на възрастта на вашите първи ',min(numKids,4),' деца е ',sumKidAges,'.'),' ')} |1


За да изтеглите този пример, моля, щракнете върху следната връзка: Assessments_survey_example.


Можете да намерите по-долу екранни снимки на представителни въпроси. Както можете да видите, EM синтаксисът подчертава всички полета, които може да съдържат приспособяване. Тук виждате примери за уместност при открояване на синтаксис, тип въпрос с уравнение и замествания в рамките на въпрос. Можете също да използвате замествания в Помощ, Показване на заглавката на групата, Поздравително съобщение и Крайно съобщение.

В следващия пример, тъй като уместността е {numKids >= 2), въпросът ще бъде видим само ако респондентът съобщи, че има поне две деца.



По-долу може да забележите, че към всяка променлива е прикрепен суфиксът .NAOK. Това се дължи на начина, по който EM поддържа каскадна уместност. Ако не сте имали .NAOK, тогава сумата ще бъде изчислена само ако лицето каза, че има 4 деца (напр. ако всички променливи са уместни). Използването на .NAOK означава, че искаме да изчислим сумата, дори ако всички или някои от променливите са неуместни (напр. „Неприложимо“ (NA) е добре (OK)).

Атрибутът .NAOK обаче засяга само дали променливите се предават в EM. Ако респондентът първоначално каже, че има 3 деца и въведе възрасти за всяко, след това промени решението си и каже, че има 2, ние не искаме да видим сумата от 3 въведени стойности - тъй като третото дете е „неприложимо“ в нашия случай вече:



Всеки отделен Expression е цветно кодиран с кафяв фон. Както можете да видите, тук има три отделни израза. Последният съдържа съобщение, което се показва условно само ако лицето има повече от едно дете.



Ето екранни снимки на анкетата в действие.

Когато за първи път посетите страницата, виждате това. Обърнете внимание, че се казва "Имате 0 деца" вместо "Имате 0 дете'".



Ако променя стойността за брой деца на 1, дисплеят незабавно се променя на това, въпреки че е на същата страница:



Сега забележете, че граматиката е правилна: „Имате 1 дете'".

Сега променям стойността за брой деца на 3 и дисплеят моментално се променя към това.

Забележете, че сега виждате условното съобщение в долната част: „Сборът на възрастта на първите ви 3 деца е 0.“.



Сега ще въведа възрасти за моите въображаеми деца и ще получа този дисплей, обобщаващ възрастта им:



Отново, резултатът и дисплеят се актуализират незабавно, докато въвеждам стойностите, така че можете да използвате това, за да покажете текущия общ резултат за оценка.


Сега променям стойността за броя на децата на 2. Дисплеят се промени на това:



Забележете, че въпреки че бях въвел стойност от 5,5 за третото дете, отчетът сега сумира само стойностите на първите ми 2 деца.

Причината за това е, че третата стойност вече е неуместна, а неуместните стойности се игнорират активно от EM.

Ако трябваше да променя броя на децата обратно на 3, щях да видя отново въведената от мен стойност от 5,5. Така че не губя никаква информация, която въвеждам на страницата.

Въпреки това, ако отида до следващата или предишната страница, всички неподходящи стойности ще бъдат NULL в сесията и в базата данни. Така че, ако запазя стойността на 2, отида на следващата страница и след това се върна и заявя, че всъщност имам 3 деца, вече няма да виждам възрастта 5,5.


Въведете данни и вижте динамично променящ се отчет за въведеното на същата страница

Този пример представя процеса на шиене в рамките на LimeSurvey.

За да изтеглите този пример, щракнете върху следната връзка: Пример за анкета за динамични промени.

Ето как изглежда страницата първоначално. Виждате само въпроса в кой град живеете:


Файл:em-on_page_report-usage-1.jpg


След като започнете да въвеждате отговор, процесът на адаптиране също започва:

Файл:em-on_page_report-usage-2.jpg


Докато въвеждате отговори, таблицата в долната част на страницата се актуализира, за да показва кодовете на отговорите и стойностите на вашите отговори.


Файл:em-on_page_report-usage-3.jpg

Често срещани примери за отстраняване на грешки

Вложени оператори if() (условна логика)

EM поддържа функцията "if(test,do_if_true,do_if_false)", така че да можете да изпълнявате условна логика или приспособяване. Тази функция може да бъде вложена, за да направи еквивалента на "if { } else if { } else { }". EM ще ви уведоми, ако скобите не са балансирани (напр. липсва ви затваряща дясна скоба) или ако имате допълнителни десни скоби. Трябва да опитате да преброите скобите, докато съставяте дълги вложени изрази if, да ги запишете, да проверите за синтактични грешки и да ги коригирате, ако бъдат открити такива. Нека проверим заедно примера по-долу.

Групата от въпроси, използвани по-долу, може да бъде достъпна от тук: Tailoring survey example.lsg


Първо, без нищо въведено, вие просто виждате „Здравей“.


Файл:em-nested-if-blank.jpg


Ако въведете име, то казва „Здравей, {name}“.


Файл:em-nested-if-name.jpg


Ако въведете възраст, получавате персонализирано съобщение в зависимост от това дали сте дете в предучилищна възраст или не:


Файл:em-nested-if-toddler.jpg


Училищна възраст, тийнейджър или възрастен. Ето един тийнейджър, който иска да остане анонимен:


Файл:em-nested-if-teenager.jpg


Ето логическия файл на групата. Както можете да видите във въпроса "базиран на ако", има вложени изрази ако, базирани на възрастта на лицето.


Файл:em-nested-if-logic-file.jpg


Когато първоначално редактирате този въпрос, е вероятно в даден момент да имате грешен брой скоби. Ето какво се случва, ако имате твърде малко:


Файл:em-nested-if-missing-closing-paren.jpg


Ако задържите курсора на мишката върху думата „ако“, която е заобиколена от червена кутия, се казва „Скобите не са балансирани“. В този случай трябва да има четири затварящи скоби след „вече възрастен!“, но има само три.

Ако, от друга страна, имате допълнителна дясна скоба, тя ще бъде заобиколена от червена кутия, като тази:


Файл:em-nestedd-if-extra-right-paren.jpg


Когато всъщност редактирате въпроса, той изглежда така:


Файл:em-nested-if-edit-screen.jpg