Actions

ExpressionScript Engine - Quick start guide/pl: Difference between revisions

From LimeSurvey Manual

(Created page with "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 konk...")
(Created page with "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 [https://manual.limesurvey.org/Expre...")
 
(21 intermediate revisions by the same user not shown)
Line 79: Line 79:




So, the group also has question-level relevance criteria, such that some questions only appear if you answered certain questions before them (e.g., p2age is displayed if p2name was answered). ES combines the Group and Question-level relevance for you. '''Questions in a group are only asked if the group as a whole is relevant. Then, only the subset of questions within the group that are relevant are asked.'''
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.'''


Here is the screenshot for editing the group-level relevance of ''Cohabitant 2'':
Oto zrzut ekranu umożliwiający edycję trafności „Kohabitanta 2” na poziomie grupy:




Line 87: Line 87:




Note that you do not use the curly braces when you enter a relevance equation.
Pamiętaj, że podczas wprowadzania równania istotności nie używasz nawiasów klamrowych.


==Tailoring/Piping==
==Krawiectwo/Wyszywanie==




ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased <nowiki>[</nowiki>Product]. What did you like best about it?". Sometimes you need conditional substitution like "<nowiki>[</nowiki>Mr./Mrs.] <nowiki>[</nowiki>LastName], would you be willing to complete our survey?". In this case, you want to use "Mr. or Mrs." based on the person's gender. Other times you need even more complex substitution (such as based upon a mathematical computation). ES supports each of these types of tailoring/piping.
ES pozwala łatwo wykonać proste i złożone krawiectwo warunkowe. Czasami wystarczy prosta zamiana, na przykład powiedzenie: „Powiedziałeś, że kupiłeś<nowiki> [</nowiki> Produkt]. Co ci się w tym najbardziej podobało?. Czasami potrzebujesz podstawienia warunkowego, np. „<nowiki> [</nowiki> Pan Pani.]<nowiki> [</nowiki> 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.




===Conditional Equations===
===Równania warunkowe===




The Body Mass Index example shows the ability to compute a person's BMI, even while letting them enter their height and weight in two different units (cms vs inches and kgs vs lbs):
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):




Line 104: Line 104:




In this case, weightkg is {if(weightunits == "kg", weight, weight * 0.453592)}. This "if()" function means that if the subject enters the weight using kilograms, use that value, otherwise multiply the entered value (pounds is the alternative) by 0.453592 to convert it to kilograms. The heightm variable uses a similar approach to compute the person's height in meters (height in cms/100), even if he has entered his height in inches (1 meter=3.28084 inches).
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 is computed as: {weightkg / (heightm * heightm)}.
BMI oblicza się jako: {wagakg / (wzrost*wzrost)}.


Lastly, the report conditionally tailors the message for the subject, telling her what he entered. (e.g., "You said you are 2 meters tall and weight 70 kg.")
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.)


In the below image, weightstatus uses nested "if()" statements to categorize the person as underweight to severely obese. You can see its equation by checking its logic:
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ę:




Line 116: Line 116:




From the edit window for this question, you can see two things:
W oknie edycji tego pytania możesz zobaczyć dwie rzeczy:
#Tailoring must surround expressions with curly braces
#Krawiectwo musi otaczać wyrażenia nawiasami klamrowymi
#Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.
#Wyrażenia mogą obejmować wiele wierszy, jeśli – tak jak w tym przypadku – chcesz ułatwić czytanie zagnieżdżona logika warunkowa.




Line 124: Line 124:




===Tailored Questions, Answers, and Reports===
===Dostosowane pytania, odpowiedzi i raporty===




<div class="simplebox">[[File:help.png]] '''Note:''' Dynamic tailoring may not work if answer options are made available in select boxes on the same question page. This results from the fact that tailoring inserts a <nowiki><span></nowiki> tag which is not valid inside select options.</div>
<div class="simplebox">[[File:help.png]] '''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<nowiki></nowiki> <span>tag, który nie jest prawidłowy w opcjach wyboru.</span>


The BMI report looks like this:
Raport BMI wygląda następująco:




Line 135: Line 135:




Here is the edit window for the same question.
Oto okno edycji tego samego pytania.




Line 141: Line 141:




Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), ES would show an error. In our below example:
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.shown is an undefined variable name (it is actually heightunits.shown) and
* heightunit.show to niezdefiniowana nazwa zmiennej (w rzeczywistości jest to heightunits.show), a
* "rnd()" is an undefined function (the proper function name is "round()").  
* „rnd()” to niezdefiniowana funkcja (właściwa nazwa funkcji to „round()).  


In both cases, the errors are located within a red box to make it easier to spot and fix them.
W obu przypadkach błędy są umieszczone w czerwonym polu, co ułatwia ich wykrycie i naprawienie.




Line 151: Line 151:




You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.
Widzisz także, że możesz szybko tworzyć rozbudowane raporty, takie jak tabela wprowadzonych wartości czy dostosowane porady.


Please remember that all tailoring must surround expressions with curly braces so that LimeSurvey knows which parts of the question are free text and which should be parsed by the ExpressionScript engine.
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.




==Validation==
==Weryfikacja==




ES controls how most of the advanced question options work. These control aspects like min/max numbers of answers, min/max individual values, min/max sum values, and checking that entered values match specified string patterns. Any value in one of those fields is considered an expression, so you can have min/max criteria with complex conditional relationships to other questions.
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.


In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.
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.


The [[ExpressionScript sample surveys|sample surveys]] page shows many working examples containing a variety of validation expressions.
Strona [[Przykładowe ankiety ExpressionScript|przykładowe ankiety]] zawiera wiele działających przykładów zawierających różne wyrażenia sprawdzające.


=ExpressionScript - presentation=
=ExpressionScript - prezentacja=




To find out more about ExpressionScript and how you can use different expressions to enhance your survey, please click on the following [https://manual.limesurvey.org/ExpressionScript_-_Presentation link].
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 [https://manual.limesurvey.org/ExpressionScript_-_Link do prezentacji].

Latest revision as of 15:32, 13 September 2023


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.