Contoh tinjauan Expression Manager
From LimeSurvey Manual
Pengenalan
Cara terbaik untuk belajar menggunakan ExpressionScript ialah mencuba contoh yang berfungsi dan mengubah suainya mengikut keperluan anda.
Di bawah ini anda boleh mendapatkan satu set contoh tinjauan untuk menunjukkan (dan menguji) cara EM boleh digunakan untuk mempertingkatkan tinjauan anda. Tinjauan ini terdapat dalam folder /docs/demosurveys pada pakej pengedaran.
Kaitan, Penyesuaian dan Persamaan
Gambaran keseluruhan
Contoh berikut mengira BMI (Indeks Jisim Badan) setiap responden. Lihat di bawah ciri-ciri yang ditunjukkan dalam contoh ini.
Ciri EM yang Ditunjukkan
- Kaitan - sokongan untuk logik bersyarat yang berkuasa;
- Piping / Penyesuaian - menawarkan keupayaan untuk menyalurkan atau menyesuaikan jawapan dan metadata soalan;
- Penyesuaian Dinamik - perhatikan bahawa laporan berubah pada halaman semasa anda menjawab soalan.
- Penyesuaian Mikro - penyesuaian bersyarat dalam ayat dan laporan menggunakan pernyataan if()
- Persamaan - jenis soalan baharu yang membolehkan anda membuat pengiraan dan menyimpan hasilnya dalam pangkalan data, walaupun pengiraan itu tersembunyi
- Pengesahan Bersyarat - kriteria pengesahan, seperti nilai minimum yang dibenarkan, boleh bersyarat - contohnya, berdasarkan persamaan.
Tangkapan skrin
Contoh ini mengira Indeks Jisim Badan, iaitu pengiraan berat dan ketinggian anda untuk menentukan sama ada anda berlebihan berat badan. Perhatikan bahawa pada mulanya, anda hanya melihat empat soalan wajib:

Setelah anda memasukkan maklumat anda (dan anda boleh memilih sama ada menggunakan unit metrik atau bukan metrik), anda akan melihat laporan yang disesuaikan yang meringkaskan apa yang anda masukkan, serta memberitahu status berat badan anda:

Berikut ialah contoh lain, menggunakan unit bukan metrik untuk menunjukkan bagaimana hasilnya berubah secara dinamik:

Terdapat soalan jenis Persamaan tersembunyi pada peringkat dalaman yang menukar data kepada metrik (jika perlu), dan menyimpan ketinggian, berat, BMI dan status berat badan dalam bentuk metrik ke dalam pangkalan data tanpa memerlukan JavaScript tersuai.
Dalam set contoh seterusnya, anda dapat melihat cara menggunakan fungsi matematik dan fungsi lain dalam laporan yang disesuaikan. Beginilah rupa halaman sebelum anda memasukkan sebarang data. Terdapat logik bersyarat untuk memaparkan sel kosong jika tiada data (atau data bukan angka) dimasukkan, dan bukannya memaparkan "NaN" atau "Divide by Zero".

Apabila nombor dimasukkan, laporan pada halaman berubah untuk menunjukkan pengiraan yang dilakukan beserta hasilnya.

Terdapat banyak lagi contoh lain dalam contoh tinjauan ini. Sebagai contoh, tangkapan skrin di bawah menunjukkan satu daripada berpuluh-puluh cara anda boleh mengisi halaman Kaitan Dinamik. Seperti yang dinyatakan dalam teks bantuan, cuba pelbagai umur, dan terutamanya gabungan jawapan yang tidak logik untuk melihat mesej menarik yang dijana di bahagian bawah. Perhatikan juga bahawa jika anda menyatakan anda mempunyai lebih daripada seorang anak, mesej akan berbunyi "I hope you enjoy playing with your X children", dan bukannya "I hope you enjoy playing with your child". Ini menunjukkan bagaimana anda boleh dengan mudah menyesuaikan ayat secara mikro supaya sepadan dengan jantina dan/atau bilangan subjek anda. Anda juga boleh dengan mudah mengubah bentuk kata kerja dan kata nama berdasarkan jantina dan bilangan.

Muat turun
Untuk mengakses contoh tinjauan ini, sila klik pautan berikut: LS3_em_tailoring.zip.
Contoh Banci
Gambaran keseluruhan
Ini ialah contoh banci yang bertanya berapa orang yang tinggal dalam isi rumah anda.
Ia menunjukkan bagaimana kaitan peringkat kumpulan dapat memudahkan pelaksanaan "gelung" soalan. Selepas mencipta kumpulan untuk Orang 1, saya mengeksport kumpulan tersebut. Oleh kerana saya menggunakan nama pemboleh ubah qcode seperti p1_name dan bukannya kod SGQA, saya boleh menggunakan editor teks untuk mengedit dan mengimport semula kumpulan itu beberapa kali dengan cepat (contohnya, ia mengambil masa kira-kira 10 saat untuk mengedit dan mengimport semula setiap kumpulan berulang, bagi memastikan semua pemboleh ubah mempunyai nama yang unik dan logik peringkat kumpulan adalah betul).
Anda juga boleh menggunakan ciri salin soalan, tetapi ia tidak akan secepat pilihan yang dicadangkan di atas.
Ini juga menunjukkan cara anda boleh menghalang mesej Selesai daripada dipaparkan sehingga tinjauan benar-benar selesai (cth., apabila semua kumpulan yang diperlukan telah selesai).
Ciri EM yang Ditunjukkan
- Kaitan peringkat kumpulan - Kumpulan susulan (Orang 1-5) hanya dipaparkan sehingga bilangan penghuni serumah yang dinyatakan;
- Penyesuaian (Tailoring) - Laporan akhir merumuskan data demografi bagi setiap penghuni serumah;
- Paparan soalan secara progresif - Sama ada dalam mod kumpulan atau semua-dalam-satu, soalan seterusnya hanya dipaparkan sebaik sahaja soalan sebelumnya dijawab.
Tangkapan skrin
Tinjauan ini menjana laporan yang disesuaikan yang menunjukkan demografi bagi bilangan penghuni serumah yang dinyatakan:

Jika anda bertukar kepada mod satu soalan pada satu masa, anda akan melihat bahawa indeks menyesuaikan soalan. Oleh sebab pengguna menyatakan bahawa orang itu seorang wanita, soalan yang dipaparkan ialah "Siapakah namanya". Dan oleh sebab kita menjawab "Mary", soalan seterusnya berbunyi "Berapakah umur Mary"?

Muat turun
Untuk memuat turun contoh tinjauan ini, klik di sini: LS3_group_relevance.zip.
Penapis Tatasusunan Berata=
Gambaran keseluruhan
Tinjauan ini berdasarkan reka bentuk sebuah tinjauan yang dikongsikan dengan izin Joy Lane Research, LLC.
Tangkapan skrin
Dalam contoh berikut, perhatikan bahawa:
- Q02 hanya menunjukkan set produk yang ditandakan dalam Q01 (dengan menggunakan array_filter)
- Q02 juga menunjukkan "Another product", iaitu teks yang dimasukkan dalam medan "Other electronic" dalam Q01
- Q04 hanya menunjukkan produk daripada Q02 yang telah ditandakan (jadi penapis tatasusunan berperingkat)
- Q05 hanya menunjukkan produk daripada Q02 yang tidak ditandakan dalam Q02 (menggunakan array_filter_exclude berperingkat)


Muat turun
Klik pautan berikut untuk memuat turun contoh di atas: Contoh tinjauan LS2_cascading_array_filter.
Piping/Penyesuaian Menggunakan Semua Jenis Soalan dan Atribut
Gambaran keseluruhan
Jika anda keliru tentang cara menamakan pemboleh ubah anda (SGQA berbanding Qcode), anda tidak keseorangan. Walaupun dokumentasi utama menerangkan cara menyusun nama pemboleh ubah Qcode, tiada yang mengatasi melihatnya dalam demo yang berfungsi. Tinjauan ini menunjukkan cara anda boleh mengakses atribut soalan dan jawapan menggunakan ExpressionScript.
Kandungan
- Contoh bagi setiap jenis soalan
- Semua jenis soalan yang boleh menggunakan "lain-lain" disertakan supaya anda dapat melihat bagaimana ia menjejaskan penamaan pemboleh ubah
- Nilai lalai bagi semua jenis soalan yang menerima nilai lalai
- Penyesuaian - Laporan pada halaman dan di luar halaman yang menunjukkan kesemua 16 akhiran tatatanda titik EM yang tersedia.
- Laporan ini menunjukkan semua data yang sedang dimasukkan (jadi ia menunjukkan cara anda boleh menjana laporan boleh cetak anda sendiri untuk pengguna sebagai ganti skrin cetak jawapan)
- Penamaan Qcode dan SGQA yang betul bagi semua pemboleh ubah
Tangkapan skrin
Ini ialah tinjauan yang sangat besar, jadi kami memilih untuk tidak menyertakan tangkapan skrin. Sebaliknya, sila muat turun dan cubalah sendiri.
Muat turun
Klik pautan berikut untuk memuat turun tinjauan ini: LS3_EM_question_attributes.lss
Pengesahan tradisional, dibayangkan semula
Gambaran keseluruhan
Contoh ini menunjukkan semua jenis pengesahan yang menggunakan ungkapan dan cara ia memberi kesan kepada setiap jenis soalan yang menyokong pengesahan. Dalam kebanyakan kes, petua pengesahan pada mulanya tersembunyi dan hanya dipaparkan jika soalan gagal memenuhi kriteria pengesahan (dan akan hilang semula apabila soalan memenuhi kriteria pengesahan).
Jenis Pengesahan yang Ditunjukkan
- min_num_value_n - nilai minimum bagi satu jawapan
- max_num_value_n - nilai maksimum bagi satu jawapan
- min_answers - bilangan jawapan minimum yang diperlukan
- max_answers - bilangan jawapan maksimum yang dibenarkan
- multiflexible_min - nilai minimum yang dibenarkan bagi satu jawapan (untuk jenis soalan nombor multifleksi)
- multiflexible_max - nilai maksimum yang dibenarkan bagi satu jawapan (untuk jenis soalan nombor multifleksi)
- min_num_value - jumlah minimum yang dibenarkan merentasi semua jawapan bagi soalan tersebut
- max_num_value - jumlah maksimum yang dibenarkan merentasi semua jawapan bagi soalan tersebut
- equals_num_value - jumlah merentasi semua jawapan bagi soalan tersebut mesti sama dengan nilai ini
- validation - ini ialah pengesahan ekspresi lazim bagi soalan tersebut - ia boleh digunakan pada sel individu
Tangkapan skrin
Dengan menggunakan gaya CSS baharu, setiap jenis pengesahan memaparkan petua yang berasingan. Jika dipaparkan, petua tersebut boleh disembunyikan melalui pilihan hide_tip. Pilihan lalai ialah memaparkannya dengan fon merah jika soalan gagal memenuhi kriteria pengesahan, dan hijau jika kriteria dipenuhi:

Pengguna tidak boleh menghantar halaman yang mempunyai ralat pengesahan. Mereka akan diberi amaran serta-merta jika memasukkan maklumat yang salah:

Pengesahan boleh digunakan pada sel individu dalam tatasusunan, seperti dalam contoh ini di mana pengesahan ekspresi lazim memastikan setiap entri ialah nombor telefon AS yang diformat dengan betul termasuk kod kawasan.

Muat turun
Untuk memuat turun contoh di atas, klik pautan berikut: LS3_Validation_tests.zip.
Persamaan Pengesahan
Gambaran keseluruhan
Kadangkala anda memerlukan pengesahan tersuai yang tidak dapat dicapai menggunakan kriteria min/maks tradisional. Untuk itu, anda perlu menggunakan pilihan em_validation_q dan em_validation_sq yang membolehkan anda membina persamaan pengesahan yang kompleks masing-masing pada peringkat soalan dan subsoalan.
Ciri EM yang Ditunjukkan
- em_validation_q - ini ialah persamaan yang menentukan sama ada keseluruhan soalan adalah sah
- em_validation_q_tip - ini ialah mesej yang dipaparkan jika soalan gagal memenuhi kriteria em_validation_q
- em_validation_sq - ini ialah persamaan yang menentukan sama ada setiap subsoalan (sel tatasusunan) adalah sah
- em_validation_sq_tip - ini ialah mesej yang dipaparkan jika mana-mana subsoalan tidak sah.
Secara amnya, apabila em_validation_sq digunakan, jika mana-mana sel tidak sah, warna latar belakang sel tersebut bertukar merah untuk menunjukkan bahawa terdapat ralat.
Tangkapan skrin

Soalan ini memastikan anda memasukkan umur anak-anak anda mengikut tertib menurun dengan menggunakan persamaan pengesahan ini:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4

Dalam contoh di bawah, pengesahan memastikan tidak lebih daripada 3 soalan dijawab pada mana-mana baris dengan menggunakan persamaan pengesahan ini:
(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)
Anda juga boleh menulisnya seperti berikut, dan LimeSurvey akan menukarnya secara automatik semasa masa jalan kepada ungkapan yang disenaraikan di atas.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)

Muat turun
Untuk memuat turun contoh tinjauan yang digunakan dalam contoh di atas, klik pautan berikut: ls2_test_em_sq_validation.lss.
Kaitan subsoalan
Gambaran keseluruhan
Bahagian ini menunjukkan bagaimana array_filter dan kriteria pengesahan boleh berinteraksi. Bagi pengesahan yang digunakan pada jumlah, hanya nilai yang berkaitan (kelihatan) dipertimbangkan.
Ciri EM yang ditunjukkan
Ia juga menunjukkan pelaporan dinamik bilangan soalan yang dijawab dalam soalan teras.
Tangkapan skrin
Mengubah bilangan baris yang kelihatan akan mengubah jumlah secara dinamik. Menandakan subsoalan sebagai tidak berkaitan tidak mengosongkan nilainya. Sebaliknya, jika ia tidak berkaitan, nilainya tidak menyumbang kepada sebarang persamaan.


Perhatikan apa yang berlaku apabila kita menandakan "Subsoalan kelima" untuk soalan pertama "Which rows should appear below". Perhatikan bahawa jumlah bagi soalan kedua "Enter some numbers" kini ialah 5. Walaupun subsoalan 5 bagi soalan tersebut masih mempunyai nilai 14 (cth., jika anda nyahtanda subsoalan kelima, anda akan melihat nilai 14 semula), nilai itu tidak menyumbang kepada jumlah kerana ia tidak berkaitan pada masa ini. Semua data yang tidak berkaitan dikosongkan (dijadikan NULL dalam pangkalan data) semasa dihantar, tetapi ia kekal tersedia pada halaman sekiranya pengguna mahu atau perlu menukar fikiran tentang jawapan mereka.

Muat turun
Untuk memuat turun contoh kami, klik di sini: ls2_subquestion_relevance.lss.
Menggunakan koma sebagai pemisah radiks (titik perpuluhan)
Gambaran keseluruhan
ExpressionScript memastikan bahawa hanya nombor yang sah boleh dimasukkan ke dalam medan berangka. Jika anda memasukkan nombor yang tidak sah, anda akan diberi amaran bahawa ada sesuatu yang tidak betul (cth., bagi tema fruity, keseluruhan soalan akan diwarnakan merah).
Perhatikan bahawa nilai berangka sentiasa ditukar kepada penggunaan noktah sebagai pemisah radiks dalam pangkalan data. Dengan cara ini, analisis statistik akan berfungsi dengan betul.
Untuk menukar pemisah radiks, akses pilihan Elemen teks yang terletak di bawah tab Tetapan, dan cari fungsi tanda perpuluhan.
Jenis soalan yang menggunakan pemisah radiks
- Input berangka [N]
- Input berangka berbilang [K]
- Tatasusunan (Nombor) [:]
- Tatasusunan (Teks) [;], apabila menggunakan atribut numbers_only
- Senarai (Radio) [L], apabila menggunakan atribut other_numbers_only
- Teks percuma pendek [S], apabila menggunakan atribut numbers_only
- Teks pendek berbilang [Q], apabila menggunakan atribut numbers_only
- Pelbagai pilihan [M], apabila menggunakan atribut other_numbers_only
- Pelbagai pilihan dengan komen [P], apabila menggunakan atribut other_numbers_only
Tangkapan skrin
Anda boleh melihat dalam tangkapan skrin di bawah bahawa koma boleh digunakan sebagai pemisah radiks.

Muat turun
Untuk memuat turun contoh di atas, klik pautan berikut: ls2_comma_as_radix_separator.lss.
Kumpulan Susunan Rawak
Gambaran keseluruhan
Tinjauan ini menunjukkan cara menggunakan atribut random_group.
Jika atribut ini digunakan, setiap kali anda memulakan tinjauan, susunan soalan akan dirawakkan. Walau bagaimanapun, setelah tinjauan dimulakan, susunan rawak kekal tetap, walaupun anda menukar bahasa.
Tangkapan skrin
Mari kita semak contoh di bawah bersama-sama. Soalan rawak pertama pada halaman ialah Q1, Q4 atau Q7. Soalan rawak kedua pada halaman ialah Q2, Q5 atau Q8.

Berikut ialah susunan rawak yang dijana ketika saya menguji tinjauan ini buat kali pertama.

Susunan rawak yang berbeza dijana ketika saya menguji tinjauan ini buat kali kedua.

Namun, apabila saya bertukar ke bahasa Perancis (tanpa memulakan semula tinjauan), susunan rawak kekal tidak berubah.

Muat turun
Untuk memuat turun contoh di atas, klik pautan berikut: Randomization_Group_Test.lss
Tanya Satu Soalan Secara Rawak Bagi Setiap Kumpulan
Gambaran keseluruhan
Tinjauan ini menunjukkan cara anda mengkonfigurasi tinjauan untuk memaparkan satu soalan secara rawak bagi setiap kumpulan. Di dalamnya, terdapat 5 kumpulan dengan 6 soalan setiap satu. Pada permulaan, dalam Kumpulan 0, lima soalan Persamaan tersembunyi, bernama ask1-ask5, diisi. Setiap satu mempunyai nilai {floor(rand(1,6.9999))} dalam medan teks soalan, yang bermaksud pemboleh ubah ask1-ask5 masing-masing akan mempunyai nilai antara 1 dan 6. Kemudian, setiap soalan dalam kumpulan mempunyai persamaan kaitan seperti "ask1==N" dengan N ialah soalan ke-N dalam kumpulan (jadi soalan ketiga dalam kumpulan 1 mempunyai persamaan kaitan "ask1==3").
Tinjauan ini berfungsi sama baiknya dalam mod keseluruhan tinjauan sekali gus, kumpulan demi kumpulan dan soalan demi soalan. Memandangkan susunan rawak ditetapkan dalam kumpulan pertama, dan kumpulan itu pada dasarnya tersembunyi (kerana semua soalan ask1-ask5 tersembunyi), susunan rawak kekal sama bagi subjek tersebut; tetapi setiap subjek yang berbeza akan mempunyai susunan rawak yang berbeza.
Ciri yang Ditunjukkan
- Jenis soalan Persamaan
- Fungsi susunan rawak
- Fungsi bersyarat (if)
Tangkapan skrin
Ini ialah Group0, yang menggunakan jenis soalan Persamaan untuk memilih nilai rawak daripada 1 hingga 6 bagi setiap kumpulan (kecuali kumpulan terakhir, yang hanya mempunyai 4 soalan). Perhatikan bahawa fungsi "if()" mula-mula menyemak sama ada ask1 telah ditetapkan, dan jika ya, menggunakan nilai tersebut. Jika nilai belum ditetapkan, ia menggunakan nilai rawak untuk menetapkan nilai ask1.

Kumpulan ini menunjukkan cara pemboleh ubah (ask4) daripada Group0 digunakan untuk mengawal soalan yang kelihatan dalam kumpulan keempat.

Muat turun
Untuk memuat turun contoh tinjauan di atas, klik di sini: Contoh tinjauan soalan rawak dalam kumpulan.
Tanya Bilangan Soalan Tertentu Secara Rawak Dalam Kumpulan (subset soalan)
Gambaran keseluruhan
Tinjauan ini menunjukkan cara untuk memaparkan subset soalan secara rawak dalam sesuatu kumpulan. Contohnya, paparkan 5 soalan rawak daripada 10 soalan yang terdapat dalam satu kumpulan.
Tinjauan ini mempunyai satu kumpulan yang mengandungi 10 soalan. Semua soalan diberikan perawakan nama kumpulan yang sama. Akibatnya, soalan-soalan tersebut akan dipaparkan dalam susunan rawak semasa halaman dimuatkan. Setiap soalan diberikan persamaan kaitan yang menyatakan bahawa jumlah "relevanceStatus" bagi semua soalan lain dalam kumpulan adalah kurang daripada bilangan soalan yang anda mahu paparkan. Memandangkan relevanceStatus ditetapkan semasa soalan dipaparkan, ini secara efektif menjumlahkan bilangan soalan sebelumnya.
Jadi, dalam contoh 5 daripada 10 kita, persamaan untuk Q1 ialah:
sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Untuk Q2, persamaannya ialah:
sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Dan seterusnya...
Ciri yang Ditunjukkan
Muat turun
Untuk memuat turun contoh di atas, klik pautan berikut: Contoh tinjauan 5 rawak daripada 10.
Menilai Senarai Produk yang Dimasukkan Pengguna
Gambaran keseluruhan
Contoh di bawah menunjukkan cara anda boleh meminta pengguna menyenaraikan beberapa produk yang menarik minat mereka, kemudian meminta mereka menilai produk tersebut.
Ciri EM yang Ditunjukkan
- Penyesuaian jawapan - semasa menilai produk, label diambil daripada medan komen bagi soalan pelbagai pilihan sebelumnya
- Penyesuaian skala - banyak pilihan soalan lanjutan, seperti tajuk skala, juga boleh disesuaikan.
Tangkapan skrin
Imej ini menunjukkan bahawa walaupun hanya produk 1, 3 dan 5 dipilih, hanya ketiga-tiga produk itu dipaparkan (menggunakan atribut array_filter). Selain itu, label baris dalam soalan kedua ialah nombor produk (jika tiada apa-apa dimasukkan ke dalam medan komen) atau kandungan medan komen.

Imej ini menunjukkan cara jawapan yang disesuaikan ditetapkan:

Berikut ialah Show Logic File untuk soalan tersebut, yang membolehkan kita mengesahkan bahawa logik bersyarat berfungsi seperti yang dikehendaki (contohnya, untuk melihat sama ada terdapat ralat sintaks):

Imej seterusnya menunjukkan satu kumpulan yang di dalamnya anda menentukan skala penilaian 5 mata (Pilihan 1-5), tajuk skala, dan produk yang ingin anda nilai. Soalan terakhir menunjukkan bahawa setiap bahagian soalan tatasusunan boleh disesuaikan:

Imej seterusnya menunjukkan paparan fail logik bagi soalan terakhir. Seperti yang anda dapat perhatikan, subsoalan, jawapan dan pengepala skala boleh disesuaikan.

Muat turun
Untuk memuat turun contoh tinjauan di atas, klik pautan berikut: Contoh tinjauan penilaian senarai produk yang dimasukkan pengguna.