Mga sample na survey ng Expression Manager
From LimeSurvey Manual
Panimula
Ang pinakamainam na paraan para matutunan ang paggamit ng ExpressionScript ay ang paglaro sa 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 para pagandahin ang iyong survey. Makikita ang mga survey na ito sa folder na /docs/demosurveys ng distribution.
Relevance, Tailoring at Equations
Overview
Kinakalkula ng sumusunod na halimbawa ang BMI (Body Mass Index) ng bawat respondent. Tingnan sa ibaba ang mga feature na ipinapakita sa halimbawang ito.
Mga Feature ng EM na Ipinapakita
- Relevance - suporta para sa makapangyarihang conditional logic;
- Piping / Tailoring - nag-aalok ng kakayahang i-pipe o i-tailor ang mga sagot at metadata ng tanong;
- Dynamic Tailoring - pansinin 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
- Equations - isang bagong uri ng tanong na nagbibigay-daan sa iyong gumawa ng mga kalkulasyon at i-store ang mga resulta sa database, kahit nakatago ang kalkulasyon
- Conditional Validation - ang mga pamantayan ng pag-validate, gaya ng minimum na pinapayagang value, 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 para matukoy kung sobra ka sa timbang. Pansinin na sa simula, ang makikita mo lang ay ang apat na mandatoryong tanong:

Kapag naipasok mo na ang iyong impormasyon (at maaari kang pumili kung metric o non-metric na mga unit ang gagamitin), makikita mo ang isang tailored na ulat na nagbubuod ng iyong ipinasok at nagsasabi ng iyong status ng timbang:

Narito ang ibang halimbawa, gamit ang mga non-metric na unit para 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-iimbak 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 ka makakagamit ng mga mathematical at iba pang function sa loob ng mga tailored na ulat. Ganito ang itsura ng pahina bago ka maglagay ng anumang data. May conditional logic para magpakita ng mga blangkong cell kung walang data (o hindi numeric ang data) na naipasok, sa halip na ipakita ang "NaN" o "Divide by Zero".

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

Maraming iba pang halimbawa sa sample na survey na ito. Halimbawa, ipinapakita ng screenshot sa ibaba ang isa sa dose-dosenang paraan para punan ang pahina ng Dynamic Relevance. Gaya ng nakasaad sa text ng tulong, subukan ang iba't ibang edad, at lalo na ang mga hindi lohikal na kombinasyon ng mga sagot para makita ang mga nakakatuwang mensaheng nabubuo sa ibaba. Pansinin din na kung sasabihin mong may higit sa isa kang anak, ang mensahe ay magsasabing "I hope you enjoy playing with your X children", sa halip na "I hope you enjoy playing with your child". Ipinapakita nito kung paano mo madaling ma-micro-tailor ang mga pangungusap para tumugma sa kasarian at/o bilang ng iyong mga subject. Madali mo ring mabubuo ang mga pandiwa at pangngalan batay sa kasarian at bilang.

I-download
Para ma-access ang sample na survey, paki-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 isang "loop" ng mga tanong. Pagkatapos kong likhain ang grupo para sa Person 1, ini-export ko ang grupo. Dahil gumamit ako ng mga pangalan ng variable na qcode gaya ng p1_name sa halip na SGQA code, nagamit ko ang isang text editor para mabilis na i-edit at muling i-import ang grupo nang ilang beses (hal., mga 10 segundo ang kinailangan para i-edit at muling i-import ang bawat paulit-ulit na grupo, tinitiyak na lahat ng variable ay may natatanging pangalan at tama ang logic sa antas ng grupo).
Maaari mo ring gamitin ang feature na Kopyahin ang tanong, ngunit hindi ito kasing bilis ng opsyong iminungkahi sa itaas.
Ipinapakita rin nito kung paano mo mapipigilan na lumabas ang mensaheng Finished hangga't hindi pa talaga tapos ang survey (hal., kapag natapos na ang lahat ng kinakailangang group).
Mga Feature ng EM na Ipinapakita
- Relevance sa antas ng group - Ang mga kasunod na group (Person 1-5) ay lumalabas lamang hanggang sa bilang ng mga kasamang nakatira na tinukoy;
- Tailoring - Ibinubuod ng huling ulat ang demographic data ng bawat kasamang nakatira;
- Progresibong pagpapakita ng tanong - Maging sa group mode o all-in-one mode, lumalabas lamang ang mga susunod na tanong kapag nasagot na ang mga nauna.
Mga Screenshot
Gumagawa ang survey ng naka-tailor na ulat na nagpapakita ng demograpiko ng tinukoy na bilang ng mga kasamang nakatira:

Kung lilipat 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 sinagot natin ng "Mary", ang susunod na tanong ay "How old is Mary"?

I-download
Para 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, 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 (sa pamamagitan ng paggamit ng 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 nagka-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 para 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 ng tanong at mga sagot gamit ang ExpressionScript.
Nilalaman
- Mga halimbawa ng bawat uri ng tanong
- Kasama ang lahat ng uri ng tanong na maaaring gumamit ng "other" upang 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 pahina at wala sa pahina na nagpapakita ng lahat ng 16 na available na EM dot notation suffix.
- Ipinapakita ng mga ulat na ito ang lahat ng kasalukuyang nailagay na data (kaya ipinapakita nito kung paano ka makakabuo 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 para 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 pagkakataon, nakatago sa simula ang mga tip sa pag-validate at lumilitaw lamang kapag hindi natugunan ng isang tanong ang pamantayan sa pag-validate (at mawawala rin muli 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 sa tanong
- max_num_value - maximum na pinapayagang kabuuan ng lahat ng sagot sa tanong
- equals_num_value - ang kabuuan ng lahat ng sagot sa tanong ay dapat katumbas ng halagang ito
- validation - ito ang pag-validate gamit ang regular expression para sa tanong - maaari itong i-apply sa mga indibidwal na cell
Mga Screenshot
Gamit ang mga bagong CSS style, may hiwalay na tip na lumilitaw para sa bawat uri ng pag-validate. Kung ipinapakita ang mga ito, maaari silang itago gamit ang 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 user ang isang pahina na may mga error sa pag-validate. Agad siyang bibigyan ng babala kung mali ang naipasok niyang impormasyon:

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 isang wastong format na numero ng telepono sa US kasama ang area code.

I-download
Upang 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, kakailanganin 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 pagkakabanggit.
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 (cell ng array)
- em_validation_sq_tip - ito ang mensaheng ipapakita kung hindi balido ang alinman sa mga subquestion.
Sa pangkalahatan, kapag ginamit ang em_validation_sq, kung hindi balido ang alinmang cell, nagiging pula ang kulay ng background ng cell na iyon upang ipahiwatig na may error.
Mga Screenshot

Tinitiyak ng tanong na ito na ipinapasok mo ang mga edad ng iyong mga anak nang pababa ang pagkakaayos 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 sa run-time sa expression na nakalista sa itaas.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)

I-download
Upang 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 para sa mga kabuuan (sum), tanging ang mga relevant (nakikitang) value lamang ang isinasaalang-alang.
Mga Feature ng EM na Ipinapakita
Ipinapakita rin nito ang dynamic na pag-uulat ng bilang ng mga tanong na nasagot sa mga pangunahing tanong.
Mga Screenshot
Ang pagbabago sa bilang ng mga nakikitang row ay dynamic na nagpapabago sa kabuuan. Ang pagmarka sa isang subquestion bilang irrelevant ay hindi nagbubura ng value nito. Sa halip, kung ito ay irrelevant, hindi nag-aambag ang mga value nito sa anumang equation.


Pansinin ang nangyayari kapag minarkahan natin ang "Fifth subquestion" sa unang tanong na "Which rows should appear below". Pansinin 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., kung aalisin mo ang marka sa fifth subquestion, makikita mo muli ang value na 14), hindi nag-aambag ang value na iyon sa kabuuan dahil irrelevant ito sa ngayon. Lahat ng irrelevant na data ay binubura (ginagawang NULL sa database) kapag isinumite, ngunit nananatili itong available sa pahina kung sakaling gustuhin o kailanganin ng mga user na baguhin ang kanilang mga sagot.

I-download
Upang i-download ang aming halimbawa, mag-click dito: ls2_subquestion_relevance.lss.
Paggamit ng Kuwit bilang Radix Separator (Decimal Point)
Overview
Tinitiyak ng ExpressionScript na mga valid na numero lamang ang maaaring ilagay sa mga numeric field. Kung maglalagay ka ng hindi valid na numero, bibigyan ka ng babala na may mali (hal., sa kaso ng fruity na tema, ang buong tanong ay nagiging pula).
Tandaan na ang mga numeric value ay palaging kino-convert sa paggamit ng tuldok bilang radix separator sa loob ng database. Sa ganitong paraan, gagana nang tama ang mga estadistikang pagsusuri.
Upang baguhin ang radix separator, buksan ang mga opsyon ng Mga text element na matatagpuan sa 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
Upang 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 mo ng survey. Gayunpaman, kapag nasimulan na ang survey, mananatiling nakapirmi 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 lumipat ako sa French (nang hindi ni-restart ang survey), nanatiling buo ang pagkakasunod-sunod ng pag-randomize.

Download
Para i-download ang halimbawa sa itaas, i-click ang sumusunod na link: Randomization_Group_Test.lss
Random na Magtanong ng Isang Tanong Kada Grupo
Overview
Ipinapakita ng survey na ito kung paano i-configure ang isang survey para magpakita nang random ng isang tanong kada grupo. Mayroon itong 5 grupo na may tig-6 na tanong. Sa simula, sa Group 0, may limang nakatagong tanong na Equation, 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 na nasa pagitan ng 1 at 6. Pagkatapos, ang bawat tanong sa grupo ay may relevance equation na gaya 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 buong survey nang sabay, kada pangkat, at isang tanong bawat pagkakataon. 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 respondent; ngunit bawat respondent ay magkakaroon ng kakaibang pag-randomize.
Mga Tampok na Ipinakita
- Uri ng tanong na Equation
- Mga function sa pag-randomize
- Conditional (if) function
Mga Screenshot
Ito ang Group0, na gumagamit ng uri ng tanong na Equation 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 unang sinusuri ng function na "if()" 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.

Download
Para i-download ang halimbawang survey sa itaas, mag-click dito: Halimbawang survey ng mga random na tanong sa loob ng isang grupo.
Random na Magtanong ng Tiyak na Bilang ng mga 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. Lahat ng tanong ay binigyan ng parehong pangalan ng pangkat sa pag-randomize. Dahil dito, ipapakita ang mga ito sa pasumalang pagkakasunud-sunod sa pag-load ng page. Bawat tanong ay may relevance equation na 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 Feature na Ipinakita
I-download
Upang i-download ang halimbawa sa itaas, i-click ang sumusunod na link: Halimbawang survey na Random 5 out of 10.
Pag-rate sa Listahan ng mga Produkto na Inilagay ng User
Overview
Ipinapakita ng halimbawa sa ibaba kung paano mo mapapalista sa mga user ang isang hanay ng mga produktong interesado sila, at pagkatapos ay ipa-rate ang mga produktong iyon.
Mga Feature ng EM na Ipinakita
- Tailoring ng mga sagot - kapag nire-rate ang mga produkto, ang mga label ay galing sa comment field ng naunang tanong na multiple choice
- Tailoring 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 kahit produkto 1, 3, at 5 lamang ang napili, ang 3 lamang na iyon ang ipinapakita (gamit ang attribute na array_filter). Bukod pa rito, ang mga label ng row sa ikalawang tanong ay maaaring ang mga numero ng produkto (kung walang inilagay sa comment field) o ang nilalaman 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 ayon sa nais ang conditional logic (hal., upang tingnan kung may mga syntax error):

Ipinapakita ng susunod na larawan ang isang pangkat kung saan tinutukoy mo ang 5-puntos 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 tanong na array ay maaaring i-tailor:

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

I-download
Upang 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.