Actions

ExpressionScript sample surveys/pl: Difference between revisions

From LimeSurvey Manual

(Created page with "==Przegląd==")
(Created page with "ExpressionScript zapewnia, że w polach numerycznych można wprowadzać tylko prawidłowe liczby. Jeśli wpiszesz nieprawidłowy numer, zostaniesz ostrzeżony, że coś jest n...")
Line 340: Line 340:




The ExpressionScript ensures that only valid numbers can be entered into numeric fields. If you enter an invalid number, you will be warned that something is wrong (e.g., in the case of the fruity theme, the whole question is "red-ed").
ExpressionScript zapewnia, że w polach numerycznych można wprowadzać tylko prawidłowe liczby. Jeśli wpiszesz nieprawidłowy numer, zostaniesz ostrzeżony, że coś jest nie tak (np. w przypadku motywu owocowego całe pytanie jest „zaczernione”).


Note that the numeric values are always converted to using a period as the radix separator within the database. In this way, the statistical analyses will work appropriately.
Note that the numeric values are always converted to using a period as the radix separator within the database. In this way, the statistical analyses will work appropriately.

Revision as of 15:51, 13 September 2023


Wprowadzenie

Najlepszym sposobem nauczenia się korzystania z ExpressionScript jest zabawa z działającymi przykładami i modyfikowanie ich do własnych potrzeb.

Poniżej możesz znaleźć zestaw przykładowych ankiet, aby zademonstrować (i przetestować), w jaki sposób EM można wykorzystać do ulepszenia ankiety. Ankiety te można znaleźć w folderze /docs/demosurveys dystrybucji.


Trafność, krawiectwo i równania

Przegląd

Poniższy przykład oblicza BMI (wskaźnik masy ciała) każdego respondenta. Zobacz poniżej funkcje zademonstrowane w tym przykładzie.

Zademonstrowano funkcje EM

  1. Trafność - obsługa zaawansowanej logiki warunkowej;
  2. Piping / Tailoring - oferuje możliwość dopasowywania lub dostosowywania odpowiedzi i metadanych pytań;
  3. Dynamiczne krawiectwo - pamiętaj, że raporty zmieniają się na stronie w miarę odpowiadania na pytania.
  4. Mikro-Krawiectwo - warunkowe dostosowywanie w obrębie zdań i raportów przy użyciu instrukcji if()
  5. Równania - nowy typ pytania, który pozwala na wykonywanie obliczeń i przechowywanie wyników w bazie danych, nawet jeśli obliczenia są ukryte
  6. Walidacja warunkowa - walidacja kryteria, takie jak minimalna dopuszczalna wartość, mogą być warunkowe – np. oparte na równaniach.


Zrzuty ekranu

W tym przykładzie obliczany jest wskaźnik masy ciała, czyli obliczanie masy ciała i wzrostu w celu ustalenia, czy masz niedowagę, prawidłową wagę, nadwagę czy otyłość. Pamiętaj, że początkowo widzisz tylko cztery obowiązkowe pytania:



Po wprowadzeniu informacji (i możliwości wyboru, czy chcesz używać jednostek metrycznych czy niemetrycznych), zobaczysz dostosowany raport podsumowujący wprowadzone dane i informujący o Twoim stanie wagi:



Oto inny przykład, w którym zastosowano jednostki niemetryczne, aby pokazać, jak dynamicznie zmienia się wynik:



Na poziomie wewnętrznym ukryte są Pytania typu równanie, które konwertują dane na metryki (jeśli to konieczne), przechowując wzrost metryki, wagę, BMI i stan wagi w bazie danych bez konieczności stosowania niestandardowego JavaScript .

W kolejnym zestawie przykładów możesz zobaczyć, jak możesz wykorzystać funkcje matematyczne i inne w ramach dostosowanych raportów. Tak wygląda strona przed wprowadzeniem jakichkolwiek danych. Istnieje logika warunkowa wyświetlająca puste komórki, jeśli nie wprowadzono żadnych (lub nienumerycznych) danych, zamiast pokazywać „NaN” lub „Podziel przez zero”.



W miarę wprowadzania liczb raport na stronie zmienia się, pokazując wykonywane obliczenia i ich wynik.



W tej przykładowej ankiecie jest wiele innych przykładów. Na przykład poniższy zrzut ekranu przedstawia jeden z kilkudziesięciu sposobów wypełniania strony Trafność dynamiczna. Jak podano w tekście pomocy, wypróbuj różne grupy wiekowe, a zwłaszcza nielogiczne kombinacje odpowiedzi, aby zobaczyć zabawne wiadomości wygenerowane na dole. Pamiętaj też, że jeśli powiesz, że masz więcej niż jedno dziecko, komunikat będzie brzmiał „Mam nadzieję, że będziesz się dobrze bawił ze swoimi X dziećmi”, a nie „Mam nadzieję, że będziesz się dobrze bawił ze swoim dzieckiem”. To pokazuje, jak możesz łatwo dostosować zdania, aby dopasować je do płci i/lub liczby badanych. Możesz nawet łatwo odmieniać czasowniki i odmieniać rzeczowniki na podstawie płci i liczby.



Pobierz

Aby uzyskać dostęp do próbki ankiety, prosimy kliknąć na poniższy link: LS3_em_tailoring.zip.

Przykładowy spis ludności

Przegląd

To jest przykład spisu ludności, w którym pyta się, ile osób liczy Twoje gospodarstwo domowe.

Pokazuje, jak trafność na poziomie grupy może ułatwić wdrożenie „pętli” pytań. Po utworzeniu grupy dla Osoby 1 wyeksportowałem ją. Ponieważ zamiast kodu SGQA użyłem nazw zmiennych qcode, takich jak nazwa_p1, mogłem użyć edytora tekstu, aby szybko edytować i ponownie zaimportować grupę kilka razy (np. edycja i ponowny import każdej powtarzającej się grupy zajmowała około 10 sekund, zapewniając że wszystkie zmienne mają unikalne nazwy i że logika na poziomie grupy jest prawidłowa).

Możesz także skorzystać z funkcji Kopiuj pytanie, ale nie będzie to tak szybkie, jak opcja sugerowana powyżej.

Pokazuje to również, jak zapobiec wyświetlaniu komunikatu Zakończono do czasu rzeczywistego zakończenia ankiety (np. skompletowania wszystkich potrzebnych grup).


Zademonstrowano funkcje EM

  1. Istotność na poziomie grupy - Grupy kontrolne (Osoby 1-5) wyświetlają się tylko dla określonej liczby współmieszkańców;
  2. Krawiectwo - Podsumowanie raportu końcowego dane demograficzne każdego współmieszkańca;
  3. Progresywne wyświetlanie pytań - Niezależnie od tego, czy w trybie grupowym, czy w trybie „wszystko w jednym”, kolejne pytania pojawiają się dopiero po udzieleniu odpowiedzi na poprzednie.


Zrzuty ekranu

Badanie generuje dostosowany raport pokazujący dane demograficzne określonej liczby konkubentów:



Jeśli przełączysz się na tryb pytań pojedynczo, zobaczysz, że indeks dostosowuje pytania. Ponieważ użytkownik stwierdził, że dana osoba jest kobietą, zadaje pytanie „Jak ma na imię”. A ponieważ odpowiedzieliśmy „Maryja”, następne pytanie brzmi: „Ile lat ma Maryja”?



Pobierz

Aby pobrać próbkę ankiety, kliknij tutaj: LS3_group_relevance.zip.


Filtry tablic kaskadowych

Przegląd

Niniejsza ankieta została opracowana w oparciu o projekt ankiety udostępniony dzięki uprzejmości Joy Lane Research, LLC.


Zrzuty ekranu

Poniżej zwróć uwagę, że:

  • Q02 pokazuje tylko zestaw produktów sprawdzonych w Q01 (przy użyciu array_filter)
  • Q02 pokazuje także „Inny produkt”, tekst wpisany w polu „Inna elektronika” w Q01
  • Q04 pokazuje tylko produkty z Q02, które zostały sprawdzone (a więc kaskady filtrów tablicowych)
  • Q05 pokazuje tylko produkty z Q02, które nie zostały sprawdzone w Q02 (przy użyciu kaskadowego wykluczenia array_filter_exclude)




Pobierz

Aby pobrać powyższy przykład, kliknij poniższy link: Przykład ankiety LS2_cascading_array_filter.


Rurowanie/Krawiectwo przy użyciu wszystkich typów pytań i atrybutów

Przegląd

Jeśli nie wiesz, jak nazwać swoje zmienne (SGQA vs Qcodes), nie jesteś sam. Chociaż główna dokumentacja opisuje jak tworzyć nazwy zmiennych Qcode, nic nie przebije zobaczenia tego w działającej wersji demonstracyjnej. Ta ankieta pokazuje, jak uzyskać dostęp do atrybutów pytań i odpowiedzi za pomocą ExpressionScript.


Template:Uwaga


Treść

  • Przykłady każdego typu pytań
  • Wszystkie typy pytań, w których można użyć określenia „inne”, zostały uwzględnione, dzięki czemu można zobaczyć, jak wpływa to na nazewnictwo zmiennych
  • Wartości domyślne dla wszystkich typów pytań, które akceptują wartości domyślne
  • Dostosowywanie - Raporty na stronie i poza nią pokazujące wszystkie 16 dostępnych przyrostków notacji kropkowej EM.
  • Raporty te pokazują wszystkie aktualnie wprowadzone dane (pokazują więc, w jaki sposób można wygenerować własne raporty do wydrukowania dla użytkowników zamiast drukowania- ekran odpowiedzi)
  • Prawidłowe nazewnictwo wszystkich zmiennych w kodzie Qcode i SGQA


Zrzuty ekranu

To ogromna ankieta, dlatego zdecydowaliśmy się nie zamieszczać zrzutów ekranu. Zamiast tego pobierz i graj z nim.


Pobierz

Aby pobrać ankietę, kliknij poniższy link: LS3_EM_question_attributes.lss

Tradycyjna walidacja, przeprojektowana

Przegląd

To pokazuje wszystkie typy walidacji korzystające z wyrażeń i ich wpływ na każdy typ pytań obsługujący walidację. W wielu przypadkach wskazówki dotyczące walidacji zaczynają być ukryte i pojawiają się tylko wtedy, gdy pytanie nie spełnia kryteriów walidacji (w ten sposób znikają również, gdy pytanie przejdzie kryteria walidacji).


Pokazane typy walidacji

  1. min_num_value_n - minimalna wartość odpowiedzi
  2. max_num_value_n - maksymalna wartość odpowiedzi
  3. min_answers - minimalna wymagana liczba odpowiedzi
  4. max_answers maksymalna dozwolona liczba odpowiedzi
  5. multiflexible_min - minimalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)! N!#multiflexible_max - maksymalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)
  6. min_num_value - minimalna dozwolona suma wszystkich odpowiedzi na pytanie! N!#max_num_value - maksymalna dozwolona suma wszystkich odpowiedzi na pytanie
  7. equals_num_value - suma wszystkich odpowiedzi na pytanie musi być równa tej wartości

N !#validation - to jest walidacja wyrażenia regularnego dla pytania - może dotyczyć poszczególnych komórek


Zrzuty ekranu

Używając nowych stylów CSS, każdy typ sprawdzania poprawności wyświetla osobną wskazówkę. Jeśli są widoczne, można je ukryć za pomocą opcji hide_tip. Domyślną opcją jest pokazywanie ich czerwoną czcionką, jeśli pytanie nie spełnia kryteriów walidacji, i zieloną, jeśli je spełnia:



Użytkownik nie może przesłać strony z błędami sprawdzania poprawności. Jeśli podał błędne informacje, zostanie natychmiast ostrzeżony:



Walidację można zastosować do poszczególnych komórek w tablicy, tak jak w tym przykładzie, gdzie sprawdzanie wyrażeń regularnych zapewnia, że każdy wpis jest prawidłowo sformatowanym numerem telefonu w USA, łącznie z numerem kierunkowym.



Pobierz

Aby pobrać powyższy przykład należy kliknąć na poniższy link: LS3_Validation_tests.zip.


Równania sprawdzające

Przegląd

Czasami potrzebujesz niestandardowej walidacji, której nie można osiągnąć przy użyciu tradycyjnych kryteriów min/max. W tym celu będziesz musiał użyć opcji em_validation_q i em_validation_sq, które pozwolą ci konstruować złożone równania walidacyjne odpowiednio na poziomie pytania i podpytania.


Template:Uwaga


Zademonstrowano funkcje EM

  1. em_validation_q - jest to równanie określające, czy całe pytanie jest ważne
  2. em_validation_q_tip - to jest komunikat wyświetlany w przypadku, gdy pytanie nie spełnia kryteriów em_validation_q! N!#em_validation_sq – jest to równanie określające, czy każde pytanie podrzędne (komórka tablicy) jest poprawne
  3. em_validation_sq_tip – to jest komunikat wyświetlany w przypadku wystąpienia z pytań podrzędnych jest nieprawidłowe.

Ogólnie rzecz biorąc, jeśli używana jest metoda em_validation_sq, jeśli jakakolwiek komórka jest nieprawidłowa, kolor tła tej komórki zmienia się na czerwony, aby wskazać, że wystąpił błąd.


Zrzuty ekranu


To pytanie gwarantuje, że wiek dzieci zostanie wprowadzony w kolejności malejącej, poprzez zastosowanie poniższego równania sprawdzającego:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





W poniższym przykładzie walidacja gwarantuje, że w danym wierszu zostaną udzielone odpowiedzi na nie więcej niż 3 pytania, poprzez zastosowanie poniższego równania walidacyjnego:

(suma(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (suma(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (suma(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) < = 3)

Można to także zapisać w następujący sposób. LimeSurvey automatycznie konwertuje go w czasie wykonywania na wyżej wymienione wyrażenie.

(suma(self.sq_A) <= 3) && (suma(self.sq_B) <= 3) && (suma(self.sq_C) <= 3)



Pobierz

Aby pobrać próbkę ankiety wykorzystaną w powyższych przykładach należy kliknąć na link: ls2_test_em_sq_validation.lss.


Trafność podpytania

Przegląd

To pokazuje, jak array_filter i kryteria sprawdzania poprawności mogą współdziałać. W przypadku walidacji mających zastosowanie do sum uwzględniane są tylko istotne (widoczne) wartości.


Zademonstrowano funkcje EM

  1. filtr_tablicy
  2. wykluczenie_filtru_tablicy
  3. min_num_value
  4. maksymalna_wartość_
  5. równa_liczba_wartość

Pokazuje także dynamiczne raportowanie liczby pytań, na które udzielono odpowiedzi w pytaniach kluczowych.


Zrzuty ekranu

Zmiana liczby widocznych wierszy powoduje dynamiczną zmianę sumy. Oznaczenie pytania podrzędnego jako nieistotnego nie usuwa jego wartości. Raczej, jeśli jest to nieistotne, jego wartości nie przyczyniają się do żadnego równania.



Zwróć uwagę, co się stanie, gdy zaznaczymy „Piąte pytanie podrzędne” dla pierwszego pytania „” „Które wiersze powinny pojawić się poniżej”” „”. Zwróć uwagę, że suma drugiego pytania „Wprowadź liczby” wynosi teraz 5. Mimo że pytanie podrzędne 5 dla tego pytania nadal ma wartość 14 (np. jeśli odznaczysz piąte pytanie podrzędne, ponownie zobaczysz wartość 14) , wartość ta nie wlicza się do sumy, ponieważ jest obecnie nieistotna. Wszystkie nieistotne dane są usuwane (w bazie danych mają wartość NULL) po przesłaniu, ale pozostają dostępne na stronie na wypadek, gdyby użytkownicy chcieli lub musieli zmienić zdanie na temat odpowiedzi.



Pobierz

Aby pobrać nasz przykład, kliknij tutaj: ls2_subquestion_relevance.lss.


Używanie przecinka jako separatora podstawy (kropka dziesiętna)

Przegląd

ExpressionScript zapewnia, że w polach numerycznych można wprowadzać tylko prawidłowe liczby. Jeśli wpiszesz nieprawidłowy numer, zostaniesz ostrzeżony, że coś jest nie tak (np. w przypadku motywu owocowego całe pytanie jest „zaczernione”).

Note that the numeric values are always converted to using a period as the radix separator within the database. In this way, the statistical analyses will work appropriately.

To change the radix separator, access the Text elements options located under the Settings tab, and look for the decimal mark functionality.


For more information on what a radix separator is, click [https://en.wikipedia.org/wiki/Radix_point


Question Types Using Radix Separator

  1. Numerical input [N]
  2. Multiple numerical input [K]
  3. Array (Numbers) [:]
  4. Array (Texts) [;], when using the numbers_only attribute
  5. List (radio) [L], when using the other_numbers_only attribute
  6. Short free text [S], when using the numbers_only attribute
  7. Multiple short text [Q], when using the numbers_only attribute
  8. Multiple choice [M], when using the other_numbers_only attribute
  9. Multiple choice with comments [P], when using the other_numbers_only attribute


Screenshots

You may note in the below screenshots that comma can be used as a radix separator.



Download

To download the above example, click on the following link: ls2_comma_as_radix_separator.lss.


Randomization Groups

Overview

This survey demonstrates how to make use of the random_group attribute.

If this attribute is used, each time you start the survey, the question order is randomized. However, once the survey is started, the randomization order remains fixed, even if you change languages.


Screenshots

Let's check together the below example. The first random question on the page will either be Q1 , Q4, or Q7. The second randomized question on the page will either be Q2, Q5, or Q8.



Here is the randomization generated the first time I tested this survey.



A different randomization was generated the second time I tested the survey.



But, when I switched to French (without re-starting the survey), the randomization order remained intact.



Download

To download the above example, click on the following link: Randomization_Group_Test.lss


Randomly Ask One Question Per Group

Overview

This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation "ask1==3").

This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.


Features Demonstrated

  1. Equation question type
  2. Randomization functions
  3. Conditional (if) function


Screenshots

This is Group0, which uses the Equation question type to select random values from 1 to 6 for each group (except the last group, which has only 4 questions). Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.



This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.



Download

To download the above survey example, click here: Random questions within a group survey example.


Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)

  This applies only to all random questions from one group and only if the Group by group or All in one format is used.



Overview

This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.

The survey has one group containing 10 questions. All questions are assigned the same randomization group name. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "relevanceStatus" of all other questions in the group is less than the number of questions you want to show. Since relevanceStatus is assigned as questions are rendered, this effectively totals the number of preceding questions.

So, in our 5 out of 10 example, the equation for Q1 would be:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

For Q2, it would be:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

And so on...


Features Demonstrated

  1. relevanceStatus variable
  2. Randomizing

Download

To download the above example, click on the following link: Random 5 out of 10 survey example.

Rating User-Entered List of Products

Overview

The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.


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.