x

Hlavní kapitoly

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Rychlý průvodce - LimeSurvey 3.0+
  3. Instalace - LimeSurvey CE
  4. Jak vytvořit dobrý průzkum (návod)
  5. Začínáme
  6. Správa LimeSurvey
  7. Průzkumy - úvod
  8. Nastavení průzkumu
  9. Menu průzkumu
  10. Struktura průzkumu
  11. Otázky - úvod
  12. Skupiny otázek - úvod
  13. Průzkumy - správa
  14. Možnosti panelu nástrojů průzkumu
  15. Vícejazyčný průzkum
  16. ExpressionScript Engine - Rychlý průvodce
  17. Nezařazené a pokročilé funkce
  18. Obecné FAQ
  19. Řešení potíží
  20. Řešení a obejití problémů
  21. Licence
  22. Záznam změn verzí
  23. Zásuvné moduly
 Actions

Návody k ExpressionScript

From LimeSurvey Manual

Tato stránka mohla být přeložena strojově a může obsahovat chyby. Zobrazit anglický originál · Vylepšit tento překlad
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Přehled dosud vysvětleného

Pokud jste dosud sledovali strukturu příručky k LimeSurvey, již znáte terminologii LimeSurvey. Poté jsme se věnovali výrazům a proměnným, abyste se naučili, jak svá šetření vylepšit. V další části jsme přešli k typům a významům zvýraznění syntaxe, abyste se naučili opravovat syntaktické chyby.

Po osvojení těchto základních pojmů můžeme přejít k příkladům a vysvětlení, jak výrazy v LimeSurvey fungují.


Zvýraznění syntaxe

Následující snímky obrazovky uvádějí příklady, ale nezobrazují hodnoty popisků (tooltipů). Tooltip je informativní okénko, které se zobrazí, když najedete myší na libovolné tučné barevné slovo.

Díky zvýraznění syntaxe je velmi snadné vytvářet správné výrazy, i ty složité. Přestože tým LimeSurvey plánuje vytvořit grafické rozhraní pro tvorbu výrazů, můžete již nyní využít stávající zvýraznění syntaxe k rychlému nalezení a opravě překlepů. Pomocí tooltipů můžete také ověřit správnost svých výrazů (např. potvrdit, že jste vybrali požadované proměnné).

V každém z příkladů jsou tři sloupce:

  1. Source (Zdroj) - jde o nezpracovaný text, který byste zadali do pole otázky v LimeSurvey
  2. Pretty Print (Formátovaný výpis) - jde o ekvivalent zadaného textu se zvýrazněnou syntaxí
    • Všimněte si, že výrazy jsou zobrazeny na světle hnědém pozadí, ale při tomto zvýraznění nejsou obklopeny složenými závorkami.
    • Protože EM podporuje rekurzivní substituci, zobrazení složených závorek ve zvýraznění by způsobilo syntaktické chyby.
  3. Result (Výsledek) - jde o výstup vygenerovaný, když EM zpracuje zdroj
    • Dosadí se vše, co lze správně dosadit
    • Výrazy s chybami jsou zobrazeny přímo v textu se zvýrazněnou syntaxí. Chyby jsou obklopeny červeně orámovaným polem.


Správná syntaxe

Níže najdete příklady správné syntaxe:

  1. Values (Hodnoty): ukazuje, že známé proměnné jsou barevně odlišeny podle toho, zda jsou nastaveny na aktuální stránce.
  2. Question Attributes (Atributy otázky): ukazuje, že pomocí tečkové notace lze přistupovat k některým vlastnostem otázek
  3. Math (Matematika): ukazuje, že jsou podporovány základní i složité výpočty
  4. TextProcessing (Zpracování textu): ukazuje některé z dostupných funkcí pro zpracování textu
  5. Dates (Data): ukazuje dvě z dostupných funkcí pro práci s daty
  6. Conditional (Podmínka): ukazuje použití funkce if(). Volby lze vnořovat.
  7. Tailored paragraph (Přizpůsobený odstavec): zprávu můžete zcela přizpůsobit na základě předchozích hodnot
  8. EM processes within strings (EM zpracovává uvnitř řetězců): ukazuje, že lze provádět substituce uvnitř řetězců. Tento příklad generuje přizpůsobený název obrázku.
  9. EM doesn't process curly braces like these (EM nezpracovává složené závorky, jako jsou tyto): ukazuje, že pokud jsou složené závorky escapovány nebo je mezi výrazem a složenými závorkami mezera, ES výraz ignoruje.


Syntaxe EM obsahující chyby

Zde jsou příklady běžných chyb při psaní výrazů ES. Všimněte si, že tooltipy poskytují další informace.

  1. Vložený JavaScript, u kterého se zapomnělo přidat mezery za složenou závorku
    • Protože „document.write“ následuje bezprostředně za složenou závorkou, EM si myslí, že jde o výraz, a červeně orámuje „document“ a „write“, protože jde o nedefinovanou proměnnou, respektive funkci
  2. Neznámé nebo chybně napsané proměnné, funkce a operátory
    • Zde jsme zapomněli, že používáme název proměnné „gender“ místo „sex“, ale EM tuto chybu zachytí. Červeně orámuje také '++', protože to není podporovaný operátor.
  3. Varuje, pokud použijete = místo eq nebo provádíte přiřazení hodnot
    • Všimněte si, že '=' a '+=' jsou červeným textem místo černého. Když na ně najedete myší, zobrazí se varování, že přiřazujete hodnotu.
  4. Nesprávný počet argumentů funkcí
    • if() přijímá 3 argumenty, ale byly zadány 4, takže po najetí myší na červeně orámované „if“ se zobrazí vysvětlení chyby a podporovaná syntaxe
    • sum() přijímá neomezený počet argumentů, ale před uzavírací závorkou je nadbytečná čárka, proto je orámována červeně
  5. Nespárované závorky
    • Toto je jedna z nejčastějších chyb při psaní výrazů.
    • Zde jsou dva příklady chybějících uzavíracích závorek a jeden příklad jedné nadbytečné uzavírací závorky.
  6. Nepodporovaná syntaxe
    • Pokud použijete operátor nebo interpunkci, kterou ES nepodporuje, bude orámována červeně.
  7. Neplatná přiřazení
    • Některé proměnné jsou typu readWrite a jejich hodnoty lze měnit. Jiné jsou pouze pro čtení.
    • Pokud se pokusíte změnit hodnotu proměnné pouze pro čtení, nepodaří se to. EM tento pokus orámuje červeně.
    • Pokud se pokusíte přiřadit hodnotu rovnici nebo řetězci, také se zobrazí chyba.



"Živé" ukázky zvýraznění syntaxe s aktivními popisky

SourcePretty PrintResult
Here is an example of OK syntax with tooltips
Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
Here is an example of OK syntax with tooltips
Hello if(gender == 'M','Mr.','Mrs.') surname, it is now date('g:i a',time()). Do you know where your sum(numPets,numKids) children and pets are?
Here is an example of OK syntax with tooltips
Hello Mr. Smith, it is now 6:07 am. Do you know where your 3 children and pets are?
Here are common errors so you can see the tooltips
Variables used before they are declared: {notSetYet}
Unknown Function: {iff(numPets>numKids,1,2)}
Unknown Variable: {sum(age,num_pets,numKids)}
Wrong # parameters: {sprintf()},{if(1,2)},{date()}
Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Zde jsou časté chyby, na kterých si můžete prohlédnout popisky
Proměnné použité dříve, než jsou deklarovány: notSetYet
Neznámá funkce: iff(numPets > numKids,1,2)
Neznámá proměnná: sum(age,num_pets,numKids)
Chybný počet parametrů: sprintf(),if(1,2),date()
Přiřazení do proměnných jen pro čtení:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Nevyvážené závorky: pow(3,4,(pow(3,4),pow(3,4))
Zde jsou časté chyby, na kterých si můžete prohlédnout popisky
Proměnné použité dříve, než jsou deklarovány: notSetYet
Neznámá funkce: iff(numPets > numKids,1,2)
Neznámá proměnná: sum(age,num_pets,numKids)
Chybný počet parametrů: sprintf(),if(1,2),date()
Přiřazení do proměnných jen pro čtení:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Nevyvážené závorky: pow(3,4,(pow(3,4),pow(3,4))
Here is some of the unsupported syntax
No support for '++', '--', '%',';': {min(++age, --age,age % 2);}
Nor '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Nor arrays: {name[2], name['mine']}
Here is some of the unsupported syntax
No support for '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Nor '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Nor arrays: name [ 2 ] ,name [ 'mine' ]
Here is some of the unsupported syntax
No support for '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Nor '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Nor arrays: name [ 2 ] ,name [ 'mine' ]


Příklady přizpůsobení

"Vážený {Mr}/{Mrs} Smith..."

Pomocí funkce if() podmíněně zvolte, zda se má zobrazit „Mr.“ nebo „Mrs.“.

Syntaxe je if(test,do_if_true,do_if_false).

# Kód Otázka Typ
1 gender Jaké je Vaše pohlaví? Pohlaví
2 example1 Vážený(á) {if(gender=='M','Mr.','Mrs.')} Smith, ... Dlouhý text



Jak je vidět níže, „Mr“ a „Mrs“ se přizpůsobují odpovědi, kterou respondent zvolí v otázce „gender“.



"Vážený {Mr}/{Mrs} Smith..." v e-mailové pozvánce

Výše uvedený příklad můžete použít v e-mailové pozvánce pomocí atributů z tabulky tokenů. Pomocí funkce if() zvolte, zda se má v e-mailu použít „Mr.“ nebo „Mrs.“.


Syntaxe je „if(test,do_if_true,do_if_false)“.

# Atribut Hodnota
1 Příjmení Smith
2 E-mailová adresa test@test.com
3 ATTRIBUTE_2 M


Text v e-mailové pozvánce:

Vážený(á) {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

byli jste pozváni k účasti v průzkumu:

https:/...



Zobrazení e-mailu:


Příklady výpočtů / hodnocení

Výpočet hodnot hodnocení za běhu a uložení výsledků do dat průzkumu

Tento příklad využívá všechny funkce EM, včetně relevance, přizpůsobení a typu otázky Rovnice.

Ukazuje také, že všechny tyto funkce podporují JavaScript, takže pokud je na stránce použijete, bude se stránka dynamicky měnit podle toho, jak lidé zadávají a mění své odpovědi.

# Kód Otázka Typ Relevance
1 numKids Kolik máte dětí? Číselný vstup 1
2 kid1 Kolik let je Vašemu prvnímu dítěti? Číselný vstup numKids >= 1
3 kid2 Kolik let je Vašemu druhému dítěti? Číselný vstup numKids >= 2
4 kid3 Kolik let je Vašemu třetímu dítěti? Číselný vstup numKids >= 3
5 kid4 Kolik let je Vašemu čtvrtému dítěti? Číselný vstup numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Rovnice 1
7 kidSummary Uvedli jste, že máte {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Zobrazení textu 1


Chcete-li si tento příklad stáhnout, klikněte na následující odkaz: Assessments_survey_example.


Níže najdete snímky obrazovky ukázkových otázek. Jak vidíte, EM zvýrazňuje syntaxi všech polí, která mohou obsahovat přizpůsobení. Zde vidíte příklady zvýraznění syntaxe u relevance, u typu otázky Rovnice a u substitucí uvnitř otázky. Substituce můžete používat také v nápovědě, v zobrazení záhlaví skupiny, v uvítací zprávě a v zakončovacím sdělení.

V dalším příkladu je relevance {numKids >= 2), takže otázka bude viditelná pouze tehdy, pokud respondent uvede, že má alespoň dvě děti.



Níže můžete vidět, že ke každé proměnné je připojen suffix .NAOK. Souvisí to s tím, jak EM podporuje kaskádovou relevanci. Bez .NAOK by se součet vypočítal pouze v případě, že by dotazovaný uvedl, že má 4 děti (tj. pokud jsou všechny proměnné relevantní). Použití .NAOK znamená, že chceme součet vypočítat, i když jsou všechny nebo některé proměnné nerelevantní (tj. „Not Applicable“ (NA), neboli nepoužitelné, je v pořádku (OK)).

Atribut .NAOK však ovlivňuje pouze to, zda jsou proměnné předány do EM. Pokud respondent nejprve uvede, že má 3 děti, zadá věk každého z nich, pak si to rozmyslí a uvede, že má 2 děti, nechceme zobrazit součet všech 3 zadaných hodnot, protože třetí dítě už v našem případě není „použitelné“:



Každý samostatný výraz je barevně označen béžovým pozadím. Jak vidíte, jsou zde tři samostatné výrazy. Poslední z nich obsahuje zprávu, která se podmíněně zobrazí pouze v případě, že má dotazovaný více než jedno dítě.



Nyní se podívejme na snímky obrazovky průzkumu v praxi.

Když stránku poprvé navštívíte, uvidíte tento obraz. Všimněte si, že se zobrazuje „You have 0 children“ místo „You have 0 child“.



Pokud změním hodnotu počtu dětí na 1, zobrazení se okamžitě změní na toto, přestože jsme stále na stejné stránce:



Nyní si všimněte, že gramatika je správná: „You have 1 child“.

Nyní změním hodnotu počtu dětí na 3 a zobrazení se okamžitě změní na toto.

Všimněte si, že dole nyní vidíte podmíněnou zprávu: „The sum of ages of your first 3 kids is 0.“.



Nyní zadám věk svých smyšlených dětí a zobrazí se součet jejich věku:



Skóre i zobrazení se opět aktualizují okamžitě při zadávání hodnot, takže to můžete využít k zobrazení průběžného součtu skóre hodnocení.


Nyní změním hodnotu počtu dětí na 2. Zobrazení se změnilo na toto:



Všimněte si, že přestože jsem u třetího dítěte zadal hodnotu 5,5, přehled nyní sčítá pouze hodnoty prvních 2 dětí.

Důvodem je, že třetí hodnota je nyní nerelevantní a nerelevantní hodnoty EM aktivně ignoruje.

Pokud bych počet dětí změnil zpět na 3, opět bych viděl zadanou hodnotu 5,5. Neztratím tedy žádné informace, které na stránce zadám.

Pokud však přejdu na stránku Další stránka nebo Předchozí stránka, všechny nerelevantní hodnoty budou v sezení i v databázi nastaveny na NULL. Pokud bych tedy ponechal hodnotu 2, přešel na další stránku, pak se vrátil a uvedl, že mám ve skutečnosti 3 děti, věk 5,5 bych již neviděl.


Zadávejte data a sledujte dynamicky se měnící přehled zadaných údajů na stejné stránce

Tento příklad představuje proces přizpůsobení (tailoring) v LimeSurvey.

Chcete-li si tento příklad stáhnout, klikněte na následující odkaz: Příklad průzkumu s dynamickými změnami.

Takto stránka vypadá na začátku. Vidíte pouze otázku, ve kterém městě žijete:



Jakmile začnete zadávat odpověď, spustí se také proces přizpůsobení:


Jak zadáváte odpovědi, tabulka v dolní části stránky se aktualizuje a zobrazuje kódy odpovědí a hodnoty vašich odpovědí.


Běžné příklady ladění

Vnořené příkazy if() (podmíněná logika)

EM podporuje funkci "if(test,do_if_true,do_if_false)", pomocí které můžete provádět podmíněnou logiku nebo přizpůsobení. Tuto funkci lze vnořovat, čímž získáte ekvivalent konstrukce "if { } else if { } else { }". EM vás upozorní, pokud závorky nejsou vyvážené (např. chybí uzavírací pravá závorka) nebo pokud máte nějaké závorky navíc. Při vytváření dlouhých vnořených příkazů if se snažte závorky počítat, výraz uložte, zkontrolujte syntaktické chyby a případné chyby opravte. Projděme si společně následující příklad.

Skupinu otázek použitou níže si můžete stáhnout zde: Příklad průzkumu s přizpůsobením.lsg


Nejprve, když není zadáno nic, uvidíte pouze „Ahoj.“



Pokud zadáte jméno, zobrazí se „Ahoj {name}.“



Pokud zadáte věk, zobrazí se přizpůsobená zpráva v závislosti na tom, zda jste dítě předškolního věku, nebo ne:



Školní věk, teenager nebo dospělý. Zde je teenager, který chce zůstat anonymní:



Zde je logický soubor skupiny. Jak vidíte u otázky „if-based“, obsahuje vnořené příkazy if založené na věku dané osoby.



Když tuto otázku poprvé upravujete, je pravděpodobné, že v určitém okamžiku budete mít nesprávný počet závorek. Zde je vidět, co se stane, pokud jich máte příliš málo:



Pokud najedete myší na slovo „if“, které je orámováno červeným rámečkem, zobrazí se „Parentheses not balanced“ (Závorky nejsou vyvážené). V tomto případě by za textem „already an adult!“ měly být čtyři uzavírací závorky, ale jsou pouze tři.

Pokud naopak máte pravou závorku navíc, bude orámována červeným rámečkem, například takto:



Když otázku skutečně upravujete, vypadá takto: