x

Capítulos principales

  1. LimeSurvey Cloud frente a LimeSurvey CE
  2. LimeSurvey Cloud - Guía de inicio rápido
  3. LimeSurvey CE - Instalación
  4. Cómo diseñar una buena encuesta (Guía)
  5. Empezando
  6. Configuración de LimeSurvey
  7. Introducción - Encuestas
  8. Ver la configuración de la encuesta
  9. Ver menú de encuesta
  10. Ver estructura de la encuesta
  11. Introducción - Preguntas
  12. Introducción - Grupos de preguntas
  13. Introducción - Encuestas - Gestión
  14. Opciones de la barra de herramientas de la encuesta
  15. Encuesta multilingüe
  16. Guía de inicio rápido - ExpressionScript
  17. Características avanzadas
  18. Preguntas frecuentes generales
  19. Solución de problemas
  20. Soluciones alternativas
  21. Licencia
  22. Registro de cambios de versión
  23. Complementos - Avanzado
 Actions

ExpressionScript How-tos/es: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Procedimientos de ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Cuando en realidad estás editando la pregunta, la pregunta se ve así:"
 
(70 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Resumen de lo explicado anteriormente=




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.  
Si has seguido hasta ahora la estructura del manual de LimeSurvey, significa que ya conoces la [[ExpressionScript - Presentation#Key_Definitions|Terminología de LimeSurvey]]. A continuación, cubrimos expresiones y variables para aprender cómo mejorar nuestras encuestas. En la siguiente parte, pasamos a los tipos y significados de [[ExpressionScript - Presentation#Syntax Highlighting|resaltado de sintaxis]] para aprender cómo corregir errores de sintaxis.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
Con estas nociones básicas cubiertas, podríamos avanzar hacia ejemplos y explicar cómo funcionan las expresiones dentro de LimeSurvey.  




=Syntax Highlighting=
=Resaltado de sintaxis=




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.
Las siguientes capturas de pantalla brindan ejemplos, pero no muestran los valores de la información sobre herramientas. Una información sobre herramientas es un cuadro informativo que se muestra cada vez que pasa el mouse sobre cualquier palabra en negrita.


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)).
Gracias a este resaltado de sintaxis, es muy fácil componer expresiones correctas, incluso aquellas que son complicadas. Aunque el equipo de LimeSurvey planea intentar crear una GUI de Expression Builder, puede utilizar el resaltado de sintaxis existente para identificar y corregir rápidamente errores tipográficos. También puede utilizar la información sobre herramientas para validar la precisión de sus expresiones (por ejemplo, confirmar que ha seleccionado las variables deseadas).


In each of the examples, there are three columns:
En cada uno de los ejemplos, hay tres columnas:
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Fuente: este es el texto sin formato que ingresaría en el campo de preguntas de LimeSurvey.N!#Pretty Print: ¡este es el equivalente resaltado en sintaxis de lo que ingresó! N!#*Tenga en cuenta que las expresiones se muestran con un fondo tostado, pero no rodeadas por llaves en este resaltado.
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#*Dado que EM admite la sustitución recursiva, mostrar llaves en el resaltado provocaría errores de sintaxis.N!#Resultado - ¡Esta es la salida generada cuando EM procesa la fuente
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Todo lo que se puede sustituir correctamente es
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#*Las expresiones con errores se muestran en línea, con resaltado de sintaxis. Los errores están rodeados por un cuadro con líneas rojas.
#Result - this is the output generated when EM processes the source
#*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==
==Sintaxis adecuada==




You may find below examples of proper syntax:
Puede encontrar a continuación ejemplos de sintaxis adecuada:
#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
#Valores: muestra que las variables conocidas están codificadas por colores según estén configuradas en la página actual. INSERTANTES de estilo antiguo:xxxx obtiene su propio estilo de codificación de colores.
#Question Attributes: shows that dot notation can access some properties of questions
#Atributos de preguntas: ¡muestra que la notación de puntos puede acceder a algunas propiedades de las preguntas
#Math: shows that basic and complex calculations are supported
#Matemáticas: ¡muestra que se admiten cálculos básicos y complejos
#TextProcessing: shows some of the available text-processing functions
#Procesamiento de texto: muestra algunas de las funciones de procesamiento de texto disponibles
#Dates: shows two of the available date-related functions
#Dates: muestra dos de las funciones disponibles relacionadas con fechas
#Conditional: shows the usage of the if() function. The choices can be nested.
#Conditional: muestra el uso de la función if(). Las opciones se pueden anidar.
#Tailored paragraph: you can completely customize a report based upon prior values
#Párrafo personalizado: puede personalizar completamente un informe basado en valores anteriores
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#Procesos EM dentro de cadenas: muestra que puede hacer sustituciones dentro de cadenas. Este ejemplo genera un nombre de imagen personalizado.
#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 no procesa llaves como estas: muestra que si se escapan las llaves, o hay un espacio en blanco entre la expresión y las llaves, ES ignora la expresión.




Line 46: Line 43:




==EM Syntax Containing Errors==
==Sintaxis de EM que contiene errores==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
A continuación se muestran ejemplos de errores comunes al escribir expresiones ES. Tenga en cuenta que la información sobre herramientas proporciona información adicional.
#Inline Javascript that forgot to add spaces after curly brace
#Javascript en línea que olvidó agregar espacios después de la llave
#*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
#*Dado que "document.write" aparece justo después de una llave, EM piensa que es una expresión y red- cuadros "documento" y "escribir" ya que son variables y funciones no definidas, respectivamente
#Unknown/Misspelled variables, functions and operators
#Variables, funciones y operadores desconocidos/mal escritos
#*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.
#*Aquí olvidamos que estamos usando el nombre de variable "género" en lugar de " sexo", pero EM detecta ese error. También encuadra en rojo '++', ya que no es un operador admitido.
#Warns if use = instead of eq, or perform value assignments
#Advierte si se usa = en lugar de eq, o realiza asignaciones de valores
#*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.
#*Tenga en cuenta que '=" y '+=' están en texto rojo en lugar de negro. Si pasa el mouse sobre ellos, verá advertencias de que está asignando un valor.
#Wrong number of arguments for functions
#Número incorrecto de argumentos para funciones
#*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() toma 3 argumentos, pero se le han dado 4, por lo que al pasar el cursor sobre el "si" encuadrado en rojo se explicará el error y se mostrará la sintaxis admitida. N!#*sum() toma un número ilimitado de argumentos, pero teníamos una coma al final antes del paréntesis de cierre, ¡así que está encuadrado en rojo! N!#Paréntesis no coincidentes
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*Este es uno de los errores más comunes al escribir expresiones.
#Mismatched parentheses
#*Esto muestra dos ejemplos de paréntesis de cierre faltantes y un ejemplo de tener demasiados paréntesis de cierre.
#*This is one of the most common errors when writing expressions.
#¡Sintaxis no compatible
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#*Si utiliza un operador o puntuación que ES no admite, lo marcará en un recuadro rojo.
#Unsuported syntax
#Asignaciones no válidas
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#*Algunas variables son de lectura y escritura y se pueden cambiar sus valores. Otras son de sólo lectura.
#Invalid assignments
#*Si intenta cambiar el valor de una variable de sólo lectura, no podrá. EM marcará el intento en un cuadro rojo.
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Si intenta asignar un valor a una ecuación o una cadena, también obtendrá un error
#*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 68:




=="Live" examples of Syntax Highlighting with active tooltips==
=="Ejemplos en vivo" de resaltado de sintaxis con información sobre herramientas activa==




<table border="1">
<table border="1">!¡NORTE!<tr><th> Fuente</th><th> Bonita impresión</th><th> Resultado</th></tr><tr><td> <b>A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.</b><br> Hola {if(gender=='M','Mr.','Mrs.')} {apellido}, ahora es {fecha('g:i a',time())}. ¿Sabes dónde están tus {sum(numPets,numKids)} hijos y mascotas?
<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>A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.</b><br> Hola <span style="background-color: #eee8aa;">, <span title="Estilo Excel if(test,result_if_true,result_if_false); si(prueba,resultado_si_verdadero,resultado_si_falso)" style="color: blue; font-weight: bold">si</span> ( <span title="[java61764X1X5][G:2][P:110]: ¿Cuál es tu género (masculino/femenino)?; valor=M" style="color: green; font-weight: bold">género</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][P:20]: ¿Cuál es tu apellido/apellido?; valor = Smith" style="color: green; font-weight: bold">apellido</span></span> , ahora es <span style="background-color: #eee8aa;"><span title="Formatee una fecha/hora local; fecha de cadena (formato [, marca de tiempo = hora ()])" style="color: blue; font-weight: bold">fecha</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Devuelve la marca de tiempo actual de UNIX; número de tiempo()" style="color: blue; font-weight: bold">hora</span> ())</span> . ¿Sabe dónde están sus hijos y mascotas <span style="background-color: #eee8aa;"><span title="Calcular la suma de valores en una matriz; suma de números (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> ( <span title="[java61764X1X4][G:2][P:50]: ¿Cuántas mascotas tienes?; valor=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][P:40]: ¿Cuántos hijos tienes?; valor=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>A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.</b><br> Hola <span id="LEMtailor_Q_40_1">Sr.</span> <span id="LEMtailor_Q_40_2">Smith</span> , ahora son las 6:07 am. ¿Sabes dónde están tus <span id="LEMtailor_Q_40_4">3</span> hijos y tus mascotas?
</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>Aquí hay errores comunes para que pueda ver la información sobre herramientas.</b><br> Variables utilizadas antes de declararse: {notSetYet}<br> Función desconocida: {iff(numPets>numKids,1,2)}<br> Variable desconocida: {suma(edad,num_pets,numKids)}<br> # parámetros incorrectos: {sprintf()},{if(1,2)},{date()}<br> Asignar variables de solo lectura:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Paréntesis desequilibrados: {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>Aquí hay errores comunes para que pueda ver la información sobre herramientas.</b><br> Variables utilizadas antes de ser declaradas: <span style="background-color: #eee8aa;"><span title="Esta variable no se declara hasta una página posterior; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Esta variable no se declara hasta una página posterior; No es una expresión válida; [java61764X3X6][G:3][P:200]: ¿Quién ganará las próximas elecciones?; valor=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Función desconocida: <span style="background-color: #eee8aa;"><span title="Función indefinida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Función indefinida" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][P:50]: ¿Cuántas mascotas tienes?; valor=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][P:40]: ¿Cuántos hijos tienes?; valor=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variable desconocida: <span style="background-color: #eee8aa;"><span title="Calcular la suma de valores en una matriz; suma de números (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> ( <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="variable indefinida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variable indefinida" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][P:40]: ¿Cuántos hijos tienes?; valor=2" style="color: green; font-weight: bold">numKids</span> )</span><br> # parámetros incorrectos: <span style="background-color: #eee8aa;"><span title="La función debe tener al menos 1 argumento(s); No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función debe tener al menos 1 argumento(s); No es una expresión válida; Devuelve una cadena formateada; cadena sprintf(formato, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La función no admite esa cantidad de argumentos: 2. La función admite esta cantidad de argumentos, donde -1=ilimitado: 3; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función no admite esa cantidad de argumentos: 2. La función admite esta cantidad de argumentos, donde -1=ilimitado: 3; No es una expresión válida; Estilo Excel if(test,result_if_true,result_if_false); si(prueba,resultado_si_verdadero,resultado_si_falso)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La función no admite esa cantidad de argumentos: 0. La función admite esta cantidad de argumentos, donde -1=ilimitado: 1,2; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función no admite esa cantidad de argumentos: 0. La función admite esta cantidad de argumentos, donde -1=ilimitado: 1,2; No es una expresión válida; Formatee una fecha/hora local; fecha de cadena (formato [, marca de tiempo = hora ()])" style="color: blue; font-weight: bold">fecha</span></span> ()</span><br> Asignar variables de solo lectura: <span style="background-color: #eee8aa;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida; ; valor=trabajador" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Asignar un nuevo valor a una variable" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida; [java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span></span> <span title="Asignar un nuevo valor a una variable" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span><br> Paréntesis desequilibrados: <span style="background-color: #eee8aa;"><span title="Paréntesis no equilibrados" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Paréntesis no equilibrados; Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Paréntesis no equilibrados" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Se detectaron paréntesis adicionales a la derecha" 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>Aquí hay errores comunes para que pueda ver la información sobre herramientas.</b><br> Variables utilizadas antes de ser declaradas: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Esta variable no se declara hasta una página posterior; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Esta variable no se declara hasta una página posterior; No es una expresión válida; [java61764X3X6][G:3][P:200]: ¿Quién ganará las próximas elecciones?; valor=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Función desconocida: <span style="background-color: #eee8aa;"><span title="Función indefinida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Función indefinida" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][P:50]: ¿Cuántas mascotas tienes?; valor=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][P:40]: ¿Cuántos hijos tienes?; valor=2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Variable desconocida: <span style="background-color: #eee8aa;"><span title="Calcular la suma de valores en una matriz; suma de números (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> ( <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="variable indefinida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="variable indefinida" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][P:40]: ¿Cuántos hijos tienes?; valor=2" style="color: green; font-weight: bold">numKids</span> )</span><br> # parámetros incorrectos: <span style="background-color: #eee8aa;"><span title="La función debe tener al menos 1 argumento(s); No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función debe tener al menos 1 argumento(s); No es una expresión válida; Devuelve una cadena formateada; cadena sprintf(formato, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="La función no admite esa cantidad de argumentos: 2. La función admite esta cantidad de argumentos, donde -1=ilimitado: 3; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función no admite esa cantidad de argumentos: 2. La función admite esta cantidad de argumentos, donde -1=ilimitado: 3; No es una expresión válida; Estilo Excel if(test,result_if_true,result_if_false); si(prueba,resultado_si_verdadero,resultado_si_falso)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="La función no admite esa cantidad de argumentos: 0. La función admite esta cantidad de argumentos, donde -1=ilimitado: 1,2; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="La función no admite esa cantidad de argumentos: 0. La función admite esta cantidad de argumentos, donde -1=ilimitado: 1,2; No es una expresión válida; Formatee una fecha/hora local; fecha de cadena (formato [, marca de tiempo = hora ()])" style="color: blue; font-weight: bold">fecha</span></span> ()</span><br> Asignar variables de solo lectura: <span style="background-color: #eee8aa;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida; ; valor=trabajador" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Asignar un nuevo valor a una variable" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida" style="border-style: solid; border-width: 2px; border-color: red;"><span title="El valor de esta variable no se puede cambiar; No es una expresión válida; [java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span></span> <span title="Asignar un nuevo valor a una variable" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span></span><br> Paréntesis desequilibrados: <span style="background-color: #eee8aa;"><span title="Paréntesis no equilibrados" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Paréntesis no equilibrados; Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Paréntesis no equilibrados" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="Expresión exponencial; número pow(base, exp)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Se detectaron paréntesis adicionales a la derecha" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>!¡NORTE!<tr><td> <b>A continuación se muestra parte de la sintaxis no admitida.</b><br> No hay soporte para '++', '--', '%',';': {min(++age, --age,age % 2);}<br> Ni '|', '&', '^': {(suma(2 | 3,3 y 4,5 ^ 6)}}<br> Ni matrices: {nombre[2], nombre['mío']}
<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>A continuación se muestra parte de la sintaxis no admitida.</b><br> No hay soporte para '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Encuentre el valor más bajo; número mínimo(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Ni '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Calcular la suma de valores en una matriz; suma de números (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> (2 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">y</span> 4,5 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Ni matrices: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'mío'</span> <span title="Sintaxis no compatible" 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>A continuación se muestra parte de la sintaxis no admitida.</b><br> No hay soporte para '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Encuentre el valor más bajo; número mínimo(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> , <span title="[java61764X1X2][G:2][P:30]: ¿Cuántos años tienes?; valor=45" style="color: green; font-weight: bold">edad</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Ni '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Calcular la suma de valores en una matriz; suma de números (arg1, arg2, ... argN)" style="color: blue; font-weight: bold">suma</span> (2 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">y</span> 4,5 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Ni matrices: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1][G:1][P:10]: ¿Cuál es tu nombre?; valor=Pedro" style="color: green; font-weight: bold">nombre</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'mío'</span> <span title="Sintaxis no compatible" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


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




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Ejemplos de adaptación (p. ej., extensión de {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Estimado {Señor}/{Señora} Smith..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Utilice la función if() para elegir condicionalmente si se muestra 'Mr.' o 'Señora'.


The syntax is if(test,do_if_true,do_if_false).
La sintaxis es si(prueba,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||Código||Pregunta||Tipo
|-
|-
|1||gender||What is your gender?||Gender
|1||género||¿Cuál es tu género?||Género
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |ejemplo1||Estimado {if(gender=='M','Mr.','Mrs.')} Smith, ...||¡Texto libre largo
|}
|}


Line 121: Line 114:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
Como se puede observar a continuación, "Señor" y "Señora" se adaptan a lo que el encuestado selecciona como respuesta a la pregunta "género".




Line 128: Line 121:




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Estimado {Señor}/{Señora} Smith..." en el correo electrónico de invitación==




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.
Puede utilizar el ejemplo anterior en el correo electrónico de invitación utilizando atributos de la tabla de tokens. Utilice la función if() para elegir si 'Mr.' o 'Sra.' debe usarse en el correo electrónico.




The syntax is "if(test,do_if_true,do_if_false)".
La sintaxis es "si(prueba,do_if_true,do_if_false)".


{|
{|
|#||attribute||value
|#||atributo||valor
|-
|-
|1||Last name||Smith
|1||Apellido||Smith
|-
|-
|2||Email address||test@test.com
|2||Dirección de correo electrónico||test@test. es
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 140:




Text in invitation email:
Texto en el correo electrónico de invitación:


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


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


you have been invited to participate in a survey:
has sido invitado a participar en una encuesta:


https:/...
https://...


</syntaxhighlight>
</syntaxhighlight>
Line 163: Line 156:




email View:
correo electrónico Ver:




Line 169: Line 162:




=Calculation / Assessment Examples=
=Ejemplos de cálculo/evaluación=




==Calculate assessment values at runtime and store the results in the survey data==
==Calcule los valores de evaluación en tiempo de ejecución y almacene los resultados en los datos de la encuesta==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Este ejemplo utiliza todas las funciones de EM, incluidas la relevancia, la adaptación y el tipo de pregunta de ecuación.


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.
También muestra que todos ellos están habilitados para JavaScript, por lo que si tiene estas características en una página, cambiará dinámicamente a medida que las personas establezcan y cambien sus respuestas.


{|
{|
|#||Code||Question||Type||Relevance
|#||Código||Pregunta||Tipo||Relevancia
|-
|1||numKids||How many children do you have?||Numerical input||1
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|1||numKids||¿Cuántos hijos tienes?||Entrada numérica||1!N !|-
|2||kid1||¿Cuántos años tiene tu primer hijo?||Entrada numérica||numKids >= 1
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|3||kid2||¿Cuántos años tiene tu segundo? niño?||Entrada numérica||numKids >= 2
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|4||kid3||¿Cuántos años tiene su tercer hijo?||Entrada numérica||numKids >= 3
|-! N!|5||kid4||¿Cuántos años tiene su cuarto hijo?||Entrada numérica||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)}||Ecuación||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||Dijiste que tienes {numKids}. {if(numKids==1,'niño','niños')}. {if(numKids>1,implode(' ','La suma de las edades de sus primeros ',min(numKids,4),' hijos es ',sumKidAges,'.'),' ')}||Visualización de texto| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
Para descargar este ejemplo, haga clic en el siguiente enlace: [[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.
Puede encontrar a continuación capturas de pantalla de preguntas representativas. Como puede ver, la sintaxis EM resalta todos los campos que pueden contener personalización. Aquí verá ejemplos de relevancia del resaltado de sintaxis, el tipo de pregunta de ecuación y sustituciones dentro de una pregunta. También puede utilizar sustituciones en Ayuda, visualización de encabezado de grupo, mensaje de bienvenida y mensaje de finalización.


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.
En el siguiente ejemplo, dado que la relevancia es {numKids >= 2), la pregunta solo será visible si el encuestado informa que tiene al menos dos hijos.




Line 209: Line 200:




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)).
A continuación, puede observar que cada variable tiene el sufijo .NAOK adjunto. Esto se debe a que los mercados emergentes apoyan la relevancia en cascada. Si no tuviera .NAOK, entonces la suma sólo se calcularía si la persona dijera que tiene 4 hijos (por ejemplo, si todas las variables son relevantes). El uso de .NAOK significa que queremos calcular la suma incluso si todas o algunas de las variables son irrelevantes (por ejemplo, "No aplicable" (NA) está bien (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:
Sin embargo, el atributo .NAOK solo afecta si las variables se pasan a EM. Si la encuestada inicialmente dice que tiene 3 hijos e ingresa las edades de cada uno, luego cambia de opinión y dice que tiene 2, no queremos ver la suma de los 3 valores ingresados, ya que el tercer hijo "no aplica". en nuestro caso ya:




Line 217: Line 208:




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.
Cada expresión separada está codificada por colores con un fondo tostado. Como puede ver, aquí hay tres expresiones separadas. El último contiene un mensaje que se muestra condicionalmente sólo si la persona tiene más de un hijo.




Line 223: Line 214:




Now, here are screenshots of the survey in action.
Ahora, aquí hay capturas de pantalla de la encuesta en acción.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Cuando visitas la página por primera vez, ves esto. Tenga en cuenta que dice "Tienes 0 '''hijos'''" en lugar de "Tienes 0 '''hijos'''".




Line 231: Line 222:




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:
Si cambio el valor del número de niños a 1, la pantalla cambia instantáneamente a esto, aunque esté en la misma página:




Line 237: Line 228:




Now notice that the grammar is correct: "You have 1 '''child'''".
Ahora observe que la gramática es correcta: "Tienes 1 '''hijo'''".


Now I change the value for number of children to 3, and the display instantly changes to this.
Ahora cambio el valor del número de niños a 3 y la pantalla cambia instantáneamente a esto.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Observe que ahora ve el mensaje condicional en la parte inferior: "La suma de las edades de sus primeros 3 hijos es 0".




Line 247: Line 238:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Ahora ingreso las edades de mis hijos imaginarios y obtengo esta pantalla que resume sus edades:




Line 253: Line 244:




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.
Nuevamente, la puntuación y la pantalla se actualizan instantáneamente a medida que ingreso los valores, por lo que puede usar esto para mostrar un total acumulado de una puntuación de evaluación.




Now, I change the value for the number of children to 2. The display has changed to this:
Ahora, cambio el valor del número de niños a 2. La pantalla ha cambiado a esto:




Line 262: Line 253:




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.
Observe que aunque ingresé un valor de 5,5 para el tercer hijo, el informe ahora solo suma los valores de mis primeros 2 hijos.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
La razón de esto es que el tercer valor ahora es irrelevante y EM ignora activamente los valores irrelevantes.


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.
Si volviera a cambiar el número de niños a 3, volvería a ver el valor de 5,5 que ingresé. Por lo tanto, no pierdo la información que ingreso en la página.


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.
Sin embargo, si navego a la página Siguiente o Anterior, todos los valores irrelevantes se anularán en la sesión y en la base de datos. Entonces, si mantuviera el valor en 2, pasara a la página siguiente y luego volviera y dijera que en realidad tengo 3 hijos, ya no vería la edad de 5,5 años.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Ingrese datos y vea un informe que cambia dinámicamente de lo que se ingresó en la misma página==




This example presents the Tailoring process within LimeSurvey.
Este ejemplo presenta el proceso de Adaptación dentro de 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]].
Para descargar este ejemplo, haga clic en el siguiente enlace: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Ejemplo de encuesta de cambios dinámicos]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Así es como se ve la página inicialmente. Solo verás la pregunta en qué ciudad vives:




Line 284: Line 275:




Once you start to enter an answer, the tailoring process is also starting:
Una vez que comienza a ingresar una respuesta, también comienza el proceso de personalización:


<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.
A medida que ingresa respuestas, la tabla en la parte inferior de la página se actualiza para mostrar los códigos de respuesta y los valores de sus respuestas.




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


=Common Debugging Examples=
=Ejemplos comunes de depuración=




==Nested if() Statements (Conditional Logic)==
== Declaraciones if() anidadas (lógica condicional) ==




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 admite la función "if(test,do_if_true,do_if_false)" para que pueda realizar lógica condicional o adaptación. Esta función se puede anidar para hacer el equivalente de "if { } else if { } else { }". EM le informará si los paréntesis no están equilibrados (por ejemplo, le falta un paréntesis derecho de cierre) o si tiene algún paréntesis derecho adicional. Debería intentar contar los paréntesis mientras redacta sentencias if anidadas durante mucho tiempo, guardarlas, comprobar si hay errores de sintaxis y corregirlos si se encuentra alguno. Revisemos juntos el siguiente ejemplo.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
Se puede acceder al grupo de preguntas utilizadas a continuación desde aquí: [[Media:Example_tailoring_group11.zip|Tailoring Survey example.lsg]]




First, with nothing entered, you just see "Hello."
Primero, sin haber ingresado nada, solo verá "Hola".




Line 311: Line 302:




If you enter a name, it says, "Hello {name}."
Si ingresa un nombre, dice "Hola {nombre}".




Line 317: Line 308:




If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:
Si ingresa una edad, recibirá un mensaje personalizado, dependiendo de si es un niño en edad preescolar o no:




Line 323: Line 314:




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
Edad escolar, adolescente o adulto. Aquí hay un adolescente que quiere permanecer en el anonimato:




Line 329: Line 320:




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.
Aquí está el archivo lógico del grupo. Como puede ver en la pregunta "basada en si", hay declaraciones if anidadas basadas en la edad de la persona.




Line 335: Line 326:




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:
Cuando esté editando esta pregunta originalmente, es probable que en algún momento tenga una cantidad incorrecta de paréntesis. Esto es lo que sucede si tienes muy pocos:




Line 341: Line 332:




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.
Si pasa el cursor sobre la palabra "si", que está rodeada por un cuadro rojo, dice "Paréntesis no equilibrados". En este caso, debería haber cuatro paréntesis de cierre después de "¡ya eres adulto!", pero solo hay tres.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Si, por el contrario, tienes un paréntesis derecho adicional, estará rodeado por un cuadro rojo, como este:




Line 349: Line 340:




When you are actually editing the question, the question looks like this:
Cuando en realidad estás editando la pregunta, la pregunta se ve así:




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

Latest revision as of 21:06, 6 September 2023


Resumen de lo explicado anteriormente

Si has seguido hasta ahora la estructura del manual de LimeSurvey, significa que ya conoces la Terminología de LimeSurvey. A continuación, cubrimos expresiones y variables para aprender cómo mejorar nuestras encuestas. En la siguiente parte, pasamos a los tipos y significados de resaltado de sintaxis para aprender cómo corregir errores de sintaxis.

Con estas nociones básicas cubiertas, podríamos avanzar hacia ejemplos y explicar cómo funcionan las expresiones dentro de LimeSurvey.


Resaltado de sintaxis

Las siguientes capturas de pantalla brindan ejemplos, pero no muestran los valores de la información sobre herramientas. Una información sobre herramientas es un cuadro informativo que se muestra cada vez que pasa el mouse sobre cualquier palabra en negrita.

Gracias a este resaltado de sintaxis, es muy fácil componer expresiones correctas, incluso aquellas que son complicadas. Aunque el equipo de LimeSurvey planea intentar crear una GUI de Expression Builder, puede utilizar el resaltado de sintaxis existente para identificar y corregir rápidamente errores tipográficos. También puede utilizar la información sobre herramientas para validar la precisión de sus expresiones (por ejemplo, confirmar que ha seleccionado las variables deseadas).

En cada uno de los ejemplos, hay tres columnas:

  1. Fuente: este es el texto sin formato que ingresaría en el campo de preguntas de LimeSurvey.N!#Pretty Print: ¡este es el equivalente resaltado en sintaxis de lo que ingresó! N!#*Tenga en cuenta que las expresiones se muestran con un fondo tostado, pero no rodeadas por llaves en este resaltado.
    • Dado que EM admite la sustitución recursiva, mostrar llaves en el resaltado provocaría errores de sintaxis.N!#Resultado - ¡Esta es la salida generada cuando EM procesa la fuente
    • Todo lo que se puede sustituir correctamente es
    • Las expresiones con errores se muestran en línea, con resaltado de sintaxis. Los errores están rodeados por un cuadro con líneas rojas.


Sintaxis adecuada

Puede encontrar a continuación ejemplos de sintaxis adecuada:

  1. Valores: muestra que las variables conocidas están codificadas por colores según estén configuradas en la página actual. INSERTANTES de estilo antiguo:xxxx obtiene su propio estilo de codificación de colores.
  2. Atributos de preguntas: ¡muestra que la notación de puntos puede acceder a algunas propiedades de las preguntas
  3. Matemáticas: ¡muestra que se admiten cálculos básicos y complejos
  4. Procesamiento de texto: muestra algunas de las funciones de procesamiento de texto disponibles
  5. Dates: muestra dos de las funciones disponibles relacionadas con fechas
  6. Conditional: muestra el uso de la función if(). Las opciones se pueden anidar.
  7. Párrafo personalizado: puede personalizar completamente un informe basado en valores anteriores
  8. Procesos EM dentro de cadenas: muestra que puede hacer sustituciones dentro de cadenas. Este ejemplo genera un nombre de imagen personalizado.
  9. EM no procesa llaves como estas: muestra que si se escapan las llaves, o hay un espacio en blanco entre la expresión y las llaves, ES ignora la expresión.



Sintaxis de EM que contiene errores

A continuación se muestran ejemplos de errores comunes al escribir expresiones ES. Tenga en cuenta que la información sobre herramientas proporciona información adicional.

  1. Javascript en línea que olvidó agregar espacios después de la llave
    • Dado que "document.write" aparece justo después de una llave, EM piensa que es una expresión y red- cuadros "documento" y "escribir" ya que son variables y funciones no definidas, respectivamente
  2. Variables, funciones y operadores desconocidos/mal escritos
    • Aquí olvidamos que estamos usando el nombre de variable "género" en lugar de " sexo", pero EM detecta ese error. También encuadra en rojo '++', ya que no es un operador admitido.
  3. Advierte si se usa = en lugar de eq, o realiza asignaciones de valores
    • Tenga en cuenta que '=" y '+=' están en texto rojo en lugar de negro. Si pasa el mouse sobre ellos, verá advertencias de que está asignando un valor.
  4. Número incorrecto de argumentos para funciones
    • if() toma 3 argumentos, pero se le han dado 4, por lo que al pasar el cursor sobre el "si" encuadrado en rojo se explicará el error y se mostrará la sintaxis admitida. N!#*sum() toma un número ilimitado de argumentos, pero teníamos una coma al final antes del paréntesis de cierre, ¡así que está encuadrado en rojo! N!#Paréntesis no coincidentes
    • Este es uno de los errores más comunes al escribir expresiones.
    • Esto muestra dos ejemplos de paréntesis de cierre faltantes y un ejemplo de tener demasiados paréntesis de cierre.
#¡Sintaxis no compatible
    • Si utiliza un operador o puntuación que ES no admite, lo marcará en un recuadro rojo.
  1. Asignaciones no válidas
    • Algunas variables son de lectura y escritura y se pueden cambiar sus valores. Otras son de sólo lectura.
    • Si intenta cambiar el valor de una variable de sólo lectura, no podrá. EM marcará el intento en un cuadro rojo.
    • Si intenta asignar un valor a una ecuación o una cadena, también obtendrá un error



"Ejemplos en vivo" de resaltado de sintaxis con información sobre herramientas activa

!¡NORTE!!¡NORTE!
Fuente Bonita impresión Resultado
A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.
Hola {if(gender=='M','Mr.','Mrs.')} {apellido}, ahora es {fecha('g:i a',time())}. ¿Sabes dónde están tus {sum(numPets,numKids)} hijos y mascotas?
A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.
Hola , si ( género == 'M' , 'Mr.' , 'Mrs.' ) apellido , ahora es fecha ( 'g:i a' , hora ()) . ¿Sabe dónde están sus hijos y mascotas suma ( numPets , numKids ) ?
A continuación se muestra un ejemplo de sintaxis OK con información sobre herramientas.
Hola Sr. Smith , ahora son las 6:07 am. ¿Sabes dónde están tus 3 hijos y tus mascotas?
Aquí hay errores comunes para que pueda ver la información sobre herramientas.
Variables utilizadas antes de declararse: {notSetYet}
Función desconocida: {iff(numPets>numKids,1,2)}
Variable desconocida: {suma(edad,num_pets,numKids)}
# parámetros incorrectos: {sprintf()},{if(1,2)},{date()}
Asignar variables de solo lectura:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Paréntesis desequilibrados: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Aquí hay errores comunes para que pueda ver la información sobre herramientas.
Variables utilizadas antes de ser declaradas: notSetYet
Función desconocida: iff ( numPets > numKids ,1,2)
Variable desconocida: suma ( edad , num_pets , numKids )
# parámetros incorrectos: sprintf () , if (1,2) , fecha ()
Asignar variables de solo lectura: TOKEN:ATTRIBUTE_1 += 10 , nombre = 'Sally'
Paréntesis desequilibrados: pow (3,4 , (pow (3,4) , pow (3,4) )
Aquí hay errores comunes para que pueda ver la información sobre herramientas.
Variables utilizadas antes de ser declaradas: notSetYet
Función desconocida: iff ( numPets > numKids ,1,2)
Variable desconocida: suma ( edad , num_pets , numKids )
# parámetros incorrectos: sprintf () , if (1,2) , fecha ()
Asignar variables de solo lectura: TOKEN:ATTRIBUTE_1 += 10 , nombre = 'Sally'
Paréntesis desequilibrados: pow (3,4 , (pow (3,4) , pow (3,4) )
A continuación se muestra parte de la sintaxis no admitida.
No hay soporte para '++', '--', '%',';': {min(++age, --age,age % 2);}
Ni '|', '&', '^': {(suma(2 | 3,3 y 4,5 ^ 6)}}
Ni matrices: {nombre[2], nombre['mío']}
A continuación se muestra parte de la sintaxis no admitida.
No hay soporte para '++', '--', '%',';': min ( ++ edad , -- edad , edad % 2) ;
Ni '|', '&', '^': ( suma (2 | 3,3 y 4,5 ^ 6) }
Ni matrices: nombre [ 2 ] , nombre [ 'mío' ]
A continuación se muestra parte de la sintaxis no admitida.
No hay soporte para '++', '--', '%',';': min ( ++ edad , -- edad , edad % 2) ;
Ni '|', '&', '^': ( suma (2 | 3,3 y 4,5 ^ 6) }
Ni matrices: nombre [ 2 ] , nombre [ 'mío' ]


Ejemplos de adaptación (p. ej., extensión de {INSERTANS:xxx})

"Estimado {Señor}/{Señora} Smith..."

Utilice la función if() para elegir condicionalmente si se muestra 'Mr.' o 'Señora'.

La sintaxis es si(prueba,do_if_true,do_if_false).

# Código Pregunta Tipo
1 género ¿Cuál es tu género? Género
|ejemplo1 Estimado {if(gender=='M','Mr.','Mrs.')} Smith, ... ¡Texto libre largo



Como se puede observar a continuación, "Señor" y "Señora" se adaptan a lo que el encuestado selecciona como respuesta a la pregunta "género".



"Estimado {Señor}/{Señora} Smith..." en el correo electrónico de invitación

Puede utilizar el ejemplo anterior en el correo electrónico de invitación utilizando atributos de la tabla de tokens. Utilice la función if() para elegir si 'Mr.' o 'Sra.' debe usarse en el correo electrónico.


La sintaxis es "si(prueba,do_if_true,do_if_false)".

# atributo valor
1 Apellido Smith
2 Dirección de correo electrónico test@test. es
3 ATTRIBUTE_2 M


Texto en el correo electrónico de invitación:

Estimado {if(ATTRIBUTE_2=='M','Mr','Mrs')} {APELLIDO},

has sido invitado a participar en una encuesta:

https://...



correo electrónico Ver:



Ejemplos de cálculo/evaluación

Calcule los valores de evaluación en tiempo de ejecución y almacene los resultados en los datos de la encuesta

Este ejemplo utiliza todas las funciones de EM, incluidas la relevancia, la adaptación y el tipo de pregunta de ecuación.

También muestra que todos ellos están habilitados para JavaScript, por lo que si tiene estas características en una página, cambiará dinámicamente a medida que las personas establezcan y cambien sus respuestas.

# Código Pregunta Tipo Relevancia
1 numKids ¿Cuántos hijos tienes? Entrada numérica - 2 kid1 ¿Cuántos años tiene tu primer hijo? Entrada numérica numKids >= 1
3 kid2 ¿Cuántos años tiene tu segundo? niño? Entrada numérica numKids >= 2
4 kid3 ¿Cuántos años tiene su tercer hijo? Entrada numérica numKids >= 3
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Ecuación 1
7 kidSummary Dijiste que tienes {numKids}. {if(numKids==1,'niño','niños')}. {if(numKids>1,implode(' ','La suma de las edades de sus primeros ',min(numKids,4),' hijos es ',sumKidAges,'.'),' ')} |1


Para descargar este ejemplo, haga clic en el siguiente enlace: Assessments_survey_example.


Puede encontrar a continuación capturas de pantalla de preguntas representativas. Como puede ver, la sintaxis EM resalta todos los campos que pueden contener personalización. Aquí verá ejemplos de relevancia del resaltado de sintaxis, el tipo de pregunta de ecuación y sustituciones dentro de una pregunta. También puede utilizar sustituciones en Ayuda, visualización de encabezado de grupo, mensaje de bienvenida y mensaje de finalización.

En el siguiente ejemplo, dado que la relevancia es {numKids >= 2), la pregunta solo será visible si el encuestado informa que tiene al menos dos hijos.



A continuación, puede observar que cada variable tiene el sufijo .NAOK adjunto. Esto se debe a que los mercados emergentes apoyan la relevancia en cascada. Si no tuviera .NAOK, entonces la suma sólo se calcularía si la persona dijera que tiene 4 hijos (por ejemplo, si todas las variables son relevantes). El uso de .NAOK significa que queremos calcular la suma incluso si todas o algunas de las variables son irrelevantes (por ejemplo, "No aplicable" (NA) está bien (OK)).

Sin embargo, el atributo .NAOK solo afecta si las variables se pasan a EM. Si la encuestada inicialmente dice que tiene 3 hijos e ingresa las edades de cada uno, luego cambia de opinión y dice que tiene 2, no queremos ver la suma de los 3 valores ingresados, ya que el tercer hijo "no aplica". en nuestro caso ya:



Cada expresión separada está codificada por colores con un fondo tostado. Como puede ver, aquí hay tres expresiones separadas. El último contiene un mensaje que se muestra condicionalmente sólo si la persona tiene más de un hijo.



Ahora, aquí hay capturas de pantalla de la encuesta en acción.

Cuando visitas la página por primera vez, ves esto. Tenga en cuenta que dice "Tienes 0 hijos" en lugar de "Tienes 0 hijos".



Si cambio el valor del número de niños a 1, la pantalla cambia instantáneamente a esto, aunque esté en la misma página:



Ahora observe que la gramática es correcta: "Tienes 1 hijo".

Ahora cambio el valor del número de niños a 3 y la pantalla cambia instantáneamente a esto.

Observe que ahora ve el mensaje condicional en la parte inferior: "La suma de las edades de sus primeros 3 hijos es 0".



Ahora ingreso las edades de mis hijos imaginarios y obtengo esta pantalla que resume sus edades:



Nuevamente, la puntuación y la pantalla se actualizan instantáneamente a medida que ingreso los valores, por lo que puede usar esto para mostrar un total acumulado de una puntuación de evaluación.


Ahora, cambio el valor del número de niños a 2. La pantalla ha cambiado a esto:



Observe que aunque ingresé un valor de 5,5 para el tercer hijo, el informe ahora solo suma los valores de mis primeros 2 hijos.

La razón de esto es que el tercer valor ahora es irrelevante y EM ignora activamente los valores irrelevantes.

Si volviera a cambiar el número de niños a 3, volvería a ver el valor de 5,5 que ingresé. Por lo tanto, no pierdo la información que ingreso en la página.

Sin embargo, si navego a la página Siguiente o Anterior, todos los valores irrelevantes se anularán en la sesión y en la base de datos. Entonces, si mantuviera el valor en 2, pasara a la página siguiente y luego volviera y dijera que en realidad tengo 3 hijos, ya no vería la edad de 5,5 años.


Ingrese datos y vea un informe que cambia dinámicamente de lo que se ingresó en la misma página

Este ejemplo presenta el proceso de Adaptación dentro de LimeSurvey.

Para descargar este ejemplo, haga clic en el siguiente enlace: Ejemplo de encuesta de cambios dinámicos.

Así es como se ve la página inicialmente. Solo verás la pregunta en qué ciudad vives:



Una vez que comienza a ingresar una respuesta, también comienza el proceso de personalización:


A medida que ingresa respuestas, la tabla en la parte inferior de la página se actualiza para mostrar los códigos de respuesta y los valores de sus respuestas.


Ejemplos comunes de depuración

Declaraciones if() anidadas (lógica condicional)

EM admite la función "if(test,do_if_true,do_if_false)" para que pueda realizar lógica condicional o adaptación. Esta función se puede anidar para hacer el equivalente de "if { } else if { } else { }". EM le informará si los paréntesis no están equilibrados (por ejemplo, le falta un paréntesis derecho de cierre) o si tiene algún paréntesis derecho adicional. Debería intentar contar los paréntesis mientras redacta sentencias if anidadas durante mucho tiempo, guardarlas, comprobar si hay errores de sintaxis y corregirlos si se encuentra alguno. Revisemos juntos el siguiente ejemplo.

Se puede acceder al grupo de preguntas utilizadas a continuación desde aquí: Tailoring Survey example.lsg


Primero, sin haber ingresado nada, solo verá "Hola".



Si ingresa un nombre, dice "Hola {nombre}".



Si ingresa una edad, recibirá un mensaje personalizado, dependiendo de si es un niño en edad preescolar o no:



Edad escolar, adolescente o adulto. Aquí hay un adolescente que quiere permanecer en el anonimato:



Aquí está el archivo lógico del grupo. Como puede ver en la pregunta "basada en si", hay declaraciones if anidadas basadas en la edad de la persona.



Cuando esté editando esta pregunta originalmente, es probable que en algún momento tenga una cantidad incorrecta de paréntesis. Esto es lo que sucede si tienes muy pocos:



Si pasa el cursor sobre la palabra "si", que está rodeada por un cuadro rojo, dice "Paréntesis no equilibrados". En este caso, debería haber cuatro paréntesis de cierre después de "¡ya eres adulto!", pero solo hay tres.

Si, por el contrario, tienes un paréntesis derecho adicional, estará rodeado por un cuadro rojo, como este:



Cuando en realidad estás editando la pregunta, la pregunta se ve así: