Encuestas de muestra de ExpressionScript
From LimeSurvey Manual
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
- Relevance - soporte para poderosa lógica condicional;
- Piping / Tailoring - ofrece la capacidad de canalizar o adaptar respuestas y metadatos de preguntas;
- Adaptación dinámica - tenga en cuenta que los informes cambian en la página a medida que responde las preguntas.
- Micro-Tailoring - adaptación condicional dentro de oraciones e informes utilizando declaraciones if()
- 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
- 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
- Relevancia a nivel de grupo - Los grupos de seguimiento (Persona 1-5) solo se muestran hasta el número de convivientes especificado;
- Sastrería - El informe final resume los datos demográficos de cada conviviente;
- 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.
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
- min_num_value_n - valor mínimo para una respuesta
- max_num_value_n - valor máximo para una respuesta
- min_answers - mínimo ¡número de respuestas requeridas
- max_answers ¡número máximo de respuestas permitidas
- 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)
- 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
- 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.
Características EM demostradas
- 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
- 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
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.
Tipos de preguntas que utilizan el separador Radix
- Entrada numérica [ N]
- Entrada numérica múltiple [ K]
- Matriz (Números) [ :]
- Matriz (Textos) [ ;], al utilizar el atributo numbers_only
- Lista (radio) [ L], al utilizar el atributo other_numbers_only
- Texto libre corto [ S], al utilizar el atributo numbers_only
- Texto breve múltiple [ Q], al utilizar el atributo numbers_only
- Opción múltiple [ M], al utilizar el atributo other_numbers_only
- 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
- Tipo de pregunta de ecuación
- Funciones de aleatorización
- 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
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
- Respuestas personalizadas: al calificar productos, las etiquetas provienen del campo de comentarios de la pregunta de opción múltiple anterior.
- 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.