JavaScript funziona nei moduli di rilevamento

La funzione pulldata("@javascript") può essere usata per richiamare le funzioni JavaScript, consentendo l'uso di tecniche e logiche avanzate al di là di quanto è possibile solo attraverso XLSForm.

È possibile gestire e modificare le funzioni JavaScript sulla scheda Script di Survey123 Connect. Su questa scheda è possibile creare un file JavaScript, esaminare il codice e testare la funzione. Questa scheda non sostituisce completamente un'iDE (Integrated Development Environment), che può fornire la validazione del codice e l'analisi delle best practice per semplificare lo sviluppo di funzioni JavaScript, ma è progettata come ausilio nell'integrazione di queste funzioni in Survey123.

Strumenti di script in Survey123 Connect

Gli strumenti seguenti sono disponibili sul menu della scheda Script di Survey123 Connect:

  • File script: mostrano tutti i file JavaScript posizionati nella cartella del rilevamento Scripts. Selezionare un file da visualizzare e modificare.
  • Aprire cartella script: lancia il browser del file alla posizione della cartella del rilevamento Scripts.
  • Nuovo file di script: crea un file di script nella cartella del rilevamento Scripts. Digita il nome file e fai clic su Crea.
  • Seleziona funzione: sottolineare la prima funzione nel file aperto e presentare i parametro per il test.
  • Salva: salvare le modifiche al file aperto.
  • Avvia editor esterno: avvia l'IDE JavaScript predefinita del sistema con il file aperto.

Fai clic sullo strumento Seleziona funzione per provare il funzionamento della prima funzione nel file digitando i valori per ogni parametro e visualizzando l'output. Una volta che avete finito con la funzione, potete copiare la dichiarazione pulldata presentata qui e incollarla nella XLSForm. Se si è effettuato l'accesso all'organizzazione, fare clic con il pulsante destro su uno dei parametri e cliccare Incolla token, se richiesto.

Nota:
Errori di sintassi basica vengono mostrati sulla scheda Script con un indicatore di errore insieme al numero di linea. La gestione degli errori deve essere implementata nella funzione JavaScript. L'output di console viene visualizzato nella scheda Scripts, quindi includendo messaggi di console nella vostra funzione, potete vedere errori, avvisi e messaggi informativi visualizzati insieme all'output.

Sintassi di base

È possibile richiamare le funzioni JavaScript personalizzate per restituire i valori. Usare la sintassi seguente per richiamare funzioni JavaScript personalizzate con la funzione pulldata("@javascript"):

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

È necessario archiviare i file JavaScript personalizzati in una cartella chiamata script nella directory del rilevamento. Nell'esempio sopra, la funzione JavaScript prevede due parametro, ma si può aggiungere qualsiasi numero di parametri di funzione.

È possibile utilizzare la funzione pulldata("@json") per estrarre valori specifici da un oggetto JSON prodotto da una funzione JavaScript. Per ulteriori informazioni, consultare Recuperare un valore da JSON.

A volte, in particolare quando si utilizza JavaScript per accedere ai servizi Web e ai servizi ArcGIS sicuri, potrebbe essere necessario accedere al dispositivo e alle proprietà utente. È possibile utilizzare la funzione pulldata("@property") per estrarre le informazioni sui dispositivi dai quali vengono inviate le risposte ai rilevamenti e sugli utenti registrati che inviano tali risposte. Per ulteriori informazioni, consultare Proprietà dei dispositivi e degli utenti.

Suggerimento:

Per interrogazioni spaziali e attributo su feature layer ArcGIS, valuta l'uso della funzione pulldata("@layer") invece di pulldata("@javascript"). La sintassi pulldata("@layer") è progettata appositamente per interrogazioni feature layer ed è supportata per rilevamenti pubblici. Per ulteriori informazioni, vedi Interrogazione di un feature layer.

Ripetizioni

È possibile passare tutti i valori attraverso una ripetizione nelle funzioni JavaScript. La funzione pulldata("@javascript") supporta due stili d'implementazione per il recupero dei valori da una ripetizione. Quella da utilizzare varia a seconda che si desideri che la funzione JavaScript interagisca con un campo o con molti campi in una ripetizione.

Se viene passata una domanda da una ripetizione come parametro della funzione, la funzione JavaScript riceve un array di valori dalla domanda specificata come segue:

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

Se viene passato un nome di ripetizione come parametro di funzione, la funzione JavaScript riceve il parametro come un array di righe di tutti i valori nella ripetizione come segue:

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

Ognuno di questi produce un oggetto JSON con domande individuali come proprietà in quell'oggetto.

Nota:

L'accesso ai valori in ripetizione usando pulldata("@javascript") non è supportato nell'app Web Survey123. È possibile raccogliere i valori per una singola domanda in una ripetizione nell'app Web utilizzando join() per convertire l'elenco dei valori in una stringa separata da caratteri, e quindi dividere i valori nella funzione JavaScript.

A partire dalla versione 3.14 di Survey123, i valori vuoti passati attraverso una funzione JavaScript possono restituire undefined o null. Per questo motivo è necessario scrivere le funzioni JavaScript per tenere conto della possibilità di un valore undefined.

Limitazioni note

Le seguenti sono limitazioni conosciute durante l'utilizzo di funzioni JavaScript in moduli rilevamento.

  • Il DOM (Document Object Model) non è supportato.
  • Framework come JQuery, Ember e Angular non sono supportati.
  • Non è possibile accedere ai file locali.
  • Le chiamate asincrone non sono supportate.
  • Le funzioni JavaScript sono supportate solo in moduli completati da utenti nella stessa organizzazione come autore del modulo.
  • Le funzioni JavaScript non sono supportate per rilevamento pubblici.
  • Una funzione pulldata("@javascript") non può essere chiamato dentro una funzione pulldata("@json") sull'app web Survey123.