Actions

Silnik ExpressionScript — skrócona instrukcja obsługi

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Szybki przewodnik startowy

W LimeSurvey możesz jeszcze bardziej dostosować swoje ankiety za pomocą ExpressionScript (w skrócie: ES). Sidenote: „We wcześniejszej wersji ExpressionScript nosił nazwę Expression Manager (EM). Jeśli gdzieś czytałeś Menedżera wyrażeń, jest to po prostu stara nazwa ES.

ES można wykorzystać do określenia następujących elementów:

  1. Nawigacja/Rozgałęzienia - pozwala odpowiedziom respondenta na zmianę kolejności wyświetlania pytań;
  2. Krawiectwo/Rurowactwo - pomaga w sformułowaniu pytania (np. odnosząc się do wcześniejszych odpowiedzi lub odmieniania zdań na podstawie wieku lub płci badanych) lub sposobu generowania niestandardowych raportów (takich jak wyniki ocen lub porady dostosowane do indywidualnych potrzeb);
  3. Walidacja - gwarantuje, że odpowiedzi spełnią określone kryteria, jak wartości minimalne i maksymalne lub określony wzorzec wejściowy.

ES zapewnia intuicyjny sposób określenia logiki dla każdej z tych funkcji. Prawie wszystko, co można zapisać jako standardowe równanie matematyczne, jest prawidłowym wyrażeniem.

ES zapewnia obecnie dostęp do 70 funkcji i można go łatwo rozszerzyć o obsługę kolejnych. Umożliwia także dostęp do zmiennych przy użyciu czytelnych dla człowieka nazw zmiennych (zamiast nazwy SGQA).

Kolejne sekcje pokazują główne miejsca, w których używany jest ES.


Istotność (kontrola nawigacji/rozgałęzień)

Niektóre ankiety wykorzystują „Goto Logic”, tak że jeśli odpowiesz na Pytanie 1 z opcją C, zostaniesz przekierowany do Pytania 5. Podejście to jest bardzo ograniczone, ponieważ trudno je zweryfikować. Co więcej, łatwo się psuje, gdy trzeba zmienić kolejność pytań. Z drugiej strony ES używa Boolowskich równań istotności, aby określić wszystkie warunki, pod którymi pytanie może być ważne. Jeżeli pytanie jest istotne, to jest ono wyświetlane, w przeciwnym razie nie ma zastosowania, a w bazie danych zapisana jest wartość „NULL”.

Uwaga: Jest to podobne do tego, co można zrobić za pomocą Edytor warunków, ale ES pozwala łatwo określić znacznie bardziej złożone i wydajne kryteria (i pozwala używać nazwy zmiennej zamiast identyfikatory SGQA).




Aby lepiej zrozumieć koncepcję trafności, skupmy się na poniższej ankiecie, w której obliczany jest wskaźnik masy ciała (BMI) respondentów ankiety. Aby go pobrać, kliknij poniższy link: Przykład ankiety dotyczącej wskaźnika masy ciała.

Równanie istotności pokazano poniżej w kolumnie „Istotność” po nazwie zmiennej. Wartości istotności wag, jednostek wagi, wzrostu i jednostek wysokości wynoszą 1 (wartość domyślna), co oznacza, że te pytania są zawsze wyświetlane. Jednakże znaczenie dla BMI to {!is_empty(height) i !is_empty(weight)}, co oznacza, że BMI zostanie obliczone tylko wtedy, gdy osoba badana wprowadzi wartość zarówno wzrostu, jak i masy ciała (w ten sposób unika się ryzyka otrzymania błędu zerowego ). Ponadto pytanie „Raport” jest wyświetlane tylko wtedy, gdy respondent odpowiedział na wszystkie cztery główne pytania (wzrost, jednostki wzrostu, waga, jednostki masy).



Uwaga: Powyższy obrazek pochodzi z plik logiki ankiety, który pozwala na sprawdzenie błędów składniowych przed aktywacją ankiety.


Trafność jest wyświetlana i możliwa do edycji, gdy:

  • chcesz wyświetlić/edytować trafność na poziomie pytania
  • chcesz wyświetlić/edytować trafność na poziomie grupy


Wyświetlanie/edytowanie trafności na poziomie pytania

To równanie oblicza wskaźnik masy ciała (BMI). Pytanie dotyczy tylko tego, czy dana osoba podaje swój wzrost i wagę.



To jest ekran edycji pytania „BMI”.



Pamiętaj, że podczas wprowadzania równania istotności nie używasz nawiasów klamrowych.


Wyświetlanie/edytowanie trafności na poziomie grupy

Skupmy się teraz na innym przykładzie – prostym badaniu powszechnym. Aby go pobrać, kliknij poniższy link: Przykład ankiety spisowej.

Pierwsza strona pyta, ile osób z tobą mieszka i zapisuje tę informację w zmiennej „cohabs”. Ta strona jest wyświetlana tylko wtedy, gdy masz więcej niż jednego konkubenta (jest wyświetlana dla drugiej osoby mieszkającej z Tobą). Również p2name, p2age. p2sum są wyświetlane tylko wtedy, gdy pytanie poprzedzające każde z nich zawiera odpowiedź.



Zatem grupa ma również kryteria trafności na poziomie pytań, tak że niektóre pytania pojawiają się tylko wtedy, gdy wcześniej odpowiedziałeś na określone pytania (np. p2age jest wyświetlane, jeśli udzielono odpowiedzi na p2name). ES łączy dla Ciebie znaczenie na poziomie grupy i pytania. Pytania w grupie są zadawane tylko wtedy, gdy grupa jako całość jest istotna. Następnie zadawany jest tylko podzbiór pytań w obrębie grupy, które są istotne.

Oto zrzut ekranu umożliwiający edycję trafności „Kohabitanta 2” na poziomie grupy:



Pamiętaj, że podczas wprowadzania równania istotności nie używasz nawiasów klamrowych.

Krawiectwo/Wyszywanie

ES pozwala łatwo wykonać proste i złożone krawiectwo warunkowe. Czasami wystarczy prosta zamiana, na przykład powiedzenie: „Powiedziałeś, że kupiłeś [ Produkt]. Co ci się w tym najbardziej podobało?”. Czasami potrzebujesz podstawienia warunkowego, np. „ [ Pan Pani.] [ LastName], czy zechciałbyś wypełnić naszą ankietę?”. W tym przypadku chcesz użyć „Mr. lub Pani.” w zależności od płci osoby. Innym razem potrzebna jest jeszcze bardziej złożona substytucja (na przykład w oparciu o obliczenia matematyczne). ES obsługuje każdy z tych typów krawiectwa/lamówek.


Równania warunkowe

Przykład wskaźnika masy ciała pokazuje możliwość obliczenia BMI danej osoby, nawet jeśli pozwala ona na wprowadzenie wzrostu i masy ciała w dwóch różnych jednostkach (cm i cale oraz kg i funty):



W tym przypadku wagakg wynosi {if(weightunits == "kg", waga, waga * 0,453592)}. Ta funkcja „if()” oznacza, że jeśli podmiot wprowadza wagę w kilogramach, użyj tej wartości, w przeciwnym razie pomnóż wprowadzoną wartość (alternatywnie są funty) przez 0,453592, aby przeliczyć ją na kilogramy. Zmienna heightm wykorzystuje podobne podejście do obliczania wzrostu osoby w metrach (wzrost w cms/100), nawet jeśli wprowadziła ona swój wzrost w calach (1 metr = 3,28084 cala).

BMI oblicza się jako: {wagakg / (wzrost*wzrost)}.

Wreszcie raport warunkowo dopasowuje przekaz do tematu, informując ją, co wpisał. (np. „Powiedziałeś, że masz 2 metry wzrostu i ważysz 70 kg.”)

Na poniższym obrazku wagastatus wykorzystuje zagnieżdżone instrukcje „if()”, aby sklasyfikować osobę jako z niedowagą lub poważnie otyłą. Możesz zobaczyć jego równanie, sprawdzając logikę:



W oknie edycji tego pytania możesz zobaczyć dwie rzeczy:

  1. Krawiectwo musi otaczać wyrażenia nawiasami klamrowymi
  2. Wyrażenia mogą obejmować wiele wierszy, jeśli – tak jak w tym przypadku – chcesz ułatwić czytanie zagnieżdżona logika warunkowa.



Dostosowane pytania, odpowiedzi i raporty

Uwaga: Dynamiczne dostosowywanie może nie działać, jeśli opcje odpowiedzi są dostępne w polach wyboru na tej samej stronie pytań. Wynika to z faktu, że wkładki krawieckie a tag, który nie jest prawidłowy w opcjach wyboru.

Raport BMI wygląda następująco:



Oto okno edycji tego samego pytania.



Wszystko w nawiasach klamrowych jest traktowane jako wyrażenie i podświetlane składnią (oznaczane kolorami) na poprzednim obrazie. Jeśli masz jakieś literówki (takie jak błędnie napisane lub niezdefiniowane nazwy zmiennych lub funkcji), ES wyświetli błąd. W naszym poniższym przykładzie:

  • heightunit.show to niezdefiniowana nazwa zmiennej (w rzeczywistości jest to heightunits.show), a
  • „rnd()” to niezdefiniowana funkcja (właściwa nazwa funkcji to „round()” ).

W obu przypadkach błędy są umieszczone w czerwonym polu, co ułatwia ich wykrycie i naprawienie.



Widzisz także, że możesz szybko tworzyć rozbudowane raporty, takie jak tabela wprowadzonych wartości czy dostosowane porady.

Proszę pamiętać, że każde dostosowywanie musi otaczać wyrażenia nawiasami klamrowymi, aby LimeSurvey wiedziało, które części pytania są tekstem wolnym, a które powinny zostać przeanalizowane przez silnik ExpressionScript.


Weryfikacja

ES kontroluje działanie większości zaawansowanych opcji pytań. Te aspekty kontroli, takie jak minimalna/maks. liczba odpowiedzi, minimalne/maks. indywidualne wartości, minimalne/maks. wartości sumy i sprawdzanie, czy wprowadzone wartości odpowiadają określonym wzorcom ciągów. Dowolna wartość w jednym z tych pól jest uważana za wyrażenie, więc możesz mieć kryteria min./maks. ze złożonymi relacjami warunkowymi z innymi pytaniami.

We wszystkich tych przypadkach, ponieważ atrybut pytania zaawansowanego jest zawsze uważany za wyrażenie, przy jego określaniu nie używa się nawiasów klamrowych.

Strona przykładowe ankiety zawiera wiele działających przykładów zawierających różne wyrażenia sprawdzające.

ExpressionScript - prezentacja

Aby dowiedzieć się więcej o ExpressionScript i o tym, jak używać różnych wyrażeń w celu ulepszenia ankiety, kliknij następujący do prezentacji.