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 sample surveys/es: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Encuestas de muestra de ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Para descargar el ejemplo de encuesta anterior, haga clic en el siguiente enlace: Media:Rating_User-Entered_List_of_Products_Survey.zip|Ejemplo de encuesta de calificación..."
 
(135 intermediate revisions by the same user not shown)
Line 4: Line 4:




=Introduction=
=Introducción=




The best way to learn how to use the ExpressionScript is to play with working examples and modify them to your needs.
La mejor manera de aprender a utilizar ExpressionScript es jugar con ejemplos funcionales y modificarlos según sus necesidades.


You may find below a set of sample surveys to demonstrate (and test) how the EM can be used to enhance your survey. These surveys can be found in the distribution's /docs/demosurveys folder.  
Puede encontrar a continuación un conjunto de encuestas de muestra para demostrar (y probar) cómo se puede utilizar el EM para mejorar su encuesta. Estas encuestas se pueden encontrar en la carpeta /docs/demosurveys de la distribución.  




=Relevance, Tailoring and Equations=
=Relevancia, Adaptación y Ecuaciones=




==Overview==
==Descripción general==




The following example computes the BMI (Body Mass Index) of each respondent. See below the features that are demonstrated within this example.
El siguiente ejemplo calcula el IMC (índice de masa corporal) de cada encuestado. Vea a continuación las características que se demuestran en este ejemplo.


==EM Features Demonstrated==
==Características EM demostradas==
   
   


#'''Relevance''' - support for powerful conditional logic;
#'''Relevance''' - soporte para poderosa lógica condicional;
#'''Piping / Tailoring''' - offers the ability to pipe or tailor answers and question metadata;
#'''Piping / Tailoring''' - ofrece la capacidad de canalizar o adaptar respuestas y metadatos de preguntas;
#'''Dynamic Tailoring''' - note that reports are changed on the page as you answer questions.
#'''Adaptación dinámica ''' - tenga en cuenta que los informes cambian en la página a medida que responde las preguntas.
#'''Micro-Tailoring''' - conditional tailoring within sentences and reports using if() statements
#'''Micro-Tailoring''' - adaptación condicional dentro de oraciones e informes utilizando declaraciones if()
#'''Equations''' - a new [[Question type - Equation|question type]] that lets you do calculations and store the results in the database, even if the calculation is hidden
#'''Ecuaciones ''' - un nuevo [[Tipo de pregunta - Ecuación|tipo de pregunta]] que le permite hacer cálculos y almacenar los resultados en la base de datos, ¡incluso si el cálculo está oculto
#'''Conditional Validation''' - validation criteria, such as the minimum allowable value, can be conditional - e.g., based upon equations.
#'''Validación condicional''' - validación Los criterios, como el valor mínimo permitido, pueden ser condicionales, por ejemplo, basados en ecuaciones.




==Screenshots==
==Capturas de pantalla==




This example computes the Body Mass Index, a calculation of your weight and height to determine whether you are underweight, normal weight, overweight, or obese. Note that initially, all you see are the four mandatory questions:
Este ejemplo calcula el índice de masa corporal, un cálculo de su peso y altura para determinar si tiene bajo peso, peso normal, sobrepeso u obesidad. Tenga en cuenta que inicialmente todo lo que ve son las cuatro preguntas obligatorias:




Line 40: Line 40:




Once you enter your information (and you get to choose whether to use metric or non-metric units), you see a tailored report that summarizes what you entered, telling you your weight status:
Una vez que ingresa su información (y puede elegir si desea usar unidades métricas o no métricas), verá un informe personalizado que resume lo que ingresó y le indica su estado de peso:




Line 46: Line 46:




Here is a different example, using non-metric units to show how the result changes dynamically:  
Aquí hay un ejemplo diferente, que utiliza unidades no métricas para mostrar cómo el resultado cambia dinámicamente:  




Line 52: Line 52:




There are hidden [[Question type - Equation|Equation-type questions]] at the internal level that converts the data to metric (if needed), storing the metric height, weight, BMI, and weight status in the database without needing custom JavaScript.
Hay [[Tipo de pregunta - Ecuación|Preguntas de tipo ecuación]] ocultas en el nivel interno que convierte los datos a métricas (si es necesario), almacenando la altura, el peso, el IMC y el estado del peso en la base de datos sin necesidad de JavaScript personalizado. .


You can see in the next set of examples how you can use mathematical and other functions within tailored reports. This is how the page looks like before you enter any data. There is conditional logic to show blank cells if no (or non-numeric) data is entered, rather than showing "NaN" or "Divide by Zero".
Puede ver en el siguiente conjunto de ejemplos cómo puede utilizar funciones matemáticas y de otro tipo en informes personalizados. Así es como se ve la página antes de ingresar cualquier dato. Existe una lógica condicional para mostrar celdas en blanco si no se ingresan datos (o no numéricos), en lugar de mostrar "NaN" o "Dividir por cero".




Line 60: Line 60:




As numbers are entered, the on-page report changes to show the computation being performed, and its result.
A medida que se ingresan números, el informe en la página cambia para mostrar el cálculo que se realiza y su resultado.




Line 66: Line 66:




There are many other examples in this sample survey. For example, the below screenshot shows one of the dozens of ways you can fill out the Dynamic Relevance page. As the help text notes, try different ages, and especially illogical combinations of responses to see the amusing messages generated at the bottom. Also note that if you say that you have more than one child, the message will say "I hope you enjoy playing with your X children", rather than saying "I hope you enjoy playing with your child". This shows how you can easily micro-tailor sentences to make them match the gender and/or number of your subjects. You can even easily conjugate verbs and decline nouns based upon gender and number.
Hay muchos otros ejemplos en esta encuesta de muestra. Por ejemplo, la siguiente captura de pantalla muestra una de las docenas de formas en que puede completar la página de Relevancia dinámica. Como lo indica el texto de ayuda, pruebe con diferentes edades y, especialmente, combinaciones ilógicas de respuestas para ver los mensajes divertidos generados en la parte inferior. También tenga en cuenta que si dice que tiene más de un hijo, el mensaje dirá "Espero que disfrute jugando con sus X hijos", en lugar de decir "Espero que disfrute jugando con su hijo". Esto muestra cómo puedes microadaptar fácilmente oraciones para que coincidan con el género y/o número de tus sujetos. Incluso puedes conjugar fácilmente verbos y declinar sustantivos según el género y el número.




Line 72: Line 72:




==Download==
==Descargar==




To access the survey sample, please click on the following link: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].
Para acceder a la muestra de la encuesta, haga clic en el siguiente enlace: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].


=Sample Census=
=Censo de muestra=




==Overview==
==Descripción general==




This is a census example that asks how many people are in your household.
Este es un ejemplo de censo que pregunta cuántas personas hay en su hogar.


It demonstrates how group-level relevance can make it easier to implement a "loop" of questions. After creating the group for Person 1, I exported the group. Since I used qcode variable names like p1_name instead of the SGQA code, I could use a text editor to quickly edit and re-import the group several times (e.g., it took about 10 seconds to edit and re-import each repeating group, ensuring that all variables had unique variables names and that the group-level logic was correct).
Demuestra cómo la relevancia a nivel de grupo puede facilitar la implementación de un "bucle" de preguntas. Después de crear el grupo para la Persona 1, lo exporté. Dado que usé nombres de variables qcode como p1_name en lugar del código SGQA, pude usar un editor de texto para editar y volver a importar rápidamente el grupo varias veces (por ejemplo, me tomó alrededor de 10 segundos editar y volver a importar cada grupo repetido, asegurando que todas las variables tenían nombres de variables únicos y que la lógica a nivel de grupo era correcta).


You can also the [[Copy question|copy question]] feature, but it won't be as fast as the option suggested above.
También puedes utilizar la función [[Copiar pregunta|copiar pregunta]], pero no será tan rápida como la opción sugerida anteriormente.


This also shows how you can prevent the Finished message from appearing until the survey is truly finished (e.g., when all needed groups are completed).
Esto también muestra cómo puede evitar que aparezca el mensaje Finalizado hasta que la encuesta esté realmente finalizada (por ejemplo, cuando se hayan completado todos los grupos necesarios).




==EM Features Demonstrated==
==Características EM demostradas==




#'''Group-level relevance''' - The follow-up groups (Person 1-5) only show for up to the number of cohabitants specified;
#'''Relevancia a nivel de grupo''' - Los grupos de seguimiento (Persona 1-5) solo se muestran hasta el número de convivientes especificado;
#'''Tailoring''' - The final report summarizes the demographic data for each cohabitant;
#'''Sastrería''' - El informe final resume los datos demográficos de cada conviviente;
#'''Progressive question display''' - Whether in group or all-in-one mode, subsequent questions only show as soon as the preceding ones are answered.
#'''Visualización progresiva de preguntas''' - Ya sea en modo grupal o todo en uno, las preguntas posteriores solo se muestran tan pronto como se responden las anteriores.




==Screenshots==
==Capturas de pantalla==




The survey generates a tailored report showing the demographics of the specified number of cohabitants:
La encuesta genera un informe personalizado que muestra la demografía del número especificado de convivientes:




Line 109: Line 109:




If you switch to question-at-a-time mode, you see that the index tailors the questions. Since the user said that the person is a woman, it asks "What is her name". And since we answered "Mary", the next question says "How old is Mary"?
Si cambia al modo de pregunta a la vez, verá que el índice adapta las preguntas. Como el usuario dijo que la persona es una mujer, le pregunta "¿Cómo se llama?". Y como respondimos "María", la siguiente pregunta dice "¿Cuántos años tiene María"?




Line 115: Line 115:




==Download==
==Descargar==




To download the survey sample, click here: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].
Para descargar la muestra de la encuesta, haga clic aquí: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].




=Cascading Array Filters=
=Filtros de matriz en cascada=




==Overview==
==Descripción general==




This survey is based on the design of a survey courtesy of Joy Lane Research, LLC.  
Esta encuesta se basa en el diseño de una encuesta cortesía de Joy Lane Research, LLC.  




==Screenshots==
==Capturas de pantalla==




In the following, note that:
A continuación, tenga en cuenta que:
*Q02 only shows the set of products checked in Q01 (by using array_filter)
*Q02 solo muestra el conjunto de productos verificados en Q01 (mediante el uso de array_filter)
*Q02 also shows "Another product", the text entered into the "Other electronic" field in Q01
*Q02 también muestra "Otro producto", el texto ingresado en el campo "Otros electrónicos" en Q01  
*Q04 only shows products from Q02 that were checked (so the array filter cascades)
*Q04 solo muestra productos del Q02 que fueron verificados (por lo que el filtro de matriz se conecta en cascada)
*Q05 only shows products from Q02 that were not checked in Q02 (using a cascaded array_filter_exclude)
*Q05 solo muestra productos del Q02 que no se verificaron en el Q02 (usando un array_filter_exclude en cascada)




Line 146: Line 146:




==Download==
==Descargar==




Click on the following link to download the above example: [[Media:ls2_cascading_array_filter.lss|LS2_cascading_array_filter survey example]].
Haga clic en el siguiente enlace para descargar el ejemplo anterior: [[Media:ls2_cascading_array_filter.lss|LS2_cascading_array_filter survey example]].




=Piping/Tailoring Using All Question Types and Attributes=
=Conexiones/adaptación utilizando todos los tipos de preguntas y atributos=




==Overview==
==Descripción general==




If you are confused about how to name your variables (SGQA vs Qcodes), you are not alone. Although the main documentation describes [[ExpressionScript - Presentation#Access to Variables|how to compose Qcode variable names]], nothing beats seeing it in a working demo.  This survey shows how you can access question attributes and responses using the ExpressionScript.
Si no sabe cómo nombrar sus variables (SGQA vs Qcodes), no está solo. Aunque la documentación principal describe [[ExpressionScript - Presentación#Acceso a Variables|cómo componer nombres de variables Qcode]], nada mejor que verlo en una demostración funcional. Esta encuesta muestra cómo puede acceder a los atributos y respuestas de las preguntas utilizando ExpressionScript.




{{Note|For this example, we recommend turning off the built-in HTML editor (or converting it to the pop-up mode) when editing this survey. It can take a minute or more for the HTML editor to render the large HTML reports in edit mode.}}
{{Nota|Para este ejemplo, recomendamos desactivar el editor HTML integrado (o convertirlo al modo emergente) al editar esta encuesta. El editor HTML puede tardar un minuto o más en presentar los informes HTML grandes en modo de edición.}}




==Content==
==Contenido==




*Examples of every question type
*¡Ejemplos de cada tipo de pregunta
*All questions types that can use "other" are included so that you can see how that affects variable naming
*¡Todos los tipos de preguntas que pueden usar "otro" están incluidos para que puedas ver cómo eso afecta el nombre de las variables
*Default values for all the question types that accepts defaults
*Valores predeterminados para todos los tipos de preguntas que aceptan valores predeterminados
*Tailoring - On- and off-page reports showing all 16 available EM dot notation suffixes.
*Adaptación - Informes dentro y fuera de la página que muestran los 16 sufijos de notación de puntos EM disponibles.
*These reports show all of the currently entered data (so show you how you could generate your own printable reports for users in lieu of the print-answers screen)
*Estos informes muestran todos los datos ingresados actualmente (así que le muestran cómo puede generar sus propios informes imprimibles para los usuarios en lugar de los impresos pantalla de respuestas)
*Proper Qcode and SGQA naming of all variables
*Denominación adecuada de Qcode y SGQA de todas las variables




==Screenshots==
==Capturas de pantalla==




This is a huge survey, so we chose not to include screen shots. Instead, please download and play with it.
Esta es una encuesta enorme, por lo que decidimos no incluir capturas de pantalla. En su lugar, descárgalo y juega con él.




==Download==
==Descargar==




Click on the following link to download the survey: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]
Haga clic en el siguiente enlace para descargar la encuesta: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]


=Traditional validation, re-envisioned=
=Validación tradicional, reimaginada=




==Overview==
==Descripción general==




This demonstrates all the validation types that make use of expressions and how they affect each of the question types that support validation. In many cases, the validation tips start hidden and only appear if a question fails validation criteria (thus also disappearing once the question passes the validation criteria).  
Esto demuestra todos los tipos de validación que utilizan expresiones y cómo afectan a cada uno de los tipos de preguntas que admiten la validación. En muchos casos, los consejos de validación comienzan ocultos y solo aparecen si una pregunta no cumple con los criterios de validación (por lo tanto, también desaparecen una vez que la pregunta supera los criterios de validación).  




==Validation Types Demonstrated==
==Tipos de validación demostrados==




#[[QS:Min_num_value_n|min_num_value_n]] - minimum value for an answer
#[[QS:Min_num_value_n|min_num_value_n]] - valor mínimo para una respuesta
#[[QS:Max_num_value_n|max_num_value_n]] - max value for an answer
#[[QS:Max_num_value_n|max_num_value_n]] - valor máximo para una respuesta
#[[QS:Min_answers|min_answers]] - minimum number of answers required
#[[QS:Min_answers|min_answers]] - mínimo ¡número de respuestas requeridas
#[[QS:Max_answers|max_answers]] maximum number of answers allowed
#[[QS:Max_answers|max_answers]] ¡número máximo de respuestas permitidas
#[[QS:Multiflexible_min|multiflexible_min]] - minimum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_min|multiflexible_min]] - valor mínimo permitido para una respuesta (para el tipo de pregunta con números multiflexi)! N!#[[QS:Multiflexible_max|multiflexible_max]] - valor máximo permitido para una respuesta (para el tipo de pregunta de números multiflexi)
#[[QS:Multiflexible_max|multiflexible_max]] - maximum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Min_num_value|min_num_value]] - suma mínima permitida en todas las respuestas para la pregunta. N!#[[QS:Max_num_value|max_num_value]] - suma máxima permitida en todas las respuestas de la pregunta
#[[QS:Min_num_value|min_num_value]] - minimum allowed sum across all answers for the question
#[[QS:Equals_num_value|equals_num_value]] - ¡la suma de todas las respuestas de la pregunta debe ser igual a este valor!N !#[[QS:Preg_validation|validation]] - esta es la validación de expresión regular para la pregunta - se puede aplicar a celdas individuales
#[[QS:Max_num_value|max_num_value]] - maximum allowed sum across all answers for the question
#[[QS:Equals_num_value|equals_num_value]] - the sum across all answers for the question must equal this value
#[[QS:Preg_validation|validation]] - this is the regular expression validation for the question - it can apply to individual cells




==Screenshots==
==Capturas de pantalla==




Using new CSS styles, each validation type shows up a separate tip. If they are shown, they can be hidden via the hide_tip option. The default option is to show them with red font if the question fails the validation criteria, and green if it passes them:
Al utilizar nuevos estilos CSS, cada tipo de validación muestra un consejo separado. Si se muestran, se pueden ocultar mediante la opción hide_tip. La opción predeterminada es mostrarlas en fuente roja si la pregunta no cumple con los criterios de validación y en verde si los supera:




Line 219: Line 216:




A user cannot submit a page with validation errors. He will be immediately warned if he entered wrong information:
Un usuario no puede enviar una página con errores de validación. Se le advertirá inmediatamente si ingresó información incorrecta:




Line 225: Line 222:




Validation can be applied to individual cells within an array, such as in this example where regular expression validations ensure that each entry is a properly formatted US phone number including area code.
La validación se puede aplicar a celdas individuales dentro de una matriz, como en este ejemplo donde las validaciones de expresiones regulares garantizan que cada entrada sea un número de teléfono de EE. UU. con el formato adecuado, incluido el código de área.




Line 231: Line 228:




==Download==
==Descargar==




To download the above example, click on the following link: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].
Para descargar el ejemplo anterior, haga clic en el siguiente enlace: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].




=Validation Equations=
=Ecuaciones de Validación=




==Overview==
==Descripción general==




Sometimes you need custom validation that cannot be achieved using the traditional min/max criteria. For this, you will need to use the em_validation_q and em_validation_sq options which let you construct complex validation equations at the question and subquestion level, respectively.  
A veces necesita una validación personalizada que no se puede lograr utilizando los criterios tradicionales mínimo/máximo. Para ello, necesitará utilizar las opciones em_validation_q y em_validation_sq que le permiten construir ecuaciones de validación complejas a nivel de pregunta y subpregunta, respectivamente.  




{{Note|At the subquestion level, we also introduce the "this" variable to make it easy to validate each cell in an array without needing to know its variable name. For more details about it, click here.}}
{{Nota|En el nivel de subpregunta, también introducimos la variable "esta" para que sea más fácil validar cada celda en una matriz sin necesidad de saber el nombre de su variable. Para obtener más detalles al respecto, haga clic aquí.}}




==EM Features Demonstrated==
==Características EM demostradas==




#[[QS:Em_validation_q|em_validation_q]] - this is an equation that determines whether the whole question is valid
#[[QS:Em_validation_q|em_validation_q]] - ¡esta es una ecuación que determina si toda la pregunta es válida! N!#[[QS:Em_validation_q_tip|em_validation_q_tip]] - ¡este es el mensaje que muestra si la pregunta no cumple con los criterios de em_validation_q! N!#[[QS:Em_validation_sq|em_validation_sq]] - ¡esta es la ecuación que determina si cada subpregunta (celda de matriz) es válida
#[[QS:Em_validation_q_tip|em_validation_q_tip]] - this is the message to show if the question fails em_validation_q criteria
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] - este es el mensaje para mostrar, si lo hay de las subpreguntas no es válida.
#[[QS:Em_validation_sq|em_validation_sq]] - this is the equation that determines whether each subquestion (array cell) is valid
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] - this is the message to show if any of the subquestions is invalid.


In general, when em_validation_sq is used, if any cell is invalid, the background color for that cell turns red to indicate that there is an error.
En general, cuando se usa em_validation_sq, si alguna celda no es válida, el color de fondo de esa celda se vuelve rojo para indicar que hay un error.




==Screenshots==
==Capturas de pantalla==




Line 266: Line 261:




This question ensures that you enter the ages of your children in descending order by applying this validation equation:
Esta pregunta asegura que ingreses las edades de tus hijos en orden descendente aplicando esta ecuación de validación:


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




In the below example, the validation ensures that no more than 3 questions are answered on any given row by applying this validation equation:
En el siguiente ejemplo, la validación garantiza que no se respondan más de 3 preguntas en una fila determinada aplicando esta ecuación de validación:


<syntaxhighlight lang="php">(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(suma(Prueba_A_1, Prueba_A_2, Prueba_A_3, Prueba_A_4, Prueba_A_5) <= 3) && (suma(Prueba_B_1, Prueba_B_2, Prueba_B_3, Prueba_B_4, Prueba_B_5) <= 3) && (suma(Prueba_C_1, Prueba_C_2, Prueba_C_3, Prueba_C_4, Prueba_C_5) < = 3)</syntaxhighlight>


You can also write this as follows, LimeSurvey automatically converting it at run-time to the above-listed expression.
También puede escribir esto de la siguiente manera: LimeSurvey lo convertirá automáticamente en tiempo de ejecución a la expresión mencionada anteriormente.


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




Line 289: Line 284:




==Download==
==Descargar==




To download the survey sample used in the above examples, click on the following link: [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].
Para descargar la muestra de encuesta utilizada en los ejemplos anteriores, haga clic en el siguiente enlace: [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].




=Subquestion relevance=
=Relevancia de la subpregunta=




==Overview==
==Descripción general==




This shows how array_filter and validation criteria can interact. For validations that apply to sums, only relevant (visible) values are considered.
Esto muestra cómo pueden interactuar array_filter y los criterios de validación. Para validaciones que se aplican a sumas, solo se consideran valores relevantes (visibles).




==EM Features Demonstrated==
==Características EM demostradas==




#[[QS:Array_filter|array_filter]]
#[[QS:Array_filter|array_filter]]
#[[QS:Array filter exclude|array_filter_exclude]]
#[[QS:Filtro de matriz excluir|array_filter_exclude]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Max num value|max_num_value]]
#[[QS:Valor numérico máximo| max_num_value]]
#[[QS:equals_num_value|equals_num_value]]
#[[QS:equals_num_value|equals_num_value]]


It also shows dynamic reporting of the numbers of questions answered in the core questions.
También muestra informes dinámicos del número de preguntas respondidas en las preguntas principales.




==Screenshots==
==Capturas de pantalla==




Changing the number of visible rows dynamically changes the sum. Marking a subquestion as being irrelevant doesn't clear its value. Rather, if it is irrelevant, its values don't contribute to any equation.
Cambiar el número de filas visibles cambia dinámicamente la suma. Marcar una subpregunta como irrelevante no borra su valor. Más bien, si es irrelevante, sus valores no contribuyen a ninguna ecuación.




Line 325: Line 320:




Note what happens when we check the "Fifth subquestion" for the first question '''"Which rows should appear below"'''. Note that the sum for the second "Enter some numbers" question is now 5. Even though subquestion 5 for that question still has the value 14 (e.g., if you un-check the fifth subquestion, you will see the value of 14 again), that value does not contribute to the sum since it is currently irrelevant. All irrelevant data is cleared (NULLed in the database) on submit, but it stays available on the page in case users want or need to change their minds about answers.
Observe lo que sucede cuando marcamos la "Quinta subpregunta" de la primera pregunta '''"Qué filas deberían aparecer debajo"'''. Tenga en cuenta que la suma de la segunda pregunta "Ingrese algunos números" ahora es 5. Aunque la subpregunta 5 para esa pregunta todavía tiene el valor 14 (por ejemplo, si desmarca la quinta subpregunta, verá el valor de 14 nuevamente) , ese valor no contribuye a la suma ya que actualmente es irrelevante. Todos los datos irrelevantes se borran (se anulan en la base de datos) al enviarlos, pero permanecen disponibles en la página en caso de que los usuarios quieran o necesiten cambiar de opinión sobre las respuestas.




Line 331: Line 326:




==Download==
==Descargar==




To download our example, click here: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].
Para descargar nuestro ejemplo, haga clic aquí: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].




=Using Comma as Radix Separator (Decimal Point)=
=Usar coma como separador de base (punto decimal)=




==Overview==
==Descripción general==




The ExpressionScript ensures that only valid numbers can be entered into numeric fields. If you enter an invalid number, you will be warned that something is wrong (e.g., in the case of the fruity theme, the whole question is "red-ed").
ExpressionScript garantiza que solo se puedan ingresar números válidos en los campos numéricos. Si ingresa un número no válido, se le advertirá que algo anda mal (por ejemplo, en el caso del tema frutal, toda la pregunta está "en rojo").


Note that the numeric values are always converted to using a period as the radix separator within the database. In this way, the statistical analyses will work appropriately.
Tenga en cuenta que los valores numéricos siempre se convierten utilizando un punto como separador de base dentro de la base de datos. De esta forma, los análisis estadísticos funcionarán adecuadamente.


To change the radix separator, access the [[Text elements]] options located under the [[Survey_settings|Settings]] tab, and look for the [[Text_elements#Survey_text_elements_panel|decimal mark]] functionality.   
Para cambiar el separador de base, acceda a las opciones de [[Elementos de texto]] ubicadas en la pestaña [[Survey_settings|Configuración]] y busque la funcionalidad [[Text_elements#Survey_text_elements_panel|marca decimal]].   




{{Note|For more information on what a radix separator is, click [https://en.wikipedia.org/wiki/Radix_point|here].}}
{{Nota|Para obtener más información sobre qué es un separador de base, haga clic en [https://en.wikipedia.org/wiki/Radix_point|aquí].}}




==Question Types Using Radix Separator==
==Tipos de preguntas que utilizan el separador Radix==




#[[Question type - Numerical input|Numerical input]] <nowiki>[</nowiki>N]
#[[Tipo de pregunta - Entrada numérica|Entrada numérica]]<nowiki> [</nowiki> N]
#[[Question type - Multiple numerical input|Multiple numerical input]] <nowiki>[</nowiki>K]
#[[Tipo de pregunta - Entrada numérica múltiple|Entrada numérica múltiple]]<nowiki> [</nowiki> K]
#[[Question type - Array (Numbers)|Array (Numbers)]] <nowiki>[</nowiki>:]
#[[Tipo de pregunta - Matriz (Números)|Matriz (Números)]]<nowiki> [</nowiki> :]
#[[Question type - Array (Texts)|Array (Texts)]] <nowiki>[</nowiki>;], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Tipo de pregunta - Matriz (Textos)|Matriz (Textos)]]<nowiki> [</nowiki> ;], al utilizar el atributo [[QS:Numbers_only|numbers_only]]
#[[Question type - List (Radio)|List (radio)]] <nowiki>[</nowiki>L], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Tipo de pregunta - Lista (Radio)|Lista (radio)]]<nowiki> [</nowiki> L], al utilizar el atributo [[QS:Other_numbers_only|other_numbers_only]]
#[[Question type - Short free text|Short free text]] <nowiki>[</nowiki>S], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Tipo de pregunta - Texto libre corto|Texto libre corto]]<nowiki> [</nowiki> S], al utilizar el atributo [[QS:Numbers_only|numbers_only]]
#[[Question type - Multiple short text|Multiple short text]] <nowiki>[</nowiki>Q], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Tipo de pregunta - Texto breve múltiple|Texto breve múltiple]]<nowiki> [</nowiki> Q], al utilizar el atributo [[QS:Numbers_only|numbers_only]]
#[[Question type - Multiple choice|Multiple choice]] <nowiki>[</nowiki>M], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Tipo de pregunta - Opción múltiple|Opción múltiple]]<nowiki> [</nowiki> M], al utilizar el atributo [[QS:Other_numbers_only|other_numbers_only]]
#[[Question type - Multiple choice with comments|Multiple choice with comments]] <nowiki>[</nowiki>P], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Tipo de pregunta - Opción múltiple con comentarios|Opción múltiple con comentarios]]<nowiki> [</nowiki> P], cuando se utiliza el atributo [[QS:Other_numbers_only|other_numbers_only]]




==Screenshots==
==Capturas de pantalla==




You may note in the below screenshots that comma can be used as a radix separator.
Es posible que observe en las capturas de pantalla siguientes que la coma se puede utilizar como separador de base.




Line 376: Line 371:




==Download==
==Descargar==




To download the above example, click on the following link: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].
Para descargar el ejemplo anterior, haga clic en el siguiente enlace: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].




=Randomization Groups=
=Grupos de aleatorización=




==Overview==
==Descripción general==




This survey demonstrates how to make use of the '''random_group''' attribute.
Esta encuesta demuestra cómo utilizar el atributo '''random_group'''.


If this attribute is used, each time you start the survey, the question order is randomized. However, once the survey is started, the randomization order remains fixed, even if you change languages.
Si se utiliza este atributo, cada vez que inicia la encuesta, el orden de las preguntas es aleatorio. Sin embargo, una vez iniciada la encuesta, el orden de aleatorización permanece fijo, incluso si cambia de idioma.




==Screenshots==
==Capturas de pantalla==




Let's check together the below example. The first random question on the page will either be Q1 , Q4, or Q7. The second randomized question on the page will either be Q2, Q5, or Q8.
Revisemos juntos el siguiente ejemplo. La primera pregunta aleatoria en la página será Q1, Q4 o Q7. La segunda pregunta aleatoria de la página será Q2, Q5 o Q8.




Line 403: Line 398:




Here is the randomization generated the first time I tested this survey.
Aquí está la aleatorización generada la primera vez que probé esta encuesta.




Line 409: Line 404:




A different randomization was generated the second time I tested the survey.
La segunda vez que probé la encuesta se generó una aleatorización diferente.




Line 415: Line 410:




But, when I switched to French (without re-starting the survey), the randomization order remained intact.
Pero cuando cambié al francés (sin reiniciar la encuesta), el orden de aleatorización permaneció intacto.




Line 421: Line 416:




==Download==
==Descargar==




To download the above example, click on the following link: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]
Para descargar el ejemplo anterior, haga clic en el siguiente enlace: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]




=Randomly Ask One Question Per Group=
=Haga una pregunta al azar por grupo=




==Overview==
==Descripción general==




This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation  "ask1==3").
Esta encuesta muestra cómo puede configurar una encuesta para mostrar aleatoriamente una pregunta por grupo. En él hay 5 grupos de 6 preguntas cada uno. Al principio, en el Grupo 0, se completan cinco preguntas de ecuaciones ocultas, denominadas pregunta1-pregunta5. Cada una tiene el valor de {floor(rand(1,6.9999))} en el campo de texto de la pregunta, lo que significa que las variables ask1-ask5 tendrán cada una un valor entre 1 y 6. Luego, cada pregunta del grupo tiene un ecuación de relevancia como "preguntar1==N", donde N es la enésima pregunta del grupo (por lo que la tercera pregunta del grupo 1 tiene la ecuación de relevancia "preguntar1==3").


This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.
Esta encuesta funciona igualmente bien en los modos de encuesta a la vez, grupo por grupo y pregunta por pregunta. Dado que la aleatorización se establece en el primer grupo, y ese grupo está efectivamente oculto (dado que todas las preguntas de Ask1 a Ask5 están ocultas), la aleatorización permanece igual para el sujeto; pero cada sujeto diferente tendrá una aleatorización distinta.




==Features Demonstrated==
==Características demostradas==




#[[Question type - Equation|Equation question type]]
#[[Tipo de pregunta - Ecuación|Tipo de pregunta de ecuación]]
#Randomization functions
#Funciones de aleatorización
#Conditional (if) function
#Función condicional (si)




==Screenshots==
==Capturas de pantalla==




This is Group0, which uses the [[Question type - Equation|Equation question type]] to select random values from 1 to 6 for each group (except the last group, which has only 4 questions). Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.
Este es el Grupo0, que utiliza el [[Tipo de pregunta - Ecuación|Tipo de pregunta de ecuación]] para seleccionar valores aleatorios del 1 al 6 para cada grupo (excepto el último grupo, que tiene solo 4 preguntas). Tenga en cuenta que la función "if()" primero comprueba si Ask1 ya se ha configurado y, de ser así, utiliza ese valor. Si el valor no se ha establecido, utiliza un valor aleatorio para establecer el valor de Ask1.




Line 455: Line 450:




This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.
Este grupo muestra cómo se usa la variable (ask4) del Grupo0 para controlar qué pregunta es visible dentro del cuarto grupo.




Line 461: Line 456:




==Download==
==Descargar==




To download the above survey example, click here: [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]].
Para descargar el ejemplo de encuesta anterior, haga clic aquí: [[Media:limesurvey_survey_55164.lss|Preguntas aleatorias dentro de un ejemplo de encuesta grupal]].




=Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)=
=Hacer aleatoriamente un número específico de preguntas en un grupo (un subconjunto de las preguntas)=




{{Alert|This applies only to all random questions from one group and only if the [[General_settings#General_settings_panel|Group by group or All in one]] format is used.}}
{{Alerta|Esto se aplica solo a todas las preguntas aleatorias de un grupo y solo si se utiliza el formato}}[[General_settings#General_settings_panel|Grupo por grupo o Todo en uno]].




==Overview==
==Descripción general==




This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.  
Esta encuesta muestra cómo hacer un subconjunto aleatorio de preguntas en un grupo. Por ejemplo, muestre 5 preguntas aleatorias de 10 preguntas ubicadas dentro de un grupo.  


The survey has one group containing 10 questions. All questions are assigned the same [[QS:Random_group|randomization group name]]. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "[[ExpressionScript - Presentation#Access to Variables|relevanceStatus]]" of all other questions in the group is less than the number of questions you want to show. Since [[ExpressionScript - Presentation#Access to Variables|relevanceStatus]] is assigned as questions are rendered, this effectively totals the number of preceding questions.
La encuesta tiene un grupo que contiene 10 preguntas. A todas las preguntas se les asigna el mismo [[QS:Random_group|nombre del grupo de aleatorización]]. Como resultado, se mostrarán en orden aleatorio al cargar la página. A cada pregunta se le asigna una ecuación de relevancia en la que la suma del "[[ExpressionScript - Presentation#Access to Variables|relevanceStatus]]" de todas las demás preguntas del grupo es menor que la cantidad de preguntas que desea mostrar. Dado que [[ExpressionScript - Presentation#Access to Variables|relevanceStatus]] se asigna a medida que se representan las preguntas, esto efectivamente suma el número de preguntas anteriores.


So, in our 5 out of 10 example, the equation for Q1 would be:
Entonces, en nuestro ejemplo 5 de 10, la ecuación para Q1 sería:


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


For Q2, it would be:
Para el segundo trimestre sería:


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


And so on...
Etcétera...




==Features Demonstrated==
==Características demostradas==




#[[ExpressionScript - Presentation#Access to variables|relevanceStatus variable]]
#[[ExpressionScript - Presentación#Acceso a variables|relevanciaVariable de estado]]
#[[QS:Random group|Randomizing]]
#[[QS:Grupo aleatorio|Aleatorización]]


==Download==
==Descargar==




To download the above example, click on the following link: [[Media:Random_5_out_of_10.lss|Random 5 out of 10 survey example]].
Para descargar el ejemplo anterior, haga clic en el siguiente enlace: [[Media:Random_5_out_of_10.lss|Ejemplo de encuesta aleatoria 5 de 10]].


=Rating User-Entered List of Products=
=Calificar la lista de productos ingresada por el usuario=




==Overview==
==Descripción general==




The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.
El siguiente ejemplo muestra cómo puede pedirles a los usuarios que enumeren un conjunto de productos que les interesen y luego pedirles que los califiquen.




==ES Features Demonstrated==
==Características de ES demostradas==




#'''Tailoring answers''' - when rating products, the labels come from the comment field of the preceding multiple choice question
#'''Respuestas personalizadas''': al calificar productos, las etiquetas provienen del campo de comentarios de la pregunta de opción múltiple anterior.
#'''Tailoring scales''' - many advanced questions options, like scale headings, can also be tailored.
#'''Escalas personalizadas''': muchas opciones de preguntas avanzadas, como encabezados de escala, pueden también ser a medida.




==Screenshots==
==Capturas de pantalla==




This image shows that since only products 1,3, and 5 were selected, only those 3 are displayed (using the [[QS:Array_filter|array_filter]] attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.
Esta imagen muestra que, dado que solo se seleccionaron los productos 1, 3 y 5, solo se muestran esos 3 (usando el atributo [[QS:Array_filter|array_filter]]). Además, las etiquetas de las filas en la segunda pregunta son los números de producto (si no se ingresa nada en el campo de comentarios) o el contenido de los campos de comentarios.




Line 527: Line 522:




This image shows how the tailored answers are specified:
Esta imagen muestra cómo se especifican las respuestas personalizadas:




Line 533: Line 528:




Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):
Aquí está Mostrar archivo de lógica para esa pregunta, que nos permite verificar que la lógica condicional funciona como deseamos (por ejemplo, para ver si hay errores de sintaxis):




Line 539: Line 534:




The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:
La siguiente imagen muestra un grupo en el que especifica una escala de calificación de 5 puntos (Opciones 1 a 5), el título de la escala y los productos que desea calificar. La pregunta final muestra que cada una de las partes de la pregunta de matriz se puede adaptar:




Line 545: Line 540:




The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.
La siguiente imagen muestra la vista del archivo lógico de la última pregunta. Como puede observar, las subpreguntas, las respuestas y los encabezados de escala se pueden personalizar.




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


==Download==
==Descargar==




To download the survey example from above, click on the following link: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Rating user-entered list of products survey example]].
Para descargar el ejemplo de encuesta anterior, haga clic en el siguiente enlace: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Ejemplo de encuesta de calificación de lista de productos ingresada por el usuario]].

Latest revision as of 08:59, 5 September 2023


Introducción

La mejor manera de aprender a utilizar ExpressionScript es jugar con ejemplos funcionales y modificarlos según sus necesidades.

Puede encontrar a continuación un conjunto de encuestas de muestra para demostrar (y probar) cómo se puede utilizar el EM para mejorar su encuesta. Estas encuestas se pueden encontrar en la carpeta /docs/demosurveys de la distribución.


Relevancia, Adaptación y Ecuaciones

Descripción general

El siguiente ejemplo calcula el IMC (índice de masa corporal) de cada encuestado. Vea a continuación las características que se demuestran en este ejemplo.

Características EM demostradas

  1. Relevance - soporte para poderosa lógica condicional;
  2. Piping / Tailoring - ofrece la capacidad de canalizar o adaptar respuestas y metadatos de preguntas;
  3. Adaptación dinámica - tenga en cuenta que los informes cambian en la página a medida que responde las preguntas.
  4. Micro-Tailoring - adaptación condicional dentro de oraciones e informes utilizando declaraciones if()
  5. Ecuaciones - un nuevo tipo de pregunta que le permite hacer cálculos y almacenar los resultados en la base de datos, ¡incluso si el cálculo está oculto
  6. Validación condicional - validación Los criterios, como el valor mínimo permitido, pueden ser condicionales, por ejemplo, basados en ecuaciones.


Capturas de pantalla

Este ejemplo calcula el índice de masa corporal, un cálculo de su peso y altura para determinar si tiene bajo peso, peso normal, sobrepeso u obesidad. Tenga en cuenta que inicialmente todo lo que ve son las cuatro preguntas obligatorias:



Una vez que ingresa su información (y puede elegir si desea usar unidades métricas o no métricas), verá un informe personalizado que resume lo que ingresó y le indica su estado de peso:



Aquí hay un ejemplo diferente, que utiliza unidades no métricas para mostrar cómo el resultado cambia dinámicamente:



Hay Preguntas de tipo ecuación ocultas en el nivel interno que convierte los datos a métricas (si es necesario), almacenando la altura, el peso, el IMC y el estado del peso en la base de datos sin necesidad de JavaScript personalizado. .

Puede ver en el siguiente conjunto de ejemplos cómo puede utilizar funciones matemáticas y de otro tipo en informes personalizados. Así es como se ve la página antes de ingresar cualquier dato. Existe una lógica condicional para mostrar celdas en blanco si no se ingresan datos (o no numéricos), en lugar de mostrar "NaN" o "Dividir por cero".



A medida que se ingresan números, el informe en la página cambia para mostrar el cálculo que se realiza y su resultado.



Hay muchos otros ejemplos en esta encuesta de muestra. Por ejemplo, la siguiente captura de pantalla muestra una de las docenas de formas en que puede completar la página de Relevancia dinámica. Como lo indica el texto de ayuda, pruebe con diferentes edades y, especialmente, combinaciones ilógicas de respuestas para ver los mensajes divertidos generados en la parte inferior. También tenga en cuenta que si dice que tiene más de un hijo, el mensaje dirá "Espero que disfrute jugando con sus X hijos", en lugar de decir "Espero que disfrute jugando con su hijo". Esto muestra cómo puedes microadaptar fácilmente oraciones para que coincidan con el género y/o número de tus sujetos. Incluso puedes conjugar fácilmente verbos y declinar sustantivos según el género y el número.



Descargar

Para acceder a la muestra de la encuesta, haga clic en el siguiente enlace: LS3_em_tailoring.zip.

Censo de muestra

Descripción general

Este es un ejemplo de censo que pregunta cuántas personas hay en su hogar.

Demuestra cómo la relevancia a nivel de grupo puede facilitar la implementación de un "bucle" de preguntas. Después de crear el grupo para la Persona 1, lo exporté. Dado que usé nombres de variables qcode como p1_name en lugar del código SGQA, pude usar un editor de texto para editar y volver a importar rápidamente el grupo varias veces (por ejemplo, me tomó alrededor de 10 segundos editar y volver a importar cada grupo repetido, asegurando que todas las variables tenían nombres de variables únicos y que la lógica a nivel de grupo era correcta).

También puedes utilizar la función copiar pregunta, pero no será tan rápida como la opción sugerida anteriormente.

Esto también muestra cómo puede evitar que aparezca el mensaje Finalizado hasta que la encuesta esté realmente finalizada (por ejemplo, cuando se hayan completado todos los grupos necesarios).


Características EM demostradas

  1. Relevancia a nivel de grupo - Los grupos de seguimiento (Persona 1-5) solo se muestran hasta el número de convivientes especificado;
  2. Sastrería - El informe final resume los datos demográficos de cada conviviente;
  3. Visualización progresiva de preguntas - Ya sea en modo grupal o todo en uno, las preguntas posteriores solo se muestran tan pronto como se responden las anteriores.


Capturas de pantalla

La encuesta genera un informe personalizado que muestra la demografía del número especificado de convivientes:



Si cambia al modo de pregunta a la vez, verá que el índice adapta las preguntas. Como el usuario dijo que la persona es una mujer, le pregunta "¿Cómo se llama?". Y como respondimos "María", la siguiente pregunta dice "¿Cuántos años tiene María"?



Descargar

Para descargar la muestra de la encuesta, haga clic aquí: LS3_group_relevance.zip.


Filtros de matriz en cascada

Descripción general

Esta encuesta se basa en el diseño de una encuesta cortesía de Joy Lane Research, LLC.


Capturas de pantalla

A continuación, tenga en cuenta que:

  • Q02 solo muestra el conjunto de productos verificados en Q01 (mediante el uso de array_filter)
  • Q02 también muestra "Otro producto", el texto ingresado en el campo "Otros electrónicos" en Q01
  • Q04 solo muestra productos del Q02 que fueron verificados (por lo que el filtro de matriz se conecta en cascada)
  • Q05 solo muestra productos del Q02 que no se verificaron en el Q02 (usando un array_filter_exclude en cascada)




Descargar

Haga clic en el siguiente enlace para descargar el ejemplo anterior: LS2_cascading_array_filter survey example.


Conexiones/adaptación utilizando todos los tipos de preguntas y atributos

Descripción general

Si no sabe cómo nombrar sus variables (SGQA vs Qcodes), no está solo. Aunque la documentación principal describe cómo componer nombres de variables Qcode, nada mejor que verlo en una demostración funcional. Esta encuesta muestra cómo puede acceder a los atributos y respuestas de las preguntas utilizando ExpressionScript.


Template:Nota


Contenido

  • ¡Ejemplos de cada tipo de pregunta
  • ¡Todos los tipos de preguntas que pueden usar "otro" están incluidos para que puedas ver cómo eso afecta el nombre de las variables
  • Valores predeterminados para todos los tipos de preguntas que aceptan valores predeterminados
  • Adaptación - Informes dentro y fuera de la página que muestran los 16 sufijos de notación de puntos EM disponibles.
  • Estos informes muestran todos los datos ingresados actualmente (así que le muestran cómo puede generar sus propios informes imprimibles para los usuarios en lugar de los impresos pantalla de respuestas)
  • Denominación adecuada de Qcode y SGQA de todas las variables


Capturas de pantalla

Esta es una encuesta enorme, por lo que decidimos no incluir capturas de pantalla. En su lugar, descárgalo y juega con él.


Descargar

Haga clic en el siguiente enlace para descargar la encuesta: LS3_EM_question_attributes.lss

Validación tradicional, reimaginada

Descripción general

Esto demuestra todos los tipos de validación que utilizan expresiones y cómo afectan a cada uno de los tipos de preguntas que admiten la validación. En muchos casos, los consejos de validación comienzan ocultos y solo aparecen si una pregunta no cumple con los criterios de validación (por lo tanto, también desaparecen una vez que la pregunta supera los criterios de validación).


Tipos de validación demostrados

  1. min_num_value_n - valor mínimo para una respuesta
  2. max_num_value_n - valor máximo para una respuesta
  3. min_answers - mínimo ¡número de respuestas requeridas
  4. max_answers ¡número máximo de respuestas permitidas
  5. multiflexible_min - valor mínimo permitido para una respuesta (para el tipo de pregunta con números multiflexi)! N!#multiflexible_max - valor máximo permitido para una respuesta (para el tipo de pregunta de números multiflexi)
  6. min_num_value - suma mínima permitida en todas las respuestas para la pregunta. N!#max_num_value - suma máxima permitida en todas las respuestas de la pregunta
  7. equals_num_value - ¡la suma de todas las respuestas de la pregunta debe ser igual a este valor!N !#validation - esta es la validación de expresión regular para la pregunta - se puede aplicar a celdas individuales


Capturas de pantalla

Al utilizar nuevos estilos CSS, cada tipo de validación muestra un consejo separado. Si se muestran, se pueden ocultar mediante la opción hide_tip. La opción predeterminada es mostrarlas en fuente roja si la pregunta no cumple con los criterios de validación y en verde si los supera:



Un usuario no puede enviar una página con errores de validación. Se le advertirá inmediatamente si ingresó información incorrecta:



La validación se puede aplicar a celdas individuales dentro de una matriz, como en este ejemplo donde las validaciones de expresiones regulares garantizan que cada entrada sea un número de teléfono de EE. UU. con el formato adecuado, incluido el código de área.



Descargar

Para descargar el ejemplo anterior, haga clic en el siguiente enlace: LS3_Validation_tests.zip.


Ecuaciones de Validación

Descripción general

A veces necesita una validación personalizada que no se puede lograr utilizando los criterios tradicionales mínimo/máximo. Para ello, necesitará utilizar las opciones em_validation_q y em_validation_sq que le permiten construir ecuaciones de validación complejas a nivel de pregunta y subpregunta, respectivamente.


Template:Nota


Características EM demostradas

  1. em_validation_q - ¡esta es una ecuación que determina si toda la pregunta es válida! N!#em_validation_q_tip - ¡este es el mensaje que muestra si la pregunta no cumple con los criterios de em_validation_q! N!#em_validation_sq - ¡esta es la ecuación que determina si cada subpregunta (celda de matriz) es válida
  2. em_validation_sq_tip - este es el mensaje para mostrar, si lo hay de las subpreguntas no es válida.

En general, cuando se usa em_validation_sq, si alguna celda no es válida, el color de fondo de esa celda se vuelve rojo para indicar que hay un error.


Capturas de pantalla


Esta pregunta asegura que ingreses las edades de tus hijos en orden descendente aplicando esta ecuación de validación:

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





En el siguiente ejemplo, la validación garantiza que no se respondan más de 3 preguntas en una fila determinada aplicando esta ecuación de validación:

(suma(Prueba_A_1, Prueba_A_2, Prueba_A_3, Prueba_A_4, Prueba_A_5) <= 3) && (suma(Prueba_B_1, Prueba_B_2, Prueba_B_3, Prueba_B_4, Prueba_B_5) <= 3) && (suma(Prueba_C_1, Prueba_C_2, Prueba_C_3, Prueba_C_4, Prueba_C_5) < = 3)

También puede escribir esto de la siguiente manera: LimeSurvey lo convertirá automáticamente en tiempo de ejecución a la expresión mencionada anteriormente.

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



Descargar

Para descargar la muestra de encuesta utilizada en los ejemplos anteriores, haga clic en el siguiente enlace: ls2_test_em_sq_validation.lss.


Relevancia de la subpregunta

Descripción general

Esto muestra cómo pueden interactuar array_filter y los criterios de validación. Para validaciones que se aplican a sumas, solo se consideran valores relevantes (visibles).


Características EM demostradas

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

También muestra informes dinámicos del número de preguntas respondidas en las preguntas principales.


Capturas de pantalla

Cambiar el número de filas visibles cambia dinámicamente la suma. Marcar una subpregunta como irrelevante no borra su valor. Más bien, si es irrelevante, sus valores no contribuyen a ninguna ecuación.



Observe lo que sucede cuando marcamos la "Quinta subpregunta" de la primera pregunta "Qué filas deberían aparecer debajo". Tenga en cuenta que la suma de la segunda pregunta "Ingrese algunos números" ahora es 5. Aunque la subpregunta 5 para esa pregunta todavía tiene el valor 14 (por ejemplo, si desmarca la quinta subpregunta, verá el valor de 14 nuevamente) , ese valor no contribuye a la suma ya que actualmente es irrelevante. Todos los datos irrelevantes se borran (se anulan en la base de datos) al enviarlos, pero permanecen disponibles en la página en caso de que los usuarios quieran o necesiten cambiar de opinión sobre las respuestas.



Descargar

Para descargar nuestro ejemplo, haga clic aquí: ls2_subquestion_relevance.lss.


Usar coma como separador de base (punto decimal)

Descripción general

ExpressionScript garantiza que solo se puedan ingresar números válidos en los campos numéricos. Si ingresa un número no válido, se le advertirá que algo anda mal (por ejemplo, en el caso del tema frutal, toda la pregunta está "en rojo").

Tenga en cuenta que los valores numéricos siempre se convierten utilizando un punto como separador de base dentro de la base de datos. De esta forma, los análisis estadísticos funcionarán adecuadamente.

Para cambiar el separador de base, acceda a las opciones de Elementos de texto ubicadas en la pestaña Configuración y busque la funcionalidad marca decimal.


Template:Nota


Tipos de preguntas que utilizan el separador Radix

  1. Entrada numérica [ N]
  2. Entrada numérica múltiple [ K]
  3. Matriz (Números) [ :]
  4. Matriz (Textos) [ ;], al utilizar el atributo numbers_only
  5. Lista (radio) [ L], al utilizar el atributo other_numbers_only
  6. Texto libre corto [ S], al utilizar el atributo numbers_only
  7. Texto breve múltiple [ Q], al utilizar el atributo numbers_only
  8. Opción múltiple [ M], al utilizar el atributo other_numbers_only
  9. Opción múltiple con comentarios [ P], cuando se utiliza el atributo other_numbers_only


Capturas de pantalla

Es posible que observe en las capturas de pantalla siguientes que la coma se puede utilizar como separador de base.



Descargar

Para descargar el ejemplo anterior, haga clic en el siguiente enlace: ls2_comma_as_radix_separator.lss.


Grupos de aleatorización

Descripción general

Esta encuesta demuestra cómo utilizar el atributo random_group.

Si se utiliza este atributo, cada vez que inicia la encuesta, el orden de las preguntas es aleatorio. Sin embargo, una vez iniciada la encuesta, el orden de aleatorización permanece fijo, incluso si cambia de idioma.


Capturas de pantalla

Revisemos juntos el siguiente ejemplo. La primera pregunta aleatoria en la página será Q1, Q4 o Q7. La segunda pregunta aleatoria de la página será Q2, Q5 o Q8.



Aquí está la aleatorización generada la primera vez que probé esta encuesta.



La segunda vez que probé la encuesta se generó una aleatorización diferente.



Pero cuando cambié al francés (sin reiniciar la encuesta), el orden de aleatorización permaneció intacto.



Descargar

Para descargar el ejemplo anterior, haga clic en el siguiente enlace: Randomization_Group_Test.lss


Haga una pregunta al azar por grupo

Descripción general

Esta encuesta muestra cómo puede configurar una encuesta para mostrar aleatoriamente una pregunta por grupo. En él hay 5 grupos de 6 preguntas cada uno. Al principio, en el Grupo 0, se completan cinco preguntas de ecuaciones ocultas, denominadas pregunta1-pregunta5. Cada una tiene el valor de {floor(rand(1,6.9999))} en el campo de texto de la pregunta, lo que significa que las variables ask1-ask5 tendrán cada una un valor entre 1 y 6. Luego, cada pregunta del grupo tiene un ecuación de relevancia como "preguntar1==N", donde N es la enésima pregunta del grupo (por lo que la tercera pregunta del grupo 1 tiene la ecuación de relevancia "preguntar1==3").

Esta encuesta funciona igualmente bien en los modos de encuesta a la vez, grupo por grupo y pregunta por pregunta. Dado que la aleatorización se establece en el primer grupo, y ese grupo está efectivamente oculto (dado que todas las preguntas de Ask1 a Ask5 están ocultas), la aleatorización permanece igual para el sujeto; pero cada sujeto diferente tendrá una aleatorización distinta.


Características demostradas

  1. Tipo de pregunta de ecuación
  2. Funciones de aleatorización
  3. Función condicional (si)


Capturas de pantalla

Este es el Grupo0, que utiliza el Tipo de pregunta de ecuación para seleccionar valores aleatorios del 1 al 6 para cada grupo (excepto el último grupo, que tiene solo 4 preguntas). Tenga en cuenta que la función "if()" primero comprueba si Ask1 ya se ha configurado y, de ser así, utiliza ese valor. Si el valor no se ha establecido, utiliza un valor aleatorio para establecer el valor de Ask1.



Este grupo muestra cómo se usa la variable (ask4) del Grupo0 para controlar qué pregunta es visible dentro del cuarto grupo.



Descargar

Para descargar el ejemplo de encuesta anterior, haga clic aquí: Preguntas aleatorias dentro de un ejemplo de encuesta grupal.


Hacer aleatoriamente un número específico de preguntas en un grupo (un subconjunto de las preguntas)

Template:AlertaGrupo por grupo o Todo en uno.


Descripción general

Esta encuesta muestra cómo hacer un subconjunto aleatorio de preguntas en un grupo. Por ejemplo, muestre 5 preguntas aleatorias de 10 preguntas ubicadas dentro de un grupo.

La encuesta tiene un grupo que contiene 10 preguntas. A todas las preguntas se les asigna el mismo nombre del grupo de aleatorización. Como resultado, se mostrarán en orden aleatorio al cargar la página. A cada pregunta se le asigna una ecuación de relevancia en la que la suma del "relevanceStatus" de todas las demás preguntas del grupo es menor que la cantidad de preguntas que desea mostrar. Dado que relevanceStatus se asigna a medida que se representan las preguntas, esto efectivamente suma el número de preguntas anteriores.

Entonces, en nuestro ejemplo 5 de 10, la ecuación para Q1 sería:

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

Para el segundo trimestre sería:

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

Etcétera...


Características demostradas

  1. relevanciaVariable de estado
  2. Aleatorización

Descargar

Para descargar el ejemplo anterior, haga clic en el siguiente enlace: Ejemplo de encuesta aleatoria 5 de 10.

Calificar la lista de productos ingresada por el usuario

Descripción general

El siguiente ejemplo muestra cómo puede pedirles a los usuarios que enumeren un conjunto de productos que les interesen y luego pedirles que los califiquen.


Características de ES demostradas

  1. Respuestas personalizadas: al calificar productos, las etiquetas provienen del campo de comentarios de la pregunta de opción múltiple anterior.
  2. Escalas personalizadas: muchas opciones de preguntas avanzadas, como encabezados de escala, pueden también ser a medida.


Capturas de pantalla

Esta imagen muestra que, dado que solo se seleccionaron los productos 1, 3 y 5, solo se muestran esos 3 (usando el atributo array_filter). Además, las etiquetas de las filas en la segunda pregunta son los números de producto (si no se ingresa nada en el campo de comentarios) o el contenido de los campos de comentarios.



Esta imagen muestra cómo se especifican las respuestas personalizadas:



Aquí está Mostrar archivo de lógica para esa pregunta, que nos permite verificar que la lógica condicional funciona como deseamos (por ejemplo, para ver si hay errores de sintaxis):



La siguiente imagen muestra un grupo en el que especifica una escala de calificación de 5 puntos (Opciones 1 a 5), el título de la escala y los productos que desea calificar. La pregunta final muestra que cada una de las partes de la pregunta de matriz se puede adaptar:



La siguiente imagen muestra la vista del archivo lógico de la última pregunta. Como puede observar, las subpreguntas, las respuestas y los encabezados de escala se pueden personalizar.


Descargar

Para descargar el ejemplo de encuesta anterior, haga clic en el siguiente enlace: Ejemplo de encuesta de calificación de lista de productos ingresada por el usuario.