x

Główne rozdziały

  1. LimeSurvey Cloud a LimeSurvey CE
  2. LimeSurvey Cloud — przewodnik szybkiego startu
  3. LimeSurvey CE - Instalacja
  4. Jak dobrze zaprojektować ankietę (Przewodnik)
  5. Pierwsze kroki
  6. Konfiguracja LimeSurvey
  7. Wprowadzenie - Ankiety
  8. Wyświetl ustawienia ankiety
  9. Zobacz menu ankiety
  10. Wyświetl strukturę ankiety
  11. Wprowadzenie - Pytania
  12. Wprowadzenie - Grupy pytań
  13. Wprowadzenie - Ankiety - Zarządzanie
  14. Opcje paska narzędzi ankiety
  15. Ankieta wielojęzyczna
  16. Skrócona instrukcja obsługi — ExpressionScript
  17. Zaawansowane funkcje
  18. Ogólne FAQ
  19. Rozwiązywanie problemów
  20. Obejścia
  21. Licencja
  22. Dziennik zmian wersji
  23. Wtyczki - Zaawansowane
 Actions

ExpressionScript sample surveys/pl: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Przykładowe ankiety ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Aby pobrać przykładową ankietę z powyższego, kliknij poniższy link: Media:Rating_User-Entered_List_of_Products_Survey.zip|Przykładowa ankieta z oceną produktów wpro..."
 
(120 intermediate revisions by the same user not shown)
Line 4: Line 4:




=Introduction=
=Wprowadzenie=




The best way to learn how to use the ExpressionScript is to play with working examples and modify them to your needs.
Najlepszym sposobem nauczenia się korzystania z ExpressionScript jest zabawa z działającymi przykładami i modyfikowanie ich do własnych potrzeb.


You may find below a set of sample surveys to demonstrate (and test) how the EM can be used to enhance your survey. These surveys can be found in the distribution's /docs/demosurveys folder.  
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.  




=Relevance, Tailoring and Equations=
=Trafność, krawiectwo i równania=




==Overview==
==Przegląd==




The following example computes the BMI (Body Mass Index) of each respondent. See below the features that are demonstrated within this example.
Poniższy przykład oblicza BMI (wskaźnik masy ciała) każdego respondenta. Zobacz poniżej funkcje zademonstrowane w tym przykładzie.


==EM Features Demonstrated==
==Zademonstrowano funkcje EM==
   
   


#'''Relevance''' - support for powerful conditional logic;
#'''Trafność''' - obsługa zaawansowanej logiki warunkowej;
#'''Piping / Tailoring''' - offers the ability to pipe or tailor answers and question metadata;
#'''Piping / Tailoring''' - oferuje możliwość dopasowywania lub dostosowywania odpowiedzi i metadanych pytań;
#'''Dynamic Tailoring''' - note that reports are changed on the page as you answer questions.
#'''Dynamiczne krawiectwo ''' - pamiętaj, że raporty zmieniają się na stronie w miarę odpowiadania na pytania.
#'''Micro-Tailoring''' - conditional tailoring within sentences and reports using if() statements
#'''Mikro-Krawiectwo''' - warunkowe dostosowywanie w obrębie zdań i raportów przy użyciu instrukcji if()
#'''Equations''' - a new [[Question type - Equation|question type]] that lets you do calculations and store the results in the database, even if the calculation is hidden
#'''Równania ''' - nowy [[Typ pytania - Równanie|typ pytania]], który pozwala na wykonywanie obliczeń i przechowywanie wyników w bazie danych, nawet jeśli obliczenia są ukryte
#'''Conditional Validation''' - validation criteria, such as the minimum allowable value, can be conditional - e.g., based upon equations.
#'''Walidacja warunkowa''' - walidacja kryteria, takie jak minimalna dopuszczalna wartość, mogą być warunkowe – np. oparte na równaniach.




==Screenshots==
==Zrzuty ekranu==




This example computes the Body Mass Index, a calculation of your weight and height to determine whether you are underweight, normal weight, overweight, or obese. Note that initially, all you see are the four mandatory questions:
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:




Line 40: Line 40:




Once you enter your information (and you get to choose whether to use metric or non-metric units), you see a tailored report that summarizes what you entered, telling you your weight status:
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:




Line 46: Line 46:




Here is a different example, using non-metric units to show how the result changes dynamically:  
Oto inny przykład, w którym zastosowano jednostki niemetryczne, aby pokazać, jak dynamicznie zmienia się wynik:  




Line 52: Line 52:




There are hidden [[Question type - Equation|Equation-type questions]] at the internal level that converts the data to metric (if needed), storing the metric height, weight, BMI, and weight status in the database without needing custom JavaScript.
Na poziomie wewnętrznym ukryte są [[Typ pytania - Równanie|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 .


You can see in the next set of examples how you can use mathematical and other functions within tailored reports. This is how the page looks like before you enter any data. There is conditional logic to show blank cells if no (or non-numeric) data is entered, rather than showing "NaN" or "Divide by Zero".
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”.




Line 60: Line 60:




As numbers are entered, the on-page report changes to show the computation being performed, and its result.
W miarę wprowadzania liczb raport na stronie zmienia się, pokazując wykonywane obliczenia i ich wynik.




Line 66: Line 66:




There are many other examples in this sample survey. For example, the below screenshot shows one of the dozens of ways you can fill out the Dynamic Relevance page. As the help text notes, try different ages, and especially illogical combinations of responses to see the amusing messages generated at the bottom. Also note that if you say that you have more than one child, the message will say "I hope you enjoy playing with your X children", rather than saying "I hope you enjoy playing with your child". This shows how you can easily micro-tailor sentences to make them match the gender and/or number of your subjects. You can even easily conjugate verbs and decline nouns based upon gender and number.
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.




Line 72: Line 72:




==Download==
==Pobierz==




To access the survey sample, please click on the following link: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].
Aby uzyskać dostęp do próbki ankiety, prosimy kliknąć na poniższy link: [[Media:LS3_em_tailoring.zip|LS3_em_tailoring.zip]].


=Sample Census=
=Przykładowy spis ludności=




==Overview==
==Przegląd==




This is a census example that asks how many people are in your household.
To jest przykład spisu ludności, w którym pyta się, ile osób liczy Twoje gospodarstwo domowe.


It demonstrates how group-level relevance can make it easier to implement a "loop" of questions. After creating the group for Person 1, I exported the group. Since I used qcode variable names like p1_name instead of the SGQA code, I could use a text editor to quickly edit and re-import the group several times (e.g., it took about 10 seconds to edit and re-import each repeating group, ensuring that all variables had unique variables names and that the group-level logic was correct).
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).


You can also the [[Copy question|copy question]] feature, but it won't be as fast as the option suggested above.
Możesz także skorzystać z funkcji [[Kopiuj pytanie|Kopiuj pytanie]], ale nie będzie to tak szybkie, jak opcja sugerowana powyżej.


This also shows how you can prevent the Finished message from appearing until the survey is truly finished (e.g., when all needed groups are completed).
Pokazuje to również, jak zapobiec wyświetlaniu komunikatu Zakończono do czasu rzeczywistego zakończenia ankiety (np. skompletowania wszystkich potrzebnych grup).




==EM Features Demonstrated==
==Zademonstrowano funkcje EM==




#'''Group-level relevance''' - The follow-up groups (Person 1-5) only show for up to the number of cohabitants specified;
#'''Istotność na poziomie grupy''' - Grupy kontrolne (Osoby 1-5) wyświetlają się tylko dla określonej liczby współmieszkańców;
#'''Tailoring''' - The final report summarizes the demographic data for each cohabitant;
#'''Krawiectwo''' - Podsumowanie raportu końcowego dane demograficzne każdego współmieszkańca;
#'''Progressive question display''' - Whether in group or all-in-one mode, subsequent questions only show as soon as the preceding ones are answered.
#'''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.




==Screenshots==
==Zrzuty ekranu==




The survey generates a tailored report showing the demographics of the specified number of cohabitants:
Badanie generuje dostosowany raport pokazujący dane demograficzne określonej liczby konkubentów:




Line 109: Line 109:




If you switch to question-at-a-time mode, you see that the index tailors the questions. Since the user said that the person is a woman, it asks "What is her name". And since we answered "Mary", the next question says "How old is Mary"?
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”?




Line 115: Line 115:




==Download==
==Pobierz==




To download the survey sample, click here: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].
Aby pobrać próbkę ankiety, kliknij tutaj: [[Media:LS3_group_relevance.zip|LS3_group_relevance.zip]].




=Cascading Array Filters=
=Filtry tablic kaskadowych=




==Overview==
==Przegląd==




This survey is based on the design of a survey courtesy of Joy Lane Research, LLC.  
Niniejsza ankieta została opracowana w oparciu o projekt ankiety udostępniony dzięki uprzejmości Joy Lane Research, LLC.  




==Screenshots==
==Zrzuty ekranu==




In the following, note that:
Poniżej zwróć uwagę, że:
*Q02 only shows the set of products checked in Q01 (by using array_filter)
*Q02 pokazuje tylko zestaw produktów sprawdzonych w Q01 (przy użyciu array_filter)
*Q02 also shows "Another product", the text entered into the "Other electronic" field in Q01
*Q02 pokazuje także „Inny produkt”, tekst wpisany w polu „Inna elektronika” w Q01  
*Q04 only shows products from Q02 that were checked (so the array filter cascades)
*Q04 pokazuje tylko produkty z Q02, które zostały sprawdzone (a więc kaskady filtrów tablicowych)
*Q05 only shows products from Q02 that were not checked in Q02 (using a cascaded array_filter_exclude)
*Q05 pokazuje tylko produkty z Q02, które nie zostały sprawdzone w Q02 (przy użyciu kaskadowego wykluczenia array_filter_exclude)




Line 146: Line 146:




==Download==
==Pobierz==




Click on the following link to download the above example: [[Media:ls2_cascading_array_filter.lss|LS2_cascading_array_filter survey example]].
Aby pobrać powyższy przykład, kliknij poniższy link: [[Media:ls2_cascading_array_filter.lss|Przykład ankiety LS2_cascading_array_filter]].




=Piping/Tailoring Using All Question Types and Attributes=
=Rurowanie/Krawiectwo przy użyciu wszystkich typów pytań i atrybutów=




==Overview==
==Przegląd==




If you are confused about how to name your variables (SGQA vs Qcodes), you are not alone. Although the main documentation describes [[ExpressionScript - Presentation#Access to Variables|how to compose Qcode variable names]], nothing beats seeing it in a working demo. This survey shows how you can access question attributes and responses using the ExpressionScript.
Jeśli nie wiesz, jak nazwać swoje zmienne (SGQA vs Qcodes), nie jesteś sam. Chociaż główna dokumentacja opisuje [[ExpressionScript - Prezentacja#Dostęp do zmiennych|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.




{{Note|For this example, we recommend turning off the built-in HTML editor (or converting it to the pop-up mode) when editing this survey. It can take a minute or more for the HTML editor to render the large HTML reports in edit mode.}}
{{Uwaga|W tym przykładzie zalecamy wyłączenie wbudowanego edytora HTML (lub przekonwertowanie go na tryb wyskakujący) podczas edycji tej ankiety. Wyrenderowanie dużych raportów HTML w trybie edycji może zająć edytorowi HTML minutę lub dłużej.}}




==Content==
==Treść==




*Examples of every question type
*Przykłady każdego typu pytań
*All questions types that can use "other" are included so that you can see how that affects variable naming
*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
*Default values for all the question types that accepts defaults
*Wartości domyślne dla wszystkich typów pytań, które akceptują wartości domyślne
*Tailoring - On- and off-page reports showing all 16 available EM dot notation suffixes.
*Dostosowywanie - Raporty na stronie i poza nią pokazujące wszystkie 16 dostępnych przyrostków notacji kropkowej EM.
*These reports show all of the currently entered data (so show you how you could generate your own printable reports for users in lieu of the print-answers screen)
*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)
*Proper Qcode and SGQA naming of all variables
*Prawidłowe nazewnictwo wszystkich zmiennych w kodzie Qcode i SGQA




==Screenshots==
==Zrzuty ekranu==




This is a huge survey, so we chose not to include screen shots. Instead, please download and play with it.
To ogromna ankieta, dlatego zdecydowaliśmy się nie zamieszczać zrzutów ekranu. Zamiast tego pobierz i graj z nim.




==Download==
==Pobierz==




Click on the following link to download the survey: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]
Aby pobrać ankietę, kliknij poniższy link: [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]


=Traditional validation, re-envisioned=
=Tradycyjna walidacja, przeprojektowana=




==Overview==
==Przegląd==




This demonstrates all the validation types that make use of expressions and how they affect each of the question types that support validation. In many cases, the validation tips start hidden and only appear if a question fails validation criteria (thus also disappearing once the question passes the validation criteria).  
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).  




==Validation Types Demonstrated==
==Pokazane typy walidacji==




#[[QS:Min_num_value_n|min_num_value_n]] - minimum value for an answer
#[[QS:Min_num_value_n|min_num_value_n]] - minimalna wartość odpowiedzi
#[[QS:Max_num_value_n|max_num_value_n]] - max value for an answer
#[[QS:Max_num_value_n|max_num_value_n]] - maksymalna wartość odpowiedzi
#[[QS:Min_answers|min_answers]] - minimum number of answers required
#[[QS:Min_answers|min_answers]] - minimalna wymagana liczba odpowiedzi
#[[QS:Max_answers|max_answers]] maximum number of answers allowed
#[[QS:Max_answers|max_answers]] maksymalna dozwolona liczba odpowiedzi
#[[QS:Multiflexible_min|multiflexible_min]] - minimum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_min|multiflexible_min]] - minimalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)! N!#[[QS:Multiflexible_max|multiflexible_max]] - maksymalna dozwolona wartość odpowiedzi (dla pytania typu multiflexi number)
#[[QS:Multiflexible_max|multiflexible_max]] - maximum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Min_num_value|min_num_value]] - minimalna dozwolona suma wszystkich odpowiedzi na pytanie! N!#[[QS:Max_num_value|max_num_value]] - maksymalna dozwolona suma wszystkich odpowiedzi na pytanie
#[[QS:Min_num_value|min_num_value]] - minimum allowed sum across all answers for the question
#[[QS:Equals_num_value|equals_num_value]] - suma wszystkich odpowiedzi na pytanie musi być równa tej wartości
#[[QS:Max_num_value|max_num_value]] - maximum allowed sum across all answers for the question
N !#[[QS:Preg_validation|validation]] - to jest walidacja wyrażenia regularnego dla pytania - może dotyczyć poszczególnych komórek
#[[QS:Equals_num_value|equals_num_value]] - the sum across all answers for the question must equal this value
#[[QS:Preg_validation|validation]] - this is the regular expression validation for the question - it can apply to individual cells




==Screenshots==
==Zrzuty ekranu==




Using new CSS styles, each validation type shows up a separate tip. If they are shown, they can be hidden via the hide_tip option. The default option is to show them with red font if the question fails the validation criteria, and green if it passes them:
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:




Line 219: Line 217:




A user cannot submit a page with validation errors. He will be immediately warned if he entered wrong information:
Użytkownik nie może przesłać strony z błędami sprawdzania poprawności. Jeśli podał błędne informacje, zostanie natychmiast ostrzeżony:




Line 225: Line 223:




Validation can be applied to individual cells within an array, such as in this example where regular expression validations ensure that each entry is a properly formatted US phone number including area code.
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.




Line 231: Line 229:




==Download==
==Pobierz==




To download the above example, click on the following link: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].
Aby pobrać powyższy przykład należy kliknąć na poniższy link: [[Media:LS3_Validation_tests.zip|LS3_Validation_tests.zip]].




=Validation Equations=
=Równania sprawdzające=




==Overview==
==Przegląd==




Sometimes you need custom validation that cannot be achieved using the traditional min/max criteria. For this, you will need to use the em_validation_q and em_validation_sq options which let you construct complex validation equations at the question and subquestion level, respectively.  
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.  




{{Note|At the subquestion level, we also introduce the "this" variable to make it easy to validate each cell in an array without needing to know its variable name. For more details about it, click here.}}
{{Uwaga|Na poziomie pytania podrzędnego wprowadzamy również zmienną „this”, aby ułatwić sprawdzanie poprawności każdej komórki w tablicy bez konieczności znajomości jej nazwy zmiennej. Aby uzyskać więcej informacji na ten temat, kliknij tutaj.}}




==EM Features Demonstrated==
==Zademonstrowano funkcje EM==




#[[QS:Em_validation_q|em_validation_q]] - this is an equation that determines whether the whole question is valid
#[[QS:Em_validation_q|em_validation_q]] - jest to równanie określające, czy całe pytanie jest ważne
#[[QS:Em_validation_q_tip|em_validation_q_tip]] - this is the message to show if the question fails em_validation_q criteria
#[[QS:Em_validation_q_tip|em_validation_q_tip]] - to jest komunikat wyświetlany w przypadku, gdy pytanie nie spełnia kryteriów em_validation_q! N!#[[QS:Em_validation_sq|em_validation_sq]] – jest to równanie określające, czy każde pytanie podrzędne (komórka tablicy) jest poprawne
#[[QS:Em_validation_sq|em_validation_sq]] - this is the equation that determines whether each subquestion (array cell) is valid
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] to jest komunikat wyświetlany w przypadku wystąpienia z pytań podrzędnych jest nieprawidłowe.
#[[QS:Em_validation_sq_tip|em_validation_sq_tip]] - this is the message to show if any of the subquestions is invalid.


In general, when em_validation_sq is used, if any cell is invalid, the background color for that cell turns red to indicate that there is an error.
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.




==Screenshots==
==Zrzuty ekranu==




Line 266: Line 263:




This question ensures that you enter the ages of your children in descending order by applying this validation equation:
To pytanie gwarantuje, że wiek dzieci zostanie wprowadzony w kolejności malejącej, poprzez zastosowanie poniższego równania sprawdzającego:


<syntaxhighlight lang="php">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>
<syntaxhighlight lang="php">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>
Line 277: Line 274:




In the below example, the validation ensures that no more than 3 questions are answered on any given row by applying this validation equation:
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:


<syntaxhighlight lang="php">(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(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)</syntaxhighlight>


You can also write this as follows, LimeSurvey automatically converting it at run-time to the above-listed expression.
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.


<syntaxhighlight lang="php">(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(suma(self.sq_A) <= 3) && (suma(self.sq_B) <= 3) && (suma(self.sq_C) <= 3)</syntaxhighlight>




Line 289: Line 286:




==Download==
==Pobierz==




To download the survey sample used in the above examples, click on the following link: [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].
Aby pobrać próbkę ankiety wykorzystaną w powyższych przykładach należy kliknąć na link: [[Media:ls2_test_em_sq_validation.lss|ls2_test_em_sq_validation.lss]].




=Subquestion relevance=
=Trafność podpytania=




==Overview==
==Przegląd==




This shows how array_filter and validation criteria can interact. For validations that apply to sums, only relevant (visible) values are considered.
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.




==EM Features Demonstrated==
==Zademonstrowano funkcje EM==




#[[QS:Array_filter|array_filter]]
#[[QS:Filtr_tablicy|filtr_tablicy]]
#[[QS:Array filter exclude|array_filter_exclude]]
#[[QS:Wyklucz filtr tablicy|wykluczenie_filtru_tablicy]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Min_num_value|min_num_value]]
#[[QS:Max num value|max_num_value]]
#[[QS:Max wartość num| maksymalna_wartość_]]
#[[QS:equals_num_value|equals_num_value]]
#[[QS:równa_liczba_wartość|równa_liczba_wartość]]


It also shows dynamic reporting of the numbers of questions answered in the core questions.
Pokazuje także dynamiczne raportowanie liczby pytań, na które udzielono odpowiedzi w pytaniach kluczowych.




==Screenshots==
==Zrzuty ekranu==




Changing the number of visible rows dynamically changes the sum. Marking a subquestion as being irrelevant doesn't clear its value. Rather, if it is irrelevant, its values don't contribute to any equation.
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.




Line 325: Line 322:




Note what happens when we check the "Fifth subquestion" for the first question '''"Which rows should appear below"'''. Note that the sum for the second "Enter some numbers" question is now 5. Even though subquestion 5 for that question still has the value 14 (e.g., if you un-check the fifth subquestion, you will see the value of 14 again), that value does not contribute to the sum since it is currently irrelevant. All irrelevant data is cleared (NULLed in the database) on submit, but it stays available on the page in case users want or need to change their minds about answers.
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.




Line 331: Line 328:




==Download==
==Pobierz==




To download our example, click here: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].
Aby pobrać nasz przykład, kliknij tutaj: [[Media:ls2_subquestion_relevance.lss|ls2_subquestion_relevance.lss]].




=Using Comma as Radix Separator (Decimal Point)=
=Używanie przecinka jako separatora podstawy (kropka dziesiętna)=




==Overview==
==Przegląd==




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.
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.


To change the radix separator, access the [[Text elements]] options located under the [[Survey_settings|Settings]] tab, and look for the [[Text_elements#Survey_text_elements_panel|decimal mark]] functionality.   
Aby zmienić separator podstawy, przejdź do opcji [[Elementy tekstu]] znajdujących się w zakładce [[Survey_settings|Ustawienia]] i poszukaj funkcjonalności [[Text_elements#Survey_text_elements_panel|znak dziesiętny]].   




{{Note|For more information on what a radix separator is, click [https://en.wikipedia.org/wiki/Radix_point|here].}}
{{Uwaga|Aby uzyskać więcej informacji na temat separatora podstawy, kliknij [https://en.wikipedia.org/wiki/Radix_point|tutaj].}}




==Question Types Using Radix Separator==
==Typy pytań korzystające z separatora Radix==




#[[Question type - Numerical input|Numerical input]] <nowiki>[</nowiki>N]
#[[Typ pytania – Wprowadzanie numeryczne|Wprowadzanie numeryczne]]<nowiki> [</nowiki> N]
#[[Question type - Multiple numerical input|Multiple numerical input]] <nowiki>[</nowiki>K]
#[[Typ pytania — wielokrotne wprowadzanie liczb|Wielokrotne wprowadzanie liczb]]<nowiki> [</nowiki> K]
#[[Question type - Array (Numbers)|Array (Numbers)]] <nowiki>[</nowiki>:]
#[[Typ pytania - Tablica (Liczby)|Tablica (Liczby)]]<nowiki> [</nowiki> :]
#[[Question type - Array (Texts)|Array (Texts)]] <nowiki>[</nowiki>;], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Typ pytania - Tablica (teksty)|Tablica (teksty)]]<nowiki> [</nowiki> ;], przy użyciu atrybutu [[QS:Numbers_only|numbers_only]]
#[[Question type - List (Radio)|List (radio)]] <nowiki>[</nowiki>L], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Typ pytania - Lista (Radio)|Lista (radio)]]<nowiki> [</nowiki> L], przy użyciu atrybutu [[QS:Other_numbers_only|other_numbers_only]]
#[[Question type - Short free text|Short free text]] <nowiki>[</nowiki>S], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Typ pytania - Krótki dowolny tekst|Krótki dowolny tekst]]<nowiki> [</nowiki> S], jeśli używany jest atrybut [[QS:Numbers_only|numbers_only]]
#[[Question type - Multiple short text|Multiple short text]] <nowiki>[</nowiki>Q], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Typ pytania - wielokrotny krótki tekst|Wiele krótkich tekstów]]<nowiki> [</nowiki> Q], jeśli używasz atrybutu [[QS:Numbers_only|numbers_only]]
#[[Question type - Multiple choice|Multiple choice]] <nowiki>[</nowiki>M], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Typ pytania - wielokrotny wybór|wielokrotny wybór]]<nowiki> [</nowiki> M], przy użyciu atrybutu [[QS:Other_numbers_only|other_numbers_only]]
#[[Question type - Multiple choice with comments|Multiple choice with comments]] <nowiki>[</nowiki>P], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Typ pytania - wielokrotny wybór z komentarzami|wielokrotny wybór z komentarzami]]<nowiki> [</nowiki> P], jeśli używany jest atrybut [[QS:Other_numbers_only|other_numbers_only]]




==Screenshots==
==Zrzuty ekranu==




You may note in the below screenshots that comma can be used as a radix separator.
Na poniższych zrzutach ekranu możesz zauważyć, że przecinek może być używany jako separator podstawy.




Line 376: Line 373:




==Download==
==Pobierz==




To download the above example, click on the following link: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].
Aby pobrać powyższy przykład, kliknij poniższy link: [[Media:ls2_comma_as_radix_separator.lss|ls2_comma_as_radix_separator.lss]].




=Randomization Groups=
=Grupy losowe=




==Overview==
==Przegląd==




This survey demonstrates how to make use of the '''random_group''' attribute.
Ta ankieta pokazuje, jak wykorzystać atrybut „random_group”.


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.
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.




==Screenshots==
==Zrzuty ekranu==




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.
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.




Line 403: Line 400:




Here is the randomization generated the first time I tested this survey.
Oto losowość wygenerowana podczas pierwszego testowania tej ankiety.




Line 409: Line 406:




A different randomization was generated the second time I tested the survey.
Kiedy po raz drugi testowałem ankietę, wygenerowano inną randomizację.




Line 415: Line 412:




But, when I switched to French (without re-starting the survey), the randomization order remained intact.
Kiedy jednak przeszedłem na język francuski (bez ponownego rozpoczynania ankiety), kolejność randomizacji pozostała niezmieniona.




Line 421: Line 418:




==Download==
==Pobierz==




To download the above example, click on the following link: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]
Aby pobrać powyższy przykład, kliknij poniższy link: [[Media:Randomization_Group_Test.lss|Randomization_Group_Test.lss]]




=Randomly Ask One Question Per Group=
=Losowo zadaj jedno pytanie na grupę=




==Overview==
==Przegląd==




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").
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”).


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.
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ę.




==Features Demonstrated==
==Zademonstrowane funkcje==




#[[Question type - Equation|Equation question type]]
#[[Typ pytania - Równanie|Typ pytania z równania]]
#Randomization functions
#Funkcje losowe
#Conditional (if) function
#Funkcja warunkowa (jeśli)




==Screenshots==
==Zrzuty ekranu==




This is Group0, which uses the [[Question type - Equation|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.
To jest Grupa 0, która używa [[Typ pytania - Równanie|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.




Line 455: Line 452:




This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.
Ta grupa pokazuje, jak zmienna (ask4) z Grupy 0 służy do kontrolowania, które pytanie jest widoczne w czwartej grupie.




Line 461: Line 458:




==Download==
==Pobierz==




To download the above survey example, click here: [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]].
Aby pobrać powyższy przykład ankiety, kliknij tutaj: [[Media:limesurvey_survey_55164.lss|Losowe pytania w przykładzie ankiety grupowej]].




=Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)=
=Zadaj losowo określoną liczbę pytań w grupie (podzbiór pytań)=




{{Alert|This applies only to all random questions from one group and only if the [[General_settings#General_settings_panel|Group by group or All in one]] format is used.}}
{{Alert|Dotyczy to tylko wszystkich losowych pytań z jednej grupy i tylko wtedy, gdy używany jest format [[General_settings#General_settings_panel|Grupa po grupie lub Wszystko w jednym]].}}




==Overview==
==Przegląd==




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.  
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.  


The survey has one group containing 10 questions. All questions are assigned the same [[QS:Random_group|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 "[[ExpressionScript - Presentation#Access to Variables|relevanceStatus]]" of all other questions in the group is less than the number of questions you want to show. Since [[ExpressionScript - Presentation#Access to Variables|relevanceStatus]] is assigned as questions are rendered, this effectively totals the number of preceding questions.
Ankieta składa się z jednej grupy zawierającej 10 pytań. Do wszystkich pytań przypisana jest ta sama [[QS:Random_group|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 „[[ExpressionScript - Prezentacja#Access to Variables|relevanceStatus]]” wszystkich pozostałych pytań w grupie jest mniejsza niż liczba pytań, które chcesz wyświetlić. Ponieważ [[ExpressionScript - Prezentacja#Access to Variables|relevanceStatus]] jest przypisywany podczas renderowania pytań, w praktyce oznacza to sumę liczby poprzedzających pytań.


So, in our 5 out of 10 example, the equation for Q1 would be:
Zatem w naszym przykładzie 5 z 10 równanie Q1 wyglądałoby następująco:


<syntaxhighlight lang="php">sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">suma(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


For Q2, it would be:
W drugim kwartale wyglądałoby to tak:


<syntaxhighlight lang="php">sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">suma(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


And so on...
I tak dalej...




==Features Demonstrated==
==Zademonstrowane funkcje==




#[[ExpressionScript - Presentation#Access to variables|relevanceStatus variable]]
#[[ExpressionScript - Prezentacja#Dostęp do zmiennych|zmienna trafnościStatus]]
#[[QS:Random group|Randomizing]]
#[[QS:Grupa losowa|Losowa]]


==Download==
==Pobierz==




To download the above example, click on the following link: [[Media:Random_5_out_of_10.lss|Random 5 out of 10 survey example]].
Aby pobrać powyższy przykład, kliknij poniższy link: [[Media:Random_5_out_of_10.lss|Przykład losowej ankiety 5 z 10]].


=Rating User-Entered List of Products=
=Ocena wprowadzona przez użytkownika Lista produktów=




==Overview==
==Przegląd==




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.
Poniższy przykład pokazuje, jak możesz poprosić użytkowników o wystawienie zestawu produktów, które ich interesują, a następnie poprosić ich o ocenę tych produktów.




==ES Features Demonstrated==
==Zademonstrowano funkcje ES==




#'''Tailoring answers''' - when rating products, the labels come from the comment field of the preceding multiple choice question
#'''Dostosowywanie odpowiedzi''' - podczas oceniania produktów etykiety pochodzą z pola komentarza poprzedzającego pytania wielokrotnego wyboru
#'''Tailoring scales''' - many advanced questions options, like scale headings, can also be tailored.
#'''Dopasowywanie skal''' - wiele zaawansowanych opcji pytań, takich jak nagłówki skali, może być również dostosowane.




==Screenshots==
==Zrzuty ekranu==




This image shows that since only products 1,3, and 5 were selected, only those 3 are displayed (using the [[QS:Array_filter|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.
Ten obraz pokazuje, że ponieważ wybrano tylko produkty 1,3 i 5, wyświetlane są tylko te 3 (przy użyciu atrybutu [[QS:Array_filter|array_filter]]). Ponadto etykietami wierszy w drugim pytaniu są albo numery produktów (jeśli nic nie zostało wpisane w polu komentarza), albo zawartość pól komentarza.




Line 527: Line 524:




This image shows how the tailored answers are specified:
Ten obraz pokazuje, jak określone są dostosowane odpowiedzi:




Line 533: Line 530:




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):
Oto plik logiczny Show Logic dla tego pytania, który pozwala nam sprawdzić, czy logika warunkowa działa zgodnie z oczekiwaniami (np. aby sprawdzić, czy są jakieś błędy składniowe):




Line 539: Line 536:




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:
Następny obraz przedstawia grupę, w której określasz 5-punktową skalę ocen (Opcje 1-5), tytuł skali i produkty, które chcesz ocenić. Ostatnie pytanie pokazuje, że każdą część pytania tablicowego można dostosować:




Line 545: Line 542:




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.
Następny obraz przedstawia widok pliku logicznego ostatniego pytania. Jak widać, pytania podrzędne, odpowiedzi i nagłówki skali można dostosować.




<center>[[File:mcc_filter5.jpg]]</center>
<center>[[File:mcc_filter5.jpg]]</center>


==Download==
==Pobierz==




To download the survey example from above, click on the following link: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Rating user-entered list of products survey example]].
Aby pobrać przykładową ankietę z powyższego, kliknij poniższy link: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Przykładowa ankieta z oceną produktów wprowadzoną przez użytkownika]].

Latest revision as of 15:53, 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”).

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.


Template:Uwaga


Typy pytań korzystające z separatora Radix

  1. Wprowadzanie numeryczne [ N]
  2. Wielokrotne wprowadzanie liczb [ K]
  3. Tablica (Liczby) [ :]
  4. Tablica (teksty) [ ;], przy użyciu atrybutu numbers_only
  5. Lista (radio) [ L], przy użyciu atrybutu other_numbers_only
  6. Krótki dowolny tekst [ S], jeśli używany jest atrybut numbers_only
  7. Wiele krótkich tekstów [ Q], jeśli używasz atrybutu numbers_only
  8. wielokrotny wybór [ M], przy użyciu atrybutu other_numbers_only
  9. 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

  1. Typ pytania z równania
  2. Funkcje losowe
  3. 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ń)

  Dotyczy to tylko wszystkich losowych pytań z jednej grupy i tylko wtedy, gdy używany jest format Grupa po grupie lub Wszystko w jednym.



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:

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

I tak dalej...


Zademonstrowane funkcje

  1. zmienna trafnościStatus
  2. Losowa

Pobierz

Aby pobrać powyższy przykład, kliknij poniższy link: Przykład losowej ankiety 5 z 10.

Ocena wprowadzona przez użytkownika Lista produktów

Przegląd

Poniższy przykład pokazuje, jak możesz poprosić użytkowników o wystawienie zestawu produktów, które ich interesują, a następnie poprosić ich o ocenę tych produktów.


Zademonstrowano funkcje ES

  1. Dostosowywanie odpowiedzi - podczas oceniania produktów etykiety pochodzą z pola komentarza poprzedzającego pytania wielokrotnego wyboru
  2. Dopasowywanie skal - wiele zaawansowanych opcji pytań, takich jak nagłówki skali, może być również dostosowane.


Zrzuty ekranu

Ten obraz pokazuje, że ponieważ wybrano tylko produkty 1,3 i 5, wyświetlane są tylko te 3 (przy użyciu atrybutu array_filter). Ponadto etykietami wierszy w drugim pytaniu są albo numery produktów (jeśli nic nie zostało wpisane w polu komentarza), albo zawartość pól komentarza.



Ten obraz pokazuje, jak określone są dostosowane odpowiedzi:



Oto plik logiczny Show Logic dla tego pytania, który pozwala nam sprawdzić, czy logika warunkowa działa zgodnie z oczekiwaniami (np. aby sprawdzić, czy są jakieś błędy składniowe):



Następny obraz przedstawia grupę, w której określasz 5-punktową skalę ocen (Opcje 1-5), tytuł skali i produkty, które chcesz ocenić. Ostatnie pytanie pokazuje, że każdą część pytania tablicowego można dostosować:



Następny obraz przedstawia widok pliku logicznego ostatniego pytania. Jak widać, pytania podrzędne, odpowiedzi i nagłówki skali można dostosować.


Pobierz

Aby pobrać przykładową ankietę z powyższego, kliknij poniższy link: Przykładowa ankieta z oceną produktów wprowadzoną przez użytkownika.