Funções do JavaScript em formulários de pesquisa

Você pode usar a função pulldata("@javascript") para invocar as funções JavaScript, permitindo que você use técnicas e lógicas avançadas além do que é possível através do XLSForm propriamente.

Você pode gerenciar e editar as funções JavaScript na guia Scripts do Survey123 Connect. Nesta guia, você pode criar um arquivo JavaScript, revisar o código e testar a função. Esta guia não é uma substituição completa para um ambiente de desenvolvimento integrado (IDE), que pode fornecer validação de código e análise de práticas recomendadas para ajudar a desenvolver as funções de JavaScript, mas é projetada para ajudar na integração dessas funções no Survey123.

Ferramentas de scripts no Survey123 Connect

As seguintes ferramentas estão disponíveis no menu da guia Scripts do Survey123 Connect:

  • Arquivos de script—Mostra todos os arquivos de JavaScript localizados na pasta Scripts de uma pesquisa. Selecione um arquivo para visualizar ou editar.
  • Abrir pasta de scripts—Abre o navegador de arquivos no local da pasta Scripts de sua pesquisa.
  • Novo arquivo de script—Cria um arquivo de script na pasta Scripts de sua pesquisa. Digite o nome do arquivo e clique em Criar.
  • Selecionar função—Destaque a primeira função no arquivo aberto e apresente os parâmetros para teste.
  • Salvar—Salve as alterações no arquivo aberto.
  • Iniciar editor externo—Inicie o IDE padrão de JavaScript do sistema com o arquivo aberto.

Clique na ferramenta Selecionar função para testar o comportamento da primeira função no arquivo, digitando valores para cada parâmetro e exibindo a saída. Após concluir a função, você poderá copiar a instrução pulldata apresentada aqui e colá-la no XLSForm. Se você estiver conectado à sua organização, clique com o botão direito em qualquer um dos parâmetros e clique em Colar token, se exigido.

Anotação:
Os erros básicos de sintaxe são mostrados na guia Scripts com um indicador de erro ao lado do número da linha. O tratamento de erros deve ser implementado dentro da função JavaScript. A saída do console é exibida na guia Scripts , portanto, incluindo mensagens de console em sua função, você pode visualizar erros, avisos e mensagens de informação exibidas junto com a saída.

Sintaxe básica

Você pode invocar funções personalizadas doJavaScript para retornar valores. Utilize a sintaxe seguinte para invocar funções personalizadas do JavaScript com a função pulldata("@javascript"):

pulldata("@javascript", "yourJSFile.js", "yourFunction", "parameter1", "parameter2")

Você deve armazenar seu arquivos personalizados do JavaScript em uma pasta denominada scripts no diretório de pesquisa. No exemplo acima, a função JavaScript espera dois parâmetros, mas qualquer número de parâmetros da função pode ser adicionado.

Você pode usar a função pulldata("@json") para extrair valores específicos de um objeto JSON produzido por uma função JavaScript. Para mais informações, consulte Recuperar um valor de JSON.

Às vezes, especialmente ao usarJavaScript para acessar os serviços da web e proteger os serviços do ArcGIS, você pode precisar acessar o dispositivo e as propriedades do usuário. Você pode usar a função pulldata("@property") para extrair informações sobre os dispositivos dos quais as respostas da pesquisa são enviadas e os usuários conectados que enviam essas respostas. Para obter mais informações, consulte Propriedades do dispositivo e do usuário.

Dica:

Para consultas espaciais e de atributos em camadas de feição do ArcGIS, considere usar a função pulldata("@layer") em vez depulldata("@javascript"). A sintaxe pulldata("@layer") é projetada especificamente para consultas da camada de feição e é suportada com pesquisas públicas. Para mais informações, consulte Consultar uma camada de feição.

Repetições

Você pode aprovar todos os valores de uma repetição nas funções do JavaScript. A função pulldata("@javascript") suporta dois estilos de implementação para recuperar os valores de uma repetição. O que deve ser usado depende se você deseja que a função do JavaScript interaja com um campo ou vários campos em uma repetição.

Se uma pergunta de uma repetição for aprovada como um parâmetro de função, a função JavaScript receberá um conjunto de valores da pergunta especificada da seguinte maneira:

pulldata("@javascript", "yourJSFile.js", "yourFunction", ${question1})

Se um nome de repetição for aprovado como um parâmetro de função do JavaScript, a função receberá o parâmetro como um conjunto de linhas de todos os valores na repetição da seguinte maneira:

pulldata("@javascript", "yourJSFile.js", "yourFunction", ${repeat1}, "question1")

Cada um deles produz um objeto JSON com perguntas individuais como propriedades desse objeto.

Anotação:

O acesso aos valores nas repetições usando pulldata("@javascript") não é suportado no Survey123 web app. Você pode coletar valores para uma única pergunta em uma repetição no aplicativo da web usando join() para converter a lista de valores em uma string separada por caracteres e, em seguida, dividir os valores na função do JavaScript.

Como no Survey123 versão 3.14, valores vazios passados por uma função do JavaScript agora podem retornar undefined ou null. Por isso, você deve gravar funções do JavaScript para considerar a possibilidade de um valor undefined.

Limitações conhecidas

A seguir estão as limitações conhecidas ao usar funções do JavaScript em formulários de pesquisa:

  • Modelo de Objeto de Documento (DOM) não é suportado.
  • Estruturas de trabalhos como JQuery, Ember e Angular não são suportados
  • Você não pode acessar arquivos locais.
  • Chamadas assíncronas não são suportadas.
  • As funções do JavaScript são suportadas apenas em formulários preenchidos por usuários na mesma organização do autor do formulário.
  • As funções do JavaScript não são suportadas para pesquisas públicas.
  • Uma função pulldata("@javascript") não pode ser solicitada dentro de uma função pulldata("@json") no Survey123 web app.