Actions

ExpressionScript Engine - Quick start guide/sl: Difference between revisions

From LimeSurvey Manual

(Created page with "Da bi bolje razumeli koncept ustreznosti, se osredotočimo na naslednjo raziskavo, ki izračuna indeks telesne mase (ITM) anketirancev. Če ga želite prenesti, kliknite na na...")
(Created page with "Če želite izvedeti več o ExpressionScript in o tem, kako lahko uporabite različne izraze za izboljšanje vaše ankete, kliknite naslednjo [https://manual.limesurvey.org/Ex...")
 
(30 intermediate revisions by the same user not shown)
Line 36: Line 36:
Da bi bolje razumeli koncept ustreznosti, se osredotočimo na naslednjo raziskavo, ki izračuna indeks telesne mase (ITM) anketirancev. Če ga želite prenesti, kliknite na naslednjo povezavo: [[Media:LS3_em_tailoring.zip|Primer raziskave indeksa telesne mase]].
Da bi bolje razumeli koncept ustreznosti, se osredotočimo na naslednjo raziskavo, ki izračuna indeks telesne mase (ITM) anketirancev. Če ga želite prenesti, kliknite na naslednjo povezavo: [[Media:LS3_em_tailoring.zip|Primer raziskave indeksa telesne mase]].


The relevance equation is shown below in the '''Relevance''' column after the variable name. The relevance values of weight, weight_units, height, and height_units are all 1 (default value), meaning that those questions are always displayed. However, the relevance for BMI is {!is_empty(height) and !is_empty(weight)}, which means that BMI will only be computed if the subject enters a value for both height and weight (thereby avoiding the risk of getting a zero error). Also, question "Report" is only shown if the respondent answers all four main questions (height, heightunits, weight, weightunits).
Enačba ustreznosti je prikazana spodaj v stolpcu '''Relevantnost''' za imenom spremenljivke. Vrednosti ustreznosti teže, teže_enot, višine in višine so vse 1 (privzeta vrednost), kar pomeni, da so ta vprašanja vedno prikazana. Vendar pa je relevantnost za ITM {!is_empty(height) in !is_empty(weight)}, kar pomeni, da bo ITM izračunan samo, če subjekt vnese vrednost tako za višino kot za težo (s čimer se izognemo tveganju, da bi dobili napako nič). Tudi vprašanje "Poročilo" je prikazano le, če anketiranec odgovori na vsa štiri glavna vprašanja (višina, enote višine, teža, enote teže).




Line 42: Line 42:




<div class="simplebox"> [[File:help.png]] '''Note:''' The above image comes from the [[Show logic file|survey logic file]] which allows you to look for syntax errors before activating the survey.</div>
<div class="simplebox">[[Datoteka:help.png]] '''Opomba:''' Zgornja slika izvira iz [[Prikaži logično datoteko|logične datoteke ankete]], ki vam omogoča, da poiščete sintaksne napake, preden aktivirate anketo.</div>




Relevance is shown and editable when:
Ustreznost je prikazana in jo je mogoče urejati, ko:
*you wish to view/edit question-level relevance
*želite videti/urediti ustreznost na ravni vprašanja
*you wish to view/edit group-level relevance
*želite si ogledati/urediti ustreznost na ravni skupine




===Viewing / Editing Question-Level Relevance===
===Ogled/urejanje Ustreznost na ravni vprašanja===




This equation computes the Body Mass Index (BMI). It is only asked if the person enters their height and weight.
Ta enačba izračuna indeks telesne mase (ITM). Vpraša se le, ali oseba vnese svojo višino in težo.




Line 59: Line 59:




This is the edit screen for the "BMI" question.
To je zaslon za urejanje vprašanja "BMI".




Line 65: Line 65:




Note that you do not use the curly braces when you enter a relevance equation.
Upoštevajte, da ne uporabite zavitih oklepajev, ko vnesete enačbo ustreznosti.




===Viewing / Editing Group-Level Relevance===
===Ogled/urejanje ustreznosti na ravni skupine===




Let's focus now on another example - a simple census survey. To download it, click on the following link: [[Media:LS3_group_relevance.zip|Census survey example]].  
Osredotočimo se zdaj na drug primer – preprosto popisno raziskavo. Če ga želite prenesti, kliknite naslednjo povezavo: [[Media:LS3_group_relevance.zip|Primer popisne raziskave]].  


The first page asks how many people live with you and stores that in the "cohabs" variable. This page is only shown if you have more than one cohabitant (it is shown for the second person cohabitating with you). Also, p2name, p2age. p2sum are displayed only if the question before each of them contains a response.
Prva stran vpraša, koliko ljudi živi z vami, in to shrani v spremenljivko "cohabs". Ta stran je prikazana samo, če imate več kot enega sostanovalca (prikazana je za drugo osebo, ki živi z vami). Tudi p2name, p2age. p2sum se prikažejo le, če vprašanje pred vsakim od njih vsebuje odgovor.




Line 79: Line 79:




So, the group also has question-level relevance criteria, such that some questions only appear if you answered certain questions before them (e.g., p2age is displayed if p2name was answered). ES combines the Group and Question-level relevance for you. '''Questions in a group are only asked if the group as a whole is relevant. Then, only the subset of questions within the group that are relevant are asked.'''
Torej ima skupina tudi merila ustreznosti na ravni vprašanja, tako da se nekatera vprašanja prikažejo samo, če ste odgovorili na določena vprašanja pred njimi (npr. p2age je prikazana, če je bil odgovor p2name). ES za vas združuje ustreznost na ravni skupine in vprašanja. '''Vprašanja v skupini se postavljajo samo, če je relevantna skupina kot celota. Nato se zastavi samo podmnožica vprašanj znotraj skupine, ki so pomembna.'''


Here is the screenshot for editing the group-level relevance of ''Cohabitant 2'':
Tukaj je posnetek zaslona za urejanje ustreznosti ''Sostanovalca 2'' na ravni skupine:




Line 87: Line 87:




Note that you do not use the curly braces when you enter a relevance equation.
Upoštevajte, da ne uporabite zavitih oklepajev, ko vnesete enačbo ustreznosti.


==Tailoring/Piping==
==Krojenje/Piping==




ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased <nowiki>[</nowiki>Product]. What did you like best about it?". Sometimes you need conditional substitution like "<nowiki>[</nowiki>Mr./Mrs.] <nowiki>[</nowiki>LastName], would you be willing to complete our survey?". In this case, you want to use "Mr. or Mrs." based on the person's gender. Other times you need even more complex substitution (such as based upon a mathematical computation). ES supports each of these types of tailoring/piping.
ES vam omogoča preprosto in zapleteno pogojno krojenje. Včasih potrebujete preprosto zamenjavo, na primer: "Rekel si, da si kupil<nowiki> [</nowiki> Izdelek]. Kaj vam je bilo pri tem najbolj všeč?". Včasih potrebujete pogojno zamenjavo, kot je "<nowiki> [</nowiki> Gospod Gospa.]<nowiki> [</nowiki> LastName], bi bili pripravljeni izpolniti našo anketo?". V tem primeru želite uporabiti "Mr. ali gospa." na podlagi spola osebe. Včasih potrebujete še bolj zapleteno zamenjavo (na primer na podlagi matematičnega izračuna). ES podpira vsako od teh vrst krojenja/cevovoda.




===Conditional Equations===
===Pogojne enačbe===




The Body Mass Index example shows the ability to compute a person's BMI, even while letting them enter their height and weight in two different units (cms vs inches and kgs vs lbs):
Primer indeksa telesne mase prikazuje zmožnost izračuna ITM osebe, čeprav ji dovolite, da svojo višino in težo vnese v dveh različnih enotah (cm proti palcem in kg proti funtom):




Line 104: Line 104:




In this case, weightkg is {if(weightunits == "kg", weight, weight * 0.453592)}. This "if()" function means that if the subject enters the weight using kilograms, use that value, otherwise multiply the entered value (pounds is the alternative) by 0.453592 to convert it to kilograms. The heightm variable uses a similar approach to compute the person's height in meters (height in cms/100), even if he has entered his height in inches (1 meter=3.28084 inches).
V tem primeru je teža kg {if(weightunits == "kg", teža, teža * 0,453592)}. Ta funkcija "if()" pomeni, da če subjekt vnese težo v kilogramih, uporabite to vrednost, sicer pomnožite vneseno vrednost (funti so alternativa) z 0,453592, da jo pretvorite v kilograme. Spremenljivka heightm uporablja podoben pristop za izračun višine osebe v metrih (višina v cm/100), tudi če je vnesla svojo višino v palcih (1 meter=3,28084 palca).


BMI is computed as: {weightkg / (heightm * heightm)}.
ITM se izračuna kot: {teža kg / (višina m * višina m)}.


Lastly, the report conditionally tailors the message for the subject, telling her what he entered. (e.g., "You said you are 2 meters tall and weight 70 kg.")
Nazadnje poročilo pogojno prilagodi sporočilo subjektu in ji pove, kaj je vnesel. (npr. "Rekli ste, da ste visoki 2 metra in težki 70 kg.")


In the below image, weightstatus uses nested "if()" statements to categorize the person as underweight to severely obese. You can see its equation by checking its logic:
Na spodnji sliki weightstatus uporablja ugnezdene izjave »if()« za kategorizacijo osebe med prenizko telesno težo in močno debelostjo. Njeno enačbo si lahko ogledate tako, da preverite njeno logiko:




Line 116: Line 116:




From the edit window for this question, you can see two things:
V oknu za urejanje tega vprašanja lahko vidite dve stvari:
#Tailoring must surround expressions with curly braces
#Tailoring mora obdati izraze z zavitimi oklepaji
#Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.
#Izrazi lahko zajemajo več vrstic, če želite, kot v tem primeru, olajšati branje ugnezdena pogojna logika.




Line 124: Line 124:




===Tailored Questions, Answers, and Reports===
===Prilagojena vprašanja, odgovori in poročila===




<div class="simplebox">[[File:help.png]] '''Note:''' Dynamic tailoring may not work if answer options are made available in select boxes on the same question page. This results from the fact that tailoring inserts a <nowiki><span></nowiki> tag which is not valid inside select options.</div>
<div class="simplebox">[[Datoteka:help.png]] '''Opomba:''' Dinamično prilagajanje morda ne bo delovalo, če so možnosti odgovora na voljo v izbirnih poljih na isti strani z vprašanji. To je posledica dejstva, da krojaški vstavki a<nowiki></nowiki> <span>oznaka, ki ni veljavna znotraj izbranih možnosti.</span>


The BMI report looks like this:
Poročilo ITM izgleda takole:




Line 135: Line 135:




Here is the edit window for the same question.
Tukaj je okno za urejanje istega vprašanja.




Line 141: Line 141:




Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), ES would show an error. In our below example:
Vse, kar je znotraj zavitih oklepajev, se obravnava kot izraz, saj je sintaksno poudarjeno (barvno kodirano) na prejšnji sliki. Če imate kakršne koli tipkarske napake (kot so napačno črkovana ali nedefinirana imena ali funkcije spremenljivk), bo ES prikazal napako. V našem spodnjem primeru:
* heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
* heightunit.shown je nedefinirano ime spremenljivke (pravzaprav je heightunits.shown) in
* "rnd()" is an undefined function (the proper function name is "round()").  
* "rnd()" je nedefinirana funkcija (pravilno ime funkcije je "round()" ).  


In both cases, the errors are located within a red box to make it easier to spot and fix them.
V obeh primerih se napake nahajajo v rdečem polju, da jih lažje opazite in odpravite.




Line 151: Line 151:




You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.
Opazite lahko tudi, da lahko hitro ustvarite kompleksna poročila, kot je tabela vnesenih vrednosti ali prilagojeni nasveti.


Please remember that all tailoring must surround expressions with curly braces so that LimeSurvey knows which parts of the question are free text and which should be parsed by the ExpressionScript engine.
Zapomnite si, da mora vsako prilagajanje obdati izraze z zavitimi oklepaji, tako da LimeSurvey ve, kateri deli vprašanja so prosto besedilo in katere bi moral razčleniti mehanizem ExpressionScript.




==Validation==
==Potrjevanje==




ES controls how most of the advanced question options work. These control aspects like min/max numbers of answers, min/max individual values, min/max sum values, and checking that entered values match specified string patterns. Any value in one of those fields is considered an expression, so you can have min/max criteria with complex conditional relationships to other questions.
ES nadzoruje, kako deluje večina naprednih možnosti vprašanj. Ti nadzorni vidiki, kot so najmanjše/največje število odgovorov, najmanjše/največje posamezne vrednosti, najmanjše/največje vrednosti vsote in preverjanje, ali se vnesene vrednosti ujemajo z določenimi vzorci nizov. Vsaka vrednost v enem od teh polj se šteje za izraz, tako da lahko imate minimalna/največja merila s kompleksnimi pogojnimi razmerji do drugih vprašanj.


In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.
V vseh teh primerih, ker atribut naprednega vprašanja vedno velja za izraz, pri njegovem podajanju ne uporabite zavitih oklepajev.


The [[ExpressionScript sample surveys|sample surveys]] page shows many working examples containing a variety of validation expressions.
Stran [[ExpressionScript sample surveys|vzorčne ankete]] prikazuje številne delujoče primere, ki vsebujejo različne izraze za preverjanje veljavnosti.


=ExpressionScript - presentation=
=ExpressionScript - predstavitev=




To find out more about ExpressionScript and how you can use different expressions to enhance your survey, please click on the following [https://manual.limesurvey.org/ExpressionScript_-_Presentation link].
Če želite izvedeti več o ExpressionScript in o tem, kako lahko uporabite različne izraze za izboljšanje vaše ankete, kliknite naslednjo [https://manual.limesurvey.org/ExpressionScript_-_Presentation povezavo].

Latest revision as of 08:20, 15 December 2023


Vodnik za hiter začetek

Znotraj LimeSurvey lahko dodatno prilagodite svoje ankete z uporabo ExpressionScript (kratko: ES). Stranska opomba: "ExpressionScript je bil v prejšnji različici imenovan Expression Manager (EM). Če ste kje prebrali Expression Manager, je to samo staro ime ES."

ES se lahko uporablja za določitev naslednjega:

  1. Navigacija/Razvejanje - omogoča anketirančevim odgovorom, da spremenijo vrstni red, v katerem so prikazana vprašanja;
  2. Prilagoditev/Cevovod' - vam pomaga ubesediti vprašanje (kot se nanaša na predhodni odgovori ali spreganje stavkov glede na starost ali spol vaših predmetov) ali kako ustvariti poročila po meri (kot so rezultati ocenjevanja ali prilagojeni nasveti);
  3. Validacija - zagotavlja, da odgovori prestanejo določena merila, kot so najmanjše in največje vrednosti ali določen vnosni vzorec.

ES ponuja intuitiven način za določanje logike za vsako od teh funkcij. Skoraj vse, kar lahko zapišete kot standardno matematično enačbo, je veljaven izraz.

ES trenutno omogoča dostop do 70 funkcij in ga je mogoče enostavno razširiti, da podpira več. Prav tako vam omogoča dostop do spremenljivk

z uporabo človeku berljivih imen spremenljivk (namesto SGQA names).

Prihajajoči razdelki prikazujejo glavna mesta, kjer se uporablja ES.


Ustreznost (nadzor navigacije/razvejanje)

Nekatere ankete uporabljajo "Goto Logic", tako da če na vprašanje 1 odgovorite z možnostjo C, ste preusmerjeni na vprašanje 5. Ta pristop je zelo omejen, saj ga je težko potrditi. Poleg tega se zlahka pokvari, ko morate preurediti vprašanja. Po drugi strani pa ES uporablja Boolove relevantne enačbe za določitev vseh pogojev, pod katerimi bi lahko bilo vprašanje veljavno. Če je vprašanje relevantno, je vprašanje prikazano, v nasprotnem primeru ni uporabno in vrednost "NULL" je shranjena v bazi podatkov.

Opomba: To je podobno temu, kar je mogoče storiti prek urejevalnika pogojev, vendar vam ES omogoča enostavno določanje veliko bolj zapletenih in zmogljivih kriterijev (in omogoča uporabo imena spremenljivke namesto identifikatorji SGQA).




Da bi bolje razumeli koncept ustreznosti, se osredotočimo na naslednjo raziskavo, ki izračuna indeks telesne mase (ITM) anketirancev. Če ga želite prenesti, kliknite na naslednjo povezavo: Primer raziskave indeksa telesne mase.

Enačba ustreznosti je prikazana spodaj v stolpcu Relevantnost za imenom spremenljivke. Vrednosti ustreznosti teže, teže_enot, višine in višine so vse 1 (privzeta vrednost), kar pomeni, da so ta vprašanja vedno prikazana. Vendar pa je relevantnost za ITM {!is_empty(height) in !is_empty(weight)}, kar pomeni, da bo ITM izračunan samo, če subjekt vnese vrednost tako za višino kot za težo (s čimer se izognemo tveganju, da bi dobili napako nič). Tudi vprašanje "Poročilo" je prikazano le, če anketiranec odgovori na vsa štiri glavna vprašanja (višina, enote višine, teža, enote teže).



Datoteka:help.png Opomba: Zgornja slika izvira iz logične datoteke ankete, ki vam omogoča, da poiščete sintaksne napake, preden aktivirate anketo.


Ustreznost je prikazana in jo je mogoče urejati, ko:

  • želite videti/urediti ustreznost na ravni vprašanja
  • želite si ogledati/urediti ustreznost na ravni skupine


Ogled/urejanje Ustreznost na ravni vprašanja

Ta enačba izračuna indeks telesne mase (ITM). Vpraša se le, ali oseba vnese svojo višino in težo.



To je zaslon za urejanje vprašanja "BMI".



Upoštevajte, da ne uporabite zavitih oklepajev, ko vnesete enačbo ustreznosti.


Ogled/urejanje ustreznosti na ravni skupine

Osredotočimo se zdaj na drug primer – preprosto popisno raziskavo. Če ga želite prenesti, kliknite naslednjo povezavo: Primer popisne raziskave.

Prva stran vpraša, koliko ljudi živi z vami, in to shrani v spremenljivko "cohabs". Ta stran je prikazana samo, če imate več kot enega sostanovalca (prikazana je za drugo osebo, ki živi z vami). Tudi p2name, p2age. p2sum se prikažejo le, če vprašanje pred vsakim od njih vsebuje odgovor.



Torej ima skupina tudi merila ustreznosti na ravni vprašanja, tako da se nekatera vprašanja prikažejo samo, če ste odgovorili na določena vprašanja pred njimi (npr. p2age je prikazana, če je bil odgovor p2name). ES za vas združuje ustreznost na ravni skupine in vprašanja. Vprašanja v skupini se postavljajo samo, če je relevantna skupina kot celota. Nato se zastavi samo podmnožica vprašanj znotraj skupine, ki so pomembna.

Tukaj je posnetek zaslona za urejanje ustreznosti Sostanovalca 2 na ravni skupine:



Upoštevajte, da ne uporabite zavitih oklepajev, ko vnesete enačbo ustreznosti.

Krojenje/Piping

ES vam omogoča preprosto in zapleteno pogojno krojenje. Včasih potrebujete preprosto zamenjavo, na primer: "Rekel si, da si kupil [ Izdelek]. Kaj vam je bilo pri tem najbolj všeč?". Včasih potrebujete pogojno zamenjavo, kot je " [ Gospod Gospa.] [ LastName], bi bili pripravljeni izpolniti našo anketo?". V tem primeru želite uporabiti "Mr. ali gospa." na podlagi spola osebe. Včasih potrebujete še bolj zapleteno zamenjavo (na primer na podlagi matematičnega izračuna). ES podpira vsako od teh vrst krojenja/cevovoda.


Pogojne enačbe

Primer indeksa telesne mase prikazuje zmožnost izračuna ITM osebe, čeprav ji dovolite, da svojo višino in težo vnese v dveh različnih enotah (cm proti palcem in kg proti funtom):



V tem primeru je teža kg {if(weightunits == "kg", teža, teža * 0,453592)}. Ta funkcija "if()" pomeni, da če subjekt vnese težo v kilogramih, uporabite to vrednost, sicer pomnožite vneseno vrednost (funti so alternativa) z 0,453592, da jo pretvorite v kilograme. Spremenljivka heightm uporablja podoben pristop za izračun višine osebe v metrih (višina v cm/100), tudi če je vnesla svojo višino v palcih (1 meter=3,28084 palca).

ITM se izračuna kot: {teža kg / (višina m * višina m)}.

Nazadnje poročilo pogojno prilagodi sporočilo subjektu in ji pove, kaj je vnesel. (npr. "Rekli ste, da ste visoki 2 metra in težki 70 kg.")

Na spodnji sliki weightstatus uporablja ugnezdene izjave »if()« za kategorizacijo osebe med prenizko telesno težo in močno debelostjo. Njeno enačbo si lahko ogledate tako, da preverite njeno logiko:



V oknu za urejanje tega vprašanja lahko vidite dve stvari:

  1. Tailoring mora obdati izraze z zavitimi oklepaji
  2. Izrazi lahko zajemajo več vrstic, če želite, kot v tem primeru, olajšati branje ugnezdena pogojna logika.



Prilagojena vprašanja, odgovori in poročila

Datoteka:help.png Opomba: Dinamično prilagajanje morda ne bo delovalo, če so možnosti odgovora na voljo v izbirnih poljih na isti strani z vprašanji. To je posledica dejstva, da krojaški vstavki a oznaka, ki ni veljavna znotraj izbranih možnosti.

Poročilo ITM izgleda takole:



Tukaj je okno za urejanje istega vprašanja.



Vse, kar je znotraj zavitih oklepajev, se obravnava kot izraz, saj je sintaksno poudarjeno (barvno kodirano) na prejšnji sliki. Če imate kakršne koli tipkarske napake (kot so napačno črkovana ali nedefinirana imena ali funkcije spremenljivk), bo ES prikazal napako. V našem spodnjem primeru:

  • heightunit.shown je nedefinirano ime spremenljivke (pravzaprav je heightunits.shown) in
  • "rnd()" je nedefinirana funkcija (pravilno ime funkcije je "round()" ).

V obeh primerih se napake nahajajo v rdečem polju, da jih lažje opazite in odpravite.



Opazite lahko tudi, da lahko hitro ustvarite kompleksna poročila, kot je tabela vnesenih vrednosti ali prilagojeni nasveti.

Zapomnite si, da mora vsako prilagajanje obdati izraze z zavitimi oklepaji, tako da LimeSurvey ve, kateri deli vprašanja so prosto besedilo in katere bi moral razčleniti mehanizem ExpressionScript.


Potrjevanje

ES nadzoruje, kako deluje večina naprednih možnosti vprašanj. Ti nadzorni vidiki, kot so najmanjše/največje število odgovorov, najmanjše/največje posamezne vrednosti, najmanjše/največje vrednosti vsote in preverjanje, ali se vnesene vrednosti ujemajo z določenimi vzorci nizov. Vsaka vrednost v enem od teh polj se šteje za izraz, tako da lahko imate minimalna/največja merila s kompleksnimi pogojnimi razmerji do drugih vprašanj.

V vseh teh primerih, ker atribut naprednega vprašanja vedno velja za izraz, pri njegovem podajanju ne uporabite zavitih oklepajev.

Stran vzorčne ankete prikazuje številne delujoče primere, ki vsebujejo različne izraze za preverjanje veljavnosti.

ExpressionScript - predstavitev

Če želite izvedeti več o ExpressionScript in o tem, kako lahko uporabite različne izraze za izboljšanje vaše ankete, kliknite naslednjo povezavo.