Actions

ExpressionScript prøveundersøgelser

From LimeSurvey Manual

Revision as of 09:57, 2 January 2024 by Maren.fritz (talk | contribs) (Created page with "==Oversigt==")


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

  1. Relevans - understøttelse af kraftfuld betinget logik;
  2. Piping / Tailoring - giver mulighed for at pipe eller skræddersy svar og spørgsmåls-metadata;
  3. Dynamic Tailoring - bemærk, at rapporter ændres på siden, efterhånden som du besvarer spørgsmål.
  4. Micro-Tailoring - betinget tilpasning i sætninger og rapporter ved hjælp af if()-sætninger
  5. Ligninger - en ny spørgsmålstype, der lader dig foretage beregninger og gemme resultaterne i databasen, selvom beregningen er skjult
  6. 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

  1. Relevans på gruppeniveau - Følgegrupperne (Person 1-5) vises kun for op til det angivne antal samlevende;
  2. Skræddersy - Den endelige rapport opsummerer de demografiske data for hver samlever;
  3. 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.


I dette eksempel anbefaler vi at slå den indbyggede HTML-editor fra (eller konvertere den til pop-up-tilstand), når du redigerer denne undersøgelse. Det kan tage et minut eller mere for HTML-editoren at gengive de store HTML-rapporter i redigeringstilstand.


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

  1. min_num_value_n - minimumsværdi for et svar
  2. max_num_value_n - max værdi for et svar
  3. min_svar - minimum antal svar påkrævet
  4. max_answers maksimum antal tilladte svar
  5. 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)
  6. min_num_value - minimum tilladt sum på tværs af alle svar for spørgsmålet
  7. max_num_value - maksimal tilladt sum på tværs af alle svar på spørgsmålet
  8. equals_num_value - summen på tværs af alle svar på spørgsmålet skal være lig med denne værdi
  9. 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.


Template:Bemærk


EM-funktioner demonstreret

  1. em_validation_q - dette er en ligning, der bestemmer, om hele spørgsmålet er gyldigt
  2. em_validation_q_tip - dette er meddelelsen, der skal vise, hvis spørgsmålet ikke opfylder em_validation_q-kriterierne
  3. em_validation_sq - dette er ligningen, der bestemmer, om hvert underspørgsmål (arraycelle) er gyldigt
  4. 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

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_antal_value

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.


Template:Bemærk


Spørgsmålstyper ved hjælp af Radix-separator

  1. Numerisk input [ N]
  2. Flere numeriske input [ K]
  3. Matrix (tal) [ :]
  4. Array (tekster) [ ;], når du bruger attributten numbers_only
  5. Liste (radio) [ L], når du bruger other_numbers_only attributten
  6. Kort fritekst [ S], når du bruger numbers_only attributten
  7. Flere kort tekst [ Q], når du bruger numbers_only attributten
  8. Multiple choice [ M], når du bruger other_numbers_only attributten
  9. 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

  1. Ligningsspørgsmålstype
  2. Randomiseringsfunktioner
  3. 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)

  Dette gælder kun for alle tilfældige spørgsmål fra én gruppe og kun hvis formatet Gruppe efter gruppe eller Alt i én-formatet bruges.



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

  1. relevanceStatusvariabel
  2. Randomizing

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 Features Demonstrated

  1. Tailoring answers - when rating products, the labels come from the comment field of the preceding multiple choice question
  2. Tailoring scales - many advanced questions options, like scale headings, can also be tailored.


Screenshots

This image shows that since only products 1,3, and 5 were selected, only those 3 are displayed (using the array_filter attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.



This image shows how the tailored answers are specified:



Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):



The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:



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.