Você pode mostrar ou ocultar elementos de um relatório condicionalmente usando declarações if. Você pode usar a declaração if digitando uma expressão no espaço reservado ${if expression} inicial, denotando ${/} final do segmento condicional. Alguns exemplos de declarações Se, que você pode usar para mostrar ou ocultar partes de um relatório são os seguintes:
- ${if photo1} exibe a seção somente se a pergunta photo1 tiver sido respondida.
- ${if integer1>0} exibe a seção somente se a resposta da pergunta integer1 for um número positivo.
- ${if ((geopoint1 | getValue:"y")>0)} exibe a seção somente se o ponto geográfico estiver no hemisfério norte.
- O ${if multiple_choice1 | selected:"A"} exibe a seção somente se a pergunta de múltipla escolha tivesse a opção 'A' selecionada.
- ${if (repeat1 | getValue:"count")>=3} exibe a seção apenas se repeat1 tiver três ou mais registros.
No exemplo a seguir, o texto da segunda linha aparecerá somente no relatório se high for selecionado para a prioridade de selecionar uma pergunta:
${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}Para determinar se uma resposta contém um valor para uma pergunta, use apenas uma instrução if que faça referência ao nome do campo diretamente sem outros operadores, por exemplo, ${if photo1}. Esse formato garante que strings vazias, valores nulos e valores indefinidos sejam considerados valores vazios. Este formato se aplica a tipos de campo de string, número, data, e anexo. Quando este formato for utilizado com repetições, a seção aparecerá desde que haja pelo menos uma instância na repetição.
Para usar declarações condicionais com perguntas de data e hora, execute cálculos usando o tempo de Época (milissegundos decorridos desde 1 de Janeiro de 1970). Por exemplo, ${if (date1|getValue:"") < 1602735375000} exibe a seção apenas se o valor no campo de data for anterior a 14 de Outubro de 2020. A sintaxe do relatório não tem um equivalente às funções today() ou now() do XLSForm, portanto, é impossível compor uma declaração condicional para os tempos relativos a quando o relatório foi impresso.
Os seguintes operadores lógicos são suportados em declarações “se”:
| Operador | Descrição |
|---|---|
| || | Verdadeiro se uma das duas declarações retornar verdadeiro |
| && | Verdadeiro se ambas as declarações fornecidas retornarem verdadeiro |
| ! | Verdadeiro se a declaração não for verdadeira |
| == | Verdadeiro se os dois valores fornecidos forem iguais entre si |
| != | Verdadeiro se os dois valores fornecidos não forem iguais entre si |
| > | Avalia se o primeiro valor é maior que o segundo valor |
| >= | Avalia se o primeiro valor é maior ou igual ao segundo valor |
| < | Avalia se o primeiro valor é menor que o segundo valor |
| <= | Avalia se o primeiro valor é menor ou igual ao segundo valor |
Uma tabela pode ser usada em um relatório para apresentar registros repetidos individuais ou um resumo de registros. Para usar uma declaração condicional para ocultar uma tabela que não tem valores, os marcadores de posição inicial e final devem ser colocados fora da tabela, imediatamente antes e depois dela. Para usar uma declaração condicional para mostrar somente a linha de cabeçalho da tabela quando a tabela não tiver valores, o espaço reservado inicial deve ser colocado dentro da primeira célula da tabela, e o espaço reservado final deve ser colocado dentro da última célula da tabela.