Enjin ExpressionScript - Panduan mula pantas
From LimeSurvey Manual
Panduan mula pantas
Dalam LimeSurvey, anda boleh menyesuaikan tinjauan anda dengan lebih lanjut melalui penggunaan ExpressionScript (singkatan: ES). Nota sampingan: "ExpressionScript dahulunya dinamakan Expression Manager (EM) dalam versi terdahulu. Jika anda terjumpa Expression Manager di mana-mana, itu hanyalah nama lama bagi ES."
ES boleh digunakan untuk menentukan perkara berikut:
- Navigasi/Pencabangan - membolehkan jawapan responden mengubah susunan paparan soalan;
- Penyesuaian/Piping - membantu anda menyusun ayat soalan (seperti merujuk kepada jawapan terdahulu, atau mengubah ayat berdasarkan umur atau jantina subjek anda) atau cara menjana laporan tersuai (seperti skor penilaian atau nasihat yang disesuaikan);
- Pengesahan - memastikan jawapan memenuhi kriteria tertentu, seperti nilai minimum dan maksimum atau corak input tertentu.
ES menyediakan cara yang intuitif untuk menentukan logik bagi setiap ciri tersebut. Hampir apa sahaja yang boleh anda tulis sebagai persamaan matematik piawai ialah ungkapan yang sah.
ES pada masa ini menyediakan akses kepada 70 fungsi dan ia boleh dikembangkan dengan mudah untuk menyokong lebih banyak fungsi. Ia juga membolehkan anda mengakses pemboleh ubah anda menggunakan nama pemboleh ubah yang mudah dibaca oleh manusia (dan bukannya nama SGQA).
Bahagian-bahagian seterusnya menunjukkan tempat utama ES digunakan.
Sesetengah tinjauan menggunakan "Logik Goto", iaitu jika anda menjawab Question1 dengan pilihan C, anda akan dialihkan ke Question5. Pendekatan ini sangat terhad kerana sukar untuk disahkan. Selain itu, ia mudah rosak apabila anda perlu menyusun semula soalan. Sebaliknya, ES menggunakan persamaan kaitan Boolean untuk menentukan semua keadaan di mana sesuatu soalan mungkin sah. Jika soalan itu berkaitan, soalan tersebut dipaparkan; jika tidak, ia tidak berkenaan dan nilai "NULL" disimpan dalam pangkalan data.
Untuk lebih memahami konsep kaitan, mari kita lihat tinjauan berikut yang mengira Indeks Jisim Badan (BMI) responden tinjauan. Untuk memuat turunnya, klik pada pautan berikut: Contoh tinjauan Indeks Jisim Badan.
Persamaan kaitan ditunjukkan di bawah dalam lajur Kaitan selepas nama pemboleh ubah. Nilai kaitan bagi weight, weight_units, height, dan height_units semuanya 1 (nilai lalai), bermakna soalan-soalan tersebut sentiasa dipaparkan. Walau bagaimanapun, kaitan bagi BMI ialah {!is_empty(height) and !is_empty(weight)}, yang bermaksud BMI hanya akan dikira jika subjek memasukkan nilai untuk kedua-dua height dan weight (sekali gus mengelakkan risiko ralat pembahagian dengan sifar). Selain itu, soalan "Report" hanya dipaparkan jika responden menjawab keempat-empat soalan utama (height, heightunits, weight, weightunits).

Kaitan dipaparkan dan boleh diedit apabila:
- anda ingin melihat/mengedit kaitan peringkat soalan
- anda ingin melihat/mengedit kaitan peringkat kumpulan
Melihat / Mengedit Kaitan Peringkat Soalan
Persamaan ini mengira Indeks Jisim Badan (BMI). Ia hanya ditanya jika seseorang memasukkan ketinggian dan berat badannya.

Ini ialah skrin edit bagi soalan "BMI".

Perhatikan bahawa anda tidak menggunakan pendakap kurawal apabila memasukkan persamaan kaitan.
Melihat / Mengedit Kaitan Peringkat Kumpulan
Mari kita beralih kepada contoh lain - tinjauan banci yang mudah. Untuk memuat turunnya, klik pada pautan berikut: Contoh tinjauan banci.
Halaman pertama bertanya berapa ramai orang yang tinggal bersama anda dan menyimpannya dalam pemboleh ubah "cohabs". Halaman ini hanya dipaparkan jika anda mempunyai lebih daripada seorang penghuni serumah (ia dipaparkan untuk orang kedua yang tinggal bersama anda). Selain itu, p2name, p2age, p2sum hanya dipaparkan jika soalan sebelum setiap satunya mengandungi jawapan.

Jadi, kumpulan itu juga mempunyai kriteria kaitan peringkat soalan, supaya sesetengah soalan hanya muncul jika anda telah menjawab soalan tertentu sebelumnya (cth., p2age dipaparkan jika p2name telah dijawab). ES menggabungkan kaitan peringkat Kumpulan dan Soalan untuk anda. Soalan dalam sesebuah kumpulan hanya ditanya jika kumpulan secara keseluruhan berkaitan. Kemudian, hanya subset soalan dalam kumpulan yang berkaitan akan ditanya.
Berikut ialah tangkapan skrin untuk mengedit kaitan peringkat kumpulan bagi Cohabitant 2:

Perhatikan bahawa anda tidak menggunakan pendakap kerinting apabila memasukkan persamaan kaitan.
Penyesuaian/Piping
ES membolehkan anda melakukan penyesuaian bersyarat yang mudah dan kompleks dengan senang. Kadangkala anda hanya memerlukan penggantian mudah, seperti menyatakan, "Anda berkata anda membeli [Produk]. Apakah yang paling anda sukai tentangnya?". Kadangkala anda memerlukan penggantian bersyarat seperti "[Encik/Puan] [NamaAkhir], sudikah anda melengkapkan tinjauan kami?". Dalam kes ini, anda ingin menggunakan "Encik atau Puan" berdasarkan jantina orang tersebut. Pada masa lain, anda memerlukan penggantian yang lebih kompleks (seperti berdasarkan pengiraan matematik). ES menyokong setiap jenis penyesuaian/piping ini.
Persamaan Bersyarat
Contoh Indeks Jisim Badan menunjukkan keupayaan untuk mengira BMI seseorang, walaupun membenarkan mereka memasukkan ketinggian dan berat dalam dua unit yang berbeza (cm vs inci dan kg vs lb):

Dalam kes ini, weightkg ialah {if(weightunits == "kg", weight, weight * 0.453592)}. Fungsi "if()" ini bermaksud jika subjek memasukkan berat dalam kilogram, gunakan nilai tersebut; jika tidak, darabkan nilai yang dimasukkan (pound ialah alternatifnya) dengan 0.453592 untuk menukarkannya kepada kilogram. Pembolehubah heightm menggunakan pendekatan yang serupa untuk mengira ketinggian seseorang dalam meter (ketinggian dalam cm/100), walaupun dia memasukkan ketinggiannya dalam inci (1 meter=3.28084 inci).
BMI dikira sebagai: {weightkg / (heightm * heightm)}.
Akhir sekali, laporan menyesuaikan mesej secara bersyarat untuk subjek, memberitahunya apa yang telah dimasukkan. (cth., "Anda berkata anda setinggi 2 meter dan berat 70 kg.")
Dalam imej di bawah, weightstatus menggunakan pernyataan "if()" bersarang untuk mengkategorikan seseorang daripada kekurangan berat badan hingga obes teruk. Anda boleh melihat persamaannya dengan menyemak logiknya:

Daripada tetingkap edit untuk soalan ini, anda dapat melihat dua perkara:
- Penyesuaian mesti mengapit ungkapan dengan pendakap kerinting
- Ungkapan boleh merangkumi beberapa baris jika, seperti dalam kes ini, anda mahu memudahkan pembacaan logik bersyarat bersarang.

Soalan, Jawapan dan Laporan yang Disesuaikan
Laporan BMI kelihatan seperti ini:

Berikut ialah tetingkap edit untuk soalan yang sama.

Apa-apa di dalam pendakap kerinting dianggap sebagai ungkapan, dan diserlahkan sintaksnya (dikod warna) dalam imej sebelum ini. Jika terdapat sebarang kesilapan menaip (seperti nama pembolehubah atau fungsi yang salah eja atau tidak ditakrif), ES akan memaparkan ralat. Dalam contoh kami di bawah:
- heightunit.shown ialah nama pembolehubah yang tidak ditakrif (sebenarnya heightunits.shown) dan
- "rnd()" ialah fungsi yang tidak ditakrif (nama fungsi yang betul ialah "round()").
Dalam kedua-dua kes, ralat diletakkan dalam kotak merah untuk memudahkan anda mengesan dan membetulkannya.

Anda juga dapat melihat bahawa anda boleh mencipta laporan kompleks dengan pantas, seperti jadual nilai yang dimasukkan atau nasihat yang disesuaikan.
Sila ingat bahawa semua penyesuaian mesti mengapit ungkapan dengan pendakap kerinting supaya LimeSurvey tahu bahagian soalan mana yang merupakan teks bebas dan mana yang perlu dihuraikan oleh enjin ExpressionScript.
Pengesahan
ES mengawal cara kebanyakan pilihan soalan lanjutan berfungsi. Pilihan ini mengawal aspek seperti bilangan jawapan min/maks, nilai individu min/maks, nilai jumlah min/maks, dan menyemak bahawa nilai yang dimasukkan sepadan dengan corak rentetan yang ditetapkan. Sebarang nilai dalam salah satu medan tersebut dianggap sebagai ungkapan, jadi anda boleh mempunyai kriteria min/maks dengan hubungan bersyarat yang kompleks dengan soalan lain.
Dalam semua kes ini, memandangkan atribut soalan lanjutan sentiasa dianggap sebagai ungkapan, anda tidak menggunakan pendakap kerinting semasa menetapkannya.
Halaman tinjauan contoh menunjukkan banyak contoh yang berfungsi yang mengandungi pelbagai ungkapan pengesahan.
ExpressionScript - penyampaian
Untuk mengetahui lebih lanjut tentang ExpressionScript dan cara anda boleh menggunakan pelbagai ungkapan untuk meningkatkan tinjauan anda, sila klik pautan berikut.