x

Mga pangunahing kabanata

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Gabay sa mabilis na pagsisimula - LimeSurvey 3.0+
  3. Pag-install - LimeSurvey CE
  4. Paano magdisenyo ng magandang survey (gabay)
  5. Pagsisimula
  6. Pangangasiwa sa LimeSurvey
  7. Mga Survey - panimula
  8. Mga setting ng survey
  9. Menu ng survey
  10. Istraktura ng survey
  11. Mga tanong - panimula
  12. Mga pangkat ng tanong - panimula
  13. Mga survey - pamamahala
  14. Mga opsyon ng toolbar ng survey
  15. Multilingual na survey
  16. ExpressionScript Engine - Gabay sa mabilis na pagsisimula
  17. Mga hindi nakategoryang tampok at advanced na tampok
  18. Pangkalahatang FAQ
  19. Pag-troubleshoot
  20. Mga Workaround
  21. Lisensya
  22. Log ng pagbabago ng bersyon
  23. Plugins
 Actions

Mga How-to ng ExpressionScript

From LimeSurvey Manual

Maaaring isinalin ng makina ang pahinang ito at maaaring may mga mali. Ipakita ang orihinal sa Ingles · Pagbutihin ang salin na ito
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Buod ng mga naipaliwanag na dati

Kung nasundan ninyo hanggang ngayon ang istruktura ng manual ng LimeSurvey, nangangahulugan itong alam na ninyo ang terminolohiya ng LimeSurvey. Sumunod, tinalakay natin ang mga expression at variable upang matutunan kung paano pagbutihin ang ating mga survey. Sa susunod na bahagi, lumipat tayo sa mga uri at kahulugan ng syntax highlighting upang matutunan kung paano itama ang mga syntax error.

Matapos talakayin ang mga pangunahing konseptong ito, maaari na tayong magpatuloy sa mga halimbawa at ipaliwanag kung paano gumagana ang mga expression sa loob ng LimeSurvey.


Syntax Highlighting

Nagbibigay ng mga halimbawa ang mga sumusunod na screenshot, ngunit hindi ipinapakita ang mga halaga ng mga tooltip. Ang tooltip ay isang kahong nagbibigay-impormasyon na lumalabas tuwing ipapatong ninyo ang mouse sa alinmang makulay at naka-bold na salita.

Dahil sa syntax highlighting na ito, napakadaling bumuo ng tamang mga expression, kahit ang mga komplikado. Bagama't plano ng team ng LimeSurvey na bumuo ng Expression Builder GUI, magagamit ninyo ang kasalukuyang syntax-highlighting upang mabilis na matukoy at maitama ang mga typo. Magagamit din ninyo ang mga tooltip upang tiyakin ang katumpakan ng inyong mga expression (hal., kumpirmahin na napili ninyo ang nais na variable).

Sa bawat halimbawa, may tatlong column:

  1. Source - ito ang hilaw na teksto na ilalagay ninyo sa field ng tanong sa LimeSurvey
  2. Pretty Print - ito ang bersyong may syntax highlighting ng inilagay ninyo
    • Tandaan na ang mga Expression ay ipinapakita na may kulay-tan na background, ngunit hindi napapalibutan ng mga curly brace sa highlighting na ito.
    • Dahil sinusuportahan ng EM ang recursive substitution, magdudulot ng mga syntax error ang pagpapakita ng mga curly brace sa highlighting
  3. Result - ito ang output na nabubuo kapag pinoproseso ng EM ang source
    • Lahat ng maaaring mapalitan nang wasto ay pinapalitan
    • Ang mga expression na may error ay ipinapakita sa mismong linya, na may syntax highlighting. Ang mga error ay napapalibutan ng kahong may pulang guhit.


Wastong Syntax

Narito ang mga halimbawa ng wastong syntax:

  1. Values: ipinapakita na ang mga kilalang variable ay may kulay depende kung naitakda ang mga ito sa kasalukuyang pahina.
  2. Question Attributes: ipinapakita na maaaring ma-access ng dot notation ang ilang katangian ng mga tanong
  3. Math: ipinapakita na sinusuportahan ang mga basic at komplikadong kalkulasyon
  4. TextProcessing: ipinapakita ang ilan sa mga magagamit na function sa pagproseso ng teksto
  5. Dates: ipinapakita ang dalawa sa mga magagamit na function na may kaugnayan sa petsa
  6. Conditional: ipinapakita ang paggamit ng function na if(). Maaaring i-nest ang mga pagpipilian.
  7. Tailored paragraph: maaari ninyong ganap na i-customize ang isang ulat batay sa mga naunang halaga
  8. EM processes within strings: ipinapakita na kaya nitong magpalit sa loob ng mga string. Ang halimbawang ito ay bumubuo ng iniangkop na pangalan ng larawan.
  9. EM doesn't process curly braces like these: ipinapakita na kung na-escape ang mga curly brace, o may puwang sa pagitan ng expression at ng mga curly brace, hindi pinapansin ng ES ang expression.


Syntax ng EM na May Mga Error

Narito ang mga halimbawa ng karaniwang error sa pagta-type ng mga expression ng ES. Tandaan na nagbibigay ng karagdagang impormasyon ang mga tooltip.

  1. Inline Javascript na nakalimutang magdagdag ng mga puwang pagkatapos ng curly brace
    • Dahil ang "document.write" ay lumilitaw kaagad pagkatapos ng curly brace, inaakala ng EM na ito ay isang expression, at nilalagyan nito ng pulang kahon ang "document" at "write" dahil ang mga ito ay hindi natukoy na variable at function, ayon sa pagkakasunod.
  2. Hindi kilala/maling spelling na mga variable, function at operator
    • Dito nakalimutan nating ang ginagamit nating pangalan ng variable ay "gender" at hindi "sex", ngunit nahuhuli ng EM ang error na iyon. Nilalagyan din nito ng pulang kahon ang '++', dahil hindi iyon sinusuportahang operator.
  3. Nagbababala kung ginamit ang = sa halip na eq, o kung magsasagawa ng mga pag-assign ng halaga
    • Tandaan na ang '=' at '+=' ay nasa pulang teksto sa halip na itim. Kung ipapatong ninyo ang mouse sa mga ito, makikita ninyo ang mga babala na nag-a-assign kayo ng halaga.
  4. Maling bilang ng mga argument para sa mga function
    • Ang if() ay tumatanggap ng 3 argument, ngunit binigyan ito ng 4, kaya ipapaliwanag ng pagpapatong ng mouse sa naka-pulang-kahong "if" ang error at ipapakita ang sinusuportahang syntax
    • Ang sum() ay tumatanggap ng walang limitasyong bilang ng mga argument, ngunit may sobrang kuwit tayo bago ang pansarang panaklong, kaya nilagyan ito ng pulang kahon
  5. Hindi magkatugmang panaklong
    • Isa ito sa mga pinakakaraniwang error sa pagsusulat ng mga expression.
    • Ipinapakita nito ang dalawang halimbawa ng nawawalang pansarang panaklong, at isang halimbawa ng sobrang isang pansarang panaklong.
  6. Hindi suportadong syntax
    • Kung gagamit kayo ng operator o bantas na hindi sinusuportahan ng ES, lalagyan nito ng pulang kahon ito.
  7. Di-wastong mga assignment
    • Ang ilang variable ay readWrite at maaaring baguhin ang mga halaga. Ang iba ay read-only.
    • Kung susubukan ninyong baguhin ang halaga ng read-only na variable, hindi ito maaari. Lalagyan ng EM ng pulang kahon ang pagtatangka.
    • Kung susubukan ninyong mag-assign ng halaga sa isang equation o isang string, makakakuha rin kayo ng error



Mga "Live" na halimbawa ng Syntax Highlighting na may aktibong mga tooltip

PinagmulanPretty PrintResulta
Narito ang halimbawa ng OK na syntax na may mga tooltip
Kumusta {if(gender=='M','Mr.','Mrs.')} {surname}, ngayon ay {date('g:i a',time())}. Alam ba ninyo kung nasaan ang inyong {sum(numPets,numKids)} anak at alagang hayop?
Narito ang halimbawa ng OK na syntax na may mga tooltip
Kumusta if(gender == 'M','Mr.','Mrs.') surname, ngayon ay date('g:i a',time()). Alam ba ninyo kung nasaan ang inyong sum(numPets,numKids) anak at alagang hayop?
Narito ang halimbawa ng OK na syntax na may mga tooltip
Kumusta Mr. Smith, ngayon ay 6:07 am. Alam ba ninyo kung nasaan ang inyong 3 anak at alagang hayop?
Narito ang mga karaniwang error para makita ninyo ang mga tooltip
Mga variable na ginamit bago idineklara: {notSetYet}
Hindi kilalang function: {iff(numPets>numKids,1,2)}
Hindi kilalang variable: {sum(age,num_pets,numKids)}
Maling bilang ng parameter: {sprintf()},{if(1,2)},{date()}
Pag-assign sa read-only na variable:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Hindi balanseng panaklong: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Narito ang mga karaniwang error para makita ang mga tooltip
Mga variable na ginamit bago ideklara: notSetYet
Hindi kilalang function: iff(numPets > numKids,1,2)
Hindi kilalang variable: sum(age,num_pets,numKids)
Maling bilang ng parameter: sprintf(),if(1,2),date()
Pagtatalaga sa mga read-only na variable:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Hindi balanseng panaklong: pow(3,4,(pow(3,4),pow(3,4))
Narito ang mga karaniwang error para makita ang mga tooltip
Mga variable na ginamit bago ideklara: notSetYet
Hindi kilalang function: iff(numPets > numKids,1,2)
Hindi kilalang variable: sum(age,num_pets,numKids)
Maling bilang ng parameter: sprintf(),if(1,2),date()
Pagtatalaga sa mga read-only na variable:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Hindi balanseng panaklong: pow(3,4,(pow(3,4),pow(3,4))
Narito ang ilan sa mga hindi sinusuportahang syntax
Walang suporta para sa '++', '--', '%',';': {min(++age, --age,age % 2);}
Gayundin sa '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Gayundin sa mga array: {name[2], name['mine']}
Narito ang ilan sa mga hindi sinusuportahang syntax
Walang suporta para sa '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Gayundin sa '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Gayundin sa mga array: name [ 2 ] ,name [ 'mine' ]
Narito ang ilan sa mga hindi sinusuportahang syntax
Walang suporta para sa '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Gayundin sa '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Gayundin sa mga array: name [ 2 ] ,name [ 'mine' ]


Mga Halimbawa ng Tailoring

"Mahal na {Mr}/{Mrs} Smith..."

Gamitin ang function na if() upang kondisyonal na piliin kung ipapakita ang 'Mr.' o 'Mrs.'.

Ang syntax ay if(test,do_if_true,do_if_false).

# Code Tanong Uri
1 gender Ano ang iyong kasarian? Kasarian
2 example1 Mahal na {if(gender=='M','Mr.','Mrs.')} Smith, ... Mahabang free text



Tulad ng makikita sa ibaba, ang "Mr" at "Mrs" ay naaayon sa piniling sagot ng respondent sa tanong na "gender".



"Mahal na {Mr}/{Mrs} Smith..." sa email ng imbitasyon

Maaari mong gamitin ang halimbawa sa itaas sa email ng imbitasyon gamit ang mga attribute mula sa token table. Gamitin ang function na if() upang piliin kung 'Mr.' o 'Mrs.' ang dapat gamitin sa email.


Ang syntax ay "if(test,do_if_true,do_if_false)".

# attribute halaga
1 Apelyido Smith
2 Email address test@test.com
3 ATTRIBUTE_2 M


Teksto sa email ng imbitasyon:

Mahal na {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

inaanyayahan kang lumahok sa isang survey:

https:/...



Pagtingin sa email:


Mga Halimbawa ng Kalkulasyon / Pagtatasa

Kalkulahin ang mga halaga ng pagtatasa sa runtime at i-store ang mga resulta sa data ng survey

Ginagamit ng halimbawang ito ang lahat ng feature ng EM, kabilang ang Relevance, Tailoring, at ang uri ng tanong na Equation.

Ipinapakita rin nito na ang lahat ng ito ay JavaScript-enabled, kaya kung mayroon kang mga feature na ito sa isang page, dynamic itong magbabago habang itinatakda at binabago ng mga tao ang kanilang mga sagot.

# Code Tanong Uri Relevance
1 numKids Ilan ang mga anak mo? Numerical input 1
2 kid1 Ilang taon na ang panganay mong anak? Numerical input numKids >= 1
3 kid2 Ilang taon na ang pangalawa mong anak? Numerical input numKids >= 2
4 kid3 Ilang taon na ang pangatlo mong anak? Numerical input numKids >= 3
5 kid4 Ilang taon na ang pang-apat mong anak? Numerical input numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Equation 1
7 kidSummary Sinabi mo na mayroon kang {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Display ng text 1


Upang i-download ang halimbawang ito, paki-click ang sumusunod na link: Assessments_survey_example.


Makikita sa ibaba ang mga screenshot ng mga kinatawang tanong. Tulad ng makikita ninyo, hina-highlight ng EM ang syntax ng lahat ng field na maaaring maglaman ng tailoring. Dito, makikita ang mga halimbawa ng syntax highlighting sa Relevance, sa uri ng tanong na Equation, at sa mga substitution sa loob ng isang tanong. Maaari rin kayong gumamit ng mga substitution sa Help, Group header display, Pambungad na mensahe, at Mensahe sa dulo.

Sa susunod na halimbawa, dahil ang relevance ay {numKids >= 2), makikita lamang ang tanong kung iuulat ng respondent na mayroon siyang hindi bababa sa dalawang anak.



Sa ibaba, mapapansin ninyo na may nakadugtong na suffix na .NAOK sa bawat variable. Ito ay dahil sa paraan ng pagsuporta ng EM sa cascading relevance. Kung wala ang .NAOK, makakalkula lamang ang kabuuan kung sinabi ng tao na mayroon siyang 4 na anak (hal., kung lahat ng variable ay relevant). Ang paggamit ng .NAOK ay nangangahulugang nais nating kalkulahin ang kabuuan kahit na lahat o ilan sa mga variable ay hindi relevant (hal., ayos lang (OK) ang "Not Applicable" (NA)).

Gayunpaman, ang .NAOK attribute ay nakakaapekto lamang sa kung ipinapasa ang mga variable sa EM. Kung una niyang sinabi na mayroon siyang 3 anak, at naglagay ng edad para sa bawat isa, pagkatapos ay nagbago ang isip at sinabing 2 lamang, hindi natin nais makita ang kabuuan ng 3 inilagay na halaga - dahil ang ikatlong anak ay hindi na "not applicable" sa ating kaso:



Bawat hiwalay na Expression ay may kulay na tan sa background. Tulad ng makikita ninyo, may tatlong hiwalay na Expression dito. Ang huli ay naglalaman ng mensaheng ipinapakita lamang kung may higit sa isang anak ang tao.



Narito naman ang mga screenshot ng survey habang ginagamit.

Kapag una ninyong binisita ang pahina, makikita ninyo ito. Pansinin na nakasulat ang "You have 0 children" sa halip na "You have 0 child".



Kung babaguhin ko ang halaga ng bilang ng mga anak sa 1, agad na magbabago ang display at magiging ganito, kahit nasa iisang pahina lang:



Pansinin na tama na ang grammar: "You have 1 child".

Ngayon, babaguhin ko ang halaga ng bilang ng mga anak sa 3, at agad na magbabago ang display at magiging ganito.

Pansinin na makikita na ninyo ngayon ang conditional na mensahe sa ibaba: "The sum of ages of your first 3 kids is 0.".



Ngayon, maglalagay ako ng mga edad para sa aking mga kunwaring anak, at ito ang makukuha kong display na nagsusuma ng kanilang mga edad:



Muli, agad na nag-a-update ang score at display habang naglalagay ako ng mga halaga, kaya magagamit ninyo ito upang ipakita ang patuloy na kabuuan ng Assessment Score.


Ngayon, babaguhin ko ang halaga ng bilang ng mga anak sa 2. Ganito na ang naging display:



Pansinin na bagama't naglagay ako ng halagang 5.5 para sa ikatlong anak, ang ulat ay nagsusuma na lamang ngayon ng mga halaga ng unang 2 anak ko.

Ang dahilan nito ay hindi na relevant ang ika-3 halaga, at aktibong binabalewala ng EM ang mga halagang hindi relevant.

Kung ibabalik ko ang bilang ng mga anak sa 3, makikita kong muli ang halagang 5.5 na inilagay ko. Kaya wala akong nawawalang impormasyong inilagay ko sa pahina.

Gayunpaman, kung pupunta ako sa Susunod o Nakaraang pahina, lahat ng halagang hindi relevant ay gagawing NULL sa session at sa database. Kaya, kung iiwan kong 2 ang halaga, pupunta sa susunod na pahina, at babalik at sasabihing may 3 talaga akong anak, hindi ko na makikita ang edad na 5.5.


Maglagay ng data at tingnan ang dynamic na nagbabagong ulat ng mga inilagay sa iisang pahina

Ipinapakita ng halimbawang ito ang proseso ng Tailoring sa LimeSurvey.

Upang i-download ang halimbawang ito, i-click ang sumusunod na link: Halimbawang survey ng mga dynamic na pagbabago.

Ganito ang hitsura ng pahina sa simula. Ang makikita lamang ninyo ay ang tanong kung saang lungsod kayo nakatira:



Kapag nagsimula ka nang maglagay ng sagot, magsisimula na rin ang proseso ng tailoring:


Habang naglalagay ka ng mga sagot, ina-update ang talahanayan sa ibaba ng pahina para ipakita ang mga code ng sagot at ang mga halaga ng iyong mga tugon.


Mga Karaniwang Halimbawa sa Pag-debug

Mga Nested na if() Statement (Conditional Logic)

Sinusuportahan ng EM ang function na "if(test,do_if_true,do_if_false)" para makagawa ka ng conditional logic o tailoring. Maaaring i-nest ang function na ito para makuha ang katumbas ng "if { } else if { } else { }". Ipapaalam sa iyo ng EM kung hindi balanse ang mga panaklong (hal., kulang ang closing na panaklong sa kanan), o kung may sobra kang panaklong sa kanan. Subukang bilangin ang mga panaklong habang bumubuo ka ng mahahabang nested na if statement, i-save ito, tingnan kung may mga syntax error, at ayusin ang mga ito kung mayroon. Suriin natin nang sabay ang halimbawa sa ibaba.

Maaaring ma-access dito ang grupo ng mga tanong na ginamit sa ibaba: Tailoring survey example.lsg


Una, kapag wala pang nailalagay, makikita mo lang ang "Hello."



Kapag naglagay ka ng pangalan, ang lalabas ay "Hello {name}."



Kapag naglagay ka ng edad, makakakuha ka ng iniangkop na mensahe, depende kung ikaw ay batang hindi pa nasa edad ng pag-aaral o hindi:



Nasa edad ng pag-aaral, tinedyer, o nasa hustong gulang. Narito ang isang tinedyer na gustong manatiling anonymous:



Narito ang logic file ng grupo. Gaya ng makikita mo sa tanong na "if-based", may mga nested na if statement batay sa edad ng tao.



Kapag una mong ine-edit ang tanong na ito, malamang na sa isang punto ay magkamali ka sa bilang ng mga panaklong. Narito ang mangyayari kung kulang ang mga ito:



Kapag itinapat mo ang mouse sa salitang "if", na napapalibutan ng pulang kahon, makikita mong nakasulat ang "Parentheses not balanced". Sa kasong ito, dapat ay may apat na closing na panaklong pagkatapos ng "already an adult!", ngunit tatlo lang ang mayroon.

Kung, sa kabilang banda, may sobra kang panaklong sa kanan, mapapalibutan ito ng pulang kahon, tulad nito:



Kapag aktwal mong ine-edit ang tanong, ganito ang hitsura nito: