Suriin ang logic ng survey - Advanced
From LimeSurvey Manual
Pangkalahatan
Isang mahalagang opsyon na tumutulong sa iyong gumawa at madaling mapanatili ang mga komplikadong survey ay ang Check Survey Logic.
Sa buong proseso ng pagbuo at pagsubok ng survey, at bago ito i-activate, napakahalagang i-validate ang logic ng survey. Lalo na itong totoo kapag gumagamit ka ng mga komplikadong relevance, tailoring, at validation equation - kailangan mong tiyakin na walang masisira kapag pinatakbo ang survey.
Hinahayaan ka ng feature na ito na mabilis na i-validate ang kawastuhan ng iyong survey, pangkat, at tanong. Maa-access ito mula sa mga opsyon ng top bar menu na nasa ilalim ng mga setting na may kaugnayan sa survey. Makikita ito sa menu na Mga Tool:
Gaya ng makikita sa itaas, maaari mong patakbuhin ang opsyong ito nang apat na beses, para sa bawat wikang ginagamit sa isang survey.
Paglalarawan
Ipinapakita ng opsyong Check Survey Logic ang lahat ng iyong tinukoy para sa bawat tanong at pangkat (hal., pangalan, teksto, tulong, mga kondisyon/relevance, mga panuntunan sa pag-validate, mga default, mga subquestion, mga sagot) sa isang maginhawang anyong talahanayan. Hina-highlight nito ang mga error, at hinahayaan kang i-click ang mga ID ng tanong at pangkat (o mga variable na ginamit sa loob ng mga equation) upang magbukas ng mga bagong tab ng browser para i-edit ang mga tanong o pangkat na iyon. Dahil dito, madaling i-edit ang anumang error at i-refresh ang pahina ng logic check para kumpirmahin ang kawastuhan ng survey bago ito i-activate.
Idinisenyo rin ang display na ito upang madaling basahin ng mga mananaliksik at sponsor ng pag-aaral, upang ma-validate nila ang kawastuhan ng disenyo at logic ng survey. Ina-update ng pagsuri sa logic ng survey ang cache para sa lahat ng expression na ginamit sa isang aktibong survey.
Kasama rito ang mga sumusunod na column:
- # - ipinapakita ang bilang ng pagkakasunod-sunod ng Pangkat at Tanong, simula sa 0.
- Pangalan [ID] - ipinapakita ang code ng tanong para sa pangkat/tanong/subquestion. Magagamit ang mga code na ito bilang mga variable sa loob ng mga expression. Ang ID ay ang ID ng tanong (QID), o ID ng pangkat (GID). Ipinapakita rin ng field na ito ang uri ng tanong (hal., Multiple choice [M])).
- Relevance [Pag-validate] (Pangunahing saysay) - ipinapakita ang sumusunod:
- Relevance - ang syntax-highlighted na relevance equation para sa tanong o pangkat. Kung palaging totoo ito (ipapakita sa anumang sitwasyon), ang value ay magiging 1.
- Pag-validate - awtomatikong bumubuo ang ExpressionScript ng validation equation batay sa mga napiling attribute ng tanong (hal., min/max na bilang ng sagot, min/max/equals na halaga ng kabuuan, min/max na indibidwal na halaga o validation gamit ang regular expression). Ipinapakita ng seksyong ito ang nabuong validation equation para matukoy mo kung may mga error (tulad ng mga undefined variable).
- Ipinapakita ng validation sa antas ng tanong ang equation na kailangan para i-verify ang mga attribute ng tanong na inilarawan sa itaas
- Ipinapakita ng validation sa antas ng subquestion ang equation na kailangan para ipatupad ang array_filter, array_filter_exclude, at exclusive_option
- Default - kung may default na value ang tanong, ipinapakita ito rito, syntax-highlighted (dahil maaaring expression ang default).
- Text [Tulong] (Tip) - ipinapakita ang sumusunod:
- Teksto - ang teksto ng pangkat, tanong, subquestion, o sagot. Syntax-highlighted ito upang ipakita ang anumang naka-embed na tailoring, kaya mabe-verify mo na naideklara mo ang lahat ng variable na plano mong gamitin sa tailoring.
- Tulong - ipinapakita nito ang text ng tulong para sa tanong, syntax-highlighted din.
- Tip - ipinapakita nito ang internal na nabuong validation tip, batay sa mga attribute ng tanong. Ginagamit ang parehong tip na ito sa lahat ng istilo ng survey, pati na rin sa mapi-print na survey at mga screen ng paglalagay ng data.
- Mga attribute ng tanong - ipinapakita nito ang talahanayan ng lahat ng kaugnay na attribute ng tanong na ito. Hina-highlight ang syntax ng mga attribute na maaaring equation para ma-validate mo ang kawastuhan ng mga ito.
Ang mga row ay may kulay tulad ng sumusunod:
- Mga Pangkat - ipinapakita na may mapusyaw na kulay-abong background
- Mga Tanong - ipinapakita na may mapusyaw na berdeng background
- Mga Subquestion - ipinapakita na may maputlang dilaw na background
- Mga sagot - ipinapakita na may payak na puting background
Ang mga sagot ay may karagdagang attribute sa column na Relevance:
- Halaga - ito ang default na internal na value na ginagamit ng mga kalkulasyon. Kung gumagamit ka ng pagtatasa, ito ang magiging value ng pagtatasa. Kung hindi, ito ay kapareho ng pangalan ng sagot.
Paggamit
Sa itaas ng pahina, may mensaheng buod. Kung maayos ang lahat, sasabihin nitong "Walang na-detect na syntax error sa survey na ito", o "Ang pangkat na ito" o "Ang tanong na ito", "mismo, ay walang anumang syntax error". Kung kabaligtaran naman, sasabihin nitong "May syntax error ang X tanong na kailangang itama".
Ang bawat tanong na may syntax error ay magkakaroon ng pulang kulay sa background ng pinakakaliwang column nito (i.e. #). Magpapakita rin ng babala sa ilalim ng column na Pangalan [ID] na nagsasaad ng minimum na bilang ng error ng isang tanong. Karaniwan ang mga sumusunod na error:
- Undefined variable - kung hindi mo nadefine ang lahat ng iyong variable, o nagkamali ka sa pag-type ng array_filter (o magkakaibang set ng mga opsyon sa sagot para sa array_filter), magpapakita ng mga error ang ilan sa iyong mga tanong sa pag-validate. Ipinapakita ang mga undefined variable sa pulang teksto, na may pulang linya sa paligid.
- Maling syntax - habang nagsisimula kang gumamit ng mga relevance equation, maaaring sobra o kulang ang mga panaklong na nagamit mo. Hina-highlight at nilalagyan ng pulang kahon ang mga ganitong problema sa syntax. Kung ilalagay mo ang mouse sa ibabaw ng anumang tekstong may pulang kahon, magpapakita ng tool-tip na naglalarawan sa error.
Mga kulay sa syntax ng ExpressScript
Ang mga kondisyon at equation ay may syntax highlighting para mas madaling maunawaan ang tinitingnan mo:
- Berde / Mapusyaw na asul: Isang variable na tumutukoy sa tanong na nauna sa survey
- Asul: Isang function
- Kulay-abo: Isang string expression
- Kayumanggi: Isang TOKEN expression (data ng kalahok)
- Itim: Operator
Mga dapat suriin:
- Lila: Isang variable na tumutukoy sa tanong na nasa hulihan ng survey. Kadalasan, error ito at kailangang suriin.
- Pula o pulang kahon: Isang hindi umiiral na variable o reference sa naunang tanong o isang syntax error - kadalasang kailangang suriin.
Mga Undefined Variable
Kung may ginamit na mga undefined variable, ang kaukulang pangalan ng variable ay magkakaroon ng pulang kulay at palilibutan ng pulang linya. Kung ilalagay mo ang mouse sa ibabaw ng pangalan ng variable, sasabihin nitong "undefined variable":


}}
Maling syntax
Karamihan sa mga pagkakamali kaugnay ng expression ay dahil sa maling syntax. Kadalasan kasing nakakalimutan ng mga administrator ng survey na maglagay ng curly bracket, hindi nagagamit nang tama ang mga panaklong, o mali ang paggamit nila ng mga expression:


Narito ang maraming magagandang halimbawa ng paggamit ng syntax highlighting.
Maling custom JavaScript
Ihahighlight din sa pagsusuri ng logic ng survey ang mga error sa JavaScript:

Pagpapabilis ng pag-edit at pag-validate
Lahat ng text na may syntax highlighting ay may naka-embed na tooltip, at maaari itong i-click:
- Mga tooltip
- Mga function - kapag itinapat ang mouse, makikita mo ang layunin at depinisyon ng syntax ng function;
- Mga pangalan ng variable - kapag itinapat ang mouse, makikita mo ang posisyon (grupo, pagkakasunod-sunod ng tanong), text ng tanong, at mga pinapayagang sagot para sa tanong.
- Mga aksyon
- Mga pangalan ng variable - kapag kinlik ang pangalan ng variable, magbubukas ng bagong window kung saan maaari mong i-edit ang tanong. Dahil dito, madaling mag-navigate at mag-verify ng logic - ituloy lang ang pagki-click sa mga pangalan ng variable ng relevance o pamantayan ng pag-validate ng tanong para makita kung saan ito nanggaling at paano ito ginagamit.
Mga halimbawa
Ang mga sumusunod na halimbawa ay kinuha mula sa mga sample na survey ng ExpressionScript. Makikita sa page na iyon ang mga screenshot ng mga tumatakbong survey, mga paliwanag, at mga download.
Body Mass Index
Narito ang mga screenshot ng halimbawang ito.
Ito ang view ng pag-reorder ng tanong para sa kalkulasyon ng Body Mass Index. Makikita mo ang mga relevance equation para sa timbang, taas, at BMI sa ilalim ng column na Tanong:

Para sa mas magandang overview ng survey, tingnan ang page ng logic ng survey:

Magandang halimbawa rin ang survey na ito ng mga nested na if() statement para buuin ang "weightstatus".

Cascading logic
Narito ang mga screenshot ng halimbawang ito.
Ipinapakita nito ang logic ng pag-validate ng subquestion na awtomatikong nabubuo kapag ginamit mo ang array_filter at array_filter_exclude. Ipinapakita rin ng halimbawang ito kung paano mo mapapalitan ang naka-tailor na value na "Iba pa" (ang sagot para sa Q02_other ay Q01_other).

Ipinapakita ng Q05 sa halimbawang ito ang sabay na paggamit ng array_filter at array_filter_exclude sa Q01 at Q02, ayon sa pagkakasunod. Ipinapakita ng halimbawang ito ang kakayahan ng cascading array_filter. Tandaan na isa sa mga pangunahing dahilan kung bakit ipinapakita ang pamantayan ng pag-validate sa antas ng tanong at subquestion ay para matiyak na wala kang typo sa pagtukoy ng mga pangalan ng variable ng array_filter o array_filter_exclude (o kung gumagamit ka ng magkakaibang pangalan ng variable para sa listahan ng mga na-filter na subquestion). Kung may ganoong typo, lalabas na pula ang lahat ng di-wastong pangalan ng variable na nagpapahiwatig na hindi sila defined, kaya mabilis mong maaayos ang problema.

Dynamic relevance
Ipinapakita ng halimbawang ito ang dynamic cascading relevance logic para kontrolin kung makikita ang isang tanong. Maaari mong i-download ang halimbawang ito dito.
Tandaan din na ipinapakita lamang ang mga tanong kapag natugunan ang ilang pamantayan sa pag-validate. Halimbawa, kung sinabi ng isang tao na may 2 siyang anak, kailangang sagutan ng respondent ang ilang tanong (kid1 at kid2).

Relevance sa antas ng grupo
Ipinapakita ng halimbawang ito kung paano lumilitaw ang relevance sa antas ng grupo sa logic check. Narito ang mga screenshot ng halimbawang inilalarawan sa ibaba.
Tulad ng makikita ninyo, ang relevance equation sa antas ng grupo (cohabs > 1 && p1_rel != "") ay lumilitaw sa kulay-abong row ng Person 2 para sa G-2.
Mapapansin din ninyo na mandatoryo ang lahat ng tanong. Gayunpaman, kung hindi relevant ang grupo, hindi rin relevant ang lahat ng tanong nito. Dahil dito, mandatoryo lamang talaga ang mga tanong na iyon kung relevant ang grupo.
Mapapansin din ninyo na ang ilang tanong ay ipinapakita lamang kung hindi walang laman ang sagot sa nakaraang tanong. Makikita ninyo sa ibaba na kung hindi napunan ang p2_sex, hindi ipapakita ang p2_name, kahit na ito ay mandatoryong tanong. Hindi rin ipapakita ang mandatoryong tanong na p2_age kung hindi napunan ang p2_name. Ang mga tanong na ito ay maaaring ituring na "conditionally mandatory".
Bukod pa rito, tandaan na awtomatiko ring nalilikha para sa inyo ang mga mensaheng tip. Inaayos ang mga ito ayon sa saklaw ng halaga (min/max), saklaw ng halaga ng kabuuan (min/max/equals), bilang ng mga sagot (min/max), atbp. (depende sa ginamit na uri ng tanong at mga aktibong attribute). Minsan gusto ninyong i-validate ang saklaw ng sagot ngunit ayaw ninyong ipakita sa user ang mga validation tip na maaaring mukhang walang saysay. Sa ganitong mga kaso, maaari ninyong gamitin ang opsyon ng tanong na hide_tip (tulad dito, upang hindi sabihin sa user na ang edad ay dapat nasa pagitan ng 0 at 115 maliban kung susubukan nilang maglagay ng maling halaga - tingnan ang p2_age).

Kuwit bilang radix (decimal) separator
Bagama't ganap na sinusuportahan ng LimeSurvey ang paggamit ng kuwit bilang radix (decimal) separator sa run-time, kailangan pa rin ninyong gumamit ng tuldok bilang radix separator sa design-time (hal., kapag tinutukoy ang min/max na mga halaga sa mga advanced na attribute ng tanong). Ang gumaganang halimbawa ay makikita rito.
Tandaan din na ang logic ng pag-validate ay awtomatikong nalilikha para sa inyo mula sa mga naka-enable na attribute ng tanong. Maaaring mukhang nakakalito ang mga equation, ngunit hindi ninyo kailangang mag-alala tungkol sa mga ito.

