ExpressionScript prøveundersøgelser
From LimeSurvey Manual
Introduktion
Den bedste måde at lære at bruge ExpressionScript på er at lege med arbejdseksempler og tilpasse dem til dine behov.
Nedenfor kan du finde et sæt stikprøveundersøgelser for at demonstrere (og teste), hvordan EM kan bruges til at forbedre din undersøgelse. Disse undersøgelser kan findes i distributionens /docs/demosurveys mappe.
Relevans, skræddersyning og ligninger
Oversigt
Følgende eksempel beregner BMI (Body Mass Index) for hver respondent. Se nedenfor de funktioner, der er demonstreret i dette eksempel.
EM-funktioner demonstreret
- Relevans - understøttelse af kraftfuld betinget logik;
- Piping / Tailoring - giver mulighed for at pipe eller skræddersy svar og spørgsmåls-metadata;
- Dynamic Tailoring - bemærk, at rapporter ændres på siden, efterhånden som du besvarer spørgsmål.
- Micro-Tailoring - betinget tilpasning i sætninger og rapporter ved hjælp af if()-sætninger
- Ligninger - en ny spørgsmålstype, der lader dig foretage beregninger og gemme resultaterne i databasen, selvom beregningen er skjult
- Betinget validering - validering kriterier, såsom den mindst tilladte værdi, kan være betingede - f.eks. baseret på ligninger.
Skærmbilleder
Dette eksempel beregner Body Mass Index, en beregning af din vægt og højde for at afgøre, om du er undervægtig, normalvægtig, overvægtig eller fed. Bemærk, at du i første omgang kun ser de fire obligatoriske spørgsmål:
Når du har indtastet dine oplysninger (og du kan vælge, om du vil bruge metriske eller ikke-metriske enheder), ser du en skræddersyet rapport, der opsummerer, hvad du har indtastet, og fortæller dig din vægtstatus:
Her er et andet eksempel, hvor der bruges ikke-metriske enheder til at vise, hvordan resultatet ændrer sig dynamisk:
Der er skjulte Spørgsmål af ligningstype på det interne niveau, der konverterer dataene til metriske (hvis nødvendigt), og gemmer den metriske højde, vægt, BMI og vægtstatus i databasen uden brug af tilpasset JavaScript .
Du kan se i det næste sæt eksempler, hvordan du kan bruge matematiske og andre funktioner i skræddersyede rapporter. Sådan ser siden ud, før du indtaster nogen data. Der er betinget logik til at vise tomme celler, hvis ingen (eller ikke-numeriske) data er indtastet, i stedet for at vise "NaN" eller "Del med nul".
Efterhånden som tallene indtastes, ændres rapporten på siden for at vise den beregning, der udføres, og dens resultat.
Der er mange andre eksempler i denne stikprøveundersøgelse. For eksempel viser nedenstående skærmbillede en af de snesevis af måder, hvorpå du kan udfylde siden Dynamisk relevans. Som hjælpeteksten bemærker, prøv forskellige aldre og især ulogiske kombinationer af svar for at se de underholdende beskeder, der genereres nederst. Bemærk også, at hvis du siger, at du har mere end ét barn, vil beskeden sige "Jeg håber, du nyder at lege med dine X børn", i stedet for at sige "Jeg håber, du nyder at lege med dit barn". Dette viser, hvordan du nemt kan mikroskræddersy sætninger, så de matcher køn og/eller antallet af dine emner. Du kan endda nemt bøje verber og afvise navneord baseret på køn og tal.
Download
For at få adgang til undersøgelseseksemplet skal du klikke på følgende link: LS3_em_tailoring.zip.
Eksempel på folketælling
Oversigt
Dette er et folketællingseksempel, der spørger, hvor mange mennesker der er i din husstand.
Det demonstrerer, hvordan relevans på gruppeniveau kan gøre det lettere at implementere en "loop" af spørgsmål. Efter at have oprettet gruppen til person 1, eksporterede jeg gruppen. Da jeg brugte qcode-variablenavne som p1_name i stedet for SGQA-koden, kunne jeg bruge en teksteditor til hurtigt at redigere og genimportere gruppen flere gange (f.eks. tog det omkring 10 sekunder at redigere og genimportere hver gentagende gruppe, hvilket sikrede at alle variabler havde unikke variabelnavne, og at logikken på gruppeniveau var korrekt).
Du kan også funktionen kopiér spørgsmål, men den vil ikke være så hurtig som indstillingen foreslået ovenfor.
Dette viser også, hvordan du kan forhindre, at meddelelsen Færdig vises, indtil undersøgelsen virkelig er afsluttet (f.eks. når alle nødvendige grupper er gennemført).
EM-funktioner demonstreret
- Relevans på gruppeniveau - Følgegrupperne (Person 1-5) vises kun for op til det angivne antal samlevende;
- Skræddersy - Den endelige rapport opsummerer de demografiske data for hver samlever;
- Progressiv spørgsmålsvisning - Uanset om det er i gruppe- eller alt-i-én-tilstand, vises efterfølgende spørgsmål kun, så snart de foregående er besvaret.
Skærmbilleder
Undersøgelsen genererer en skræddersyet rapport, der viser demografien for det angivne antal samlevende:
Hvis du skifter til spørgsmål-ad-gangen-tilstand, ser du, at indekset skræddersy spørgsmålene. Da brugeren sagde, at personen er en kvinde, spørger den "Hvad er hendes navn". Og da vi svarede "Mary", siger det næste spørgsmål "Hvor gammel er Mary"?
Download
For at downloade undersøgelseseksemplet, klik her: LS3_group_relevance.zip.
Cascading Array Filters
Oversigt
Denne undersøgelse er baseret på designet af en undersøgelse fra Joy Lane Research, LLC.
Skærmbilleder
Bemærk i det følgende, at:
- Q02 kun viser det sæt af produkter, der er tjekket i Q01 (ved at bruge array_filter)
- Q02 viser også "Et andet produkt", teksten indtastet i feltet "Andet elektronisk" i Q01
- Q04 viser kun produkter fra Q02, der blev kontrolleret (så array-filteret falder sammen)
- Q05 viser kun produkter fra Q02, der ikke blev tjekket i Q02 (ved hjælp af et cascaded array_filter_exclude)
Download
Klik på følgende link for at downloade ovenstående eksempel: LS2_cascading_array_filter undersøgelseseksempel.
Rørføring/skræddersying ved hjælp af alle spørgsmålstyper og attributter
Oversigt
Hvis du er forvirret over, hvordan du navngiver dine variabler (SGQA vs Qcodes), er du ikke alene. Selvom hoveddokumentationen beskriver hvordan man komponerer Qcode-variablenavne, er der intet, der slår at se det i en fungerende demo. Denne undersøgelse viser, hvordan du kan få adgang til spørgsmålsattributter og svar ved hjælp af ExpressionScript.
Indhold
- Eksempler på hver spørgsmålstype
- Alle spørgsmålstyper, der kan bruge "andet", er inkluderet, så du kan se, hvordan det påvirker variabelnavngivning
- Standardværdier for alle spørgsmålstyper, der accepterer standardindstillinger
- Skræddersyet - On- og off-side rapporter, der viser alle 16 tilgængelige EM-punktnotationssuffikser.
- Disse rapporter viser alle de aktuelt indtastede data (så viser dig, hvordan du kan generere dine egne printbare rapporter til brugere i stedet for print- svarskærm)
- Korrekt Qcode og SGQA-navngivning af alle variabler
Skærmbilleder
Dette er en kæmpe undersøgelse, så vi valgte ikke at inkludere skærmbilleder. I stedet skal du downloade og lege med den.
Download
Klik på følgende link for at downloade undersøgelsen: LS3_EM_question_attributes.lss
Traditionel validering, re-envisioned
Oversigt
Dette viser alle de valideringstyper, der gør brug af udtryk, og hvordan de påvirker hver af de spørgsmålstyper, der understøtter validering. I mange tilfælde starter valideringstipsene skjult og vises kun, hvis et spørgsmål ikke opfylder valideringskriterierne (og forsvinder dermed også, når spørgsmålet består valideringskriterierne).
Demonstrerede valideringstyper
- min_num_value_n - minimumsværdi for et svar
- max_num_value_n - max værdi for et svar
- min_svar - minimum antal svar påkrævet
- max_answers maksimum antal tilladte svar
- multiflexible_min - minimumsværdi tilladt for et svar (for multiflexi-tal spørgsmålstype)! N!#multiflexible_max - maksimal værdi tilladt for et svar (for multiflexi-tal spørgsmålstype)
- min_num_value - minimum tilladt sum på tværs af alle svar for spørgsmålet
- max_num_value - maksimal tilladt sum på tværs af alle svar på spørgsmålet
- equals_num_value - summen på tværs af alle svar på spørgsmålet skal være lig med denne værdi
- validation - dette er valideringen af det regulære udtryk for spørgsmålet - det kan gælde for individuelle celler
Skærmbilleder
Ved at bruge nye CSS-stile viser hver valideringstype et separat tip. Hvis de vises, kan de skjules via hide_tip muligheden. Standardindstillingen er at vise dem med rød skrift, hvis spørgsmålet ikke opfylder valideringskriterierne, og grønt, hvis det består dem:
En bruger kan ikke indsende en side med valideringsfejl. Han vil straks blive advaret, hvis han indtastede forkerte oplysninger:
Validering kan anvendes på individuelle celler i en matrix, som i dette eksempel, hvor regulære udtryksvalideringer sikrer, at hver post er et korrekt formateret amerikansk telefonnummer inklusive områdenummer.
Download
For at downloade ovenstående eksempel skal du klikke på følgende link: LS3_Validation_tests.zip.
Valideringsligninger
Oversigt
Nogle gange har du brug for tilpasset validering, som ikke kan opnås ved hjælp af de traditionelle min/max-kriterier. Til dette skal du bruge mulighederne em_validation_q og em_validation_sq, som lader dig konstruere komplekse valideringsligninger på henholdsvis spørgsmåls- og underspørgsmålsniveau.
EM-funktioner demonstreret
- em_validation_q - dette er en ligning, der bestemmer, om hele spørgsmålet er gyldigt
- em_validation_q_tip - dette er meddelelsen, der skal vise, hvis spørgsmålet ikke opfylder em_validation_q-kriterierne
- em_validation_sq - dette er ligningen, der bestemmer, om hvert underspørgsmål (arraycelle) er gyldigt
- em_validation_sq_tip - dette er meddelelsen, der skal vises, hvis der er nogen af underspørgsmålene er ugyldige.
Generelt, når em_validation_sq bruges, hvis en celle er ugyldig, bliver baggrundsfarven for den pågældende celle rød for at angive, at der er en fejl.
Skærmbilleder
Dette spørgsmål sikrer, at du indtaster dine børns alder i faldende rækkefølge ved at anvende denne valideringsligning:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4
I eksemplet nedenfor sikrer valideringen, at der ikke besvares mere end 3 spørgsmål på en given række ved at anvende denne valideringsligning:
(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_4, Test_C_4, Test_C_4, Test_C_4) = 3)
Du kan også skrive dette som følger, LimeSurvey konverterer det automatisk ved kørsel til det ovenfor anførte udtryk.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)
Download
For at downloade undersøgelseseksemplet brugt i ovenstående eksempler skal du klikke på følgende link: ls2_test_em_sq_validation.lss.
Relevans for underspørgsmål
Oversigt
Dette viser, hvordan array_filter og valideringskriterier kan interagere. For valideringer, der gælder for summer, tages der kun hensyn til relevante (synlige) værdier.
EM-funktioner demonstreret
Den viser også dynamisk rapportering af antallet af besvarede spørgsmål i kernespørgsmålene.
Skærmbilleder
Ændring af antallet af synlige rækker ændrer summen dynamisk. At markere et underspørgsmål som værende irrelevant fjerner ikke dets værdi. Tværtimod, hvis det er irrelevant, bidrager dets værdier ikke til nogen ligning.
Bemærk, hvad der sker, når vi tjekker "Femte underspørgsmål" for det første spørgsmål "Hvilke rækker skal vises nedenfor". Bemærk, at summen for det andet "Indtast nogle tal"-spørgsmål nu er 5. Selvom underspørgsmål 5 for det spørgsmål stadig har værdien 14 (f.eks. hvis du fjerner markeringen af det femte underspørgsmål, vil du se værdien af 14 igen) , bidrager denne værdi ikke til summen, da den i øjeblikket er irrelevant. Alle irrelevante data slettes (NULLED i databasen) ved indsendelse, men de forbliver tilgængelige på siden, hvis brugere ønsker eller har brug for at ændre mening om svar.
Download
For at downloade vores eksempel, klik her: ls2_subquestion_relevance.lss.
Brug af komma som radixseparator (decimalpunkt)
Oversigt
ExpressionScript sikrer, at kun gyldige tal kan indtastes i numeriske felter. Hvis du indtaster et ugyldigt tal, vil du blive advaret om, at der er noget galt (f.eks. i tilfældet med frugttemaet er hele spørgsmålet "rødt").
Bemærk, at de numeriske værdier altid konverteres til at bruge et punktum som radix-separator i databasen. På den måde vil de statistiske analyser fungere hensigtsmæssigt.
For at ændre radix-separatoren skal du åbne Tekstelementer-indstillingerne under fanen Settings og se efter decimaltegn-funktionaliteten.
Spørgsmålstyper ved hjælp af Radix-separator
- Numerisk input [ N]
- Flere numeriske input [ K]
- Matrix (tal) [ :]
- Array (tekster) [ ;], når du bruger attributten numbers_only
- Liste (radio) [ L], når du bruger other_numbers_only attributten
- Kort fritekst [ S], når du bruger numbers_only attributten
- Flere kort tekst [ Q], når du bruger numbers_only attributten
- Multiple choice [ M], når du bruger other_numbers_only attributten
- Flervalg med kommentarer [ P], når du bruger other_numbers_only attributten
Skærmbilleder
Du kan bemærke i nedenstående skærmbilleder, at komma kan bruges som en radix-separator.
Download
For at downloade ovenstående eksempel skal du klikke på følgende link: ls2_comma_as_radix_separator.lss.
Randomiseringsgrupper
Oversigt
Denne undersøgelse viser, hvordan man gør brug af attributten random_group.
Hvis denne attribut bruges, bliver spørgsmålsrækkefølgen randomiseret hver gang du starter undersøgelsen. Men når undersøgelsen er startet, forbliver randomiseringsrækkefølgen fast, selvom du skifter sprog.
Skærmbilleder
Lad os sammen tjekke nedenstående eksempel. Det første tilfældige spørgsmål på siden vil enten være Q1 , Q4 eller Q7. Det andet randomiserede spørgsmål på siden vil enten være Q2, Q5 eller Q8.
Her er randomiseringen, der blev genereret første gang, jeg testede denne undersøgelse.
En anden randomisering blev genereret anden gang, jeg testede undersøgelsen.
Men da jeg skiftede til fransk (uden at genstarte undersøgelsen), forblev randomiseringsrækkefølgen intakt.
Download
For at downloade ovenstående eksempel skal du klikke på følgende link: Randomization_Group_Test.lss
Stil tilfældigt et spørgsmål pr. gruppe
Oversigt
Denne undersøgelse viser, hvordan du kan konfigurere en undersøgelse til tilfældigt at vise et spørgsmål pr. gruppe. I den er der 5 grupper med hver 6 spørgsmål. I begyndelsen, i gruppe 0, er fem skjulte ligningsspørgsmål, kaldet ask1-ask5, udfyldt. Hver af dem har værdien {floor(rand(1,6.9999))} i spørgsmålstekstfeltet, hvilket betyder, at variablerne ask1-ask5 hver vil have en værdi mellem 1 og 6. Derefter har hvert spørgsmål i gruppen en relevansligning som "spørg1==N", hvor N er det N. spørgsmål i gruppen (så det tredje spørgsmål i gruppe 1 har relevansligningen "spørg1==3").
Denne undersøgelse fungerer lige godt i undersøgelse-ad-gangen, gruppe-for-gruppe og spørgsmål-for-spørgsmål. Da randomiseringen er sat i den første gruppe, og den gruppe er effektivt skjult (da alle spørgsmål1-spørg5 er skjulte), forbliver randomiseringen den samme for emnet; men hvert andet emne vil have en særskilt randomisering.
Demonstrerede funktioner
- Ligningsspørgsmålstype
- Randomiseringsfunktioner
- Betinget (hvis) funktion
Skærmbilleder
Dette er Group0, som bruger Ligningsspørgsmålstype til at vælge tilfældige værdier fra 1 til 6 for hver gruppe (undtagen den sidste gruppe, som kun har 4 spørgsmål). Bemærk, at "if()"-funktionen først kontrollerer, om ask1 allerede er indstillet, og hvis det er tilfældet, bruger den værdi. Hvis værdien ikke er blevet indstillet, bruger den en tilfældig værdi til at indstille værdien af ask1.
Denne gruppe viser, hvordan variablen (ask4) fra Group0 bruges til at kontrollere, hvilket spørgsmål der er synligt i den fjerde gruppe.
Download
For at downloade ovenstående undersøgelseseksempel, klik her: Tilfældige spørgsmål i et gruppeundersøgelseseksempel.
Stil tilfældigt et bestemt antal spørgsmål i en gruppe (en delmængde af spørgsmålene)
Oversigt
Denne undersøgelse viser, hvordan man stiller en tilfældig delmængde af spørgsmål i en gruppe. Vis for eksempel 5 tilfældige spørgsmål ud af 10 spørgsmål placeret i en gruppe.
Undersøgelsen har en gruppe med 10 spørgsmål. Alle spørgsmål tildeles det samme randomiseringsgruppenavn. Som et resultat vil de blive vist i en tilfældig rækkefølge ved sideindlæsning. Hvert spørgsmål får en relevansligning, hvor summen af "relevanceStatus" af alle andre spørgsmål i gruppen er mindre end antallet af spørgsmål, du ønsker at vise. Da relevanceStatus tildeles efterhånden som spørgsmål gengives, summerer dette faktisk antallet af foregående spørgsmål.
Så i vores 5 ud af 10 eksempel ville ligningen for Q1 være:
sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
For Q2 ville det være:
sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Og så videre...
Demonstrerede funktioner
Download
For at downloade ovenstående eksempel skal du klikke på følgende link: Tilfældig 5 ud af 10 undersøgelseseksempel.
Bedømmelse af brugerindtastet produktliste
Oversigt
Eksemplet nedenfor viser, hvordan du kan bede brugere om at angive et sæt produkter, der interesserer dem, og derefter få dem til at bedømme disse produkter.
ES-funktioner demonstreret
- Skræddersy svar - når du vurderer produkter, kommer etiketterne fra kommentarfeltet i det foregående multiple choice-spørgsmål
- Skræddersy skalaer - mange avancerede spørgsmålsmuligheder, såsom skalaoverskrifter, kan også være skræddersyet.
Skærmbilleder
Dette billede viser, at da kun produkter 1,3 og 5 blev valgt, er det kun de 3, der vises (ved at bruge array_filter attributten). Desuden er rækkeetiketterne i det andet spørgsmål enten produktnumrene (hvis der ikke er indtastet noget i kommentarfeltet) eller indholdet af kommentarfelterne.
Dette billede viser, hvordan de skræddersyede svar er specificeret:
Her er Vis logikfilen for det spørgsmål, som lader os bekræfte, at den betingede logik fungerer som ønsket (f.eks. for at se, om der er nogen syntaksfejl):
Det næste billede viser en gruppe, hvor du angiver en 5-punkts bedømmelsesskala (mulighed 1-5), titlen på skalaen og de produkter, du vil bedømme. Det sidste spørgsmål viser, at hver af delene af array-spørgsmålet kan skræddersyes:
The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.
Download
To download the survey example from above, click on the following link: Rating user-entered list of products survey example.