Check survey logic - Advanced/pl: Difference between revisions
From LimeSurvey Manual
Maren.fritz (talk | contribs) Created page with "== Kolory w składni ExpressScript == Składnia warunków i równań jest podświetlona, aby łatwiej zorientować się, na co patrzysz: # Zielony / Jasnoniebieski: Zmienna, k..." |
Maren.fritz (talk | contribs) Created page with "==Niezdefiniowane zmienne==" |
||
Line 83: | Line 83: | ||
== | ==Niezdefiniowane zmienne== | ||
Revision as of 05:56, 13 September 2023
Ogólne
Ważną opcją, która pomaga w tworzeniu i łatwym zarządzaniu złożonymi ankietami, jest „Sprawdź logikę ankiety”.
Podczas opracowywania i testowania ankiety, a także przed jej aktywacją, bardzo ważne jest sprawdzenie logiki ankiety. Jest to szczególnie prawdziwe, gdy używasz złożonych równań dotyczących trafności, dopasowania i walidacji – musisz mieć pewność, że nic nie ulegnie uszkodzeniu podczas przeprowadzania ankiety.
Ta funkcja pozwala szybko sprawdzić dokładność ankiety, grup i pytań. Dostęp do niego można uzyskać z opcji menu górnego paska, znajdujących się w ustawieniach związanych z ankietą. Jest ona dostępna poprzez menu Narzędzia:
Jak widać powyżej, możesz uruchomić tę opcję czterokrotnie, dla każdego języka użytego w ankiecie.
Opis
Opcja „Sprawdź logikę ankiety” pokazuje wszystko, co określiłeś dla każdego pytania i grupy (np. nazwę, tekst, pomoc, warunki/trafność, zasady sprawdzania poprawności, wartości domyślne, pytania podrzędne, odpowiedzi) w wygodnej formie tabelarycznej. Podświetla błędy i umożliwia kliknięcie identyfikatora pytania i grupy (lub zmiennych używanych w równaniach), aby otworzyć nowe karty przeglądarki i edytować te pytania lub grupy. Ułatwia to szybką edycję ewentualnych błędów oraz odświeżenie strony sprawdzania logiki w celu potwierdzenia trafności ankiety przed jej aktywacją.
Wyświetlacz zaprojektowano także tak, aby był czytelny dla badaczy i sponsorów badań, co umożliwi im sprawdzenie dokładności projektu i logiki badania. Sprawdzenie logiki ankiety aktualizuje pamięć podręczną wszystkich wyrażeń używanych w aktywnej ankiecie.
Zawiera następujące kolumny:
- # - pokazuje liczbę sekwencji grup i pytań, zaczynając od 0.
- Nazwa [ ID] - pokazuje kod pytania dla grupy/pytania/podpytania. Kody te mogą być używane jako zmienne w wyrażenia. „ID” to identyfikator pytania (QID) lub identyfikator grupy (GID). W tym polu wyświetlany jest także typ pytania (np. wielokrotny wybór [M])).
- Znaczenie [ Walidacja] (domyślnie) - wyświetla następujące informacje:
- Trafność - podświetlona składnia równanie istotności dla pytania lub grupy. Jeśli zawsze jest to prawda (co zostanie pokazane w dowolnym scenariuszu), wartość będzie wynosić „1”
- „Validation” — ExpressionScript automatycznie generuje validation równanie w oparciu o wybrane atrybuty pytania (np. min./maks. liczba odpowiedzi, min./maks./równa suma wartości, min./maks. indywidualne wartości lub walidacja wyrażenia regularnego). W tej sekcji przedstawiono wygenerowane równanie walidacyjne, dzięki któremu można wykryć, czy występują jakieś błędy (takie jak niezdefiniowane zmienne).
- Weryfikacja na poziomie pytania pokazuje równanie potrzebne do sprawdzenia opisanych powyżej atrybutów pytania
- **Weryfikacja na poziomie podpytania pokazuje równanie potrzebne do implementacji array_filter, array_filter_exclude i exclusive_option
- Domyślne - jeśli pytanie ma wartość domyślną, jest tutaj pokazane z podświetloną składnią (ponieważ wartością domyślną może być wyrażenie).
- Tekst [ Pomoc] (Wskazówka) - wyświetla następujące informacje:
- Tekst - tekst grupy, pytania, pytania podrzędnego lub odpowiedzi. Jest podświetlona składnia, aby pokazać wszelkie osadzone krawiectwo, co pozwala sprawdzić, czy zadeklarowałeś wszystkie zmienne, które planujesz użyć podczas krawiectwa.
- Pomoc - pokazuje tekst pomocy dla pytania, również podświetloną składnię.
- Wskazówka - pokazuje wewnętrznie wygenerowaną wskazówkę dotyczącą sprawdzania poprawności, opartą na atrybutach pytania. Ta sama wskazówka jest używana we wszystkich stylach ankiet, a także w drukowanych ankietach i na ekranach wprowadzania danych.
- „Atrybuty pytania” - pokazuje tabelę wszystkich odpowiednich atrybutów pytania dla tego pytania. Atrybuty, które mogą być równaniami, są wyróżniane według składni, co umożliwia sprawdzenie ich dokładności.
Wiersze są oznaczone kolorami w następujący sposób:
- Grupy - są wyświetlane na jasnoszarym tle
- Pytania - są wyświetlane na jasnozielonym tle
- ' „Zapytania” – są wyświetlane na bladożółtym tle
- „Odpowiedzi” – są wyświetlane na zwykłym białym tle
Odpowiedzi posiadają dodatkowy atrybut w kolumnie 'Istotność:
- 'Wartość - jest to domyślna wartość wewnętrzna używana w obliczeniach. Jeśli używasz Oceny, będzie to wartość oceny. W przeciwnym razie będzie to taka sama nazwa jak nazwa odpowiedzi.
Wykorzystanie
Na górze strony znajduje się komunikat podsumowujący. Jeśli wszystko jest w porządku, wyświetli się komunikat „W tej ankiecie nie wykryto błędów składniowych” lub „Ta grupa” lub „To pytanie” „samo w sobie nie zawiera żadnych błędów składniowych”. Jeśli jest odwrotnie, pojawi się informacja „X pytań zawiera błędy składniowe, które należy poprawić”.
Każde pytanie, które zawiera błędy składniowe, ma tło swojej skrajnej lewej kolumny (tzn. #) oznaczone kolorem czerwonym. Ponadto w kolumnie „Nazwa [ID]” wyświetli się ostrzeżenie określające minimalną liczbę błędów w pytaniu. Następujące błędy są częste:
- Niezdefiniowana zmienna - jeśli nie zdefiniowałeś wszystkich zmiennych lub błędnie wpisałeś array_filter (lub inny zestaw opcji odpowiedzi dla array_filter), to niektóre z Twoich pytań walidacyjnych będą pokazywać błędy . Niezdefiniowane zmienne są wyświetlane w kolorze czerwonym i otoczone czerwoną linią.
- Zła składnia - gdy zaczniesz używać równań istotności, możesz użyć za dużo lub za mało nawiasów. Takie problemy składniowe są podświetlone i otoczone czerwoną ramką. Jeśli najedziesz myszką na tekst w czerwonej ramce, wyświetli się podpowiedź opisująca błąd.
Kolory w składni ExpressScript
Składnia warunków i równań jest podświetlona, aby łatwiej zorientować się, na co patrzysz:
- Zielony / Jasnoniebieski: Zmienna, która odwołuje się do pytania z wcześniejszej ankiety
- Niebieski : Funkcja
- Szary: Wyrażenie łańcuchowe
- Brązowy: Wyrażenie TOKEN (dane uczestnika)
- Czarny: Operator
Co należy sprawdzić:
- Fioletowy: Zmienna odwołująca się do pytanie w dalszej części ankiety. Zwykle jest to błąd i należy to sprawdzić.
- Czerwona lub czerwona ramka: Nieistniejąca zmienna lub odniesienie do wcześniejszego pytania lub błąd składniowy - zwykle należy to sprawdzić.
Niezdefiniowane zmienne
If undefined variables are used, the respective variable name will be color-coded in red and surrounded by a red line. If you hover your mouse over the variable name, it will say "undefined variable":
}}
Bad syntax
Most of the expression-related mistakes are related to bad syntax. This is related to the fact that survey administrators usually miss to add a curly bracket, to properly make use of parentheses, or they use expressions wrongly:
Here are many good examples on the usage of syntax highlighting.
Bad custom JavaScript
The JavaScript errors will also be highlighted in the survey logic check:
Speeding editing and validation
All of the syntax-highlighted text has tooltips embedded, which are clickable:
- Tooltips
- Functions - hovering the mouse lets you see the purpose and syntax definition of the function;
- Variable Names - hovering the mouse lets you see the position (group, question sequence), question text, and allowable answers for the question.
- Actions
- Variable Names - clicking on the variable name opens a new window that allows you to edit the question. This makes it easy to navigate and verify logic - simply keep clicking on variable names of relevance or validation criteria for the question to see where they come from and how they are used.
Examples
The following examples are taken from the ExpressionScript sample surveys. You can find screenshots of running surveys, explanations, and downloads on that page.
Body Mass Index
Here are screenshots of this example.
This is the question-reorder view of the Body Mass Index calculation. You can see the relevance equations for weight, height, and BMI under the Question column:
For a better survey overview, check the survey logic page:
This survey example is also a good example of nested if() statements to generate the "weightstatus".
Cascading logic
Here are screenshots of this example.
It shows the subquestion validation logic that is automatically generated when you use array_filter and array_filter_exclude. This example also shows how you can substitute the tailored "Other" value (the answer for Q02_other is Q01_other).
Q05 in this example shows simultaneous use of array_filter and array_filter_exclude on Q01 and Q02, respectively. This example demonstrates cascading array_filter capabilities. Note that one of the main reasons for showing the question and subquestion level validation criteria is to help ensure you have not made any typos in specifying the array_filter or array_filter_exclude variable names (or in case you use different variable names for your list of filtered subquestions). If you have such typos, all the invalid variable names will appear in red indicating that they are undefined, letting you quickly fix the problem.
Dynamic relevance
This example demonstrates dynamic cascading relevance logic to control display of question visibility. You can download this example here.
Also note that questions are displayed only if certain validation criteria are met. For example, if a person states that she has 2 kids, certain questions have to be filled in by the respondent (kid1 and kid2).
Group-level relevance
This example shows how group-level relevance appears in the logic check. Here are screenshots of the example described below.
As you can see, the group-level relevance equation (cohabs > 1 && p1_rel != "") appear in the grey Person 2 row for G-2.
You may also notice that all of the questions are mandatory. However, if the group is irrelevant, so are all its questions. As a result, those questions are only truly mandatory if the group is relevant.
You may also note that certain questions are displayed only if the answer to the previous question is not empty. You may see below that if p2_sex is not filled in, p2_name is not going to be displayed, even though it is a mandatory questions. The mandatory question p2_age is also not going to be displayed if p2_name is not filled in. These questions can be considered "conditionally mandatory".
Additionally, note that the tip messages are also automatically created for you. They are organized by value range (min/max), sum value range (min/max/equals), number of answers (min/max), etc (it depends on the used question type and active attributes). Sometimes you want to validate an answer range but don't want to display what might appear to be silly validation tips to the user. In such cases, you can use the hide_tip question option (as in this case, to avoid telling the user that the age must be between 0 and 115 unless they try to enter a bad value - see p2_age).
Comma as radix (decimal) separator
Although LimeSurvey fully supports the use of comma as radix (decimal) separator at run-time, you must still use a decimal as the radix separator at the design-time (e.g., when specifying min/max values in advanced question attributes). The working example can be found here.
Also, remember that the validation logic is created for you automatically from the enabled question attributes. The equations may look overwhelming, but you don't need to worry about them.