Przykładowe ankiety ExpressionScript
From LimeSurvey Manual
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
- Trafność - obsługa zaawansowanej logiki warunkowej;
- Piping / Tailoring - oferuje możliwość dopasowywania lub dostosowywania odpowiedzi i metadanych pytań;
- Dynamiczne krawiectwo - pamiętaj, że raporty zmieniają się na stronie w miarę odpowiadania na pytania.
- Mikro-Krawiectwo - warunkowe dostosowywanie w obrębie zdań i raportów przy użyciu instrukcji if()
- Równania - nowy typ pytania, który pozwala na wykonywanie obliczeń i przechowywanie wyników w bazie danych, nawet jeśli obliczenia są ukryte
- 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
- Istotność na poziomie grupy - Grupy kontrolne (Osoby 1-5) wyświetlają się tylko dla określonej liczby współmieszkańców;
- Krawiectwo - Podsumowanie raportu końcowego dane demograficzne każdego współmieszkańca;
- 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.
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
- min_num_value_n - minimalna wartość odpowiedzi
- max_num_value_n - maksymalna wartość odpowiedzi
- min_answers - minimalna wymagana liczba odpowiedzi
- max_answers maksymalna dozwolona liczba odpowiedzi
- multiflexible_min - minimalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)! N!#multiflexible_max - maksymalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)
- min_num_value - minimalna dozwolona suma wszystkich odpowiedzi na pytanie! N!#max_num_value - maksymalna dozwolona suma wszystkich odpowiedzi na pytanie
- 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.
Zademonstrowano funkcje EM
- em_validation_q - jest to równanie określające, czy całe pytanie jest ważne
- 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
- 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
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”).
Należy pamiętać, że wartości liczbowe są zawsze konwertowane w bazie danych przy użyciu kropki jako separatora podstawy. W ten sposób analizy statystyczne będą działać prawidłowo.
Aby zmienić separator podstawy, przejdź do opcji Elementy tekstu znajdujących się w zakładce Ustawienia i poszukaj funkcjonalności znak dziesiętny.
Typy pytań korzystające z separatora Radix
- Wprowadzanie numeryczne [ N]
- Wielokrotne wprowadzanie liczb [ K]
- Tablica (Liczby) [ :]
- Tablica (teksty) [ ;], przy użyciu atrybutu numbers_only
- Lista (radio) [ L], przy użyciu atrybutu other_numbers_only
- Krótki dowolny tekst [ S], jeśli używany jest atrybut numbers_only
- Wiele krótkich tekstów [ Q], jeśli używasz atrybutu numbers_only
- wielokrotny wybór [ M], przy użyciu atrybutu other_numbers_only
- wielokrotny wybór z komentarzami [ P], jeśli używany jest atrybut other_numbers_only
Zrzuty ekranu
Na poniższych zrzutach ekranu możesz zauważyć, że przecinek może być używany jako separator podstawy.
Pobierz
Aby pobrać powyższy przykład, kliknij poniższy link: ls2_comma_as_radix_separator.lss.
Grupy losowe
Przegląd
Ta ankieta pokazuje, jak wykorzystać atrybut „random_group”.
Jeśli ten atrybut jest używany, przy każdym uruchomieniu ankiety kolejność pytań jest losowa. Jednakże po rozpoczęciu ankiety kolejność losowania pozostaje stała, nawet jeśli zmienisz język.
Zrzuty ekranu
Sprawdźmy wspólnie poniższy przykład. Pierwszym losowym pytaniem na stronie będzie pytanie Q1, Q4 lub Q7. Drugim losowym pytaniem na stronie będzie pytanie Q2, Q5 lub Q8.
Oto losowość wygenerowana podczas pierwszego testowania tej ankiety.
Kiedy po raz drugi testowałem ankietę, wygenerowano inną randomizację.
Kiedy jednak przeszedłem na język francuski (bez ponownego rozpoczynania ankiety), kolejność randomizacji pozostała niezmieniona.
Pobierz
Aby pobrać powyższy przykład, kliknij poniższy link: Randomization_Group_Test.lss
Losowo zadaj jedno pytanie na grupę
Przegląd
Ta ankieta pokazuje, jak skonfigurować ankietę, aby losowo wyświetlać jedno pytanie na grupę. Jest w nim 5 grup po 6 pytań każda. Na początku w Grupie 0 zapełnionych jest pięć ukrytych pytań z równania, zwanych Ask1-Ask5. Każde z nich ma wartość {floor(rand(1,6.9999))} w polu tekstowym pytania, co oznacza, że każda zmienna Ask1-Ask5 będzie miała wartość od 1 do 6. Następnie każde pytanie w grupie ma równanie trafności, takie jak „zapytaj1==N”, gdzie N jest N-tym pytaniem w grupie (więc trzecie pytanie w grupie 1 ma równanie trafności „zapytaj1==3”).
Ankieta ta działa równie dobrze w trybie ankiety pojedynczo, grupa po grupie i pytanie po pytaniu. Ponieważ randomizacja jest ustawiona w pierwszej grupie i ta grupa jest skutecznie ukryta (ponieważ wszystkie pytania typu Ask1-Ask5 są ukryte), randomizacja pozostaje taka sama dla podmiotu; ale każdy inny podmiot będzie miał odrębną randomizację.
Zademonstrowane funkcje
- Typ pytania z równania
- Funkcje losowe
- Funkcja warunkowa (jeśli)
Zrzuty ekranu
To jest Grupa 0, która używa Typ pytania równania do wybierania losowych wartości od 1 do 6 dla każdej grupy (z wyjątkiem ostatniej grupy, która ma tylko 4 pytania). Należy zauważyć, że funkcja „if()” najpierw sprawdza, czy zapytanie1 zostało już ustawione, a jeśli tak, używa tej wartości. Jeśli wartość nie została ustawiona, używa losowej wartości do ustawienia wartości Ask1.
Ta grupa pokazuje, jak zmienna (ask4) z Grupy 0 służy do kontrolowania, które pytanie jest widoczne w czwartej grupie.
Pobierz
Aby pobrać powyższy przykład ankiety, kliknij tutaj: Losowe pytania w przykładzie ankiety grupowej.
Zadaj losowo określoną liczbę pytań w grupie (podzbiór pytań)
Przegląd
Ta ankieta pokazuje, jak zadać losowy podzbiór pytań w grupie. Na przykład pokaż 5 losowych pytań z 10 pytań znajdujących się w grupie.
Ankieta składa się z jednej grupy zawierającej 10 pytań. Do wszystkich pytań przypisana jest ta sama nazwa grupy randomizacji. W rezultacie będą one wyświetlane w losowej kolejności podczas ładowania strony. Każdemu pytaniu przypisane jest równanie istotności, które oznacza, że suma „relevanceStatus” wszystkich pozostałych pytań w grupie jest mniejsza niż liczba pytań, które chcesz wyświetlić. Ponieważ relevanceStatus jest przypisywany podczas renderowania pytań, w praktyce oznacza to sumę liczby poprzedzających pytań.
Zatem w naszym przykładzie 5 z 10 równanie Q1 wyglądałoby następująco:
suma(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
W drugim kwartale wyglądałoby to tak:
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
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
- Tailoring answers - when rating products, the labels come from the comment field of the preceding multiple choice question
- 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.