Semak logik tinjauan - Lanjutan
From LimeSurvey Manual
Umum
Satu pilihan penting yang membantu anda mencipta dan menyelenggara tinjauan yang kompleks dengan mudah ialah Semak Logik Tinjauan.
Sepanjang pembangunan dan pengujian tinjauan, dan sebelum mengaktifkannya, adalah sangat penting untuk mengesahkan logik tinjauan. Hal ini terutamanya benar apabila anda menggunakan persamaan kaitan, penyesuaian (tailoring) dan pengesahan yang kompleks - anda perlu memastikan bahawa tiada apa-apa yang akan rosak apabila tinjauan dijalankan.
Ciri ini membolehkan anda mengesahkan ketepatan tinjauan, kumpulan dan soalan anda dengan pantas. Ia boleh diakses daripada pilihan menu Bar atas yang terletak di bawah tetapan berkaitan tinjauan. Ia tersedia melalui menu Alatan:
Seperti yang anda lihat di atas, anda boleh menjalankan pilihan ini sebanyak empat kali, untuk setiap bahasa yang digunakan dalam tinjauan.
Keterangan
Pilihan Semak Logik Tinjauan memaparkan segala yang anda nyatakan bagi setiap soalan dan kumpulan (cth., nama, teks, bantuan, syarat/kaitan, peraturan pengesahan, nilai lalai, subsoalan, jawapan) dalam format jadual yang mudah. Ia menyerlahkan ralat, dan membolehkan anda mengklik ID soalan dan kumpulan (atau pembolehubah yang digunakan dalam persamaan) untuk membuka tab pelayar baharu bagi mengedit soalan atau kumpulan tersebut. Ini memudahkan anda mengedit sebarang ralat dengan pantas dan memuat semula halaman semakan logik untuk mengesahkan ketepatan tinjauan sebelum mengaktifkannya.
Paparan ini juga direka supaya boleh dibaca oleh penyelidik dan penaja kajian supaya mereka dapat mengesahkan ketepatan reka bentuk dan logik tinjauan. Menyemak logik tinjauan mengemas kini cache bagi semua ungkapan yang digunakan dalam tinjauan yang aktif.
Ia mengandungi lajur berikut:
- # - memaparkan kiraan urutan Kumpulan dan Soalan, bermula dari 0.
- Nama [ID] - memaparkan kod soalan bagi kumpulan/soalan/subsoalan. Kod ini boleh digunakan sebagai pembolehubah dalam ungkapan. ID ialah ID soalan (QID), atau ID kumpulan (GID). Medan ini juga memaparkan jenis soalan (cth., Pelbagai pilihan [M])).
- Kaitan [Validasi] (Asal) - memaparkan perkara berikut:
- Kaitan - persamaan kaitan yang diserlahkan sintaksnya bagi soalan atau kumpulan. Jika ia sentiasa benar (dipaparkan dalam sebarang senario), nilainya ialah 1.
- Validasi - ExpressionScript menjana persamaan pengesahan secara automatik berdasarkan atribut soalan yang dipilih (cth., bilangan jawapan min/maks, nilai jumlah min/maks/sama dengan, nilai individu min/maks atau pengesahan ekspresi lazim). Bahagian ini memaparkan persamaan pengesahan yang dijana supaya anda dapat mengesan sebarang ralat (seperti pembolehubah tidak ditakrif).
- Validasi peringkat soalan memaparkan persamaan yang diperlukan untuk mengesahkan atribut soalan yang diterangkan di atas
- Validasi peringkat subsoalan memaparkan persamaan yang diperlukan untuk melaksanakan array_filter, array_filter_exclude, dan exclusive_option
- Asal - jika soalan mempunyai nilai lalai, ia dipaparkan di sini dengan sintaks diserlahkan (kerana nilai lalai boleh jadi satu ungkapan).
- Teks [Bantuan] (Petua) - memaparkan perkara berikut:
- Teks - teks bagi kumpulan, soalan, subsoalan, atau jawapan. Sintaksnya diserlahkan untuk menunjukkan sebarang penyesuaian (tailoring) yang tertanam, sekali gus membolehkan anda mengesahkan bahawa anda telah mengisytiharkan semua pembolehubah yang anda rancang untuk digunakan dalam penyesuaian.
- Bantuan - memaparkan teks bantuan bagi soalan, juga dengan sintaks diserlahkan.
- Petua - memaparkan petua pengesahan yang dijana secara dalaman, berdasarkan atribut soalan. Petua yang sama digunakan dalam semua gaya tinjauan, serta dalam tinjauan boleh cetak dan skrin kemasukan data.
- Atribut soalan - memaparkan jadual semua atribut soalan yang berkaitan bagi soalan ini. Atribut yang mungkin berupa persamaan diserlahkan sintaksnya supaya anda boleh mengesahkan ketepatannya.
Baris dikodkan warna seperti berikut:
- Kumpulan - dipaparkan dengan latar belakang kelabu cerah
- Soalan - dipaparkan dengan latar belakang hijau cerah
- Subsoalan - dipaparkan dengan latar belakang kuning pucat
- Jawapan - dipaparkan dengan latar belakang putih biasa
Jawapan mempunyai atribut tambahan dalam lajur Kaitan:
- Nilai - ini ialah nilai dalaman lalai yang digunakan oleh pengiraan. Jika anda menggunakan penilaian, ini akan menjadi nilai penilaian. Jika tidak, ia akan sama dengan nama jawapan.
Penggunaan
Di bahagian atas halaman, terdapat mesej ringkasan. Jika semuanya baik, ia akan memaparkan "Tiada ralat sintaks dikesan dalam tinjauan ini", atau "Kumpulan ini" atau "Soalan ini", "dengan sendirinya, tidak mengandungi sebarang ralat sintaks". Jika sebaliknya, ia akan memaparkan "X soalan mempunyai ralat sintaks yang perlu dibetulkan".
Setiap soalan yang mempunyai ralat sintaks akan mendapat latar belakang lajur paling kiri (iaitu #) berkod warna merah. Selain itu, amaran yang menyatakan bilangan ralat minimum bagi sesuatu soalan akan dipaparkan di bawah lajur Nama [ID]. Ralat berikut adalah lazim:
- Pembolehubah tidak ditakrif - jika anda belum mentakrifkan semua pembolehubah anda, atau tersalah taip array_filter (atau set pilihan jawapan yang berbeza bagi array_filter), maka sesetengah soalan pengesahan anda akan menunjukkan ralat. Pembolehubah yang tidak ditakrif dipaparkan dalam teks merah, dikotakkan dengan garisan merah.
- Sintaks buruk - apabila anda mula menggunakan persamaan kaitan, anda mungkin menggunakan terlalu banyak atau terlalu sedikit tanda kurung. Masalah sintaks sedemikian diserlahkan dan dikotakkan dengan warna merah. Jika anda menuding tetikus pada teks berkotak merah itu, tip alat akan menerangkan ralat tersebut.
Warna dalam sintaks ExpressionScript
Syarat dan persamaan diserlahkan sintaksnya supaya lebih mudah memahami apa yang anda lihat:
- Hijau / Biru Muda: Pembolehubah yang merujuk soalan terdahulu dalam tinjauan
- Biru: Satu fungsi
- Kelabu: Ungkapan rentetan
- Perang: Ungkapan TOKEN (data peserta)
- Hitam: Operator
Perkara untuk disemak:
- Ungu: Pembolehubah yang merujuk soalan kemudian dalam tinjauan. Biasanya ini ialah ralat dan perlu disemak.
- Merah atau bingkai merah: Pembolehubah yang tidak wujud atau rujukan kepada soalan terdahulu atau ralat sintaks - biasanya perlu disemak.
Pembolehubah tidak ditakrif
Jika pembolehubah yang tidak ditakrif digunakan, nama pembolehubah berkenaan akan berkod warna merah dan dikelilingi garisan merah. Jika anda menuding tetikus pada nama pembolehubah, ia akan memaparkan "pembolehubah tidak ditakrif":


}}
Sintaks yang salah
Kebanyakan kesilapan berkaitan ungkapan disebabkan oleh sintaks yang salah. Hal ini kerana pentadbir tinjauan lazimnya terlupa menambah kurungan kerinting, tidak menggunakan tanda kurungan dengan betul, atau menggunakan ungkapan dengan cara yang salah:


Berikut ialah banyak contoh yang baik tentang penggunaan penyerlahan sintaks.
JavaScript tersuai yang salah
Ralat JavaScript juga akan diserlahkan dalam semakan logik tinjauan:

Mempercepat penyuntingan dan pengesahan
Semua teks yang diserlahkan sintaksnya mempunyai tip alat terbenam yang boleh diklik:
- Tip alat
- Fungsi - dengan menuding tetikus, anda dapat melihat tujuan dan takrifan sintaks fungsi tersebut;
- Nama pemboleh ubah - dengan menuding tetikus, anda dapat melihat kedudukan (kumpulan, urutan soalan), teks soalan, dan jawapan yang dibenarkan bagi soalan tersebut.
- Tindakan
- Nama pemboleh ubah - mengklik nama pemboleh ubah akan membuka tetingkap baharu yang membolehkan anda mengedit soalan. Ini memudahkan anda menavigasi dan mengesahkan logik - teruskan mengklik nama pemboleh ubah dalam kriteria kaitan atau pengesahan bagi soalan tersebut untuk melihat dari mana ia datang dan bagaimana ia digunakan.
Contoh
Contoh-contoh berikut diambil daripada tinjauan sampel ExpressionScript. Anda boleh mendapatkan tangkapan skrin tinjauan yang sedang berjalan, penerangan, dan muat turun pada halaman tersebut.
Indeks Jisim Badan
Berikut ialah tangkapan skrin bagi contoh ini.
Ini ialah paparan susun semula soalan bagi pengiraan Indeks Jisim Badan. Anda boleh melihat persamaan kaitan bagi berat, tinggi, dan BMI di bawah lajur Soalan:

Untuk gambaran keseluruhan tinjauan yang lebih baik, semak halaman logik tinjauan:

Contoh tinjauan ini juga merupakan contoh yang baik bagi pernyataan if() bersarang untuk menjana "weightstatus".

Logik lata
Berikut ialah tangkapan skrin bagi contoh ini.
Ia menunjukkan logik pengesahan subsoalan yang dijana secara automatik apabila anda menggunakan array_filter dan array_filter_exclude. Contoh ini juga menunjukkan cara anda boleh menggantikan nilai "Lain-lain" yang disesuaikan (jawapan bagi Q02_other ialah Q01_other).

Q05 dalam contoh ini menunjukkan penggunaan serentak array_filter dan array_filter_exclude pada Q01 dan Q02 masing-masing. Contoh ini menunjukkan keupayaan array_filter lata. Perhatikan bahawa salah satu sebab utama kriteria pengesahan peringkat soalan dan subsoalan dipaparkan adalah untuk membantu memastikan anda tidak membuat kesilapan menaip semasa menyatakan nama pemboleh ubah array_filter atau array_filter_exclude (atau jika anda menggunakan nama pemboleh ubah yang berbeza bagi senarai subsoalan yang ditapis). Jika terdapat kesilapan menaip sedemikian, semua nama pemboleh ubah yang tidak sah akan muncul dalam warna merah untuk menunjukkan bahawa ia tidak ditakrifkan, sekali gus membolehkan anda membetulkan masalah tersebut dengan cepat.

Kaitan dinamik
Contoh ini menunjukkan logik kaitan lata dinamik untuk mengawal keterlihatan soalan. Anda boleh memuat turun contoh ini di sini.
Perhatikan juga bahawa soalan hanya dipaparkan jika kriteria pengesahan tertentu dipenuhi. Contohnya, jika seseorang menyatakan bahawa dia mempunyai 2 orang anak, soalan tertentu mesti diisi oleh responden (kid1 dan kid2).

Kaitan peringkat kumpulan
Contoh ini menunjukkan bagaimana kaitan peringkat kumpulan dipaparkan dalam semakan logik. Berikut adalah tangkapan skrin bagi contoh yang diterangkan di bawah.
Seperti yang anda dapat lihat, persamaan kaitan peringkat kumpulan (cohabs > 1 && p1_rel != "") dipaparkan pada baris Person 2 yang berwarna kelabu untuk G-2.
Anda mungkin juga perasan bahawa semua soalan adalah wajib. Walau bagaimanapun, jika kumpulan tidak relevan, semua soalannya juga tidak relevan. Akibatnya, soalan-soalan tersebut hanya benar-benar wajib jika kumpulan itu relevan.
Anda juga mungkin perasan bahawa soalan tertentu hanya dipaparkan jika jawapan kepada soalan sebelumnya tidak kosong. Anda dapat melihat di bawah bahawa jika p2_sex tidak diisi, p2_name tidak akan dipaparkan, walaupun ia merupakan soalan wajib. Soalan wajib p2_age juga tidak akan dipaparkan jika p2_name tidak diisi. Soalan-soalan ini boleh dianggap sebagai "wajib bersyarat".
Selain itu, perhatikan bahawa mesej petua juga dijana secara automatik untuk anda. Mesej ini disusun mengikut julat nilai (min/maks), julat nilai jumlah (min/maks/sama dengan), bilangan jawapan (min/maks), dan sebagainya (bergantung pada jenis soalan yang digunakan dan atribut yang aktif). Kadangkala anda ingin mengesahkan julat jawapan tetapi tidak mahu memaparkan petua pengesahan yang mungkin kelihatan remeh kepada pengguna. Dalam kes sedemikian, anda boleh menggunakan pilihan soalan hide_tip (seperti dalam kes ini, untuk mengelakkan daripada memberitahu pengguna bahawa umur mestilah antara 0 dan 115 melainkan mereka cuba memasukkan nilai yang tidak sah - lihat p2_age).

Koma sebagai pemisah radiks (perpuluhan)
Walaupun LimeSurvey menyokong sepenuhnya penggunaan koma sebagai pemisah radiks (perpuluhan) semasa masa jalan, anda tetap mesti menggunakan titik perpuluhan sebagai pemisah radiks semasa reka bentuk (cth., semasa menetapkan nilai min/maks dalam atribut soalan lanjutan). Contoh yang berfungsi boleh didapati di sini.
Selain itu, ingat bahawa logik pengesahan dijana untuk anda secara automatik daripada atribut soalan yang diaktifkan. Persamaan tersebut mungkin kelihatan rumit, tetapi anda tidak perlu risau tentangnya.

