Actions

Sondaggi campione di Expression Manager

From LimeSurvey Manual

This page is a translated version of the page Expression Manager sample surveys and the translation is 100% complete.


Introduzione

Il modo migliore per imparare a utilizzare ExpressionScript è giocare con esempi funzionanti e modificarli in base alle proprie esigenze.

Di seguito è possibile trovare una serie di sondaggi campione per dimostrare (e testare) in che modo l'EM può essere utilizzato per migliorare il sondaggio. Questi sondaggi possono essere trovati nella cartella /docs/demosurveys della distribuzione.


Rilevanza, sartoria ed equazioni

Panoramica

L'esempio seguente calcola il BMI (indice di massa corporea) di ciascun intervistato. Vedere di seguito le funzionalità dimostrate in questo esempio.

Funzionalità EM dimostrate

  1. Relevance - supporto per una potente logica condizionale;
  2. Piping / Tailoring - offre la possibilità di convogliare o adattare le risposte e i metadati delle domande;
  3. Dynamic Tailoring - nota che i rapporti vengono modificati nella pagina mentre rispondi alle domande.
  4. Micro-Tailoring - adattamento condizionale all'interno di frasi e rapporti utilizzando istruzioni if()
  5. Equazioni - un nuovo tipo di domanda che ti consente di eseguire calcoli e memorizzare i risultati nel database, anche se il calcolo è nascosto
  6. Convalida condizionale - convalida i criteri, come il valore minimo consentito, possono essere condizionali, ad esempio basati su equazioni.


Schermate

Questo esempio calcola l'indice di massa corporea, un calcolo del peso e dell'altezza per determinare se si è in sovrappeso. Nota che inizialmente, tutto ciò che vedi sono le quattro domande obbligatorie:



Dopo aver inserito le tue informazioni (e puoi scegliere se utilizzare unità metriche o non metriche), viene visualizzato un rapporto su misura che riassume ciò che hai inserito, indicandoti il tuo stato di peso:



Ecco un esempio diverso, utilizzando unità non metriche per mostrare come il risultato cambia in modo dinamico:



Sono presenti Domande di tipo Equazione nascoste a livello interno che converte i dati in metrica (se necessario), memorizzando l'altezza metrica, il peso, l'indice di massa corporea e lo stato del peso nel database senza bisogno di JavaScript personalizzato.

Puoi vedere nella prossima serie di esempi come puoi utilizzare funzioni matematiche e di altro tipo all'interno di report personalizzati. Ecco come appare la pagina prima di inserire qualsiasi dato. Esiste una logica condizionale per mostrare celle vuote se non vengono immessi dati (o non numerici), anziché mostrare "NaN" o "Dividi per zero".



Man mano che vengono immessi i numeri, il rapporto sulla pagina cambia per mostrare il calcolo in corso e il relativo risultato.



Ci sono molti altri esempi in questa indagine campionaria. Ad esempio, lo screenshot qui sotto mostra uno dei tanti modi in cui puoi compilare la pagina Rilevanza dinamica. Come osserva il testo della guida, prova diverse età e soprattutto combinazioni illogiche di risposte per vedere i messaggi divertenti generati in fondo. Nota anche che se dici di avere più di un figlio, il messaggio dirà "Spero che ti piaccia giocare con i tuoi X bambini", invece di dire "Spero che ti piaccia giocare con tuo figlio". Questo mostra come puoi facilmente micro-adattare le frasi per farle corrispondere al genere e/o al numero dei tuoi soggetti. Puoi anche coniugare facilmente i verbi e rifiutare i nomi in base al genere e al numero.



Scarica

Per accedere al campione del sondaggio, fai clic sul seguente link: LS3_em_tailoring.zip.

Censimento Campione

Panoramica

Questo è un esempio di censimento che chiede quante persone ci sono nella tua famiglia.

Dimostra come la pertinenza a livello di gruppo può facilitare l'implementazione di un "loop" di domande. Dopo aver creato il gruppo per la persona 1, ho esportato il gruppo. Dato che ho utilizzato nomi di variabili qcode come p1_name invece del codice SGQA, ho potuto utilizzare un editor di testo per modificare e reimportare rapidamente il gruppo più volte (ad esempio, ci sono voluti circa 10 secondi per modificare e reimportare ciascun gruppo ripetuto, assicurando che tutte le variabili avessero nomi di variabili univoci e che la logica a livello di gruppo fosse corretta).

Puoi anche utilizzare la funzione copia domanda, ma non sarà così veloce come l'opzione suggerita sopra.

Questo mostra anche come puoi evitare che il messaggio Finito appaia finché il sondaggio non è veramente finito (per esempio, quando tutti i gruppi necessari sono stati completati).


Funzionalità EM dimostrate

  1. Pertinenza a livello di gruppo - I gruppi di follow-up (persone 1-5) mostrano solo fino al numero di conviventi specificato;
  2. Personalizzazione - Il rapporto finale riassume i dati anagrafici di ogni convivente;
  3. Visualizzazione progressiva delle domande - Sia in modalità di gruppo che all-in-one, le domande successive vengono visualizzate solo non appena si è data risposta alle precedenti.


Schermate

Il sondaggio genera un rapporto su misura che mostra i dati demografici del numero specificato di conviventi:



Se passi alla modalità domanda alla volta, vedi che l'indice adatta le domande. Poiché l'utente ha detto che la persona è una donna, chiede "Come si chiama". E poiché abbiamo risposto "Maria", la domanda successiva dice "Quanti anni ha Maria"?



Scarica

Per scaricare l'esempio del sondaggio, fare clic qui: LS3_group_relevance.zip.


Filtri array a cascata

Panoramica

Questo sondaggio si basa sulla progettazione di un sondaggio per gentile concessione di Joy Lane Research, LLC.


Schermate

Nel seguito si noti che:

  • Q02 mostra solo l'insieme di prodotti controllati in Q01 (utilizzando array_filter)
  • Q02 mostra anche "Un altro prodotto", il testo inserito nel campo "Altro elettronico" in Q01
  • Q04 mostra solo i prodotti di Q02 che sono stati controllati (quindi il filtro dell'array va a cascata)
  • Q05 mostra solo i prodotti di Q02 che non sono stati controllati in Q02 (utilizzando un array_filter_exclude a cascata)




Scarica

Fare clic sul collegamento seguente per scaricare l'esempio precedente: esempio di sondaggio LS2_cascading_array_filter.


Piping/Personalizzazione utilizzando tutti i tipi di domande e gli attributi

Panoramica

Se sei confuso su come nominare le tue variabili (SGQA vs Qcodes), non sei solo. Sebbene la documentazione principale descriva come comporre i nomi delle variabili Qcode, non c'è niente di meglio che vederlo in una demo funzionante. Questo sondaggio mostra come accedere agli attributi e alle risposte delle domande utilizzando ExpressionScript.


Template:Nota


Contenuto

  • Esempi di ogni tipo di domanda
  • Tutti i tipi di domanda che possono utilizzare "altro" sono inclusi in modo che tu possa vedere come ciò influisce sulla denominazione delle variabili
  • Valori predefiniti per tutti i tipi di domanda che accettano valori predefiniti
  • Adattamento - Rapporti su e fuori pagina che mostrano tutti i 16 suffissi di notazione a punti EM disponibili.
  • Questi rapporti mostrano tutti i dati attualmente immessi (quindi mostra come puoi generare i tuoi rapporti stampabili per gli utenti al posto della stampa- schermata delle risposte)
  • Denominazione Qcode e SGQA corretta di tutte le variabili


Schermate

Questo è un sondaggio enorme, quindi abbiamo scelto di non includere schermate. Invece, scarica e gioca con esso.


Scarica

Fare clic sul seguente collegamento per scaricare il sondaggio: LS3_EM_question_attributes.lss


Convalida tradizionale, rivisitata

Panoramica

Questo dimostra tutti i tipi di convalida che fanno uso di espressioni e come influenzano ciascuno dei tipi di domanda che supportano la convalida. In molti casi, i suggerimenti di convalida iniziano nascosti e vengono visualizzati solo se una domanda non supera i criteri di convalida (quindi scompaiono anche una volta che la domanda supera i criteri di convalida).


Tipi di convalida dimostrati

  1. min_num_value_n - valore minimo per una risposta
  2. max_num_value_n - valore massimo per una risposta
  3. min_answers - minimo numero di risposte richieste
  4. max_answers numero massimo di risposte consentite
  5. multiflexible_min - valore minimo consentito per una risposta (per tipo di domanda numeri multiflexi)! N!#multiflexible_max - valore massimo consentito per una risposta (per il tipo di domanda numeri multiflexi)
  6. min_num_value - somma minima consentita tra tutte le risposte per la domanda! N!#max_num_value - somma massima consentita di tutte le risposte per la domanda
  7. equals_num_value - la somma di tutte le risposte per la domanda deve essere uguale a questo valore!N !#validation - questa è la convalida dell'espressione regolare per la domanda - può essere applicata a singole celle


Schermate

Utilizzando i nuovi stili CSS, ogni tipo di convalida mostra un suggerimento separato. Se vengono visualizzati, possono essere nascosti tramite l'opzione hide_tip. L'opzione predefinita è mostrarli con carattere rosso se la domanda non soddisfa i criteri di convalida e verde se li supera:



Un utente non può inviare una pagina con errori di convalida. Saranno immediatamente avvisati se hanno inserito informazioni errate:



La convalida può essere applicata a singole celle all'interno di un array, come in questo esempio in cui le convalide delle espressioni regolari assicurano che ogni voce sia un numero di telefono statunitense correttamente formattato, comprensivo di prefisso.



Scarica

Per scaricare l'esempio precedente, fare clic sul seguente collegamento: LS3_Validation_tests.zip.


Equazioni di convalida

Panoramica

A volte è necessaria una convalida personalizzata che non può essere ottenuta utilizzando i criteri min/max tradizionali. Per questo, dovrai usare le opzioni em_validation_q e em_validation_sq che ti permettono di costruire complesse equazioni di validazione rispettivamente a livello di domanda e sottodomanda.


Template:Nota


Funzionalità EM dimostrate

  1. em_validation_q - questa è un'equazione che determina se l'intera domanda è valida
  2. em_validation_q_tip - questo è il messaggio da mostrare se la domanda non soddisfa i criteri em_validation_q! N!#em_validation_sq - questa è l'equazione che determina se ogni sottodomanda (cella dell'array) è valida
  3. em_validation_sq_tip - questo è il messaggio da mostrare se presente delle sottodomande non è valido.

In generale, quando si usa em_validation_sq, se una cella non è valida, il colore di sfondo per quella cella diventa rosso per indicare che c'è un errore.


Schermate


Questa domanda ti garantisce di inserire l'età dei tuoi figli in ordine decrescente applicando questa equazione di convalida:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





Nell'esempio seguente, la convalida garantisce che non venga data risposta a più di 3 domande su una data riga applicando questa equazione di convalida:

(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) < = 3)

Puoi anche scriverlo come segue, LimeSurvey lo converte automaticamente in fase di esecuzione nell'espressione sopra elencata.

(somma(self.sq_A) <= 3) && (somma(self.sq_B) <= 3) && (somma(self.sq_C) <= 3)



Scarica

Per scaricare l'esempio di sondaggio utilizzato negli esempi precedenti, fare clic sul seguente collegamento: ls2_test_em_sq_validation.lss.


Pertinenza della sottodomanda

Panoramica

Questo mostra come possono interagire array_filter e criteri di convalida. Per le convalide che si applicano alle somme, vengono considerati solo i valori rilevanti (visibili).


Funzionalità EM dimostrate

  1. filtro_array
  2. Escludi_filtro_array
  3. valore_num_min
  4. max_num_value
  5. equals_num_value

Mostra anche rapporti dinamici sul numero di domande con risposta nelle domande principali.


Schermate

La modifica del numero di righe visibili modifica dinamicamente la somma. Contrassegnare una sottodomanda come irrilevante non ne cancella il valore. Piuttosto, se è irrilevante, i suoi valori non contribuiscono a nessuna equazione.



Nota cosa succede quando controlliamo la "Quinta sottodomanda" per la prima domanda "Quali righe dovrebbero apparire sotto". Nota che la somma per la seconda domanda "Inserisci alcuni numeri" ora è 5. Anche se la sottodomanda 5 per quella domanda ha ancora il valore 14 (ad esempio, se deselezioni la quinta sottodomanda, vedrai di nuovo il valore 14) , tale valore non concorre alla somma in quanto attualmente irrilevante. Tutti i dati irrilevanti vengono cancellati (azzerati nel database) al momento dell'invio, ma rimangono disponibili sulla pagina nel caso in cui gli utenti desiderino o debbano cambiare idea sulle risposte.



Scarica

Per scaricare il nostro esempio, fare clic qui: ls2_subquestion_relevance.lss.


Utilizzo della virgola come separatore di radice (virgola decimale)

Panoramica

ExpressionScript assicura che nei campi numerici possano essere immessi solo numeri validi. Se inserisci un numero non valido, verrai avvisato che qualcosa non va (ad esempio, nel caso del tema fruttato, l'intera domanda è "reded").

Si noti che i valori numerici vengono sempre convertiti utilizzando un punto come separatore di radice all'interno del database. In questo modo, le analisi statistiche funzioneranno in modo appropriato.

Per modificare il separatore radice, accedi alle opzioni Elementi di testo che si trovano nella scheda Impostazioni e cerca la funzionalità decimal mark.


Template:Nota


Tipi di domande che usano il separatore di radice

  1. Input numerico [ N]
  2. Input numerico multiplo [ K]
  3. Array (Numeri) [ :]
  4. Array (Testi) [ ;], quando si utilizza l'attributo numbers_only
  5. Elenco (radio) [ L], quando si utilizza l'attributo other_numbers_only
  6. Testo libero breve [ S], quando si utilizza l'attributo numbers_only
  7. Testo breve multiplo [ Q], quando si utilizza l'attributo numbers_only
  8. Scelta multipla [ M], quando si utilizza l'attributo other_numbers_only
  9. Scelta multipla con commenti [ P], quando si utilizza l'attributo other_numbers_only


Schermate

Puoi notare negli screenshot seguenti che la virgola può essere utilizzata come separatore di radice.



Scarica

Per scaricare l'esempio precedente, fare clic sul seguente collegamento: ls2_comma_as_radix_separator.lss.


Gruppi di randomizzazione

Panoramica

Questo sondaggio dimostra come utilizzare l'attributo random_group.

Se viene utilizzato questo attributo, ogni volta che si avvia il sondaggio, l'ordine delle domande viene randomizzato. Tuttavia, una volta avviato il sondaggio, l'ordine di randomizzazione rimane fisso, anche se si cambia lingua.


Schermate

Controlliamo insieme l'esempio sottostante. La prima domanda casuale sulla pagina sarà Q1 , Q4 o Q7. La seconda domanda casuale sulla pagina sarà Q2, Q5 o Q8.



Ecco la randomizzazione generata la prima volta che ho testato questo sondaggio.



Una diversa randomizzazione è stata generata la seconda volta che ho testato il sondaggio.



Ma, quando sono passato al francese (senza ricominciare il sondaggio), l'ordine di randomizzazione è rimasto intatto.



Scarica

Per scaricare l'esempio precedente, fare clic sul seguente collegamento: Randomization_Group_Test.lss


Fai una domanda a caso per gruppo

Panoramica

Questo sondaggio mostra come configurare un sondaggio per visualizzare in modo casuale una domanda per gruppo. In esso ci sono 5 gruppi di 6 domande ciascuno. All'inizio, nel Gruppo 0, vengono compilate cinque domande Equazione nascoste, denominate ask1-ask5. Ognuna ha il valore di {floor(rand(1,6.9999))} nel campo del testo della domanda, il che significa che le variabili ask1-ask5 avranno ciascuna un valore compreso tra 1 e 6. Quindi, ogni domanda nel gruppo ha un equazione di rilevanza come "ask1==N" dove N è l'ennesima domanda nel gruppo (quindi la terza domanda nel gruppo 1 ha l'equazione di rilevanza "ask1==3").

Questo sondaggio funziona altrettanto bene nelle modalità sondaggio alla volta, gruppo per gruppo e domanda per domanda. Poiché la randomizzazione è impostata nel primo gruppo e quel gruppo è effettivamente nascosto (poiché tutte le domande ask1-ask5 sono nascoste), la randomizzazione rimane la stessa per il soggetto; ma ogni soggetto diverso avrà una randomizzazione distinta.


Caratteristiche dimostrate

  1. Tipo domanda equazione
  2. Funzioni di randomizzazione
  3. Funzione condizionale (se)


Schermate

Questo è il Gruppo0, che utilizza il Tipo di domanda Equazione per selezionare valori casuali da 1 a 6 per ogni gruppo (tranne l'ultimo gruppo, che ha solo 4 domande). Si noti che la funzione "if()" verifica innanzitutto se ask1 è già stato impostato e, in tal caso, utilizza tale valore. Se il valore non è stato impostato, utilizza un valore casuale per impostare il valore di ask1.



Questo gruppo mostra come viene utilizzata la variabile (ask4) da Group0 per controllare quale domanda è visibile all'interno del quarto gruppo.



Scarica

Per scaricare l'esempio di sondaggio sopra, fai clic qui: Domande casuali all'interno di un esempio di sondaggio di gruppo.


Fai casualmente un numero specifico di domande in un gruppo (un sottoinsieme delle domande)

  Questo si applica solo a tutte le domande casuali di un gruppo e solo se viene utilizzato il formato Raggruppa per gruppo o Tutto in uno.



Panoramica

Questo sondaggio mostra come porre un sottoinsieme casuale di domande in un gruppo. Ad esempio, mostra 5 domande casuali su 10 domande situate all'interno di un gruppo.

Il sondaggio ha un gruppo contenente 10 domande. A tutte le domande viene assegnato lo stesso nome del gruppo di randomizzazione. Di conseguenza, verranno visualizzati in ordine casuale al caricamento della pagina. A ogni domanda viene assegnata un'equazione di rilevanza secondo la quale la somma di "stato di rilevanza" di tutte le altre domande nel gruppo è inferiore al numero di domande che desideri visualizzare. Poiché relevanceStatus viene assegnato quando viene eseguito il rendering delle domande, questo somma effettivamente il numero di domande precedenti.

Quindi, nel nostro esempio 5 su 10, l'equazione per Q1 sarebbe:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Per Q2, sarebbe:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

E così via...


Caratteristiche dimostrate

  1. variabile dello stato di rilevanza
  2. Randomizzazione


Scarica

Per scaricare l'esempio precedente, fare clic sul seguente collegamento: Esempio di sondaggio casuale 5 su 10.

Valutazione dell'elenco dei prodotti inserito dall'utente

Panoramica

L'esempio seguente mostra come puoi chiedere agli utenti di elencare una serie di prodotti che li interessano e quindi chiedere loro di valutare tali prodotti.


Funzionalità EM dimostrate

  1. Risposte personalizzate - quando si valutano i prodotti, le etichette provengono dal campo dei commenti della precedente domanda a scelta multipla
  2. Scale personalizzate - molte opzioni di domande avanzate, come le intestazioni delle scale, possono essere anche su misura.


Schermate

Questa immagine mostra che anche se sono stati selezionati solo i prodotti 1, 3 e 5, vengono visualizzati solo quei 3 (utilizzando l'attributo array_filter). Inoltre, le etichette di riga nella seconda domanda sono i numeri del prodotto (se non viene inserito nulla nel campo dei commenti) o il contenuto dei campi dei commenti.



Questa immagine mostra come vengono specificate le risposte personalizzate:



Ecco lo Show Logic File per quella domanda, che ci consente di verificare che la logica condizionale funzioni come desiderato (ad esempio, per vedere se ci sono errori di sintassi):



L'immagine successiva mostra un gruppo in cui si specifica una scala di valutazione a 5 punti (Opzioni 1-5), il titolo della scala ei prodotti che si desidera valutare. La domanda finale mostra che ciascuna delle parti della domanda dell'array può essere adattata:



L'immagine successiva mostra la visualizzazione del file logico dell'ultima domanda. Come puoi osservare, le domande secondarie, le risposte e le intestazioni della scala possono essere personalizzate.



Scarica

Per scaricare l'esempio del sondaggio dall'alto, fai clic sul seguente link: Valutazione dell'elenco inserito dall'utente dell'esempio del sondaggio sui prodotti.