Sub-sistema para gestão de questionários genéricos
Expressões de visibilidade das questões
QUESTN.FAQ-144240
As expressões de visibilidade das perguntas de um questionário permitem que parte do questionário seja respondido dependendo de como algumas respostas anteriores foram realizadas.
Por exemplo:
- Apresentar a pergunta 25 apenas se o usuário respondeu "Sim" na pergunta 24.
- Apresentar a pergunta 10 apenas se o usuário marcou a opção "X" na pergunta 9, sendo que esta é uma pergunta de múltiplas opções.
- Apresentar a pergunta X apenas de o usuário informou um número menor que 5 na pergunta Y.
- ...
Para tal a expressão de visibilidade possui uma linguagem própria onde:
- [99]: Representa o o que foi respondido na pergunta 99.
- 'X': Representa um valor literal alfanumérico.
- Sem as áspas, representa um valor numérico.
- [99].includes('X'): Utilizada em questões que de múltiplas escolhas. Retorna verdadeiro se a resposta da pergunta 99 contém a opção X.
Operadores
- ==: Retorna verdadeiro se os dois operadores são iguais
- !=: Retorna verdadeiro se os dois operadores são diferentes
- &&: Retorna verdadeiro se os dois operadores são verdadeiros
- ||: Retorna verdadeiro se um dos dois operadores for verdadeiro
- !: Operador de negação da expressão à direita.
Exemplos
Mostrar apenas se a questão 25 for preenchida com "S":
[25] == 'S'
Mostrar apenas se a questão 10 tem a opção "X" marcada entre as opções de múltipla escolha:
[10].includes('X')
Apresentar a pergunta 15 apenas se o usuário informou um número menor que 5 na pergunta 11:
[11] < 5
Apresentar a pergunta 16 apenas se o usuário informou um número maior ou igual a 5 na 11 e não ter as opções E ou F marcadas na pergunta 10 (de multipla escolha):
[11] >= 5 && !([10].includes('E') || [10].includes('F'))
Apresentar a pergunta 32 apenas se o produto das perguntas 30 e 31 for maior que 10000:
([30] * [31]) > 10000
Expressões mais complexas
As expressões utilizam o engine ECMAScript do navegador. Então é possível se utilizar da maioria das funções existentes no mesmo, desde que retorne um booleano.
Você pode e deve utilizar parênteses para isolar partes da expressão.
Exemplo:
Apresentar apenas se a resposta da questão 20 começar com a letra "R".
[20].toUpperCase().startsWith('R')