x

Үндсэн бүлгүүд

  1. LimeSurvey Cloud ба LimeSurvey CE-ийн харьцуулалт
  2. Хурдан эхлэх гарын авлага - LimeSurvey 3.0+
  3. Суулгалт - LimeSurvey CE
  4. Сайн судалгааг хэрхэн зохиох вэ (гарын авлага)
  5. Эхлэх нь
  6. LimeSurvey-г удирдах
  7. Судалгаа - танилцуулга
  8. Судалгааны тохируулга
  9. Судалгааны цэс
  10. Судалгааны бүтэц
  11. Асуултууд - танилцуулга
  12. Асуултын бүлэг - танилцуулга
  13. Судалгаа - удирдлага
  14. Судалгааны хэрэгслийн самбарын сонголтууд
  15. Олон хэлтэй судалгаа
  16. ExpressionScript Engine - Хурдан эхлэх гарын авлага
  17. Ангилагдаагүй болон нарийвчилсан боломжууд
  18. Түгээмэл асуултууд
  19. Алдаа засварлах
  20. Түр шийдлүүд
  21. Лиценз
  22. Хувилбарын өөрчлөлтүүдийн жагсаалт
  23. Плагинууд
 Actions

Expression Manager

From LimeSurvey Manual

Энэ хуудсыг машинаар орчуулсан байж магадгүй тул алдаа агуулж болзошгүй. Англи эх хувийг харах · Энэ орчуулгыг сайжруулах
This page is a translated version of the page Expression Manager and the translation is 100% complete.

Хурдан эхлэх заавар

Тойм

Судалгаагаа өөрчлөн тохируулахдаа дараахыг тодорхойлох арга хэрэгтэй болдог:

  1. Навигаци/Салаалалт - оролцогчийн хариултаар асуултуудыг асуух дарааллыг өөрчлөх
  2. Тохируулга/Piping - асуултыг хэрхэн томъёолох (жишээ нь өмнөх хариултуудыг дурдах, эсвэл оролцогчдын тоо эсвэл хүйсээс хамааран өгүүлбэрийг хувирган бичих), мөн өөрчлөн тохируулсан тайлан гаргах (жишээ нь үнэлгээний оноо эсвэл тусгайлан тохируулсан зөвлөгөө).
  3. Баталгаажуулалт - хариултууд тодорхой шалгуурыг, тухайлбал хамгийн бага ба хамгийн их утга эсвэл оруулах хэлбэрийн загварыг хангаж байгаа эсэхийг шалгах

Expression Manager (EM) нь эдгээр боломж бүрийн логикийг тодорхойлох ойлгомжтой аргыг өгдөг. Стандарт математик тэгшитгэл хэлбэрээр бичиж болох бараг бүх зүйл, тэр ч байтугай функц дуудаж байсан ч хүчинтэй илэрхийлэл болно. EM одоогоор 80 функцийг дэмждэг бөгөөд нэмж өргөтгөхөд хялбар. Мөн хувьсагчдаа SGQA нэрийн оронд хүнд ойлгомжтой нэрээр ашиглах боломжийг олгодог.

Дараах хэсгүүдэд Expression Manager-ийг голчлон хаана ашигладгийг үзүүлнэ

Холбогдох байдал (Навигаци/Салаалалтыг удирдах)

Зарим судалгаа "Goto Logic" ашигладаг, жишээ нь 1-р асуултад С сонголтоор хариулбал 5-р асуулт руу үсрэх. Энэ арга нь баталгаажуулахад хэцүү, асуултын дарааллыг өөрчлөхөд амархан эвдэрдэг тул маш хязгаарлагдмал. EM нь асуулт хүчинтэй байж болох бүх нөхцлийг тодорхойлохдоо Boolean холбогдох тэгшитгэл ашигладаг. Асуулт холбогдох бол харуулна, үгүй бол Not Applicable болж, мэдээллийн санд NULL утга хадгалагдана. Энэ нь Conditions editor-оор хийж болох зүйлтэй төстэй боловч EM нь илүү нарийн төвөгтэй, хүчирхэг шалгуурыг (мөн SGQA нэрийн оронд хувьсагчийн нэрийг ашиглан) хялбар тодорхойлох боломжийг олгодог.

Энэ зураг судалгааны холбогдох байдлын логикийг хянах нэг аргыг харуулж байна. Энэ нь биеийн жингийн индексийг (BMI) тооцоолдог. Холбогдох тэгшитгэл нь хувьсагчийн нэрийн (ногоон өнгөтэй) дараа дөрвөлжин хаалтанд харагдана. Иймд weight, weight_units, height, height_units-ийн холбогдох байдал бүгд 1 буюу эдгээр асуултыг үргэлж асууна гэсэн үг. Харин BMI-ийн холбогдох байдал нь {!is_empty(height) and !is_empty(weight)} бөгөөд энэ нь оролцогч өндөр, жин хоёулангийнх нь утгыг оруулсан тохиолдолд л BMI тооцоологдохыг (ингэснээр тэг рүү хуваах алдаанаас сэргийлнэ) илтгэнэ. Мөн Report асуулт нь оролцогч гол дөрвөн асуултад (height, height_units, weight, weight_units) бүгдэд нь хариулсан тохиолдолд л харагдана.

Холбогдох байдлыг дараах газруудад харж, засварлах боломжтой:

Асуултын түвшний холбогдох байдлыг харах / засах

Энэ тэгшитгэл нь биеийн жингийн индексийг (BMI) тооцоолно. Хүн эхлээд өндөр, жингээ оруулсан тохиолдолд л асуугдана.

Энэ нь BMI асуултын засварлах дэлгэц юм.

Холбогдох тэгшитгэл оруулахдаа долгион хаалт ашиглахгүй гэдгийг анхаарна уу.

Бүлгийн түвшний холбогдох байдлыг харах / засах

Энэ бол хүн амын тооллогын судалгааны жишээ юм. Эхний хуудас таныг хамт амьдардаг хүмүүсийн тоог асууж, "cohabs" хувьсагчид хадгалдаг. Энэ хуудас нь хамт амьдрагч нэгээс олон байвал (тиймээс хоёр дахь хамт амьдрагчид харагдана), мөн Нэгдүгээр хүн тантай ямар холбоотойг (p1_rel) заасан тохиолдолд л харагдана.

Таны харж байгаагаар бүлэг нь асуултын түвшний холбогдох шалгууртай байгаа бөгөөд асуулт бүр өмнөх асуултад нь хариулсны дараа л гарч ирнэ (жишээ нь {!is_empty(p1_sex)}). EM нь бүлэг болон асуултын түвшний холбогдох байдлыг таны өмнөөс нэгтгэнэ. Бүлгийн асуултуудыг бүлэг бүхэлдээ холбогдох үед л асууна. Дараа нь бүлэг доторх холбогдох асуултуудын дэд олонлогийг л асууна.

Энэ асуултын бүлгийн түвшний холбогдох байдлыг засах дэлгэц энд байна:

Холбогдох тэгшитгэл оруулахдаа долгион хаалт ашиглахгүй гэдгийг анхаарна уу.

Тохируулга/Piping

EM нь асуултуудаа энгийн болон нарийн төвөгтэй нөхцөлт байдлаар тохируулах боломжийг хялбар олгодог. Заримдаа "Та [Бүтээгдэхүүн] худалдаж авсан гэж хэлсэн. Түүний хамгийн их таалагдсан зүйл юу вэ?" гэх мэт энгийн орлуулалт хангалттай. Заримдаа "[Ноён/Хатагтай] [Овог], та манай судалгааг бөглөхийг зөвшөөрөх үү?" гэх мэт нөхцөлт орлуулалт хэрэгтэй. Энэ тохиолдолд хүний хүйсээс хамааран ноён эсвэл хатагтай гэж хэрэглэхийг хүснэ. Бусад үед (жишээ нь математик тооцооллоос хамаарсан) бүр ч төвөгтэй орлуулалт хэрэгтэй болно. EM нь тохируулга/piping-ийн эдгээр бүх төрлийг дэмждэг.

Нөхцөлт тэгшитгэлүүд

Биеийн жингийн индексийн жишээ нь хүнд өндөр, жингээ метрийн эсвэл метрийн бус нэгжээр оруулахыг зөвшөөрөхийн зэрэгцээ түүний BMI-г тооцоолох боломжийг харуулж байна.

Энд weight_kg нь {if(weight_units == 'kg', weight, weight * .453592)} байна. Энэ if() функц нь хэрэв оролцогч жинг килограммаар оруулсан бол тэр утгыг ашиглаж, үгүй бол оруулсан утгыг (фунтаар байсан) .453592-оор үржүүлж килограмм руу хөрвүүлнэ гэсэн үг юм. height_m хувьсагч нь өндрийг инчээр оруулсан байсан ч хүний өндрийг метрээр тооцоолохдоо ижил аргыг ашиглана.

BMI нь жингийн томьёог {weight_kg / (height_m * height_m)} гэж тооцоолно.

Эцэст нь тайлан нь оролцогчид зориулсан мессежийг нөхцөлөөр тохируулж, түүний юу оруулсныг хэлнэ. ("Та 2 метр өндөр, 70 кг жинтэй гэж хэлсэн.")

Дээрх зурагт сайн харагдахгүй байгаа ч weight_status нь хүнийг жингийн дутагдалтайгаас хүнд таргалалттай хүртэл ангилахдаа үүрлэсэн if() илэрхийллүүдийг ашигладаг. Түүний тэгшитгэлийг Show Logic View-д харж болно.

Энэ асуултын засах цонхноос хоёр зүйлийг харж болно:

  1. Тохируулга хийхдээ илэрхийллүүдийг долгион хаалтаар (Curly Braces) хүрээлэх ёстой
  2. Илэрхийллүүд олон мөрөнд задарч болно. Энэ тохиолдолд үүрлэсэн нөхцөлт логикийг илүү хялбар унших зорилгоор ингэсэн.

Тохируулсан асуултууд, хариултууд болон тайлангууд

Анхаарна уу: Хариултын сонголтууд нэг асуултын хуудсан дээр сонгох хайрцагт (select box) байвал динамик тохируулга ажиллахгүй байж болно. Учир нь тохируулга нь сонголтуудын дотор хүчинтэй биш <span> шошгыг оруулдаг.

Энэ жишээ нь BMI тайланг харуулж байна.

Энэ нь тухайн асуултын засах цонх юм.

Таны харж байгаагаар долгион хаалтан доторх бүх зүйл илэрхийлэл гэж тооцогддог тул өмнөх зурагт синтаксийн өнгөөр ялгагдсан (өнгөөр кодлогдсон) байна. Хэрэв үсгийн алдаа (жишээ нь буруу бичсэн эсвэл тодорхойлогдоогүй хувьсагч, функцийн нэр) байвал EM энэ мэт алдааг харуулна. Энд height_unit нь тодорхойлогдоогүй хувьсагчийн нэр (үнэндээ height_units байх ёстой), rnd() нь тодорхойлогдоогүй функц (зөв нэр нь round()) байгааг харуулж байна. Хоёр тохиолдолд алдааг олж засахад хялбар болгохын тулд улаан хүрээгээр тэмдэглэсэн байна.

Мөн оруулсан утгуудын хүснэгт эсвэл тохируулсан зөвлөгөө гэх мэт нарийн төвөгтэй тайланг хурдан үүсгэж болохыг харж болно.

Бүх тохируулга нь илэрхийллүүдийг долгион хаалтаар (Curly Braces) хүрээлэх ёстой гэдгийг санаарай. Ингэснээр LimeSurvey асуултын аль хэсэг нь энгийн текст, аль хэсгийг Expression Manager-ээр боловсруулахыг мэдэх болно.

Баталгаажуулалт

EM нь ихэнх нарийвчилсан асуултын сонголтууд хэрхэн ажиллахыг удирддаг. Эдгээр нь хариултын хамгийн бага/дээд тоо; хамгийн бага/дээд бие даасан утга; хамгийн бага/дээд нийлбэр утга; мөн оруулсан утгууд тодорхой тэмдэгт мөрийн хэв маягт таарч байгаа эсэхийг шалгах зэрэг зүйлийг хянадаг. Та эдгээр нарийвчилсан асуултын сонголтуудыг ердийнхөөрөө үргэлжлүүлэн оруулна. Гэхдээ одоо эдгээр талбар дахь аливаа утга илэрхийлэл гэж тооцогддог тул бусад асуулттай нарийн төвөгтэй нөхцөлт хамааралтай хамгийн бага/дээд шалгуурыг тавьж болно.

Эдгээр бүх тохиолдолд нарийвчилсан асуултын сонголт нь үргэлж илэрхийлэл гэж тооцогддог тул үүнийг зааж өгөхдөө долгион хаалт ашиглахгүй.

Жишээ судалгаанууд хуудсанд баталгаажуулалтад илэрхийлэл ашигласан олон ажиллаж буй жишээг харуулсан байна.

Танилцуулга

LimeSurvey нь шинэ Expression Manager (EM) модулийг ашигладаг бөгөөд энэ нь LimeSurvey-д илүү нарийн төвөгтэй салаалалт, үнэлгээ, баталгаажуулалт болон тохируулгыг дэмжих боломжийг олгоно. Энэ нь LimeSurvey-н Replacements, Conditions болон Assessments-ыг арын хэсэгт удирдах аргыг орлоно. Мөн ажиллах үеийн ихэнх мэдээллийн сангийн уншилтыг арилгадаг тул боловсруулалтыг ихээхэн хурдасгана. EM-ийг доктор Томас Уайт (TMSWhite) хөгжүүлсэн.

Энэ вики хуудас нь Expression Manager-ийн синтакс болон функциональ байдлын эцсийн лавлах юм.

Үндсэн тодорхойлолтууд

  1. Илэрхийлэл: Долгион хаалтаар хүрээлэгдсэн аливаа зүйл
    • Нээх хаалтын шууд ард эсвэл хаах долгион хаалтын өмнө хоосон зай байхгүй байх тохиолдолд
    • Илэрхийллийн агуулгыг EM үнэлдэг тул тэдгээр нь математик томьёо, функц, мөн нарийн төвөгтэй тэмдэгт мөр болон огноог боловсруулалт агуулж болно.
  2. Тохируулга: Заримдаа "piping" гэж нэрлэдэг бөгөөд текстийг нөхцөлтэйгээр өөрчлөх үйл явц юм
    • Та бүх 'replacement fields', оролцогчийн мэдээлэл болон хариултын өгөгдөлд хандах боломжтой.
    • Мөн асуулт, хариулт болон тэдгээрийн шинж чанарт илүү хялбар хандана.
  3. Холбогдох тэгшитгэл (Relevance Equation): Асуултын харагдацыг удирдах шинэ асуултын шинж чанар
    • Хэрэв холбогдох тэгшитгэл байвал асуулт зөвхөн тэр үнэн гэж үнэлэгдсэн тохиолдолд л харагдана.
    • Дотооддоо бүх array_filter болон array_filter_exclude командууд дэд асуултын түвшний ач холбогдол (relevance) болно
  4. Тэгшитгэл (Equation) асуултын төрөл: Тооцоолол эсвэл тайланг мэдээллийн санд хадгалдаг шинэ асуултын төрөл
    • Энэ нь Boilerplate асуулттай адил боловч "Энэ асуултийг нуу" гэж тохируулсан байсан ч агуулгыг нь мэдээллийн санд хадгалдаг
  5. Асуултын код: Энэ нь EM-д зориулсан тохиромжтой хувьсагчийн нэр юм
    • Энэ нь асуултын зорилгыг заасан тайлбарлах нэр байж болох бөгөөд нарийн төвөгтэй логикийг унших нь хялбар болно
    • Хүчинтэй асуултын код нь тоогоор эхлэх ЁСГҮЙ тул асуултын кодыг асуултуудаа дугаарлахад ашиглахдаа "q1", "q1a" эсвэл "g1q2" гэж ашиглахад хангалттай.
    • Хэрэв та өгөгдлийг SPSS эсвэл R руу экспортлох бол яг энэ нь хувьсагчийн нэр болдог тул статистик шинжилгээ хийдэг бол та үүнийг аль хэдийн давтагдашгүй болгосон байх магадлалтай.

Би EM ашиглах ёстой юу?

Товч хариулт нь үгүй (гэхдээ бас тийм).

EM нь одоо байгаа судалгаануудтай бүрэн ухараан нийцтэй. Тиймээс хэрэв та LimeSurvey-н <= 1.91+ хувилбаруудад ашиглаж байсан хэв маягаар Conditions болон Assessments-ыг ашиглахдаа сэтгэл хангалуун байвал үргэлжлүүлэн ашиглаж болно.

Гэхдээ EM нь LimeSurvey дотооддоо Conditions-тэй хэрхэн харьцахыг бүрэн сольдог. Та Conditions Editor-ыг ашиглан нөхцөл үүсгэж, удирдсаар байж болох ч LimeSurvey 1.92 тэдгээрийг ижил төстэй холбогдох тэгшитгэл болгон хөрвүүлнэ. Шинэчлэлтийн нэг хэсэг болгон LimeSurvey 1.92 одоо байгаа бүх Conditions-ыг холбогдох тэгшитгэл болгон автоматаар хөрвүүлнэ.

Энэ нь танд хоёр талын давуу талыг өгөх ёстой - та LimeSurvey-г урьдын адил үргэлжлүүлэн ашиглаж болох ч холбогдох тэгшитгэлийн ижил хувилбарыг харах тул тохиромжтой гэж үзсэн үедээ холбогдох тэгшитгэл рүү шууд аажмаар шилжиж болно.

Би Нөхцөл болон Холбогдох байдлыг хольж ашиглаж болох уу?

Тийм. Зарим асуултад Нөхцөлийн засварлагчийг, бусад асуултад Холбогдох байдлын засварлагчийг ашиглаж болно. Асуултыг хадгалахад Нөхцөлүүд автоматаар Холбогдох байдал руу хөрвөнө.

Анхаарна уу, хэрэв та Нөхцөлийн засварлагчийг ашиглаж байгаа бол тэдгээр Нөхцөл нь гараар оруулсан Холбогдох тэгшитгэлийг дарж бичихийг хүссэн гэж бид үздэг. Иймээс одоо байгаа Нөхцөлүүдтэй байхад Холбогдох байдлыг гараар засахыг хүсвэл эхлээд тухайн асуултын Нөхцөлүүдийг устгана уу. Тодруулбал, үүссэн холбогдох тэгшитгэлийг текст засварлагч руу хуулж, Нөхцөл цэсийг ашиглан тухайн асуултын бүх нөхцөлийг устгаад (энэ нь холбогдох байдлыг мөн устгана), дараа нь асуултыг засаж, үүссэн холбогдох тэгшитгэлийг текст засварлагчаас тухайн асуултын холбогдох байдлын талбарт буцааж буулгана (мөн асуултыг хадгална). Хэрэв үүссэн холбогдох тэгшитгэлийг устгахгүйгээр нөхцөлүүдийг устгах хэрэгцээ хангалттай их байвал бид бөөнөөр хөрвүүлэх процесс нэмж болно.

Нөхцөл болон Холбогдох байдлын аль алийг нь сонгох ёстой вэ?

Хэв маяг тус бүрийн давуу болон сул талуудын жагсаалтыг доор үзүүлэв:

Хэв маяг Давуу тал Сул тал
Нөхцөл 1. Энгийн нөхцөл үүсгэх тохиромжтой GUI
2. GUI нь сайн баримтжсан бөгөөд дэмжлэгийн баг сайн ойлгодог
1. Зөвхөн энгийн харьцуулалтыг дэмждэг бөгөөд AND/OR нөхцөлийг сайн дэмждэггүй
2. Каскад нөхцөл тогтворгүй ажилладаг
3. Удаан - мэдээллийн санг их ачаалдаг тул урт судалгааг удаашруулж болно
4. Нөхцөлийг дахин ачаалахад зарим асуудал мэдээлэгдсэн
5. Олон арван, олон зуун, эсвэл олон мянган асуулт байх үед GUI сайн өргөжихгүй
6. SGQA нэр ашиглах шаардлагатай тул цаасан судалгааг хөрвүүлэхэд удаан байж болно
7. Нарийн төвөгтэй салаалалтад шаардлагатай логикийг өөрөө кодлоход ихэвчлэн программист хэрэгтэй
Холбогдох байдал 1. 80 гаруй функц болон математик/тэмдэгт мөрийн оператор зэрэг маш нарийн төвөгтэй логикийг дэмждэг
2. Каскад логикийг төгс дэмждэг
3. Хурдан - мэдээллийн сан руу нэмэлт дуудлага хийхгүй тул 1000 гаруй асуулттай судалгааг дэмждэг
4. SGQA код шаардахгүй тул логикийг дахин ачаалахад асуудалгүй
5. Синтаксийн ялгалт 1000 гаруй асуулттай судалгаанд хүртэл тохирно
6. Одоо байгаа цаасан судалгаагаа компьютержүүлэхийг хүссэн баг ашиглахад хялбар бөгөөд хурдан
7. Хагас бүтэцтэй ярилцлага болон эпидемиологийн судалгааг программистгүйгээр хялбархан дэмждэг
1. Энгийн нөхцөлд зориулсан GUI байхгүй - оронд нь синтаксийн ялгалтыг ашиглана уу
2. Шинэ тул дэмжлэгийн багууд EM-ийг хараахан эзэмшээгүй байна.

Дүгнэхэд, хэрэв та LimeSurvey 1.91+ хувилбарын ажиллагаанд сэтгэл хангалуун байгаа бол хийж буй зүйлээ өөрчлөх шалтгаан байхгүй.

EM ашиглах бусад ямар давуу талууд байдаг вэ?

EM ашиглахыг хүсэх бусад шалтгаануудыг доор үзүүлэв.

  1. Тооцоолол - боломжтой аливаа тооцооллыг үүсгэж болно:
    • Бүх түгээмэл математик оператор болон функцийг ашиглах боломжтой
    • 70 гаруй математик, огноо болон тэмдэгт мөр боловсруулах функцийг ашиглах боломжтой
    • Хэрэглэгчдэд хэрэгтэй бол хөгжүүлэгчид шинэ функц нэмэхэд нэлээд хялбар
  2. Тооцооллыг мэдээллийн санд хадгалах
    • Одоо энгийн болон нарийн тооцоолол ба/эсвэл шкалын оноог тооцоолж, JavaScript шаардлагагүйгээр мэдээллийн санд хадгалах боломжтой.
    • Үүнд Тэгшитгэл асуултын төрлийг ашиглана.
  3. Үнэлгээ
    • Одоо өмнө нь дэмжигддэг байсан дэд олонлогоор хязгаарлагдалгүй, аливаа асуултын төрлөөс үнэлгээ эсвэл шкалын оноо үүсгэх боломжтой
    • Тохиромжтой хаана ч, тэр байтугай нэг хуудсан дээр ч гэсэн, ажиллаж буй эсвэл нийт үнэлгээний оноог харуулахын тулд Тайлбарлалтыг ашиглаж болно
    • Эдгээр үнэлгээний оноонд үндэслэн үүсгэсэн тайлангуудыг илүү сайн удирдах боломжтой
    • Үнэлгээний оноог JavaScript шаардлагагүйгээр мэдээллийн санд хадгалах боломжтой
    • Үнэлгээний оноог JavaScript эсвэл CSS шаардлагагүйгээр нуух боломжтой
  4. Орлуулах талбарууд
    • Өмнөх асуултуудын хариултын утгыг оруулахын тулд асуултын кодыг ашиглана - энэ нь унших болон баталгаажуулахад хялбар болгодог.
  5. Тайлбарлалт - бусад утгад тулгуурлан текстийг нөхцөлтэйгээр харуулах боломжтой
    • Сэдвийн зохистой хаягийг ашиглана, жишээ нь (ж.нь "Сайн байна уу [Ноён/Хатагтай] Смит")
    • Нэг/олны тоо чухал үед дүрмийн хувьд зөв өгүүлбэр гаргана: (ж.нь "Танд 1 хүүхэд байна" ба "Танд 2 хүүхэд байна")
    • Сэдвийн хүйс болон тооноос хамааран үйл үгийг тохиромжтой хувиргаж, нэр үгийг тохиромжтой тийн ялгалаар хувиргана.
  6. Хувьсагчийн шинэ шинж чанарууд - тайлбарлалт хийхдээ дараахийг ашиглах боломжтой:
    • (дагавар байхгүй) - qcode.code-ийн нэр
    • .code - асуулт холбогдох бол асуултын сонгосон хариултын код (эс бөгөөс хоосон), эсвэл кодтой асуулт биш бол текстийн утга
    • .NAOK - .code-той адил боловч холбогдохгүй байсан ч тооцоолол эсвэл жагсаалтын хэсэг байж болно
    • .value - асуулт холбогдох бол асуултын үнэлгээний утга (эс бөгөөс хоосон), эсвэл кодтой асуулт биш бол текстийн утга -- судалгаанд үнэлгээ идэвхжсэн бол боломжтой, эс бөгөөс үргэлж тэг
    • .valueNAOK - .value-тэй адил боловч холбогдохгүй байсан ч тооцоолол эсвэл жагсаалтын хэсэг байж болно
    • .shown - хэрэглэгчид харагдаж буй хариулт
    • .qid - асуултын ID
    • .gid - бүлгийн ID
    • .sgqa - асуултын SGQA утга
    • .jsName - энэ хуудас эсвэл өөр хуудсанд тодорхойлогдсон эсэхээс үл хамааран асуултын зөв javascript хувьсагчийн нэр
    • .qseq - асуултын дараалал (0-ээс эхлэн)
    • .gseq - бүлгийн дараалал (0-ээс эхлэн)
    • .mandatory - асуулт заавал эсэх (Y/N)
    • .question - асуултын текст
    • .relevance - асуултын холбогдох тэгшитгэл
    • .grelevance - бүлгийн холбогдох тэгшитгэл
    • .relevanceStatus - асуулт одоогоор холбогдох эсэх (boolean (PHP болон JS-д өөр байж болно))
    • .type - асуултын төрөл (нэг тэмдэгт код)
  7. Хуудсан дээрх динамик өөрчлөлтүүд
    • Бүх Холбогдох байдал, Тооцоолол болон Тайлбарлалт хуудсан дээр динамикаар ажилладаг - тиймээс утгын өөрчлөлт хуудсыг шууд шинэчилнэ
    • Иймд асуултууд холбогдох эсэхээс хамааран динамикаар гарч ирэх/алга болно
    • Асуултууд мөн хуудсан дээрх хариултад тулгуурлан динамикаар тайлбарлагдах тул ажиллаж буй нийлбэр, тайлбарласан өгүүлбэр болон өөриймсөг тайланг харах боломжтой.
  8. Мэдээлэл оруулах шинэ дэлгэц
    • Одоогийн мэдээлэл оруулах системээс гадна Survey-All-In-One-ийг ашиглаж болно.
    • Энэ нь хуудсан дээрх холбогдох байдал болон тайлбарлалтыг дэмждэг тул мэдээлэл оруулагч нар хурдан шилжиж, зөвхөн холбогдох хариултуудыг оруулахад хангалттай.
    • Мэдээлэл оруулагч тайлбарлалтыг харах шаардлагатай бол энэ чухал байж болох бөгөөд энэ нь мөн динамик юм.
  9. Ихэнх өөриймсөг JavaScript-ийн хэрэгцээг арилгана
    • EM нь төвөгтэй тооцоолол, оноо өгөх, тайлбарлалт болон нөхцөлт логикийг хялбархан дэмждэг.
    • Зарим зүйл (өөриймсөг загвар, асуултын дэд элементүүдийг нөхцөлтэйгээр нуух гэх мэт) JavaScript шаардсан хэвээр байх боловч таны JavaScript EM функцүүдийг ашиглан асуултуудад SGQA-ийн оронд Qcode-оор хандаж, дээр жагсаасан асуултын аливаа шинж чанарт хандах боломжтой.

EM-ээр идэвхжсэн бусад ямар хэрэгтэй шинэ боломжууд байдаг вэ?

Та Нөхцөлийн засварлагчийг үргэлжлүүлэн ашиглаж байгаа эсэх, эсвэл Холбогдох тэгшитгэлийг гараар бичиж байгаа эсэхээс үл хамааран эдгээр нэмэлт давуу талуудыг авна:

  1. Та илүү нарийн төвөгтэй баталгаажуулалтын шалгуур үүсгэж болно
    • Асуултын бүх нарийвчилсан шинж чанар (жишээ нь max_answers, min_num_value_n, max_num_value) илэрхийлэл ашиглаж чадна. Тиймээс min/max шалгуурыг өмнөх хариултууд дээр үндэслэн, тэр ч байтугай нэг хуудсанд байсан ч хялбархан тохируулах боломжтой.
    • EM мөн тогтмол илэрхийлэлд суурилсан бүх баталгаажуулалтыг боловсруулдаг тул preg болон тэгшитгэлд суурилсан асуултын шинж чанаруудыг найдвартай хослуулан ашиглаж болно.
  2. Асуулт болон бүлгийг дахин эрэмбэлэх (эсвэл устгах) нь хялбар
    • 1.92 хувилбараас өмнө LimeSurvey тэдгээрийг ашигласан нөхцөлүүдийг эвдэж магадгүй гэж үзвэл асуулт эсвэл бүлгийг дахин эрэмбэлэх боломжгүй байсан. Үүнтэй адил, өөр асуултууд нь тухайн асуултаас хамаарч байвал түүнийг устгах боломжгүй байсан.
    • EM-ийн синтаксийн тодруулгаар асуултыг зарлахаас өмнө ашиглаж байгаа эсэхийг харах, шалгахад хялбар. Тиймээс одоо та асуулт болон бүлгийг хүссэн үедээ дахин эрэмбэлэх эсвэл устгах боломжтой. EM нь боломжит алдааг харуулахын тулд синтаксийн бүх тодруулгыг шинэчилнэ.
    • Асуултыг дахин эрэмбэлэх харагдац нь ийм хяналтад туслахаар сайжирсан. Одоо энэ нь асуултын холбогдох тэгшитгэл болон тохируулгыг харуулдаг тул ямар нэг хувьсагч ягаан өнгөтэй болсон эсэхийг (зарлахаас өмнө ашигласан гэсэн үг) тэр дор нь харж болно.
  3. Асуулт/бүлгийн навигацийн индекс үргэлж бэлэн бөгөөд үнэн зөв байна
    • 1.92 хувилбараас өмнө нарийн төвөгтэй нөхцөлүүд байвал эдгээр индекс байхгүй байсан.
    • EM-ээр бид тэдгээрийн үнэн зөв байхыг баталгаажуулж чадна.
    • Оролцогчид өмнөх асуулт руу буцаж, хариултаа өөрчлөөд, дараа нь урагш үсэрч (эсвэл илгээж) болно
      • Урагш үсрэх үед EM завсар дахь бүх асуулт/бүлгийг дахин баталгаажуулна.
      • Хэрэв ямар нэг асуулт холбогдохгүй болбол өгөгдөл тань дотроо тууштай байхын тулд тэдгээр нь мэдээллийн санд NULL болно.
      • Хэрэв ямар нэг асуулт холбогдох болж, эсвэл заавал бөглөх болон баталгаажуулалтын дүрмийг шинээр зөрчвөл EM тэр хуудсан дээр зогсож, эцсийн хүрэх газартаа үсрэхээс өмнө хэрэглэгчийг эдгээр асуултад хариулахыг шаардана.
  4. Нөхцөлүүдийг Холбогдох болгон автоматаар хөрвүүлэх
    • Та мэдээллийн сангаа шинэчлэхэд нөхцөлтэй бүх одоо байгаа судалгаанд зориулж холбогдох тэгшитгэлүүд үүсгэгдэнэ
    • Судалгааг импортлох болгонд холбогдох тэгшитгэлүүд шаардлагатай бол үүсгэгдэнэ
    • Нөхцөл нэмэх, устгах эсвэл өөрчлөх болгонд EM тохирох холбогдох тэгшитгэлийг үүсгэнэ.
  5. Тохиромжтой синтаксийн тодруулга
    • EM холбогдох тэгшитгэлийг харуулахдаа та SGQA код оруулсан байсан ч Qcode-ийг харуулна, учир нь үүнийг уншихад илүү хялбар гэж үздэг.
    • Бүх хувьсагчийг одоогийн асуултаас (эсвэл одоогийн бүлгээс) өмнө эсвэл хойно зарласан эсэхийг харуулахын тулд өнгөөр кодлосон. Энэ нь холбогдох байдал (array_filter-ийг оролцуулан), тохируулга эсвэл баталгаажуулалтын тэгшитгэлд хувьсагчийг зарлахаас өмнө ашигласан тохиолдлуудыг хурдан илрүүлж засахад тусална.
    • Нэмж хэлэхэд, өнгөөр кодлосон хувьсагч дээр хулганаа аваачвал тухайн асуултын хамгийн чухал мета өгөгдлийг харна. Үүнд Бүлгийн дараалал #, Асуултын дараалал #, Qcode, асуултын текст, мөн боломжтой бүх хариултын сонголт (хариултын сонголтууд нь жагсаагдсан асуултын төрөл бол) багтана.
      • Хариултын сонголтуудын жагсаалт дараах синтаксийг ашигладаг: 'answers':{key:val, ... }.
      • key нь 'scale~code' синтакстай бөгөөд scale нь хариултын хэмжээс (жишээ нь хос хэмжээсийн хувьд), code нь хариултын код юм.
      • val нь 'value~shown' синтакстай бөгөөд value нь үнэлгээний утга (үнэлгээ ашиглаж байгаа бол, үгүй бол code) (жишээ нь Qcode.value), shown нь оролцогчид харагдах утга (жишээ нь Qcode.shown) юм.
      • Энэ нь олон судалгаа үнэлгээний горимгүйгээр тооцоолол ашиглаж чадна гэсэн үг. Хэрэв таны жагсаасан хариултын сонголтууд давтагдахгүй, бутархай биш, сөрөг биш байвал Qcode.code утгууд дээр шууд тооцоолол хийж болно.
  6. Судалгааны бүх логик болон агуулгыг хялбархан хянах
    • Судалгаа (эсвэл бүлэг, асуулт)-ын бүх зүйлийг нэг хуудсанд харах боломжтой Судалгааны логикийг харуулах шинэ боломж бий.
    • Энэ нь сонгосон хүрээний (судалгаа, бүлэг, асуулт) Бүлэг, Асуулт, Дэд асуулт, Хариултын түвшний дэлгэрэнгүйг харуулдаг.
    • Мөн холбогдох байдал, дэд асуултын түвшний холбогдох байдал (array_filter болон array_filter_exclude-ийн хувьд), үүсгэсэн баталгаажуулалтын тэгшитгэл (preg болон min/max нийлбэр/утгын тоо зэрэг баталгаажуулалтын дүрмүүдийн хувьд), хоосон биш бүх асуултын шинж чанарыг харуулна.
    • Бүх зүйл синтаксийн тодруулгатай тул боломжит синтаксийн алдааг (жишээ нь тэнцвэргүй хаалт эсвэл хувьсагчийг зарлахаас өмнө ашигласан) харж болно.
    • Синтаксийн тодруулга нь судалгаанд хурдан шилжиж, засахад тусалдаг.
      • Хувьсагчийн нэр дээр дарвал тэр асуултыг харуулж засах боломж олгох хөтчийн цонх (эсвэл таб) нээгдэнэ.
      • Бүлгийн нэр дээр дарвал асуултуудыг хялбархан зөөхөд зориулсан бүлгийг дахин эрэмбэлэх харагдацтай хөтчийн цонх (эсвэл таб) нээгдэнэ.
      • Асуултын бүх шинж чанар мөн синтаксийн тодруулгатай. Энэ нь нарийвчилсан асуултын сонголтуудад (жишээ нь утгын max/min тоо/нийлбэрийг илэрхийлэлд суурилуулах) илэрхийлэл тохируулж, харах боломж олгодог.
    • EM-ийн зохиогч хамтран ажилладаг эпидемиологичид болон Институцийн хяналтын зөвлөлд мянга мянган асуулттай, маш салаалсан, тохируулсан бүтэцлэгдсэн ярилцлагын судалгааг баталгаажуулж, зөвшөөрөхөд нь тусалж ижил төстэй (арай цэвэрхэн) харагдацыг ашигласан

Эхлэх

EM-ийг эхлэн ашиглах хамгийн сайн арга:

  • http://www.limesurvey.org/en/download хаягаас хамгийн сүүлийн тогтвортой хувилбарыг суулгах
  • жишээ судалгаанууд-ыг импортлоод судлах.
  • ашиглалтын тохиолдол болон зааврууд, алхам алхмаар жишээнүүд-ийг судлах.
  • EM-ийн баримт бичгийг (энэ хуудсыг) судлах
  • EM-ийн суурилуулсан туршилтын багцыг шалгах
    • Дурын судалгаанаас, tools хэсгээс EM сонголтыг сонгоно
    • Боломжтой функцууд хэсэг 70 гаруй функц болон синтаксийг жагсаадаг
    • Тусгаарлагдсан илэрхийллийн нэгжийн туршилтууд
      • EM-ийн бүх функц, операторыг ашигласан жишээ, мөн PHP болон JavaScript-ийн үр дүнг харуулдаг
      • PHP болон JavaScript хувилбарт өөр үр дүн өгдөг цөөн функц байдгийг анхаарна уу, тиймээс энэ хуудас нь таны EM логикийг тохирох ёсоор төлөвлөхөд тусална.

Expression Manager ямар функцийг өргөтгөж/орлодог вэ? (LimeSurvey <= 1.91+)

Нөхцөлүүд => Холбогдох байдал

Нөхцөлүүд ямар асуулт харагдахыг удирддаг байсан. Ерөнхий синтакс нь SGQA оператор Утга байсан, жишээ нь 111X2X3 == "Y". Нөхцөлүүдийг AND эсвэл OR-оор холбож болох боловч AND ба OR-ыг холих нь хэцүү байсан. Нөхцөлүүд өөрсдөө тусдаа хүснэгтэнд хадгалагддаг байсан бөгөөд LimeSurvey-ийн кодын томоохон хэсэг Нөхцөлийг удирдахад зориулагдсан байв. Мэдээллийн санд их хандах учраас олон тооны нөхцөлийг боловсруулах нь гүйцэтгэлд мэдэгдэхүйц асуудал үүсгэж болдог байсан. Түүнчлэн нэгэнт асуулт эсвэл бүлэгт нөхцөл оноосны дараа тэдгээрийг дахин эрэмбэлэх эсвэл устгахыг ихэвчлэн зөвшөөрдөггүй байсан.

Үнэлгээ => Тэгшитгэл ба Микро-тохируулга

Үнэлгээ нь хэрэглэгчдэд асуултуудын цуглуулгаас хэмжээсийн оноо үүсгэх боломж олгодог байсан. Гэвч тэдгээр нь одоогийн хуудсанд динамикаар өөрчлөгдөж чаддаггүй, утгууд нь мэдээллийн санд хадгалагддаггүй байсан.

Орлуулгууд => Микро-тохируулга

Хэрэглэгчид өмнөх хариултууд дээр үндэслэн зарим зурвас болон асуултыг тохируулж чаддаг байсан. Жишээ нь асуулт {TOKEN:FIRSTNAME}, та {SPORT.shown}-ийг хамгийн дуртай спорт гэж хэлсэн байж болно. Гэвч нөхцөлт тохируулга (жишээ нь хүний хүйсээс хамааран "Ноён" эсвэл "Хатагтай" гэх), эсвэл үйл үг хувирган, нэр үг тийн ялгалаар хувиргах нь нарийн JavaScript-гүйгээр боломжгүй байсан. Зохиогчид асуултуудыг тохируулж байгаа мэт судалгаа хийж болох байсан ч хувилбар бүрт тусдаа асуулт, мөн аль асуултыг харуулахыг шийдэх нарийн төвөгтэй нөхцөлүүд шаардлагатай байв.

Баталгаажуулалт

Асуултыг тогтмол илэрхийллээр, эсвэл хамгийн бага/хамгийн их утгаар баталгаажуулж, эсвэл хариултыг хамгийн бага эсвэл хамгийн их утга болгон ашиглаж болдог байсан. Гэвч баталгаажуулалтыг бусад хувьсагчийн тооцоолол дээр нарийн JavaScript-гүйгээр суурилуулах боломжгүй байсан.

Тэгшитгэлүүд

Тэгшитгэлүүд нарийн JavaScript-гүйгээр дэмжигддэггүй байсан.

Тэгшитгэл асуултын төрөл

Тэгшитгэлүүдийг (жишээ нь үнэлгээний эцсийн оноо) нарийн JavaScript-гүйгээр мэдээллийн санд хадгалах боломжгүй байсан.

Expression Manager тэр функцийг хэрхэн орлох/өргөтгөх вэ?

Expression Manager нь LimeSurvey доторх шинэ цөм модуль бөгөөд урьд нь тусгай JavaScript шаарддаг байсан нарийн төвөгтэй функцийг дэмжихийг илүү хялбар болгодог. Мөн энэ нь LimeSurvey одоогоор Нөхцөл болон Үнэлгээг удирдаж буй аргыг орлож байна.

Expression Manager (EM)-ийг хэлэхэд ашиглах шинэ нэр томьёо

EM өөрийн функцийг дараах нэр томьёогоор "ойлгодог":

  • Холбогдох байдалд суурилсан салаалалт - асуулт холбогдох бол асууна, үгүй бол асуухгүй (жишээ нь үл харагдах болгож, мэдээллийн санд NULL гэж тэмдэглэнэ). Асуултын бүх төрөлд, мөн бүлэг бүрт шинэ Холбогдох байдлын талбар бий (тиймээс нэг нөхцөлийг асуулт бүрт хуулахгүйгээр бүлэг дэхь бүх асуултад нөхцөлийн багц хэрэглэж, эсвэл бүлэг болон асуултын түвшний нөхцөлт логикийг хослуулж болно).
  • Тохируулга - Аль асуултуудыг асуухыг мэдсэний дараа тохируулга (заримдаа piping гэдэг) асуултыг хэрхэн асуухыг тодорхойлдог. Энэ нь энгийн орлуулалт (жишээ нь {TOKEN:FIRSTNAME}) төдийгүй оролцогчдын хүйс эсвэл тооноос хамаарсан үйл үгийн хувирал, нэр үгийн тийн ялгалыг дэмжих боломж олгодог. Мөн оролцогч бусад асуултад хариулсан эсэх (эсвэл хэрхэн хариулсан) дээр үндэслэн тэдэнд хүргэх зурвасыг өөрчлөх боломжтой.
  • Тэгшитгэлүүд - EM нь Илэрхийллийн үр дүнг хадгалдаг Тэгшитгэл гэсэн шинэ асуултын төрлийг нэмдэг. Эдгээр тэгшитгэлийн үр дүнг хуудсан дээр нуусан ч тооцоолж, мэдээллийн санд бичдэг. Иймд тэдгээр нь нуугдмал оноо тооцоолол, нарийн тэгшитгэлд суурилсан навигаци, үнэлгээ, мөн мэдээллийн санд үүсгэж, амархан авах ёстой тайлангуудад хэрэгтэй.

Холбогдох байдал ба каскад холбогдох байдал

Одоо асуултын төрөл бүр асуулт харагдах эсэхийг удирддаг Холбогдох байдлын сонголттой. EM Холбогдох тэгшитгэл бүрийг судалгаанд гарах дарааллаар нь боловсруулдаг. Хэрэв илэрхийлэл үнэн (эсвэл хоосон - хуучин судалгааг дэмжихийн тулд) бол асуулт харагдана. Хэрэв холбогдохгүй бол асуулт нуугдаж, утга нь мэдээллийн санд NULL болно. Бүлэгт холбогдох асуулт байхгүй бол бүх бүлэг алгасагдана.

Түүнчлэн илэрхийлэл доторх хувьсагчийн аль нэг нь холбогдохгүй бол илэрхийлэл үргэлж худал гэж үнэлэгдэнэ. Энэ нь Каскад холбогдох байдлыг идэвхжүүлдэг тул асуулт бүрт маш урт Холбогдох тэгшитгэл бичих шаардлагагүй.

Танд Q1-Q5 гэсэн 5 асуулт байгаа бөгөөд Q1-д хариулсан бол л Q2-ыг, Q2-д хариулсан бол л Q3-ыг гэх мэтээр харуулахыг хүсэж байна гэе. Холбогдох тэгшитгэлүүд дараах байдалтай байж болно:

Асуултын код Холбогдох байдал Асуулт
Q1 1 Таны нэр хэн бэ?
Q2 Q1 {Q1}, та хэдэн настай вэ?
Q3 Q2 Тэгэхээр та {Q2} настай юм байна. Та гэрлэсэн үү?
Q4 Q3 == "Y" {Q1}, та хэр удаан гэрлэсэн бэ?
Q5 Q4 {Q1}, танд хэдэн хүүхэд байгаа вэ?

Холбогдох байдлын тооцоолол JavaScript дээр бас ажилладаг тул дээрх бүх асуултыг нэг хуудсанд байрлуулсан ч хүлээсэнчлэн ажиллана. Үнэндээ EM нь Судалгаа, Бүлэг, Асуулт тус бүрээр гэсэн судалгааны форматыг боловсруулах аргыг бүрэн орлодог. Одоо бүгд яг ижил навигацийн хөдөлгүүр ашигладаг тул судалгааны хэв маягаас үл хамааран ижилхэн ажилладаг.

Нэг хуудсанд байгаа цагт таны оруулсан өгөгдөл байсаар байх бөгөөд зүгээр л нуугдсан байна. Тиймээс та зарим мэдээлэл оруулаад, дараа нь тэдгээрийг холбогдохгүй болгох сонголт хийж, дараа нь дахин холбогдох болговол таны хариултууд байсаар байна. Гэвч өөр хуудас руу шилжмэгц өгөгдлийн багцын бүрэн бүтэн байдлыг хадгалахын тулд бүх холбогдохгүй хариулт алдагдана.

Бүлгийн түвшний холбогдох байдал

Expression Manager нь бүлгийн түвшний холбогдох байдлыг мөн дэмждэг. Энэ нь давталтыг хэрэгжүүлэхэд хялбар болгодог. Танд 10 хүртэлх объектын (жишээ нь бүтээгдэхүүн эсвэл өрхийн гишүүд) талаар мэдээлэл цуглуулах шаардлагатай гэж бодъё. Эхлээд хэдэн объектод нэмэлт асуулт хэрэгтэйг тодорхойлно (жишээ нь өрхөд хэдэн хүн амьдардгийг асуух, эсвэл урт жагсаалтаас ямар бүтээгдэхүүн таалагддагийг сонгуулах). Хэдэн объектод нэмэлт асуулт хэрэгтэйг мэдсэний дараа нэмэлт асуултуудын 10 бүлэг тус бүрт {count >= 1}, {count >=2}, ... {count >= 10} гэх мэт бүлгийн түвшний холбогдох байдлыг ашиглаж болно. Бүлэг бүрийн дотор асуултын түвшний нөхцөлт логиктой байж болно (жишээ нь оролцогч бүрт хүйс эсвэл насанд тохирсон нэмэлт асуултууд). Асуулт болон бүлгийн түвшний холбогдох тэгшитгэлүүдийг AND-аар холбож, аль нь харагдахыг тодорхойлно.

Тохируулга / Дамжуулалт (Tailoring / Piping)

Хаалт { } доторх бүх зүйлийг одоо илэрхийлэл гэж үздэг (доор тайлбарласан нэг үл хамаарах зүйлээс бусад). Илэрхийллүүд нь бүх LimeReplacementFields, бүх хувьсагч (хэд хэдэн алиасаар), бүх энгийн тэгшитгэлийн оператор (математик, логик, харьцуулалт) болон олон арван функцэд (клиент талд ч динамикаар ажилладаг) хандах эрхтэй.

Эдгээр тэгшитгэлийг ашиглан дараах зүйлсийг хийж болно:

  1. Өмнөх хариултад тулгуурлан оролцогчдод тохируулсан мессежийг нөхцөлтэйгээр харуулах
  2. Үнэлгээ үүсгэж, үнэлгээний үр дүнг харуулах (эсвэл тэдгээр үр дүнд тулгуурлан нөхцөлт салбарлалт хийх, мессеж харуулах) ба үүнийг Үнэлгээний модулийг өөрийг нь ашиглахгүйгээр хийх
  3. Асуулт, хариулт, тайлангийн доторх үйл үгийг төгсгөл залгаж, нэр үгийг тохиолд оруулах
  4. Судалгааны төгсгөлд "Хариултаа харуулах" хуудасны өмнө хариултуудын хураангуйг харуулах

Тэгшитгэлүүд

Тэгшитгэл гэсэн шинэ асуултын төрөл байдаг. Энэ нь Boilerplate асуулттай төстэй боловч харуулсан зүйлийнхээ утгыг өгөгдлийн санд хадгалдгаараа ялгаатай. Тиймээс Тэгшитгэл асуултын текст нь үнэлгээний тооцоолол агуулж байвал тэр утга өгөгдлийн санд хувьсагч хэлбэрээр хадгалагдах бөгөөд нийтийн болон хувийн статистик дотор харуулж болно.

Энэ нь үнэлгээний оноог өгөгдлийн санд хадгалах тухай түгээмэл хүсэлтийг шийддэг.

Синтакс

Хаалт { } доторх бүх зүйлийг одоо илэрхийлэл гэж үздэг (нэг үл хамаарах зүйлтэй: эхэнд болон төгсгөлд хоосон зай байж болохгүй - энэ нь Expression Manager суулгагдсан JavaScript-ийг боловсруулахыг оролдохгүй байхын тулд шаардлагатай).

Нээх хаалтын дараа болон хаах хаалтын өмнө хоосон зай байхгүй бол илэрхийлэл олон мөрөнд тархаж болно. Энэ нь ялангуяа дараах мэт давхар if() илэрхийлэлд тустай:

{if(is_empty(PFTotals),
 '',
 if(PFTotals >= -5 && PFTotals <= -4,
   'Very Soft',
   if(PFTotals >= -3 && PFTotals <= -2,
     'Soft',
     if(PFTotals == -1,
       'Somewhat Soft',
       if(PFTotals == 0,
         'Moderate',
         if(PFTotals == 1,
           'Somewhat Hard',
           if(PFTotals >= 2 && PFTotals <= 3,
             'Hard',
             if(PFTotals >= 4 && PFTotals <= 5,
               'Very Hard',
               ''
             )
           )
         )
       )
     )
   )
 )
)}
Expression Manager дараах синтаксийг дэмждэг:
  • Бүх стандарт математик оператор (жишээ нь +,-,*,/,!)
  • Бүх стандарт харьцуулах оператор (жишээ нь <,<=,==,!=,>,>=, мөн эдгээртэй дүйцэх: lt,le,eq,ne,gt,ge)
  • Хаалт (дэд илэрхийллийг бүлэглэх боломжтой)
  • Нөхцөлт оператор (жишээ нь &&,| | мөн эдгээртэй дүйцэх: and,or)
  • Нэг болон давхар хашилттай тэмдэгт мөр (тус бүр нь нөгөө төрлийн хашилттай тэмдэгт мөрийг агуулж болно)
  • Таслалын оператор (илэрхийллийн жагсаалт бичиж, зөвхөн сүүлийн үр дүнг буцаах боломжтой)
  • Онооно оператор (=)
  • Урьдчилан тодорхойлсон хувьсагч (асуулт, асуултын атрибут, хариултыг заах) - жишээ нь бүх SGQA код
  • Урьдчилан тодорхойлсон функц (аль хэдийн 70 гаруй байгаа бөгөөд шинээр нэмэхэд хялбар)

Операторууд

EM синтакс нь операторын энгийн тэргүүлэх дарааллыг дагана:

Түвшин Оператор(ууд) Тодорхойлолт
1 () бүлэглэх эсвэл функц дуудах хаалт
2 ! - + нэгдмэл оператор: үгүйсгэл (not), сөрөг тэмдэг, эерэг тэмдэг
3 * / үржих, хуваах
4 + - нэмэх, хасах
5 < <= > >= lt le gt ge харьцангуй харьцуулалт
6 == != eq ne тэнцэх харьцуулалт
7 and логик AND
8 or логик OR
9 = онооно оператор
10 , таслалын оператор

Нэмэх оператортой (+) холбоотой анхааруулга

JavaScript болон PHP хооронд тогтвортой байлгахын тулд нэмэх оператор (+) нь хоёр операнд хоёулаа тоон утгатай бол нэмэх үйлдэл, хоёулаа тоо биш тэмдэгт мөр бол залгах үйлдэл хийдэг. Гэхдээ залгахдаа join() функц, нэмэхдээ sum() функцийг ашиглахыг зөвлөж байна, учир нь ингэснээр таны зорилго илүү тодорхой болж, тэмдэгт мөр хүлээсэн атлаа тоо авсан (эсвэл эсрэгээр) үед гарах гэнэтийн үр дүнгээс сэргийлнэ.

Тоо ба тэмдэгт мөрийн үл тохирол болон цагаан толгойн харьцуулалттай холбоотой анхааруулга

Утгуудыг харьцангуй эсвэл тэнцэх харьцуулалтаар харьцуулахдаа төрлийн үл тохиролд анхаараарай. Хэрэглэгчийн оруулсан утга эсвэл сонгосон хариултын код нь тоо гэдэг нь тодорхой бол тоо болгон ашиглагдаж болно. Хэрэв утгуудын аль нэгийг " дотор бичвэл харьцуулалт текстээр (цагаан толгойн харьцуулалт) хийгдэнэ. Тоогоор харьцуулах бол тоог хэзээ ч хашилтаар (") бүү хаагаарай.

Жишээ нь Q0.NAOK нь 9 утгатай тоон асуулт бол Q0.NAOK > "50" үнэн байна. Учир нь > оператор үүнийг тооны биш цагаан толгойн харьцуулалт гэж ойлгоно.

Бүхэл тооны утгыг найдвартай харьцуулахын тулд intval(Q0.NAOK) > 50 гэж ашиглаж болно. Гэхдээ Q0.NAOK тоо биш (хоосон эсвэл тэмдэгт мөр) бол intval(Q0.NAOK) == 0 болохыг санаарай. Тэмдэгт мөрийн утгыг ("A" < "B") харьцуулахдаа strcmp функцийг шууд ашиглана уу: strcmp(Q0.NAOK,"B") эсвэл strcmp(Q0.NAOK,"A5").

Онооно операторыг (=) ашиглахтай холбоотой анхааруулга

Онооно операторыг үнэхээр шаардлагатай үед нь л ашиглаж, бусад үед ашиглахаас зайлсхийх хэрэгтэй, учир нь тэдгээр нь гэнэтийн гаж нөлөө үзүүлж болно. Жишээ нь өмнөх хариултын утгыг өөрчилбөл тэр асуулт болон одоогийн асуултын хоорондох дараалсан холбогдох байдал, баталгаажуулалтын логик дахин тооцоологдохгүй тул дотооддоо зөрчилтэй өгөгдөлтэй болж болзошгүй (жишээ нь хариулагдсан хэвээр үлдсэн боловч NULL болгох ёстой асуултууд, эсвэл алгасагдсан боловч хариулах ёстой байсан асуултууд). Ерөнхийдөө хувьсагчид утга оноохыг хүсвэл Тэгшитгэл асуултын төрөл үүсгэж, илэрхийлэл ашиглан утгыг нь тохируулах хэрэгтэй. Гэсэн хэдий ч ховор тохиолдолд энэ операторыг үнэхээр шаардлагатай гэж үздэг тул бид үүнийг боломжтой болгосон.

Энэ операторын талаар анхааруулахын тулд синтакс тэгшитгэлүүдэд үүнийг улаан фонтоор харуулдаг (ингэснээр "=="-тэй андуурахгүй).

Онооно операторыг ашиглах

Онооно операторыг ашиглах гол шалтгаанууд:

  • Тэгшитгэлээр үндсэн утга авдаггүй асуултад үндсэн утга тохируулах хэрэгтэй үед (жишээ нь радио жагсаалт, хэрэглэгчийн интерфэйс нь хариултын сонголтуудаас нэгийг сонгуулдаг боловч тэгшитгэл оруулахыг зөвшөөрдөггүй). Гэхдээ болгоомжтой байгаарай, учир нь LimeSurvey таны тэгшитгэл тухайн асуултын зөвшөөрөгдсөн хариултуудын аль нэгийг үүсгэж байгааг баталгаажуулах боломжгүй.
  • Дараагийн хариултад тулгуурлан өмнөх асуултын хариултыг хүчээр өөрчлөх шаардлагатай үед
  • Нарийн квот хэрэгтэй үед: квотод зориулж нэг далд нэг сонголттой асуулт ашиглаад оноолтоор утгыг нь тохируулах
  • гэх мэт...

Энэ зорилгоор expression manager-ийн бүх системийг ашиглаж болно.

  Оноолт зөвхөн PHP-д хийгдэнэ. Энэ нь нэг хуудсан дээрх ямар ч утгыг шинэчлэхгүй, зөвхөн хэрэглэгч дараах, өмнөх, хадгалах … товчоор шилжих үед л ажиллана.


  Хэрэв та энэ зорилгоор тэгшитгэлийн асуулт-ын төрлийг ашиглахгүй бол: оноолт нь одоогийн хуудасны логик дууссаны дараа л хийгдэнэ. Зөвлөмж болгох арга бол үргэлж тэгшитгэлийн асуулт ашиглах явдал юм.


Зарим жишээ:

  • Богино текст асуултын хариултыг жижиг үсэгт оноох: {QCODE=strtolower(QCODE.NAOK)}
  • Судалгааны эхэнд хүснэгт асуултын төрөлд үндсэн хариулт оноох: {Q1_SQ1=((is_empty(Q1_SQ1.NAOK),"A99",Q1_SQ1.NAOK)}
  • Судалгааны эхэнд текстийн хүснэгт асуултын төрөлд үндсэн хариулт оноох: {Q1_SQY1_SQX1 = ((is_empty(Q1_SQY1_SQX1.NAOK),"Inserted answer", Q1_SQY1_SQX1.NAOK)}
  • Нөхцөлтэйгээр хариулт оноох: {QCODE=if(YesNo="Y","A1","")}

XSS аюулгүй байдал

XSS идэвхжсэн үед Expression Manager-ийн зарим боломжийг ашиглах боломжгүй:

  • илэрхийлэлд HTML tag эхлүүлээд өөр илэрхийлэлд төгсгөх
  • URL-д нийлмэл илэрхийлэл ашиглах.

Жишээ ба тойрч гарах арга

  • {if( 1 ,"<strong>","")}information{if( 1 ,"</strong>","")} нь XSS хамгаалалттай үед ажиллахгүй, энэ тохиолдолд {if(1,"<strong>information</strong>","information")} гэж ашиглаж болно
  • <a href="/script.php?value={if(QCODE == "Y","yes","no")}">next</a>, энэ тохиолдолд асуултын бүрэн кодыг ашиглах нь зөвшөөрөгддөг тул тэгшитгэлийн асуулт ашиглаж болно: <a href="/script.php?value={EQUATION.NAOK}">next</a>

Хувьсагчдад хандах=

Expression Manager нь бидэнд хэрэгтэй аливаа хувьсагчид зөвхөн унших эрхээр хандах боломжийг олгодог. Хуучин хувилбартай нийцтэй байлгах үүднээс дараахь зүйлсэд хандах боломжтой:

  • TOKEN:xxx - TOKEN-ий утга (жишээ нь TOKEN:FIRSTNAME, TOKEN:ATTRIBUTE_5) (Зөвхөн нэргүй БИШ судалгаанд).
  • QCODE.shown - Expression Manager ашиглан хариултын харуулах утгыг авна (жишээ нь "Тийм").
  • загварт ашиглагддаг {XXX} утгууд бүгд.
  • Асуултын текстэд {QID}-г асуултын id-аар, {SGQ}-г асуултын SGQA-аар сольж ашиглаж болно

Үүнээс гадна Expression Manager нь хувьсагчдыг асуултын кодоор (өгөгдлийн сангийн асуултын хүснэгтийн 'title' багана) нэрлэх боломжийг олгодог. Энэ нь мөн өгөгдлөө SPSS, R эсвэл SAS руу экспортлоход хувьсагчийн шошго болдог. Жишээ нь, нэр, нас, хүйсийн талаарх асуултууд байвал тэдгээр хувьсагчийг 12345X13X22, 12345X13X23, 12345X13X24 гэхийн оронд name, age, gender гэж нэрлэж болно. Ингэснээр тэгшитгэлийг хүн бүр уншиж, логикийг баталгаажуулахад хялбар болохоос гадна бүлэг эсвэл асуултын дугаарыг хянахгүйгээр асуултуудын байрлалыг чөлөөтэй солих боломжтой болно.

Чухал: Зөвхөн өмнөх хуудас эсвэл асуултуудад байгаа хувьсагчдыг лавлах нь аюулгүй.

Түүнчлэн Expression Manager нь асуултын олон шинж чанарт хандах боломжийг олгодог:


Синтакс Утга Жишээ Жишээний үр дүн
Qcode Qcode.code-ийн өөр нэр {implode(',',name,gender)} 'Tom','M'
Qcode.code асуулт холбогдох үед сонгогдсон хариултын код (эс бөгөөс хоосон), эсвэл кодлогдоогүй асуулт бол текст утга {implode(',',name.code,gender.code)} 'Tom','M'
Qcode.NAOK Qcode-тэй адил - NAOK-ийн тайлбарыг үзнэ үү {gender.NAOK} 'M'
Qcode.value асуулт холбогдох үед асуултын үнэлгээний утга (эс бөгөөс хоосон), эсвэл кодлогдоогүй асуулт бол текст утга {gender.value} '1'
Qcode.valueNAOK Qcode.value-тэй адил - NAOK-ийн тайлбарыг үзнэ үү {gender.valueNAOK} '1'
Qcode.shown асуултын харуулах утга {implode(',',name.shown,gender.shown)} 'Tom','Male'
Qcode.question асуултын текст {gender.question} 'What is your gender?'
Qcode.mandatory асуулт заавал эсэх (Y/N) {gender.mandatory} 'N'
Qcode.qid асуултын дотоод дугаар (дарааллын дугаар биш) {gender.qid} 337
Qcode.type асуултын төрөл {gender.type} 'G'
Qcode.jsName асуулт энэ хуудсанд зарлагдсан эсэхээс үл хамааран асуултын зөв javascript нэр {gender.jsName} 'java1827X3X337'
Qcode.gid бүлгийн дотоод дугаар (дарааллын дугаар биш) {gender.gid} 3
Qcode.qseq 0-ээс эхэлсэн асуултын дарааллын дугаар {gender.qseq} 5
Qcode.gseq 0-ээс эхэлсэн бүлгийн дарааллын дугаар {gender.gseq} 1
Qcode.relevanceStatus асуулт одоогоор холбогдох эсэх (0 эсвэл 1) {gender.relevanceStatus} 1
Qcode.relevance асуултын түвшний холбогдох тэгшитгэл {gender.relevance} '!is_empty(name)'
Qcode.grelevance бүлгийн түвшний холбогдох тэгшитгэл {gender.grelevance} 'num_children >= 5'
Qcode.sgqa энэ асуултын SGQA утга {gender.sgqa} '1827X3X337'

HTML засварлагчийн асуудал

  Энэ асуудал 2.05 build 140803-аас хойш засагдсан


HTML засварлагч ашиглавал зарим тэмдэгтүүд HTML entity-ээр солигддог.

  • & нь &amp; болно
  • < нь &lt; болно
  • > нь &gt; болно

HTML засварлагч ашиглавал дараахийг ашиглах хэрэгтэй:

  • & -ийн оронд and
  • < -ийн оронд lt
  • <= -ийн оронд le
  • > -ийн оронд gt
  • >= -ийн оронд ge

Qcode хувьсагчийн нэрлэлт

Асуултын төрөл тус бүрээр Qcode-г хэрхэн байгуулах (мөн зарим шинж чанарт хэрхэн хандах) талаарх дэлгэрэнгүй мэдээллийг доор үзүүлэв. Ерөнхийдөө Qcode дараах байдлаар байгуулагдана:

 QuestionCode . '_' . SubQuestionCode . '_' . ScaleId

Дэд асуултын код болон Scale ID-г асуултын төрлөөс хамааран ашиглах эсвэл ашиглахгүй - доорх хүснэгтийг үзнэ үү. comment болон other тохиолдолд асуултын код нь QuestionCode_comment болон QuestionCode_other байна

Төрөл Тодорхойлолт Код Дэд асуултууд Хариултын сонголтууд Хуваарь Хариултын код Харуулсан хариулт Холбогдох байдал
5 5 онооны сонголт, радио товчнууд Q1 1-5 {Q1} {Q1.shown} {Q1==3}
B Массив (10 онооны сонголт), радио товчнууд Q2 L1-L6 1-10 {Q2_L2} {Q2_L2.shown} {Q2_L2==7}
A Массив (5 онооны сонголт), радио товчнууд Q3 1-5 1-5 {Q3_1} {Q3_1.shown} {Q3_1>=3}
1 Массив (уян хатан шошго) хоёр хуваарьтай Q4 sq1-sq5 0:a1-a3 1:b1-b3 {Q4_sq1_0} {Q4_sq1_1.shown} {Q4_sq1_1=='b2'}
H Массив (уян хатан) - баганы формат Q5 1-5 s,m,t {Q5_1} {Q5_1.shown} {Q5_1=='s'}
F Массив (уян хатан) - мөрийн формат Q6 F1-F5 1-5 {Q6_F3} {Q6_F3.shown} {Q6_F3==4}
E хүснэгт (өсөх / тэнцэх / буурах ), радио товчнууд Q7 1-7 I,S,D {Q7_4} {Q7_4.shown} {Q7_4=='D'}
: Массив (олон уян хатан) 1-ээс 10 Q8 ls1,todo,ls2 min,max,avg {Q8_ls1_max} {Q8_ls2_avg.shown} {Q8_ls2_min==7}
; Массив (олон уян хатан) текст Q9 hp,st,sw 1st,2nd,3rd {Q9_hp_3rd} {Q9_hp_3rd.shown} {Q9_hp_3rd=='Peter'}
C Массив (Тийм/Тодорхойгүй/Үгүй), радио товчнууд Q10 1-5 Y,N,U {Q10_1} {Q10_1.shown} {Q10_3=='Y'}
X Стандарт текстийн асуулт Q11 {Q11.shown}
D Огноо Q12 {Q12} {Q12.shown}
* Тэгшитгэл Q13 {Q13} {Q13.shown} {Q13>5}
~124~ Татагдсан файл (байршуулсан файлын тоог бүртгэнэ) Q14 {Q14} {Q14>0}
G Хүйс, жагсаалтыг доош буулгах Q15 M,F {Q15} {Q15.shown} {Q15=='M'}
U Асар том үнэгүй текст Q16 {Q16} {Q16.shown} {strlen(Q16)>100}
I Хэлний асуулт Q17 {Q17} {Q17.shown} {Q17=='en'}
! Жагсаалт - доош буулгах Q18 1-5 {Q18} {Q18.shown} {Q18==3}
L Жагсаалт (доош буулгах / радио товч) Q19 A-Z {Q19} {Q19.shown} {Q19=='X'}
O Тайлбартай жагсаалт (доош буулгах / радио товч + текстийн талбар) Q20 A-F {Q20},{Q20comment} {Q20.shown} {Q20=='B'}
T Үнэгүй урт текст Q21 {Q21} {Q21.shown} {strstr(Q21,'hello')>0}
M Олон сонголт, чагтлах Q22 A-F, other {Q22_E}, {Q22_other} {Q22_E.shown}, {Q22_other.shown} {Q22_E=='Y'}
P Тайлбартай олон сонголт, чагт + текст Q23 A-F {Q23_D}, {Q23_Dcomment} {Q23_D.shown} {!is_empty(Q23)}
K Олон тооны тоон асуулт Q24 self,mom,dad {Q24_self} {Q24_self.shown} {Q24_self>30}
Q Олон тооны богино текст Q25 A-F {Q25_B} {Q25_B.shown} {substr(Q25_B,1,1)=='Q'}
N Тоон асуултын төрөл Q26 {Q26} {Q26.shown} {Q26 > 30}
R Зэрэглэлийн хэв маяг Q27 1-4 {Q27_1} {Q27_1.shown} {Q27_1==3}
S Богино үнэгүй текст Q28 {Q28} {Q28.shown} {Q28=='mine'}
Y Тийм/Үгүй радио товчнууд Q29 {Q29} {Q29.shown} {Q29=='Y'}

Нөөцлөгдсөн 'this', 'self', 'that' хувьсагчид

Ихэнхдээ асуултын бүх хэсгийг үнэлэх хэрэгтэй болдог, жишээ нь хэдэн дэд асуултад хариулсныг тоолох эсвэл оноог нэмэх. Заримдаа асуултын зөвхөн тодорхой мөр эсвэл баганыг боловсруулах (жишээ нь мөр эсвэл баганын нийлбэрийг тооцоолж өгөгдлийн санд хадгалах) хэрэгтэй болно. Эдгээр нөөцлөгдсөн хувьсагчид уг үйл явцыг хялбар болгодог.

'this' хувьсагчийг зөвхөн "Асуултыг бүхэлд нь баталгаажуулах тэгшитгэл" болон "Дэд асуултыг баталгаажуулах тэгшитгэл" гэсэн асуултын нарийвчилсан сонголтуудад ашигладаг. Энэ нь тэдгээр асуултын нүд бүрийн хувьсагчийн нэр болж өргөжнө. Тиймээс бүх оруулга гурваас их байхыг шаардвал "Дэд асуултыг баталгаажуулах тэгшитгэл"-д (this > 3) гэж тохируулна.

'self' болон 'that' хувьсагчид илүү хүчирхэг бөгөөд тэгшитгэлийг боловсруулахаас өмнө өргөжих макро болж ажилладаг. Синтаксийн сонголтууд нь:

  • self
  • self.suffix
  • self.sub-selector
  • self.sub-selector.suffix

suffix нь qcode-ын ердийн дагавруудын аль нэг байна (жишээ нь NAOK, value, shown)

sub-selector нь дараах зүйлсийн нэг байна:

  • comments - зөвхөн тайлбар болох дэд асуултууд (жишээ нь тайлбартай олон сонголт болон тайлбартай жагсаалтаас)
  • nocomments - тайлбар биш дэд асуултууд
  • sq_X - X нь мөр эсвэл баганын тодорхойлогч. Зөвхөн X хэв маягт таарах дэд асуултуудыг сонгоно. Хайлтыг кодын бүрэн тодорхойлогчоор хийж, дараа нь sq_X таарсан nX, X, Xn дэд асуултуудыг оруулдаг болохыг анхаарна уу (жишээ нь sq_1 ашиглавал a1, 1a, 1, 11 эсвэл 001 дэд асуултууд орно). Дэд асуултын код нь QCODE_SQCODE_1 ба QCODE_SQCODE_1 хэлбэртэй хоёр хуваарьтай асуултын төрөл болон дэд асуултын код нь QCODE_1, QCODE_2 ... хэлбэртэй зэрэглэлийн асуултын төрөлд анхаарлаа хандуулаарай.
  • nosq_X - X нь мөр эсвэл баганын тодорхойлогч. Зөвхөн X хэв маягт таарахгүй дэд асуултуудыг сонгоно. Хайлтыг кодын бүрэн тодорхойлогчоор хийж, дараа нь nosq_X таарсан бөгөөд nX, X, Xn дэд асуултуудыг оруулахгүй болохыг анхаарна уу

Жишээ:

  • Асуултын аль нэг хэсэгт хариулсан уу? {count(self.NAOK)>0}
  • Энэ асуултын үнэлгээний оноо хэд вэ? {sum(self.value)}

Эдгээрийг мөр болон баганын нийлбэр авахад бас ашиглаж болно. Танд A-E мөр, 1-5 баганатай тоон хүснэгт байна гэж үзье.

  • Нийт дүн хэд вэ? {sum(self.NAOK)}
  • B мөрийн нийлбэр хэд вэ? {sum(self.sq_B.NAOK)}
  • 3-р баганын нийлбэр хэд вэ? {sum(self.sq_3.NAOK)}

'that' хувьсагч нь 'self' хувьсагчтай төстэй боловч бусад асуултуудыг лавлах боломжийг олгодог. Түүний синтакс нь:

  • that.qname
  • that.qname.suffix
  • that.qname.sub-selector
  • that.qname.sub-selector.suffix

qname нь дэд асуултын өргөтгөлгүй асуултын нэр юм. Жишээ нь 'q1' асуулт үүсгэвэл түүний qname нь 'q1' болно

Жишээ:

  • q1 асуултын аль нэг хэсэгт хариулсан уу? {count(that.q1.NAOK)>0}
  • q2-ын үнэлгээний оноо хэд вэ? {sum(that.q2.NAOK)}
  • q3-ын нийт дүн хэд вэ? {sum(that.q3.NAOK)}
  • q4-ийн C мөрийн нийлбэр хэд вэ? {sum(that.q4.sq_C.NAOK)}
  • q4-ийн 2-р баганын нийлбэр хэд вэ? {sum(that.q4.sq_2.NAOK)}

'self' болон 'that' хувьсагчдыг аливаа холбогдох тэгшитгэл, баталгаажуулалт эсвэл тохируулгад ашиглаж болно.

Нэг анхаарах зүйл нь Логикийн файлыг харуулах боломжийг ашиглахад 'self' болон 'that'-ийн өргөжсөн утгыг харуулдаг. Ингэснээр үүсэх бодит тэгшитгэлийг харж, та (болон Expression Manager) хувьсагчид байгаа эсэхийг баталгаажуулах боломжтой. Маш урт тэгшитгэл харагдаж болох тул будлиантай санагдаж магадгүй. Гэхдээ асуултыг засахад 'self' ба/эсвэл 'that' ашигласан анхны тэгшитгэлийг харна.

Мөн дараах тохиолдолд эдгээр хувьсагчийг ашиглаж болохгүй гэдгийг анхаарна уу: (a) тэгшитгэлд ашигласан хувьсагч бүрийг тодорхой нэрлэхийг хүсвэл, эсвэл (b) дэд асуултгүй хувьсагчийг (жишээ нь, нэг хариулттай асуулт) ашиглах бол. Ийм тохиолдолд хувьсагчийн өмнө 'that' угтвар залгах нь илүүц бөгөөд санамсаргүй үр дүн гарах эрсдэлтэй.

NAOK-ийн хэрэглээ

NAOK --> "Not Applicable" (NA) is alright (OK) буюу "Хамааралгүй" (NA) байж болно (OK)

NAOK ашиглах нь бүх эсвэл зарим хувьсагч холбогдолгүй байж болно гэсэн утгатай (жишээ нь, "Not Applicable" (NA) is alright (OK)).

Асуултын хувьсагчийг ямар нэг тэгшитгэлд оруулсан үед: хэрэв тухайн асуулт (эсвэл дэд асуулт) нөхцөлөөр нуугдсан бол энэ нь тэр тэгшитгэлийг бүхэлд нь идэвхгүй болгоно.

Жишээлбэл: count(Q1_SQ1,Q1_SQ2,Q1_SQ3,Q1_SQ4) нь Q1-ийн нэг дэд асуулт шүүгдсэн бол үргэлж хоосон тэмдэгт мөр буцаана. Ийм асуултын сонгосон дэд асуултын тоог тоолохын тулд count(Q1_SQ1.NAOK,Q1_SQ2.NAOK,Q1_SQ3.NAOK,Q1_SQ4.NAOK) гэж ашиглаж болно. Хэрэв дэд асуулт нуугдсан бол Expression Manager хоосон тэмдэгт мөр буцаана.

NAOK-гүй бол: нэг асуулт эсвэл нэг дэд асуулт нуугдсан үед Expression Manager үргэлж хоосон тэмдэгт мөр буцаана, энэ нь худал (false) гэж буцаахтай адил.

Хэрэв нуугдсан бол .shown нь үргэлж NAOK системийг ашигладаг (хоосон тэмдэгт мөр буцаана). Харин хариултын кодыг авах шаардлагатай бол асуултын кодын ард .NAOK нэмэх нь үргэлж сайн санаа юм. Танд энэ шаардлагатай бөгөөд юу хийж байгаагаа мэдэж байгаа бол өөрөөр хийж болно.

Өөр нэг жишээ болон мэдээллийг Overriding Cascading Conditions хэсгээс үзнэ үү.

Функцүүдэд хандах

Expression Manager нь доор үзүүлсэн математик, тэмдэгт мөрийн болон хэрэглэгчийн тодорхойлсон функцүүдэд хандах боломж олгодог. Эдгээр функцийн PHP болон JavaScript хувилбарууд байдаг тул сервер талд (PHP) болон клиент талд (JavaScript) ижил ажилладаг. Шинэ функц нэмэхэд хялбар.

Хэрэгжүүлсэн функцүүд

Одоогоор дараах функцүүд боломжтой:

Функц Утга Синтакс
abs Абсолют утга number abs(number)
acos нум хэлбэрийн косинус number acos(number)
addslashes Хэлхээг налуу зураасаар хашилтлах string addslashes(string)
asin нум хэлбэрийн синус number asin(number)
atan нум хэлбэрийн тангенс number atan(number)
atan2 2 хувьсах хэмжигдэхүүн бүхий нуман тангенс number atan2(number, number)
ceil бутархай тоог бүхэл тоонд хүргэж ойролцоогоор өсгөх number ceil(number)
checkdate Григорийн тооллын хүчинтэй огноо бол true(1) буцаана bool checkdate(month,day,year)
convert_value Тоон утгыг тоон утгуудын inputTable болон outputTable ашиглан хөрвүүлэх number convert_value(fValue, iStrict, sTranslateFromList, sTranslateToList)
cos Косинус number cos(number)
count жагсаалт дахь хариулсан (хоосон биш) асуултуудын тоог тоолох number count(arg1, arg12, ..., argN)
countif жагсаалт дахь эхний аргументтай тэнцүү хариулсан асуултуудын тоог тоолох number countif(matches, arg1, arg2, ... argN)
countifop жагсаалт дахь (arg op value) шалгуурыг хангасан хариулсан асуултуудын тоог тоолох number countifop(op, value, arg1, arg2, ... argN)
date тогтмол байрлах өдөр/ цаг форматлах string date(format [, timestamp=time()])
exp е зэрэгт дэвшүүлэн тооцоол number exp(number)
fixnum Шаардлагатай бол тоог аравтын таслалтайгаар харуулах string fixnum(number)
floor бутархай тоог бүхэл тоонд хүргэж ойролцоогоор бууруулах number floor(number)
gmdate GMT огноо/цагийн формат string gmdate(format [, timestamp=time()])
html_entity_decode Бүх HTML entity-г тохирох тэмдэгт болгон хөрвүүлэх (үргэлж ENT_QUOTES болон UTF-8 ашиглана) string html_entity_decode(string)
htmlentities Тохирох бүх тэмдэгтийг HTML entity болгон хөрвүүлэх (үргэлж ENT_QUOTES болон UTF-8 ашиглана) string htmlentities(string)
expr_mgr_htmlspecialchars Тусгай тэмдэгтүүдийг HTML entity болгон хөрвүүлэх (үргэлж ENT_QUOTES болон UTF-8 ашиглана) string htmlspecialchars(string)
expr_mgr_htmlspecialchars_decode Тусгай HTML entity-г буцаан тэмдэгт болгох (үргэлж ENT_QUOTES болон UTF-8 ашиглана) string htmlspecialchars_decode(string)
idate тогтмол байрлах өдөр/ цаг -ыг бүхэл тоо руу форматлах string idate(string [, timestamp=time()])
if (Updated in 3.0.2 ) Excel маягийн if(test,result_if_true[,result_if_false = ""]) if(test,result_if_true[,result_if_false = ""])
implode цуглуулагдсан элэментүүдэд хэлхээгээр нэгдэх string implode(glue,arg1,arg2,...,argN)
intval хувьсах хэмжигдэхүүний үр дүнг бүхэл болгох int intval(number [, base=10])
is_empty Хувьсагч хоосон гэж тооцогдох эсэхийг тодорхойлох bool is_empty(var)
is_float Хувьсагчийн төрөл float эсэхийг шалгах bool is_float(var)
is_int Хувьсагчийн төрөл бүхэл тоо эсэхийг шалгах bool is_int(var)
is_nan үр дүн нь тоогоор биш байхаар олох уу үгүй юу bool is_nan(var)
is_null хувьсах хэмжигдэхүүн нь NULL байхаар олох уу үгүй юу bool is_null(var)
is_numeric Хувьсагч тоо эсвэл тоон хэлхээ эсэхийг шалгах bool is_numeric(var)
is_string Хувьсагчийн төрөл хэлхээ эсэхийг шалгах bool is_string(var)
join (New in 2.0 build 130129) Элементүүдийг шинэ хэлхээ болгон нэгтгэх join(arg1, arg2, ... argN)
list Хоосон биш утгуудын таслалаар тусгаарласан жагсаалтыг буцаах string list(arg1, arg2, ... argN)
listifop (New in 3.16.1 ) Жагсаалт дахь (cmpProp op value) шалгуурыг хангасан асуултуудаас заасан асуултын шинж чанарыг (retProp) 'glue'-ээр тусгаарласан жагсаалтаар буцаах string listifop(cmpProp, op, value, retProp, glue, sgqa1, sgqa2, ... sgqaN)
log Тооны суурьт (өгөгдсөн бол) хамаарах логарифм, эсвэл натурал логарифм. number log(number,base=e)
ltrim Хэлхээний эхнээс хоосон зай (эсвэл бусад тэмдэгт)-ийг хасах string ltrim(string [, charlist])
max Хамгийн том утгыг олох number max(arg1, arg2, ... argN)
min Хамгийн бага утгыг олох number min(arg1, arg2, ... argN)
mktime Огнооны UNIX хугацааны тэмдэглэгээг авах (6 аргумент бүгд заавал биш) number mktime([hour [, minute [, second [, month [, day [, year ]]]]]])
modulo-function Modulo функц одоогоор дэмжигдээгүй. Оронд нь floor() функцийг ашиглаж болно floor(x/y)==(x/y)
nl2br Хэлхээн дэх бүх мөр шилжүүлэгчийн өмнө HTML мөр таслалт оруулах string nl2br(string)
number_format дугаарлагдсан мянган групыг форматлах string number_format(number)
pi үр дүнг 3,14 болгох number pi()
pow зэргийн илтгэгчтэй илэрхийлэл number pow(base, exp)
quoted_printable_decode Quoted-printable хэлхээг 8 битийн хэлхээ рүү хөрвүүлэх string quoted_printable_decode(string)
quoted_printable_encode 8 битийн хэлхээг quoted-printable хэлхээ рүү хөрвүүлэх string quoted_printable_encode(string)
quotemeta өөрчлөгдсөн бичгүүдийг үнэл string quotemeta(string)
rand Санамсаргүй бүхэл тоо гаргах, энэ жишээг үзнэ үү int rand() OR int rand(min, max)
regexMatch хэлхээг тогтмол хэмжигдэхүүнтэй харьцуулах bool regexMatch(pattern,input)
round тоог сонгон нарийвчил number round(val [, precision])
rtrim Хэлхээний төгсгөлөөс хоосон зай (эсвэл бусад тэмдэгт)-ийг хасах string rtrim(string [, charlist])
sin Синус number sin(arg)
sprintf форматлагдсан хэлхээг буцаах string sprintf(format, arg1, arg2, ... argN)
sqrt квадрат язгуур number sqrt(arg)
stddev Тооны жагсаалтын түүврийн стандарт хазайлтыг тооцоолох number stddev(arg1, arg2, ... argN)
str_pad Хэлхээг өөр хэлхээгээр тодорхой урт хүртэл дүүргэх string str_pad(input, pad_length [, pad_string])
str_repeat давтагдсан хэлхээ string str_repeat(input, multiplier)
str_replace Хайсан хэлхээний бүх илрэлийг орлуулах хэлхээгээр солих string str_replace(search, replace, subject)
strcasecmp давхар баталгаажсан кейсэн мэдээгүй хэлхээн харьцуулалт int strcasecmp(str1, str2)
strcmp давхар баталгаажсан хэлхээн харьцуулалт int strcmp(str1, str2)
strip_tags хэлхээгээс HTML болон PHP-д хаяглагдсан зурвас string strip_tags(str, allowable_tags)
stripos Том, жижиг үсгийг ялгахгүй юникод хэлхээний эхний илрэлийн байрлалыг олох (0-ээс эхэлнэ, олдохгүй бол false буцаана) int stripos(haystack, needle [, offset=0])
stripslashes үнэлсэн хэлхээг үнэлэхгүй байх string stripslashes(string)
stristr кейсэн мэдээгүй string stristr(haystack, needle [, before_needle=false])
strlen Мөрийн уртыг авах int strlen(string)
strpos Юникод хэлхээний эхний илрэлийн байрлалыг олох (0-ээс эхэлнэ, олдохгүй бол false буцаана) int strpos(haystack, needle [ offset=0])
strrev Мөрийг тонгоруулах string strrev(string)
strstr Мөрийн эхний илрэцийг олох string strstr(haystack, needle[, before_needle=false])
strtolower Хэлхээг жижиг үсэг болгох string strtolower(string)
strtotime Англи хэлний огноо/цагийн текст тодорхойлолтыг Unix хугацааны тэмдэглэгээ болгон хөрвүүлэх int strtotime(string)
strtoupper Хэлхээг том үсэг болгох string strtoupper(string)
substr Юникод хэлхээний хэсгийг буцаах string substr(string, start [, length])
sum цуглуулагдсан үр дүнгийн нийлбэрийг тооцоол number sum(arg1, arg2, ... argN)
sumifop Жагсаалт дахь (arg op value) шалгуурыг хангасан хариулсан асуултуудын утгын нийлбэрийг гаргах number sumifop(op, value, arg1, arg2, ... argN)
tan Тангенс number tan(arg)
time түгээмэл UNIXхугацааны ангиллыг буцаах number time()
trim Хэлхээний эхнээс болон төгсгөлөөс хоосон зай (эсвэл бусад тэмдэгт)-ийг хасах string trim(string [, charlist])
ucwords Хэлхээн дэх үг бүрийн эхний тэмдэгтийг том үсэг болгох string ucwords(string)
unique хэрэв бүх хоосон биш үр дүнгүүд нь хосгүй бол буцаалт нь үнэн boolean unique(arg1, ..., argN)

Төлөвлөсөн эсвэл авч үзэж буй функцууд

Төлөвлөсөн (эсвэл авч үзэж буй) боловч хараахан хэрэгжээгүй бусад функцууд дараах байдалтай байна. Зарим нь өөр судалгааны хэрэгсэлтэй нийцтэй байлгах зорилготой.

Синтакс Утга Тайлбар
e() e-ийн утгыг буцаана
formatDate(X,PAT) X огнооны мөр утгыг Java огнооны форматын PAT загварын дагуу форматлан буцаана
formatNumber(X,PAT) X тооны мөр утгыг Java тооны форматын PAT загварын дагуу форматлан буцаана
getAnsOption(X) Үндсэн плагин ExpressionAnswerOptions
getAnsOption(X,Y) Үндсэн плагин ExpressionAnswerOptions
getRelevance(X) X асуултын холбогдох тэгшитгэлийг буцаана
getStartTime() ярилцлагыг эхлүүлсэн үеийн системийн цагт харгалзах огноог буцаана
getType(X) өгөгдлийн төрлийн нэрийг мөр хэлбэрээр буцаана - жишээ нь isNA() бол *NA*
gotoFirst() холбогдох асуултуудын эхний багц руу шилжинэ - энэ нь системийн хэвийн урсгалыг зөрчинө
gotoNext() холбогдох асуултуудын дараагийн багц руу шилжинэ - энэ нь системийн хэвийн урсгалыг зөрчинө
gotoPrevious() холбогдох асуултуудын өмнөх багц руу шилжинэ - энэ нь системийн хэвийн урсгалыг зөрчинө
isAsked(X) хариулт нь *NA*, *INVALID*, *UNASKED* аль нь ч биш бол үнэн (true) утгыг буцаана
isInvalid(X) хариулт нь *INVALID* төрөлтэй бол үнэн (true) утгыг буцаана
isNA(X) хариулт нь *NA* төрөлтэй бол үнэн (true) утгыг буцаана
isNotUnderstood(X) хариулт нь *HUH* төрөлтэй бол үнэн (true) утгыг буцаана
isRefused(X) хариулт нь *REFUSED* төрөлтэй бол үнэн (true) утгыг буцаана
isSpecial(X) хариулт нь *UNASKED*, *NA*, *REFUSED*, *INVALID*, *UNKNOWN* эсвэл *HUH* төрөлтэй бол үнэн (true) утгыг буцаана
isUnknown(X) хариулт нь *UNKNOWN* төрөлтэй бол үнэн (true) утгыг буцаана
jumpTo(X) нэр заасан асуултыг агуулсан бүлэг рүү шилжинэ -- энэ нь системийн хэвийн урсгалыг зөрчинө
jumpToFirstUnasked() асуугдаагүй эхний асуулт руу шилжинэ ингэснээр өмнө хариулсан асуултуудыг алгасна энэ нь системийн хэвийн урсгалыг зөрчинө
lastIndexOf(X,Y) X мөр доторх Y мөрийн сүүлчийн индексийг (0-ээс эхлэн) буцаана. Y нь X дотор байхгүй бол -1 буцаана
list(X,...) эерэг утгуудыг таслалаар тусгаарлан жагсаасан, сүүлийн хоёрыг нь "and" гэж холбосон мөр
mean(X,...) утгуудын жагсаалтын дундажийг буцаана
numAnsOptions(X) X асуултын хариултын сонголтуудын тоог буцаана
orlist(X,...) эерэг утгуудыг таслалаар тусгаарлан жагсаасан, сүүлийн хоёрыг нь "or" гэж холбосон мөр
parseDate(X,PAT) X мөрийг Java огнооны форматын PAT загвараар задлан огнооны утгыг буцаана
parseNumber(X,PAT) X мөрийг Java тооны форматын PAT загвараар задлан тоон утгыг буцаана
showAllResponsesExcept( questionList,attributeList,attributeTitleList) questionList = асуултын тодорхойлогчдын босоо зураасаар тусгаарласан жагсаалт; attributeList = атрибутуудын босоо зураасаар тусгаарласан жагсаалт (асуултын дугаар, гарчиг, текст, төрөл гэх мэт - юуг харуулахаа та шийднэ); attributeTitleList = хүснэгтийн толгойн босоо зураасаар тусгаарласан жагсаалт, ингэснээр тайланг олон хэлд орчуулах боломжтой.
showTheseResponses( questionList,attributeList,attributeTitleList) questionList = асуултын тодорхойлогчдын босоо зураасаар тусгаарласан жагсаалт; attributeList = атрибутуудын босоо зураасаар тусгаарласан жагсаалт (асуултын дугаар, гарчиг, текст, төрөл гэх мэт - юуг харуулахаа та шийднэ); attributeTitleList = хүснэгтийн толгойн босоо зураасаар тусгаарласан жагсаалт, ингэснээр тайланг олон хэлд орчуулах боломжтой.

Expression Manager аль хувьсагч локал болохыг мэддэг

Хуудасны JavaScript-ийг зөв үүсгэхийн тулд Expression Manager нь хуудсан дээр аль хувьсагчууд тохируулагдсан болон тэдгээрийн JavaScript ID юу болохыг (жишээ нь document.getElementById(x)-д зориулж) мэдэх шаардлагатай. Мөн бусад хуудсууд дээр аль хувьсагчууд тохируулагдсан болохыг мэдэж байх ёстой, ингэснээр шаардлагатай <input type='hidden' value='x'> талбарууд байгаа бөгөөд утгаар дүүрсэн эсэхийг баталгаажуулна.

Каскад нөхцөлүүд

Хэрэв хувьсагчдын аль нэг нь холбогдохгүй бол бүх тэгшитгэл холбогдохгүй (false) болно. Жишээлбэл, дараах хүснэгтэд N/A нь хувьсагчдын аль нэг нь холбогдоогүй гэсэн үг

Оператор Жишээ a b Үр дүн
+ (unary) +a N/A false
! !a N/A false
== (эсвэл eq) a == b N/A 5 false
== (эсвэл eq) a == b N/A 0 false
== (эсвэл eq) a == b N/A N/A false
!= (эсвэл ne) a != b N/A 5 false
!= (эсвэл ne) a != b N/A N/A false
!= (эсвэл ne) a != b N/A 0 false
> (эсвэл gt) a > b N/A 5 false
>= (эсвэл ge) a >= b N/A 5 false
< (эсвэл lt) a < b N/A 5 false
<= (эсвэл le) a <= b N/A 5 false
and a and b N/A 5 false
and a and b N/A N/A false
or a or b N/A N/A false
or a or b N/A 5 false
+ a + b N/A 5 false
* a * b N/A 5 false
/ a / b 5 N/A false
() (a) N/A false
(exp) (a && b) N/A 5 false
(exp) op (exp) (b + b) > (a && b) N/A 5 false
функц sum(a,b,b) N/A 5 false
функц max(a,b) N/A 5 false
функц min(a,b) N/A 5 false
функц implode(', ',a,b,a,b) N/A 5 false
функц if(a,a,b) N/A 5 false
функц is_empty(a) N/A false
функц is_empty(a) 0 (эсвэл хоосон) true
функц !is_empty(a) N/A false

Каскад нөхцөлүүдийг давах

Танд холбогдох бүх хариултын нийлбэрийг харуулах хэрэгтэй гэе. Та {sum(q1,q2,q3,...,qN)} тэгшитгэлийг ашиглаж үзэж болно. Гэвч энэ нь дотооддоо LEMif(LEManyNA('q1','q2','q3',...,'qN'),,sum(LEMval('q1'),LEMval('q2'),LEMval('q3'),...,LEMval('qN'))) болж хөрвүүлэгддэг. Тиймээс q1-qN утгуудын аль нэг нь холбогдохгүй бол тэгшитгэл үргэлж false буцаана. Энэ тохиолдолд бүх асуултад хариулах хүртэл sum() нь 0-г харуулна.

Үүнийг тойрохын тулд хувьсагч бүрт ".NAOK" дагаврыг (Not Applicable is OK гэсэн утгатай) нэмж болно. Ийм тохиолдолд дараах байдлаар ажиллана. Танд q1.NAOK хувьсагч байгаа гэе

  1. q1 нь LEManyNA() хэсэгт нэмэгдэхгүй
  2. LEMval('q1') нь хариулт холбогдох эсэхийг үргэлжлүүлэн шалгах бөгөөд холбогдохгүй бол '' буцаана (тиймээс холбогдохгүй хариултууд тус бүр үл хэрэгслэгдэх боловч бүх илэрхийллийг хүчингүй болгохгүй).

Иймд нийлбэрийн асуудлыг шийдэх арга бол sum(q1.NAOK,q2.NAOK,q3.NAOK,...,qN.NAOK) тэгшитгэлийг ашиглах явдал юм.

.NAOK дагаврыг ашигласнаар зохиогчид хэд хэдэн боломжит замтай боловч дараа нь нийтлэг замд нийлдэг судалгаа зохиох боломжтой болно. Жишээлбэл, оролцогчид хариултын хэвийн хүрээнээс гадуур хариулсан гэе. Зохиогч оролцогчдод хүчинтэй үр дүн гарахгүй байж болзошгүйг мэдэгдэж, судалгааг үнэхээр үргэлжлүүлэхийг хүсэж байгаа эсэхийг асууж болно. Хэрэв тэд Тийм гэвэл үлдсэн асуултууд харагдана. "Үлдсэн асуултууд"-ын нөхцөл нь анхны хариултууд хэвийн хүрээнд байсан эсэх ЭСВЭЛ хэвийн хүрээнээс гадуур хариулсан тохиолдолд л холбогдох асуултад оролцогч Тийм гэж хариулсан эсэхийг шалгана.

Expression Manager нөхцөлт микро-тохируулгыг хэрхэн дэмждэг вэ?

Микро-тохируулгын жишээ энд байна (Question Type=='expr' нь тэгшитгэл гэсэн утгатай):

Асуултын код Холбогдох тэгшитгэл Асуултын төрөл Асуулт
name 1 text Таны нэр хэн бэ?
age 1 text Та хэдэн настай вэ?
badage !is_empty(age) expr {(age<16) or (age>80)}
agestop badage message Уучлаарай, {name}, та энэ тестэд хэтэрхий {if( (age<16),'young',if( (age>80),'old','middle-aged') ) } байна.
kids !badage yesno Танд хүүхэд бий юу?
parents 1 expr {!badage && kids=='Y'}
numKids parents text Танд хэдэн хүүхэд бий вэ?
kid1 parents && numKids >= 1 text Таны анхны хүүхэд хэдэн настай вэ?
kid2 parents && numKids >= 2 text Таны хоёр дахь хүүхэд хэдэн настай вэ?
kid3 parents && numKids >= 3 text Таны гурав дахь хүүхэд хэдэн настай вэ?
kid4 parents && numKids >= 4 text Таны дөрөв дэх хүүхэд хэдэн настай вэ?
kid5 parents && numKids >= 5 text Таны тав дахь хүүхэд хэдэн настай вэ?
sumage 1 expr {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK,kid5.NAOK)}
report parents yesno {name}, та {age} настай бөгөөд {numKids} хүүхэдтэй гэж хариулсан байна. Таны эхний {min(numKids,5)} хүүхдийн насны нийлбэр {sumage} байна

Эдгээр бүх асуултыг нэг хуудсан дээр (жишээ нь нэг бүлэгт) байрлуулж болох бөгөөд зөвхөн холбогдох асуултууд л харагдана. Түүнчлэн хүүхдүүдийн насыг оруулах тусам сүүлийн асуултын sum() илэрхийлэл хуудсан дээр динамикаар шинэчлэгдэнэ.

Expression Manager нь илэрхийлэл бүрийг нэртэй <span> элементээр хүрээлж энэ функцийг хангадаг. Утга өөрчлөгдөх бүрт тухайн <span> элемент дотор харагдах ёстой илэрхийллийг дахин тооцоолж, дэлгэцийг дахин үүсгэнэ. Нэг хуудсан дээр ийм тохируулсан олон арван, бүр олон зуун илэрхийлэл байж болох бөгөөд хуудас тэдгээрийг бүгдийг нэг удаагийн дэлгэц шинэчлэлтээр дахин харуулна.

LimeSurvey 1.91+ функцүүдийг Expression Manager-ийн функцтэй харьцуулсан зураглал

Хуучин боломж Шинэ боломж Тайлбар
Нөхцөлүүд Холбогдох тэгшитгэл Та маш төвөгтэй нөхцөлт тэгшитгэлүүдийг ашиглаж, илүү өргөн хүрээний хувьсагчид хандах боломжтой
Үнэлгээ Тэгшитгэл Аливаа үнэлгээний оноог Тэгшитгэл болгон дахин бүтэцлэж болно. Энэ нь оноог мэдээллийн санд бичигдэхийг баталгаажуулахаас гадна одоогийн хуудсан дээр оноон утгын динамик өөрчлөлтийг харах боломж олгоно
Орлуулалтууд Expression Manager Үндсэн хөдөлгүүр нь оролтын мөрийг авч, буржгар хаалтан доторх бүгдийг Илэрхийлэл гэж үздэг тул түүхэн орлуулалтын бүх төрлийг боловсруулна. Суулгагдсан JavaScript-ийг эвдэхгүйн тулд Expression Manager нь (a) буржгар хаалтан дотор эхэнд болон төгсгөлд хоосон зай байхгүй тохиолдолд л буржгар хаалтан хоорондох агуулгыг боловсруулдаг - жишээ нь {expr} нь илэрхийлэл боловч { expr}, {expr }, { expr } нь илэрхийлэл биш. Түүнчлэн Expression Manager нь өөрийн мөрүүдийн доторх агуулгыг боловсруулдаггүй (жишээ нь {list('hi','there {braces}')} нь "hi there {braces}" үүсгэнэ). Мөн escape хийсэн буржгар хаалтуудыг үл тооно (жишээ нь \{this is not an expression\})
Баталгаажуулалт Expression Manager Төлөвлөгөө нь одоогийн min/max Асуултын атрибутуудыг Expression Manager-аар боловсруулах явдал юм. Ингэснээр min/max утгууд өөрсдөө илэрхийлэл байж болно

Синтакс тодруулга

Илэрхийлэл оруулах болон баталгаажуулахад туслахын тулд EM нь дараах онцлогуудтай синтакс тодруулгыг хангадаг:

Синтакс тодруулгын төрөл ба утга

Өнгө Жишээ Утга Зөвлөмж мэдээлэл Тайлбар
шаргал дэвсгэр Жишээ бүхэл тэгшитгэл байхгүй Тэгшитгэл гэж танигдсан буржгар хаалт доторх бүх зүйл (жишээ нь эхлэл болон төгсгөлд зай байхгүй) нь тойрсон текстээс ялгагдахын тулд шаргал дэвсгэрээр тэмдэглэгдэнэ
тод улаан текст Жишээ Алдаа Алдааны тухай тайлбар Үл мэдэгдэх хувьсагч эсвэл функц дэх алдаа байж болно, .... Судалгаа бүрэн эвдэрсэн байж болох ч энэ нь нийтийн хэрэглэгчид харагдахгүй.
цэнхэр текст Жишээ функцийн нэр утга болон зөвшөөрөгдөх өгүүлбэр зүй функцийн нэр, эсвэл нээгдэх хаалтын өмнө орсон тул функц байх ёстой зүйлс тод цэнхэр текстээр харагдана. Зөвлөмж мэдээлэл нь функцийн утга болон зөвшөөрөгдөх өгүүлбэр зүйг харуулна.
саарал текст Жишээ тэмдэгт мөр байхгүй нэг болон давхар хашилттай тэмдэгт мөр саарал текстээр харагдана
хөх ногоон текст Жишээ тухайн хуудсан дээр тохируулсан хувьсагч, [нэр эсвэл SGQA код]: асуулт; утга; утга бүрийн кодыг харуулсан хариултын жагсаалт Одоогийн асуулттай нэг хуудсан дээр тохируулсан аливаа хувьсагч хөх ногоон текстээр харагдах бөгөөд энэ нь javascript-ээр шинэчлэгдэж болохыг илтгэнэ. Зөвлөмж мэдээлэл нь хувьсагчийн нэр, асуулт болон одоогийн утгыг (тохируулаагүй бол хоосон) харуулна. Хэрэв асуултын төрөл нь тоолсон утгын багцаас хариулт хүлээдэг бол кодуудыг харуулах утгуудтай харгалзуулсан жагсаалт гарна.
ногоон текст Жишээ өмнөх хуудсан дээр тохируулсан хувьсагч [нэр эсвэл SGQA код]: асуулт; утга; утга бүрийн кодыг харуулсан хариултын жагсаалт Өмнөх хуудсан дээр тохируулсан аливаа хувьсагч тод ногоон текстээр харагдана. Зөвлөмж мэдээлэл нь хувьсагчийн нэр, асуулт болон одоогийн утгыг (тохируулаагүй бол хоосон) харуулна. Хэрэв асуултын төрөл нь тоолсон утгын багцаас хариулт хүлээдэг бол кодуудыг харуулах утгуудтай харгалзуулсан жагсаалт гарна.
тод ягаан текст Жишээ дараагийн хуудсан дээр тохируулсан хувьсагч ерөнхийдөө: судалгааны эхэнд хоосон байх боловч индекс эсвэл өмнөх рүү шилжих үед бөглөгдсөн байж болно [нэр эсвэл SGQA код]: асуулт; утга; утга бүрийн кодыг харуулсан хариултын жагсаалт Дараах хуудсан дээр тохируулсан аливаа хувьсагч тод ягаан текстээр харагдана. Зөвлөмж мэдээлэл нь хувьсагчийн нэр, асуулт болон одоогийн утгыг (тохируулаагүй бол хоосон) харуулна. Хэрэв асуултын төрөл нь тоолсон утгын багцаас хариулт хүлээдэг бол кодуудыг харуулах утгуудтай харгалзуулсан жагсаалт гарна.
тод шаргал-хүрэн текст Жишээ lime орлуулалтын утга утга Lime орлуулалтын мөрүүд (жишээ нь {TOKEN:xxx}, {PRIVACY_MESSAGE}) тод шаргал-хүрэн текстээр харагдана.
улаан текст Жишээ онооны оператор (=) сануулах мессеж Хэрэв та онооны операторуудын нэгийг (=) ашиглавал тэр оператор улаан текстээр харагдана. Энэ нь a = b гэж утга оноохын оронд a == b эсэхийг шалгахыг хүссэн атлаа утгыг санамсаргүй дахин оноохоос сэргийлэхэд зориулагдсан.
энгийн хар текст Жишээ тэмдэглэгээ байхгүй Илэрхийлэл доторх бусад бүх тэмдэглэгээ энгийн хар текстээр харагдана.
улаан хүрээтэй текст алдааг тод улаан шугам хүрээлнэ өгүүлбэр зүйн алдаа алдааны тайлбар Илрүүлсэн өгүүлбэр зүйн аливаа алдааг улаан хүрээгээр тойруулж харуулна. Зөвлөмж мэдээлэл нь алдааг харуулна. Жишээнд хаалт таарахгүй байх, тодорхойлоогүй функц ашиглах, функцэд буруу тооны аргумент дамжуулах, муу бүтэцтэй илэрхийлэл (жишээ нь хувьсагчдын хооронд оператор дутуу), зөвхөн унших хувьсагчид шинэ утга оноохыг оролдох, хувьсагч биш зүйлд утга оноохыг оролдох, эсвэл ямар нэгэн дэмжлэггүй өгүүлбэр зүй ашиглах зэрэг багтана. Өгүүлбэр зүйн алдаа илрүүлэх систем нь илэрхийлэлд олон алдаа байсан ч зөвхөн нэг алдааг мэдээлж болохыг анхаараарай; гэхдээ алдаа илэрсэн тохиолдолд дор хаяж нэг алдаа харагдана.

Нэмэлт унших материал

Expression Manager-ийн жишээ судалгаанууд

Хэрэглээний тохиолдол ба зааварчилгаа

Алхам алхмаар жишээнүүд

Expression Manager-ийн статистик функцүүд

Хөгжүүлэгчдэд зориулсан лавлах

Хөгжүүлэлтийн хөтөлбөр/Төлөв/Хийх зүйлсийн жагсаалт