Mga sample na survey ng ExpressionScript
From LimeSurvey Manual
Panimula
Ang pinakamainam na paraan upang matutunan ang paggamit ng ExpressionScript ay ang subukan ang mga gumaganang halimbawa at baguhin ang mga ito ayon sa iyong pangangailangan.
Makikita sa ibaba ang isang hanay ng mga sample na survey na nagpapakita (at sumusubok) kung paano magagamit ang EM upang pagandahin ang iyong survey. Makikita ang mga survey na ito sa folder na /docs/demosurveys ng distribution.
Relevance, Tailoring, at mga Equation
Overview
Kinakalkula ng sumusunod na halimbawa ang BMI (Body Mass Index) ng bawat respondent. Tingnan sa ibaba ang mga tampok na ipinapakita sa halimbawang ito.
Mga Tampok ng EM na Ipinakita
- Relevance - suporta para sa makapangyarihang conditional logic;
- Piping / Tailoring - nagbibigay ng kakayahang i-pipe o i-tailor ang mga sagot at metadata ng tanong;
- Dynamic Tailoring - tandaan na nagbabago ang mga ulat sa pahina habang sinasagot mo ang mga tanong.
- Micro-Tailoring - conditional na tailoring sa loob ng mga pangungusap at ulat gamit ang mga if() statement
- Mga Equation - isang bagong uri ng tanong na nagbibigay-daan sa iyong magkalkula at i-store ang mga resulta sa database, kahit nakatago ang kalkulasyon
- Conditional na Pag-validate - ang mga pamantayan ng pag-validate, tulad ng pinakamababang pinapayagang halaga, ay maaaring conditional - hal., batay sa mga equation.
Mga Screenshot
Kinakalkula ng halimbawang ito ang Body Mass Index, isang kalkulasyon ng iyong timbang at taas upang matukoy kung ikaw ay kulang sa timbang, normal ang timbang, sobra sa timbang, o obese. Tandaan na sa simula, ang makikita mo lamang ay ang apat na mandatoryong tanong:

Kapag naipasok mo na ang iyong impormasyon (at maaari mong piliin kung metric o non-metric na mga yunit ang gagamitin), makikita mo ang isang tailored na ulat na bumubuod sa iyong ipinasok, at nagsasabi ng iyong status ng timbang:

Narito ang ibang halimbawa, gamit ang mga non-metric na yunit upang ipakita kung paano dynamic na nagbabago ang resulta:

May mga nakatagong tanong na uri ng Equation sa internal na antas na nagko-convert ng data sa metric (kung kinakailangan), at nag-i-store ng metric na taas, timbang, BMI, at status ng timbang sa database nang hindi nangangailangan ng custom na JavaScript.
Makikita mo sa susunod na hanay ng mga halimbawa kung paano mo magagamit ang mga mathematical at iba pang function sa loob ng mga tailored na ulat. Ganito ang hitsura ng pahina bago ka maglagay ng anumang data. May conditional logic na nagpapakita ng mga blangkong cell kung walang data (o hindi numeric ang data) na ipinasok, sa halip na ipakita ang "NaN" o "Divide by Zero".

Habang inilalagay ang mga numero, nagbabago ang ulat sa pahina upang ipakita ang kalkulasyong isinasagawa at ang resulta nito.

Marami pang ibang halimbawa sa sample na survey na ito. Halimbawa, ipinapakita ng screenshot sa ibaba ang isa sa dose-dosenang paraan upang sagutan ang pahina ng Dynamic Relevance. Tulad ng nakasaad sa text ng tulong, subukan ang iba't ibang edad, at lalo na ang mga hindi lohikal na kumbinasyon ng mga sagot upang makita ang mga nakakatuwang mensaheng nabubuo sa ibaba. Tandaan din na kung sasabihin mong mayroon kang higit sa isang anak, sasabihin ng mensahe na "I hope you enjoy playing with your X children", sa halip na "I hope you enjoy playing with your child". Ipinapakita nito kung paano madaling mag-micro-tailor ng mga pangungusap upang tumugma sa kasarian at/o bilang ng iyong mga subject. Madali mo ring maiko-conjugate ang mga pandiwa at made-decline ang mga pangngalan batay sa kasarian at bilang.

I-download
Upang ma-access ang sample na survey, mangyaring i-click ang sumusunod na link: LS3_em_tailoring.zip.
Sample na Census
Overview
Ito ay isang halimbawa ng census na nagtatanong kung ilang tao ang nasa inyong sambahayan.
Ipinapakita nito kung paano mapapadali ng relevance sa antas ng grupo ang pagpapatupad ng "loop" ng mga tanong. Matapos gawin ang grupo para sa Person 1, ini-export ko ang grupo. Dahil gumamit ako ng mga pangalan ng variable na qcode tulad ng p1_name sa halip na ng SGQA code, nagamit ko ang isang text editor upang mabilis na i-edit at muling i-import ang grupo nang ilang beses (hal., mga 10 segundo ang inabot upang i-edit at muling i-import ang bawat umuulit na grupo, tinitiyak na lahat ng variable ay may natatanging pangalan at tama ang lohika sa antas ng grupo).
Maaari mo ring gamitin ang feature na Kopyahin ang tanong, ngunit hindi ito magiging kasing bilis ng opsyong iminungkahi sa itaas.
Ipinapakita rin nito kung paano mo mapipigilan ang paglabas ng Finished message hanggang sa tunay na matapos ang survey (hal., kapag tapos na ang lahat ng kinakailangang grupo).
Mga Feature ng EM na Ipinakita
- Relevance sa antas ng grupo - Ang mga follow-up na grupo (Person 1-5) ay lalabas lamang hanggang sa bilang ng mga kasamang naninirahan na itinakda;
- Tailoring - Ibinubuod ng huling ulat ang demograpikong datos ng bawat kasamang naninirahan;
- Progresibong pagpapakita ng tanong - Maging sa group mode o all-in-one mode, lalabas lamang ang mga susunod na tanong kapag nasagot na ang mga nauna.
Mga Screenshot
Gumagawa ang survey ng tailored na ulat na nagpapakita ng demograpiko ng itinakdang bilang ng mga kasamang naninirahan:

Kapag lumipat ka sa question-at-a-time mode, makikita mong tina-tailor ng index ang mga tanong. Dahil sinabi ng user na babae ang tao, itatanong nito ang "What is her name". At dahil sumagot tayo ng "Mary", ang susunod na tanong ay "How old is Mary"?

I-download
Upang i-download ang sample na survey, mag-click dito: LS3_group_relevance.zip.
Mga Cascading na Filter ng Array
Overview
Ang survey na ito ay batay sa disenyo ng isang survey na mula sa kagandahang-loob ng Joy Lane Research, LLC.
Mga Screenshot
Sa sumusunod, tandaan na:
- Ipinapakita lamang ng Q02 ang hanay ng mga produktong na-check sa Q01 (gamit ang array_filter)
- Ipinapakita rin ng Q02 ang "Another product", ang tekstong inilagay sa field na "Other electronic" sa Q01
- Ipinapakita lamang ng Q04 ang mga produkto mula sa Q02 na na-check (kaya nag-ca-cascade ang filter ng array)
- Ipinapakita lamang ng Q05 ang mga produkto mula sa Q02 na hindi na-check sa Q02 (gamit ang cascaded na array_filter_exclude)


I-download
Mag-click sa sumusunod na link upang i-download ang halimbawa sa itaas: Halimbawang survey na LS2_cascading_array_filter.
Piping/Tailoring Gamit ang Lahat ng Uri ng Tanong at Attribute
Overview
Kung nalilito ka kung paano pangalanan ang iyong mga variable (SGQA vs Qcode), hindi ka nag-iisa. Bagama't inilalarawan ng pangunahing dokumentasyon ang kung paano buuin ang mga pangalan ng Qcode variable, walang tatalo sa makita ito sa isang gumaganang demo. Ipinapakita ng survey na ito kung paano mo maa-access ang mga attribute at sagot ng tanong gamit ang ExpressionScript.
Nilalaman
- Mga halimbawa ng bawat uri ng tanong
- Kasama ang lahat ng uri ng tanong na maaaring gumamit ng "other" para makita mo kung paano nito naaapektuhan ang pagpapangalan ng variable
- Mga default na value para sa lahat ng uri ng tanong na tumatanggap ng default
- Tailoring - Mga ulat na nasa loob at labas ng pahina na nagpapakita ng lahat ng 16 na available na EM dot notation suffix.
- Ipinapakita ng mga ulat na ito ang lahat ng kasalukuyang inilagay na datos (kaya makikita mo kung paano ka makakagawa ng sarili mong napi-print na ulat para sa mga user bilang kapalit ng print-answers screen)
- Wastong pagpapangalan ng Qcode at SGQA sa lahat ng variable
Mga Screenshot
Napakalaki ng survey na ito, kaya pinili naming huwag magsama ng mga screenshot. Sa halip, paki-download ito at subukan.
I-download
Mag-click sa sumusunod na link upang i-download ang survey: LS3_EM_question_attributes.lss
Tradisyonal na pag-validate, muling inisip
Overview
Ipinapakita nito ang lahat ng uri ng pag-validate na gumagamit ng mga expression at kung paano nito naaapektuhan ang bawat uri ng tanong na sumusuporta sa pag-validate. Sa maraming kaso, nakatago ang mga tip sa pag-validate sa simula at lumalabas lamang kapag hindi natugunan ng isang tanong ang pamantayan sa pag-validate (at nawawala rin kapag natugunan na ito ng tanong).
Mga Uri ng Pag-validate na Ipinapakita
- min_num_value_n - minimum na halaga para sa isang sagot
- max_num_value_n - maximum na halaga para sa isang sagot
- min_answers - minimum na bilang ng kinakailangang sagot
- max_answers maximum na bilang ng pinapayagang sagot
- multiflexible_min - minimum na halagang pinapayagan para sa isang sagot (para sa uri ng tanong na multiflexi numbers)
- multiflexible_max - maximum na halagang pinapayagan para sa isang sagot (para sa uri ng tanong na multiflexi numbers)
- min_num_value - minimum na pinapayagang kabuuan ng lahat ng sagot para sa tanong
- max_num_value - maximum na pinapayagang kabuuan ng lahat ng sagot para sa tanong
- equals_num_value - ang kabuuan ng lahat ng sagot para sa tanong ay dapat katumbas ng halagang ito
- validation - ito ang pag-validate gamit ang regular expression para sa tanong - maaari itong ilapat sa mga indibidwal na cell
Mga Screenshot
Gamit ang mga bagong CSS style, may hiwalay na tip na lumalabas para sa bawat uri ng pag-validate. Kung ipinapakita ang mga ito, maaari silang itago sa pamamagitan ng opsyong hide_tip. Ang default na opsyon ay ipakita ang mga ito na may pulang font kung hindi natugunan ng tanong ang pamantayan sa pag-validate, at berde kung natugunan ito:

Hindi maaaring isumite ng isang user ang isang page na may mga error sa pag-validate. Agad siyang babalaan kung maling impormasyon ang nailagay niya:

Maaaring i-apply ang pag-validate sa mga indibidwal na cell sa loob ng isang array, tulad ng sa halimbawang ito kung saan tinitiyak ng mga pag-validate gamit ang regular expression na ang bawat entry ay wastong naka-format na numero ng telepono sa US kasama ang area code.

Download
Para i-download ang halimbawa sa itaas, i-click ang sumusunod na link: LS3_Validation_tests.zip.
Mga Equation sa Pag-validate
Overview
Minsan kailangan mo ng custom na pag-validate na hindi makakamit gamit ang tradisyonal na pamantayang min/max. Para dito, kailangan mong gamitin ang mga opsyong em_validation_q at em_validation_sq na nagbibigay-daan sa iyong bumuo ng masalimuot na mga equation sa pag-validate sa antas ng tanong at subquestion, ayon sa pagkakasunod.
Mga Feature ng EM na Ipinapakita
- em_validation_q - ito ay isang equation na tumutukoy kung balido ang buong tanong
- em_validation_q_tip - ito ang mensaheng ipapakita kung hindi natugunan ng tanong ang pamantayan ng em_validation_q
- em_validation_sq - ito ang equation na tumutukoy kung balido ang bawat subquestion (array cell)
- em_validation_sq_tip - ito ang mensaheng ipapakita kung may hindi balidong subquestion.
Sa pangkalahatan, kapag ginamit ang em_validation_sq, kung may cell na hindi balido, magiging pula ang kulay ng background ng cell na iyon para ipahiwatig na may error.
Mga Screenshot

Tinitiyak ng tanong na ito na inilalagay mo ang mga edad ng iyong mga anak sa pababang pagkakasunod-sunod sa pamamagitan ng pag-apply ng equation sa pag-validate na ito:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4

Sa halimbawa sa ibaba, tinitiyak ng pag-validate na hindi hihigit sa 3 tanong ang masasagot sa alinmang row sa pamamagitan ng pag-apply ng equation sa pag-validate na ito:
(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)
Maaari mo rin itong isulat tulad ng sumusunod, at awtomatikong kino-convert ito ng LimeSurvey habang tumatakbo sa expression na nakalista sa itaas.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)

I-download
Para i-download ang sample na survey na ginamit sa mga halimbawa sa itaas, i-click ang sumusunod na link: ls2_test_em_sq_validation.lss.
Relevance ng subquestion
Overview
Ipinapakita nito kung paano nagkakaugnay ang array_filter at ang mga pamantayan sa pag-validate. Sa mga pag-validate na ina-apply sa mga kabuuan (sum), ang mga relevant (nakikitang) value lamang ang isinasaalang-alang.
Mga Feature ng EM na Ipinakita
Ipinapakita rin nito ang dynamic na pag-uulat ng bilang ng mga tanong na nasagot sa mga pangunahing tanong.
Mga Screenshot
Kapag binago ang bilang ng mga nakikitang row, dynamic ding nagbabago ang kabuuan. Hindi binubura ng pagmamarka sa isang subquestion bilang irrelevant ang value nito. Sa halip, kung irrelevant ito, ang mga value nito ay hindi nakakaambag sa anumang equation.


Pansinin ang nangyayari kapag minarkahan natin ang "Fifth subquestion" para sa unang tanong na "Which rows should appear below". Makikita na ang kabuuan para sa pangalawang tanong na "Enter some numbers" ay 5 na ngayon. Kahit na ang subquestion 5 ng tanong na iyon ay may value pa ring 14 (hal., kapag inalis mo ang marka sa fifth subquestion, makikita mong muli ang value na 14), hindi nakakaambag ang value na iyon sa kabuuan dahil irrelevant ito sa kasalukuyan. Ang lahat ng irrelevant na data ay nabubura (ginagawang NULL sa database) kapag isinumite, ngunit nananatili itong available sa page kung sakaling gustuhin o kailanganin ng mga user na baguhin ang kanilang isip tungkol sa mga sagot.

I-download
Para i-download ang aming halimbawa, i-click dito: ls2_subquestion_relevance.lss.
Paggamit ng Kuwit bilang Radix Separator (Decimal Point)
Overview
Tinitiyak ng ExpressionScript na mga wastong numero lamang ang maipapasok sa mga numeric na field. Kung maglalagay ka ng di-wastong numero, aabisuhan ka na may mali (hal., sa tema na fruity, ang buong tanong ay nagiging pula).
Tandaan na ang mga numeric na value ay laging kino-convert sa paggamit ng tuldok bilang radix separator sa loob ng database. Sa ganitong paraan, gagana nang tama ang mga istatistikal na pagsusuri.
Para baguhin ang radix separator, buksan ang mga opsyon ng Mga text element na matatagpuan sa ilalim ng tab na Mga Setting, at hanapin ang functionality ng decimal mark.
Mga Uri ng Tanong na Gumagamit ng Radix Separator
- Numerical input [N]
- Maraming numerical input [K]
- Array (Numero) [:]
- Array (Text) [;], kapag ginamit ang attribute na numbers_only
- Listahan (Radio) [L], kapag ginamit ang attribute na other_numbers_only
- Maikling free text [S], kapag ginamit ang attribute na numbers_only
- Maraming maikling text [Q], kapag ginamit ang attribute na numbers_only
- Multiple choice [M], kapag ginamit ang attribute na other_numbers_only
- Multiple choice na may komento [P], kapag ginamit ang attribute na other_numbers_only
Mga Screenshot
Mapapansin mo sa mga screenshot sa ibaba na maaaring gamitin ang kuwit bilang radix separator.

I-download
Para i-download ang halimbawa sa itaas, i-click ang sumusunod na link: ls2_comma_as_radix_separator.lss.
Mga Grupo ng Pag-randomize
Overview
Ipinapakita ng survey na ito kung paano gamitin ang attribute na random_group.
Kapag ginamit ang attribute na ito, magiging random ang pagkakasunod-sunod ng mga tanong sa bawat pagsisimula ng survey. Gayunpaman, kapag nasimulan na ang survey, mananatiling hindi nagbabago ang pagkakasunod-sunod ng pag-randomize, kahit magpalit ka ng wika.
Mga Screenshot
Suriin natin nang sabay ang halimbawa sa ibaba. Ang unang random na tanong sa pahina ay maaaring Q1, Q4, o Q7. Ang pangalawang random na tanong sa pahina ay maaaring Q2, Q5, o Q8.

Narito ang pag-randomize na nabuo noong unang beses kong sinubukan ang survey na ito.

Ibang pag-randomize ang nabuo noong pangalawang beses kong sinubukan ang survey.

Ngunit nang magpalit ako sa French (nang hindi nire-restart ang survey), nanatiling buo ang pagkakasunod-sunod ng pag-randomize.

I-download
Para i-download ang halimbawa sa itaas, i-click ang sumusunod na link: Randomization_Group_Test.lss
Magtanong ng Isang Tanong Bawat Grupo nang Random
Overview
Ipinapakita ng survey na ito kung paano mag-configure ng survey para magpakita nang random ng isang tanong bawat grupo. Mayroon itong 5 grupo na may tig-6 na tanong. Sa simula, sa Group 0, may limang nakatagong Equation na tanong na tinatawag na ask1-ask5. Bawat isa ay may value na {floor(rand(1,6.9999))} sa field ng text ng tanong, kaya ang mga variable na ask1-ask5 ay magkakaroon ng value sa pagitan ng 1 at 6. Pagkatapos, ang bawat tanong sa grupo ay may relevance equation na tulad ng "ask1==N" kung saan ang N ay ang Nth na tanong sa grupo (kaya ang ikatlong tanong sa group 1 ay may relevance equation na "ask1==3").
Gumagana nang maayos ang survey na ito sa mga mode na survey-at-a-time, group-by-group, at question-by-question. Dahil itinakda ang pag-randomize sa unang grupo, at ang grupong iyon ay epektibong nakatago (dahil nakatago ang lahat ng tanong na ask1-ask5), nananatiling pareho ang pag-randomize para sa kalahok; ngunit ang bawat kalahok ay magkakaroon ng kakaibang pag-randomize.
Mga Tampok na Ipinapakita
- Equation na uri ng tanong
- Mga function ng pag-randomize
- Conditional (if) function
Mga Screenshot
Ito ang Group0, na gumagamit ng Equation na uri ng tanong para pumili ng mga random na value mula 1 hanggang 6 para sa bawat grupo (maliban sa huling grupo, na may 4 na tanong lamang). Pansinin na ang function na "if()" ay unang sinusuri kung naitakda na ang ask1, at kung oo, gagamitin nito ang value na iyon. Kung hindi pa naitatakda ang value, gagamit ito ng random na value para itakda ang value ng ask1.

Ipinapakita ng Grupong ito kung paano ginagamit ang variable (ask4) mula sa Group0 para kontrolin kung aling tanong ang makikita sa ikaapat na grupo.

I-download
Para i-download ang halimbawang survey sa itaas, mag-click dito: Halimbawang survey ng mga random na tanong sa loob ng isang grupo.
Magtanong nang Random ng Tiyak na Bilang ng Tanong sa Isang Grupo (isang subset ng mga tanong)
Overview
Ipinapakita ng survey na ito kung paano magtanong ng random na subset ng mga tanong sa isang pangkat. Halimbawa, magpakita ng 5 random na tanong mula sa 10 tanong na nasa loob ng isang pangkat.
Ang survey ay may isang pangkat na naglalaman ng 10 tanong. Ang lahat ng tanong ay binigyan ng parehong pangalan ng pangkat sa pag-randomize. Dahil dito, ipapakita ang mga ito sa pasumalang pagkakasunud-sunod kapag nag-load ang page. Bawat tanong ay binibigyan ng relevance equation na nagsasabing ang kabuuan ng "relevanceStatus" ng lahat ng iba pang tanong sa pangkat ay mas mababa sa bilang ng mga tanong na nais mong ipakita. Dahil itinatalaga ang relevanceStatus habang nire-render ang mga tanong, epektibo nitong binibilang ang kabuuan ng mga naunang tanong.
Kaya, sa ating halimbawang 5 mula sa 10, ang equation para sa Q1 ay:
sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Para sa Q2, ito ay:
sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
At iba pa...
Mga Tampok na Ipinakita
Download
Para i-download ang halimbawa sa itaas, i-click ang sumusunod na link: Halimbawang survey na Random 5 mula sa 10.
Pag-rate sa Listahan ng mga Produkto na Inilagay ng User
Overview
Ipinapakita ng halimbawa sa ibaba kung paano mo mahihiling sa mga user na maglista ng mga produktong interesado sila, at pagkatapos ay i-rate ang mga produktong iyon.
Mga Tampok ng ES na Ipinakita
- Pag-tailor ng mga sagot - kapag nagra-rate ng mga produkto, ang mga label ay galing sa comment field ng naunang tanong na multiple choice
- Pag-tailor ng mga scale - maraming advanced na opsyon ng tanong, tulad ng mga heading ng scale, ay maaari ding i-tailor.
Mga Screenshot
Ipinapakita ng larawang ito na dahil produkto 1, 3, at 5 lamang ang napili, ang 3 lamang na iyon ang ipinapakita (gamit ang attribute na array_filter). Bukod dito, ang mga label ng row sa ikalawang tanong ay either ang mga numero ng produkto (kung walang inilagay sa comment field) o ang laman ng mga comment field.

Ipinapakita ng larawang ito kung paano tinutukoy ang mga na-tailor na sagot:

Narito ang Show Logic File para sa tanong na iyon, na nagbibigay-daan sa atin na tiyaking gumagana ang conditional logic ayon sa nais (hal., upang makita kung may mga syntax error):

Ipinapakita ng susunod na larawan ang isang pangkat kung saan tinutukoy mo ang 5-point na rating scale (Mga Opsyon 1-5), ang pamagat ng scale, at ang mga produktong nais mong i-rate. Ipinapakita ng huling tanong na ang bawat bahagi ng array na tanong ay maaaring i-tailor:

Ipinapakita ng susunod na larawan ang view ng logic file ng huling tanong. Tulad ng makikita mo, ang mga subquestion, sagot, at header ng scale ay maaaring i-tailor.

Download
Para i-download ang halimbawang survey mula sa itaas, i-click ang sumusunod na link: Halimbawang survey ng pag-rate sa listahan ng mga produkto na inilagay ng user.