Actions

Procedure ExpressionScript

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Panoramica di quanto spiegato in precedenza

Se finora hai seguito la struttura del manuale di LimeSurvey, significa che conosci già la Terminologia di LimeSurvey. Successivamente, abbiamo trattato espressioni e variabili per imparare come migliorare i nostri sondaggi. Nella parte successiva, siamo passati ai tipi e ai significati di evidenziazione della sintassi per imparare a correggere gli errori di sintassi.

Con queste nozioni di base coperte, potremmo passare agli esempi e spiegare come funzionano le espressioni all'interno di LimeSurvey.


Evidenziazione della sintassi

Gli screenshot seguenti forniscono esempi, ma non mostrano i valori dei suggerimenti. Un suggerimento è una casella informativa che viene visualizzata ogni volta che si passa il mouse su parole in grassetto.

Grazie a questa evidenziazione della sintassi, è molto facile comporre espressioni corrette, anche quelle complicate. Sebbene il team di LimeSurvey intenda provare a creare una GUI di Expression Builder, puoi utilizzare l'evidenziazione della sintassi esistente per identificare e correggere rapidamente gli errori di battitura. Puoi anche utilizzare i suggerimenti per convalidare l'accuratezza delle tue espressioni (ad esempio, confermare di aver selezionato le variabili desiderate).

In ognuno degli esempi, ci sono tre colonne:

  1. Source - questo è il testo non elaborato che inseriresti nel campo della domanda di LimeSurvey
  2. Pretty Print - questo è l'equivalente evidenziato in sintassi di quello che hai inserito! N!#*Nota che le espressioni sono mostrate con uno sfondo marrone chiaro, ma non circondate da parentesi graffe in questa evidenziazione.
    • Poiché EM supporta la sostituzione ricorsiva, mostrare le parentesi graffe nell'evidenziazione causerebbe errori di sintassi
  3. Risultato - questo è l'output generato quando EM elabora il sorgente
    • Tutto ciò che può essere correttamente sostituito è
    • Le espressioni con errori sono mostrate in linea, con l'evidenziazione della sintassi. Gli errori sono circondati da una casella bordata di rosso.


Sintassi corretta

Di seguito puoi trovare esempi di sintassi corretta:

  1. Values: mostra che le variabili note sono codificate a colori a seconda che siano impostate nella pagina corrente. Old-style INSERTANS:xxxx ottiene il proprio stile di codifica a colori
  2. Attributi domanda: mostra che la notazione punto può accedere ad alcune proprietà delle domande
  3. Math: mostra che sono supportati calcoli di base e complessi
  4. TextProcessing: mostra alcune delle funzioni disponibili per l'elaborazione del testo
  5. Dates: mostra due delle funzioni relative alla data disponibili
  6. Conditional: mostra l'utilizzo della funzione if(). Le scelte possono essere nidificate.
  7. Paragrafo su misura: puoi personalizzare completamente un report basato su valori precedenti
  8. EM processi all'interno di stringhe: mostra che può eseguire sostituzioni all'interno di stringhe. Questo esempio genera un nome immagine personalizzato.
  9. EM non elabora le parentesi graffe come queste: mostra che se le parentesi graffe sono sfuggite o c'è uno spazio bianco tra l'espressione e le parentesi graffe, ES ignora l'espressione.



Sintassi EM contenente errori

Ecco alcuni esempi di errori comuni durante la digitazione delle espressioni ES. Si noti che i suggerimenti forniscono informazioni aggiuntive.

  1. Inline Javascript che ha dimenticato di aggiungere spazi dopo la parentesi graffa
    • Poiché "document.write" appare subito dopo una parentesi graffa, EM pensa che sia un'espressione e red- caselle "document" e "write" poiché sono variabili e funzioni non definite, rispettivamente
  2. Variabili, funzioni e operatori sconosciuti/errati
    • Qui abbiamo dimenticato che stiamo usando il nome della variabile "gender" invece di " sex", ma EM rileva quell'errore. Inoltre, contrassegna in rosso '++', poiché non è un operatore supportato.
  3. Avverte se si usa = invece di eq o esegue assegnazioni di valori
    • Notare che '=' e '+=' sono in testo rosso invece che nero. Se passi il mouse sopra di essi, vedrai avvertimenti che stai assegnando un valore.
  4. Numero errato di argomenti per le funzioni
    • if() prende 3 argomenti, ma ne sono stati dati 4, quindi passandoci sopra sopra l'"if" nella casella rossa spiegherà l'errore e mostrerà la sintassi supportata
    • sum() prende un numero illimitato di argomenti, ma avevamo una virgola finale prima delle parentesi di chiusura, quindi è nella casella rossa! N!#Parenti non corrispondenti
    • Questo è uno degli errori più comuni durante la scrittura di espressioni.
    • Questo mostra due esempi di parentesi di chiusura mancanti e un esempio di parentesi di chiusura troppe.
#Sintassi non supportata
    • Se usi un operatore o una punteggiatura che ES non supporta, verrà inserito in una casella rossa.
  1. Assegnazioni non valide
    • Alcune variabili sono readWrite e possono avere i loro valori modificati. Altre sono di sola lettura.
    • Se provi a cambiare il valore di una variabile di sola lettura, non puoi. EM inserirà in una casella rossa il tentativo.
    • Se provi ad assegnare un valore a un'equazione o a una stringa, otterrai anche un errore



"Live" esempi di evidenziazione della sintassi con suggerimenti attivi

Fonte Bella stampa Risultato
Ecco un esempio di sintassi OK con suggerimenti
Ciao {if(gender=='M','Mr.','Mrs.')} {surname}, ora è {date('g:i a',time())}. Sai dove sono i tuoi {sum(numPets,numKids)} bambini e animali domestici?
Ecco un esempio di sintassi OK con suggerimenti
Hello if ( gender == 'M' , 'Mr.' , 'Mrs.' ) cognome , ora è date ( 'g:i a' , time ()) . Sai dove sono i tuoi bambini e animali domestici ( numPets , numKids ) ?
Ecco un esempio di sintassi OK con suggerimenti
Salve signor Smith , ora sono le 6:07. Sai dove sono i tuoi 3 bambini e gli animali domestici?
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili utilizzate prima di essere dichiarate: {notSetYet}
Funzione sconosciuta: {iff(numPets>numKids,1,2)}
Variabile sconosciuta: {sum(age,num_pets,numKids)}
# parametri errati: {sprintf()},{if(1,2)},{date()}
Assegna variabili di sola lettura:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Parentesi non bilanciate: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili usate prima di essere dichiarate: notSetYet
Funzione sconosciuta: iff ( numPets > numKids ,1,2)
Variabile sconosciuta: somma ( età , num_animali , numBambini )
# parametri errati: sprintf () , if (1,2) , date ()
Assegna variabili di sola lettura: TOKEN:ATTRIBUTE_1+= 10 , name= 'Sally'
Parentesi non bilanciate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Di seguito sono riportati gli errori comuni in modo da poter visualizzare i suggerimenti
Variabili usate prima di essere dichiarate: notSetYet
Funzione sconosciuta: iff ( numPets > numKids ,1,2)
Variabile sconosciuta: somma ( età , num_animali , numBambini )
# parametri errati: sprintf () , if (1,2) , date ()
Assegna variabili di sola lettura: TOKEN:ATTRIBUTE_1+= 10 , name= 'Sally'
Parentesi non bilanciate: pow (3,4 , ( pow (3,4) , pow (3,4) )
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': {min(++age, --age,age % 2);}
Né '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Né array: {nome[2], nome['mio']}
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': min ( ++ età , -- età , età % 2) ;
Né '|', '&', '^': ( somma (2 | 3,3 & 4,5 ^ 6) }
Né array: nome [ 2 ] , nome [ 'mio' ]
Ecco alcune delle sintassi non supportate
Nessun supporto per '++', '--', '%',';': min ( ++ età , -- età , età % 2) ;
Né '|', '&', '^': ( somma (2 | 3,3 & 4,5 ^ 6) }
Né array: nome [ 2 ] , nome [ 'mio' ]


Esempi di personalizzazione (ad es. estensione di {INSERTANS:xxx})

"Caro {Mr}/{Mrs} Smith..."

Utilizzare la funzione if() per scegliere in modo condizionale se visualizzare "Mr." o 'signora'.

La sintassi è if(test,do_if_true,do_if_false).

# Codice Domanda Tipo
1 sesso Qual è il tuo genere? Sesso
|example1 Gender {if(gender=='M','Mr.','Mrs.')} Smith, ... Testo libero lungo



Come si può osservare di seguito, "Mr" e "Mrs" sono adattati a ciò che l'intervistato seleziona come risposta alla domanda "sesso".



"Gentile {Mr}/{Mrs} Smith..." nell'e-mail di invito

Puoi utilizzare l'esempio precedente nell'e-mail di invito utilizzando gli attributi della tabella dei token. Usa la funzione if() per scegliere se 'Mr.' o "signora". deve essere utilizzato nell'e-mail.


La sintassi è "if(test,do_if_true,do_if_false)".

# attributo valore
1 Cognome Smith
2 Indirizzo email test@test. com
3 ATTRIBUTE_2 M


Testo nell'e-mail di invito:

Gentile {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

sei stato invitato a partecipare a un sondaggio:

https:/...



e-mail Visualizza:



Calcolo / Esempi di valutazione

Calcola i valori di valutazione in fase di esecuzione e memorizza i risultati nei dati del sondaggio

Questo esempio utilizza tutte le funzionalità di EM, tra cui Rilevanza, Personalizzazione e il tipo di domanda Equazione.

Mostra anche che sono tutti abilitati per JavaScript, quindi se hai queste funzionalità su una pagina, cambierà dinamicamente man mano che le persone impostano e cambiano le loro risposte.

# Codice Domanda Tipo Rilevanza
1 numBambini Quanti figli hai? Input numerico - 2 kid1 Quanti anni ha il tuo primo figlio? Inserimento numerico numKids >= 1
3 kid2 Quanti anni ha il tuo secondo child? Input numerico numKids >= 2
4 kid3 Quanti anni ha il tuo terzo figlio? Input numerico numKids >= 3
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Equazione 1
7 kidSummary Hai detto di avere {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','La somma delle età dei tuoi primi ',min(numKids,4),' bambini è ',sumKidAges,'.'),' ')} |1


Per scaricare questo esempio, fare clic sul seguente collegamento: Assessments_survey_example.


Di seguito sono disponibili schermate di domande rappresentative. Come puoi vedere, la sintassi EM evidenzia tutti i campi che potrebbero contenere la personalizzazione. Qui puoi vedere esempi di pertinenza con evidenziazione della sintassi, tipo di domanda Equazione e sostituzioni all'interno di una domanda. È inoltre possibile utilizzare le sostituzioni all'interno della Guida, della visualizzazione dell'intestazione del gruppo, del messaggio di benvenuto e del messaggio di fine.

Nel prossimo esempio, poiché la rilevanza è {numKids >= 2), la domanda sarà visibile solo se l'intervistato riferisce di avere almeno due figli.



Di seguito, puoi osservare che ogni variabile ha il suffisso .NAOK ad essa collegato. Ciò è dovuto al modo in cui EM supporta la pertinenza a cascata. Se non si dispone di .NAOK, la somma viene calcolata solo se la persona dice di avere 4 figli (ad esempio, se tutte le variabili sono rilevanti). L'uso di .NAOK significa che vogliamo calcolare la somma anche se tutte o alcune delle variabili sono irrilevanti (ad esempio, "Non applicabile" (NA) va bene (OK)).

Tuttavia, l'attributo .NAOK ha effetto solo sul passaggio delle variabili a EM. Se l'intervistato inizialmente afferma di avere 3 figli e inserisce l'età per ciascuno, poi cambia idea e dice di averne 2, non vogliamo vedere la somma dei 3 valori inseriti, poiché il terzo figlio è "non applicabile" nel nostro caso più:



Ogni espressione separata è codificata a colori con uno sfondo marrone chiaro. Come puoi vedere, ci sono tre espressioni separate qui. L'ultimo contiene un messaggio che viene mostrato in modo condizionale solo se la persona ha più di un figlio.



Ora, ecco gli screenshot del sondaggio in azione.

Quando visiti la pagina per la prima volta, vedi questo. Nota che dice "Hai 0 bambini" invece di "Hai 0 bambini".



Se cambio il valore per il numero di bambini a 1, il display cambia immediatamente in questo, anche se si trova sulla stessa pagina:



Ora nota che la grammatica è corretta: "Hai 1 figlio".

Ora cambio il valore per il numero di bambini in 3 e il display cambia immediatamente in questo.

Nota che ora vedi il messaggio condizionale in basso: "La somma delle età dei tuoi primi 3 figli è 0.".



Ora inserirò le età per i miei figli immaginari e otterrò questo display, riassumendo le loro età:



Ancora una volta, il punteggio e la visualizzazione si aggiornano istantaneamente mentre inserisco i valori, quindi puoi usarlo per mostrare un totale parziale di un punteggio di valutazione.


Ora, cambio il valore per il numero di bambini a 2. Il display è cambiato in questo:



Si noti che sebbene avessi inserito un valore di 5,5 per il terzo figlio, il rapporto ora somma solo i valori dei miei primi 2 figli.

La ragione di ciò è che il 3° valore ora è irrilevante e i valori irrilevanti vengono attivamente ignorati da EM.

Se dovessi riportare il numero di bambini a 3, vedrei di nuovo il valore di 5,5 che ho inserito. Quindi, non perdo nessuna informazione che inserisco nella pagina.

Tuttavia, se vado alla pagina successiva o precedente, tutti i valori irrilevanti verranno annullati nella sessione e nel database. Quindi, se dovessi mantenere il valore a 2, andare alla pagina successiva e poi tornare indietro e affermare che in realtà ho 3 figli, non vedrei più l'età di 5,5.


Inserisci i dati e visualizza un rapporto che cambia dinamicamente di ciò che è stato inserito nella stessa pagina

Questo esempio presenta il processo Tailoring all'interno di LimeSurvey.

Per scaricare questo esempio, fai clic sul seguente link: Esempio di sondaggio sui cambiamenti dinamici.

Ecco come appare inizialmente la pagina. Vedrai solo la domanda che chiede in quale città vivi:



Una volta che inizi a inserire una risposta, inizia anche il processo di personalizzazione:


Man mano che inserisci le risposte, la tabella in fondo alla pagina viene aggiornata per mostrare i codici di risposta e i valori delle tue risposte.


Esempi comuni di debug

Dichiarazioni if() nidificate (logica condizionale)

EM supporta la funzione "if(test,do_if_true,do_if_false)" in modo da poter eseguire la logica condizionale o la personalizzazione. Questa funzione può essere nidificata per fare l'equivalente di "if { } else if { } else { }". EM ti farà sapere se le parentesi non sono bilanciate (ad esempio, ti manca una parentesi aperta di chiusura), o se hai delle parentesi aperte in più. Dovresti provare a contare le parentesi mentre componi lunghe istruzioni if nidificate, salvarle, verificare la presenza di errori di sintassi e correggerli se ne vengono trovati. Controlliamo insieme l'esempio sottostante.

È possibile accedere al gruppo di domande utilizzato di seguito da qui: Esempio di sondaggio sulla sartoria.lsg


Innanzitutto, senza inserire nulla, vedrai solo "Ciao".



Se inserisci un nome, viene visualizzato il messaggio "Ciao {nome}".



Se inserisci un'età, ricevi un messaggio su misura, a seconda che tu sia un bambino in età prescolare o meno:



In età scolare, adolescente o adulto. Ecco un adolescente che vuole restare anonimo:



Ecco il file logico del gruppo. Come puoi vedere nella domanda "basata su if", ci sono affermazioni if nidificate basate sull'età della persona.



Quando stai originariamente modificando questa domanda, è probabile che a un certo punto avrai il numero sbagliato di parentesi. Ecco cosa succede se ne hai troppo pochi:



Se passi con il mouse sopra la parola "if", che è circondata da un riquadro rosso, si dice "Parentesi non bilanciate". In questo caso, dovrebbero esserci quattro parentesi di chiusura dopo "già adulto!", ma ce ne sono solo tre.

Se invece hai una parentesi chiusa in più, sarà circondata da un riquadro rosso, come questo:



Quando stai effettivamente modificando la domanda, la domanda ha questo aspetto: