Periksa logika survei - Lanjutan
From LimeSurvey Manual
Umum
Opsi penting yang membantu Anda membuat dan memelihara survei yang kompleks dengan mudah adalah Periksa logika survei.
Selama pengembangan dan pengujian survei, serta sebelum mengaktifkannya, sangat penting untuk memvalidasi logika survei. Hal ini terutama berlaku ketika Anda menggunakan persamaan relevansi, penyesuaian (tailoring), dan validasi yang kompleks - Anda perlu memastikan bahwa tidak ada yang akan bermasalah saat survei dijalankan.
Fitur ini memungkinkan Anda memvalidasi keakuratan survei, grup, dan pertanyaan Anda dengan cepat. Fitur ini dapat diakses dari opsi menu bilah atas yang terletak di bawah pengaturan terkait survei. Fitur ini tersedia melalui menu Alat:
Seperti yang dapat Anda lihat di atas, Anda dapat menjalankan opsi ini sebanyak empat kali, untuk setiap bahasa yang digunakan dalam survei.
Deskripsi
Opsi Periksa logika survei menampilkan semua yang telah Anda tentukan untuk setiap pertanyaan dan grup (misalnya nama, teks, bantuan, kondisi/relevansi, aturan validasi, nilai default, subpertanyaan, jawaban) dalam format tabel yang praktis. Opsi ini menyorot kesalahan, dan memungkinkan Anda mengklik ID pertanyaan dan grup (atau variabel yang digunakan dalam persamaan) untuk membuka tab browser baru guna mengedit pertanyaan atau grup tersebut. Hal ini memudahkan Anda mengedit kesalahan dengan cepat dan menyegarkan halaman pemeriksaan logika untuk memastikan keakuratan survei sebelum mengaktifkannya.
Tampilan ini juga dirancang agar dapat dibaca oleh peneliti dan sponsor studi sehingga mereka dapat memvalidasi keakuratan desain dan logika survei. Pemeriksaan logika survei memperbarui cache untuk semua ekspresi yang digunakan dalam survei yang aktif.
Tabel ini mencakup kolom-kolom berikut:
- # - menampilkan jumlah urutan grup dan pertanyaan, dimulai dari 0.
- Nama [ID] - menampilkan kode pertanyaan untuk grup/pertanyaan/subpertanyaan. Kode ini dapat digunakan sebagai variabel dalam ekspresi. ID adalah ID pertanyaan (QID), atau ID grup (GID). Kolom ini juga menampilkan jenis pertanyaan (misalnya Pilihan ganda [M])).
- Hubungan [Validasi] (Nilai default) - menampilkan hal berikut:
- Hubungan - persamaan yang berhubungan dengan sorotan sintaksis untuk pertanyaan atau grup. Jika selalu benar (ditampilkan dalam skenario apa pun), nilainya akan 1.
- Validasi - ExpressionScript secara otomatis menghasilkan persamaan validasi berdasarkan atribut pertanyaan yang dipilih (misalnya jumlah jawaban minimum/maksimum, nilai jumlah minimum/maksimum/sama dengan, nilai individual minimum/maksimum, atau validasi persamaan reguler). Bagian ini menampilkan persamaan validasi yang dihasilkan sehingga Anda dapat mendeteksi apakah ada kesalahan (seperti variabel yang tidak didefinisikan).
- Validasi tingkat pertanyaan menampilkan persamaan yang diperlukan untuk memverifikasi atribut pertanyaan yang dijelaskan di atas
- Validasi tingkat subpertanyaan menampilkan persamaan yang diperlukan untuk menerapkan array_filter, array_filter_exclude, dan exclusive_option
- Nilai default - jika pertanyaan memiliki nilai default, nilai tersebut ditampilkan di sini dengan sorotan sintaksis (karena nilai default dapat berupa ekspresi).
- Teks [Bantuan] (Tip) - menampilkan hal berikut:
- Teks - teks grup, pertanyaan, subpertanyaan, atau jawaban. Teks ini diberi sorotan sintaksis untuk menampilkan penyesuaian (tailoring) yang disematkan, sehingga Anda dapat memverifikasi bahwa semua variabel yang akan digunakan dalam penyesuaian telah dideklarasikan.
- Bantuan - menampilkan teks bantuan untuk pertanyaan, juga dengan sorotan sintaksis.
- Tip - menampilkan tip validasi yang dihasilkan secara internal, berdasarkan atribut pertanyaan. Tip yang sama digunakan di semua gaya survei, serta pada survei dapat dicetak dan layar entri data.
- Atribut pertanyaan - menampilkan tabel semua atribut pertanyaan yang relevan untuk pertanyaan ini. Atribut yang mungkin berupa persamaan diberi sorotan sintaksis sehingga Anda dapat memvalidasi keakuratannya.
Baris diberi kode warna sebagai berikut:
- Grup - ditampilkan dengan latar belakang abu-abu muda
- Pertanyaan - ditampilkan dengan latar belakang hijau muda
- Subpertanyaan - ditampilkan dengan latar belakang kuning pucat
- Jawaban - ditampilkan dengan latar belakang putih polos
Jawaban memiliki atribut tambahan di kolom Hubungan:
- Nilai - ini adalah nilai internal default yang digunakan dalam perhitungan. Jika Anda menggunakan penilaian, ini akan menjadi nilai penilaian. Jika tidak, nilainya akan sama dengan nama jawaban.
Penggunaan
Di bagian atas halaman, terdapat pesan ringkasan. Jika semuanya baik-baik saja, pesan tersebut akan berbunyi "Tidak terdapat kesalahan sintaksis pada survei ini", atau "Grup ini" atau "Pertanyaan ini", "dengan sendirinya tidak mengandung kesalahan sintaksis". Jika sebaliknya, pesan akan berbunyi "X pertanyaan memiliki kesalahan sintaksis yang perlu diperbaiki".
Setiap pertanyaan yang memiliki kesalahan sintaksis akan mendapatkan latar belakang kolom paling kiri (yaitu #) dengan kode warna merah. Selain itu, peringatan yang menyatakan jumlah kesalahan minimum dari suatu pertanyaan akan ditampilkan di bawah kolom Nama [ID]. Kesalahan berikut ini umum terjadi:
- Variabel tidak didefinisikan - jika Anda belum mendefinisikan semua variabel, atau salah mengetik array_filter (atau menggunakan kumpulan opsi jawaban yang berbeda untuk array_filter), maka beberapa pertanyaan validasi Anda akan menampilkan kesalahan. Variabel yang tidak didefinisikan ditampilkan dengan teks merah, dalam kotak bergaris merah.
- Sintaksis buruk - saat mulai menggunakan persamaan relevansi, Anda mungkin menggunakan terlalu banyak atau terlalu sedikit tanda kurung. Masalah sintaksis seperti itu disorot dan diberi kotak merah. Jika Anda mengarahkan mouse ke teks berkotak merah tersebut, tooltip akan menjelaskan kesalahannya.
Warna dalam sintaksis ExpressionScript
Kondisi dan persamaan diberi sorotan sintaksis agar lebih mudah memahami apa yang sedang Anda lihat:
- Hijau / Biru muda: Variabel yang merujuk ke pertanyaan sebelumnya dalam survei
- Biru: Sebuah fungsi
- Abu-abu: Ekspresi string
- Cokelat: Ekspresi TOKEN (data peserta)
- Hitam: Operator
Hal yang perlu diperiksa:
- Ungu: Variabel yang merujuk ke pertanyaan yang muncul kemudian dalam survei. Biasanya ini merupakan kesalahan dan perlu diperiksa.
- Merah atau bingkai merah: Variabel yang tidak ada, rujukan ke pertanyaan sebelumnya yang tidak ada, atau kesalahan sintaksis - biasanya perlu diperiksa.
Variabel tidak didefinisikan
Jika variabel yang tidak didefinisikan digunakan, nama variabel yang bersangkutan akan diberi kode warna merah dan dikelilingi garis merah. Jika Anda mengarahkan mouse ke nama variabel tersebut, akan muncul keterangan "variabel tidak didefinisikan":


}}
Sintaks yang salah
Sebagian besar kesalahan terkait ekspresi disebabkan oleh sintaks yang salah. Hal ini terjadi karena administrator survei biasanya lupa menambahkan kurung kurawal, tidak menggunakan tanda kurung dengan benar, atau menggunakan ekspresi secara keliru:


Berikut ini banyak contoh bagus tentang penggunaan penyorotan sintaks.
JavaScript kustom yang salah
Kesalahan JavaScript juga akan disorot dalam pemeriksaan logika survei:

Mempercepat pengeditan dan validasi
Semua teks yang disorot sintaksnya memiliki tooltip yang dapat diklik:
- Tooltip
- Fungsi - arahkan mouse untuk melihat tujuan dan definisi sintaks dari fungsi tersebut;
- Nama variabel - arahkan mouse untuk melihat posisi (grup, urutan pertanyaan), teks pertanyaan, dan jawaban yang diizinkan untuk pertanyaan tersebut.
- Tindakan
- Nama variabel - mengeklik nama variabel akan membuka jendela baru yang memungkinkan Anda mengedit pertanyaan. Ini memudahkan navigasi dan verifikasi logika - cukup terus klik nama variabel pada kriteria relevansi atau validasi pertanyaan untuk melihat dari mana asalnya dan bagaimana variabel tersebut digunakan.
Contoh
Contoh-contoh berikut diambil dari survei contoh ExpressionScript. Anda dapat menemukan tangkapan layar survei yang berjalan, penjelasan, dan unduhan di halaman tersebut.
Indeks Massa Tubuh
Berikut adalah tangkapan layar dari contoh ini.
Ini adalah tampilan urutkan ulang pertanyaan untuk perhitungan Indeks Massa Tubuh. Anda dapat melihat persamaan relevansi untuk berat badan, tinggi badan, dan BMI di bawah kolom Pertanyaan:

Untuk gambaran survei yang lebih baik, periksa halaman logika survei:

Contoh survei ini juga merupakan contoh yang bagus untuk pernyataan if() bersarang guna menghasilkan "weightstatus".

Logika berjenjang
Berikut adalah tangkapan layar dari contoh ini.
Contoh ini menunjukkan logika validasi subpertanyaan yang dihasilkan secara otomatis saat Anda menggunakan array_filter dan array_filter_exclude. Contoh ini juga menunjukkan cara mengganti nilai "Lainnya" yang disesuaikan (jawaban untuk Q02_other adalah Q01_other).

Q05 dalam contoh ini menunjukkan penggunaan array_filter dan array_filter_exclude secara bersamaan masing-masing pada Q01 dan Q02. Contoh ini mendemonstrasikan kemampuan array_filter berjenjang. Perhatikan bahwa salah satu alasan utama menampilkan kriteria validasi tingkat pertanyaan dan subpertanyaan adalah untuk memastikan Anda tidak membuat kesalahan ketik dalam menentukan nama variabel array_filter atau array_filter_exclude (atau jika Anda menggunakan nama variabel berbeda untuk daftar subpertanyaan yang difilter). Jika ada kesalahan ketik tersebut, semua nama variabel yang tidak valid akan muncul dalam warna merah yang menandakan bahwa variabel tersebut tidak terdefinisi, sehingga Anda dapat segera memperbaiki masalahnya.

Relevansi dinamis
Contoh ini mendemonstrasikan logika relevansi berjenjang dinamis untuk mengontrol tampilnya pertanyaan. Anda dapat mengunduh contoh ini di sini.
Perhatikan juga bahwa pertanyaan hanya ditampilkan jika kriteria validasi tertentu terpenuhi. Misalnya, jika seseorang menyatakan bahwa ia memiliki 2 anak, pertanyaan tertentu harus diisi oleh responden (kid1 dan kid2).

Relevansi tingkat grup
Contoh ini menunjukkan bagaimana relevansi tingkat grup muncul dalam pemeriksaan logika. Berikut adalah tangkapan layar dari contoh yang dijelaskan di bawah ini.
Seperti yang Anda lihat, persamaan relevansi tingkat grup (cohabs > 1 && p1_rel != "") muncul pada baris Person 2 berwarna abu-abu untuk G-2.
Anda mungkin juga memperhatikan bahwa semua pertanyaan bersifat wajib. Namun, jika grup tidak relevan, maka semua pertanyaannya pun tidak relevan. Akibatnya, pertanyaan-pertanyaan tersebut hanya benar-benar wajib jika grup tersebut relevan.
Anda mungkin juga memperhatikan bahwa pertanyaan tertentu hanya ditampilkan jika jawaban untuk pertanyaan sebelumnya tidak kosong. Seperti yang dapat Anda lihat di bawah, jika p2_sex tidak diisi, p2_name tidak akan ditampilkan, meskipun merupakan pertanyaan wajib. Pertanyaan wajib p2_age juga tidak akan ditampilkan jika p2_name tidak diisi. Pertanyaan-pertanyaan ini dapat dianggap sebagai "wajib bersyarat".
Selain itu, perhatikan bahwa pesan tip juga dibuat secara otomatis untuk Anda. Pesan tersebut disusun berdasarkan rentang nilai (min/maks), rentang jumlah nilai (min/maks/sama dengan), jumlah jawaban (min/maks), dan seterusnya (tergantung pada jenis pertanyaan yang digunakan dan atribut yang aktif). Terkadang Anda ingin memvalidasi rentang jawaban tetapi tidak ingin menampilkan tip validasi yang mungkin tampak tidak perlu kepada pengguna. Dalam kasus seperti itu, Anda dapat menggunakan opsi pertanyaan hide_tip (seperti pada kasus ini, untuk menghindari pemberitahuan kepada pengguna bahwa usia harus antara 0 dan 115 kecuali jika mereka mencoba memasukkan nilai yang salah - lihat p2_age).

Koma sebagai pemisah desimal (radix)
Meskipun LimeSurvey sepenuhnya mendukung penggunaan koma sebagai pemisah desimal (radix) saat survei dijalankan, Anda tetap harus menggunakan titik sebagai pemisah desimal pada saat desain (misalnya, saat menentukan nilai min/maks pada atribut pertanyaan lanjutan). Contoh yang berfungsi dapat ditemukan di sini.
Ingat juga bahwa logika validasi dibuat secara otomatis untuk Anda dari atribut pertanyaan yang diaktifkan. Persamaannya mungkin terlihat rumit, tetapi Anda tidak perlu mengkhawatirkannya.

