ExpressionScript örnek anketleri
From LimeSurvey Manual
Giriş
ExpressionScript'i nasıl kullanacağınızı öğrenmenin en iyi yolu, çalışan örneklerle denemeler yapmak ve bunları ihtiyaçlarınıza göre değiştirmektir.
Aşağıda, anketinizi geliştirmek için EM'nin nasıl kullanılabileceğini göstermek (ve test etmek) amacıyla hazırlanmış bir dizi örnek anket bulabilirsiniz. Bu anketlere dağıtım paketindeki /docs/demosurveys klasöründen ulaşabilirsiniz.
İlinti, Uyarlama ve Denklemler
Özet
Aşağıdaki örnek, her katılımcının VKİ'sini (Vücut Kitle İndeksi) hesaplar. Bu örnekte gösterilen özellikleri aşağıda bulabilirsiniz.
Gösterilen EM özellikleri
- İlinti - güçlü koşullu mantık desteği;
- Yönlendirme / Uyarlama - yanıtları ve soru meta verilerini yönlendirme veya uyarlama olanağı sunar;
- Dinamik uyarlama - soruları yanıtladıkça raporların sayfada değiştiğine dikkat edin.
- Mikro uyarlama - if() ifadeleri kullanarak cümle ve raporların içinde koşullu uyarlama
- Denklemler - hesaplama yapmanıza ve sonuçları, hesaplama gizli olsa bile veritabanında saklamanıza olanak tanıyan yeni bir soru türü
- Koşullu doğrulama - izin verilen en küçük değer gibi doğrulama ölçütleri koşullu olabilir; örneğin denklemlere dayanabilir.
Ekran görüntüleri
Bu örnek, kilo ve boyunuza göre zayıf, normal kilolu, fazla kilolu veya obez olup olmadığınızı belirlemek için Vücut Kitle İndeksini hesaplar. Başlangıçta yalnızca dört zorunlu sorunun göründüğüne dikkat edin:

Bilgilerinizi girdiğinizde (metrik veya metrik olmayan birimlerden birini seçebilirsiniz), girdiklerinizi özetleyen ve kilo durumunuzu bildiren uyarlanmış bir rapor görürsünüz:

Sonucun dinamik olarak nasıl değiştiğini göstermek için metrik olmayan birimlerin kullanıldığı farklı bir örnek:

Dahili düzeyde, verileri (gerekirse) metrik birimlere dönüştüren gizli Denklem türü sorular vardır. Bu sorular, özel JavaScript gerekmeden metrik boy, kilo, VKİ ve kilo durumunu veritabanında saklar.
Sonraki örnek kümesinde, uyarlanmış raporlarda matematiksel ve diğer işlevleri nasıl kullanabileceğinizi görebilirsiniz. Sayfa, siz herhangi bir veri girmeden önce böyle görünür. Hiç veri girilmediğinde (veya sayısal olmayan veri girildiğinde) "NaN" veya "Sıfıra bölme" göstermek yerine boş hücreler göstermek için koşullu mantık kullanılmıştır.

Sayılar girildikçe sayfadaki rapor, yapılan hesaplamayı ve sonucunu gösterecek şekilde değişir.

Bu örnek ankette daha pek çok örnek bulunur. Örneğin aşağıdaki ekran görüntüsü, Dinamik İlinti sayfasını doldurmanın onlarca yolundan birini gösterir. Yardım metninde belirtildiği gibi, farklı yaşlar ve özellikle mantıksız yanıt kombinasyonları deneyerek altta oluşturulan eğlenceli iletileri görün. Ayrıca birden fazla çocuğunuz olduğunu belirtirseniz, iletinin "çocuğunuzla oynamaktan keyif almanızı umuyorum" yerine "X çocuğunuzla oynamaktan keyif almanızı umuyorum" şeklinde olacağına dikkat edin. Bu, cümleleri deneklerinizin cinsiyetine ve/veya sayısına uyacak şekilde kolayca mikro uyarlayabileceğinizi gösterir. Hatta cinsiyet ve sayıya göre fiilleri çekimleyebilir ve isimleri çekebilirsiniz.

İndirme
Örnek ankete erişmek için lütfen şu bağlantıya tıklayın: LS3_em_tailoring.zip.
Örnek nüfus sayımı
Özet
Bu, hanenizde kaç kişi olduğunu soran bir nüfus sayımı örneğidir.
Grup düzeyinde ilintinin, soru "döngüsü" uygulamayı nasıl kolaylaştırabileceğini gösterir. Kişi 1 için grubu oluşturduktan sonra grubu dışa aktardım. SGQA kodu yerine p1_name gibi qcode değişken adları kullandığım için bir metin düzenleyici ile grubu hızla düzenleyip birkaç kez içe aktarabildim (örneğin, tekrarlanan her grubu düzenleyip içe aktarmak yaklaşık 10 saniye sürdü; böylece tüm değişkenlerin benzersiz adlara sahip olması ve grup düzeyindeki mantığın doğru olması sağlandı).
Soruyu kopyala özelliğini de kullanabilirsiniz, ancak bu yöntem yukarıda önerilen seçenek kadar hızlı olmayacaktır.
Bu örnek ayrıca, anket gerçekten tamamlanana kadar (örneğin gerekli tüm gruplar tamamlanana kadar) Tamamlandı iletisinin görüntülenmesini nasıl engelleyebileceğinizi de gösterir.
Gösterilen EM özellikleri
- Grup düzeyinde uygunluk - Takip eden gruplar (Kişi 1-5) yalnızca belirtilen birlikte yaşayan kişi sayısı kadar görüntülenir;
- Uyarlama - Son rapor, birlikte yaşayan her kişi için demografik verileri özetler;
- Aşamalı soru görüntüleme - Grup kipinde de tümü bir arada kipinde de, sonraki sorular yalnızca önceki sorular yanıtlanır yanıtlanmaz görüntülenir.
Ekran görüntüleri
Anket, belirtilen sayıda birlikte yaşayan kişinin demografik bilgilerini gösteren uyarlanmış bir rapor oluşturur:

Tek seferde bir soru kipine geçerseniz dizinin soruları uyarladığını görürsünüz. Kullanıcı kişinin kadın olduğunu belirttiği için "Onun adı nedir" diye sorar. "Mary" yanıtını verdiğimiz için sonraki soru "Mary kaç yaşında" şeklindedir.

İndirme
Örnek anketi indirmek için buraya tıklayın: LS3_group_relevance.zip.
Basamaklı dizi süzgeçleri
Özet
Bu anket, Joy Lane Research, LLC kuruluşunun izniyle kullanılan bir anketin tasarımına dayanmaktadır.
Ekran görüntüleri
Aşağıdakilere dikkat edin:
- Q02, array_filter kullanılarak yalnızca Q01'de işaretlenen ürünleri gösterir
- Q02 ayrıca Q01'deki "Other electronic" alanına girilen metin olan "Another product" ürününü de gösterir
- Q04 yalnızca Q02'de işaretlenen ürünleri gösterir (dolayısıyla dizi süzgeci basamaklanır)
- Q05 yalnızca Q02'de işaretlenmeyen ürünleri gösterir (basamaklı bir array_filter_exclude kullanılarak)


İndirme
Yukarıdaki örneği indirmek için şu bağlantıya tıklayın: LS2_cascading_array_filter anket örneği.
Tüm soru türleri ve özniteliklerle aktarma/uyarlama
Özet
Değişkenlerinizi nasıl adlandıracağınız (SGQA veya Qcode) konusunda kafanız karışıksa yalnız değilsiniz. Ana belgelerde Qcode değişken adlarının nasıl oluşturulacağı açıklanmış olsa da çalışan bir örneği görmenin yerini hiçbir şey tutmaz. Bu anket, ExpressionScript kullanarak soru özniteliklerine ve yanıtlara nasıl erişebileceğinizi gösterir.
İçerik
- Her soru türünden örnekler
- "Diğer" seçeneğini kullanabilen tüm soru türleri dahil edilmiştir; böylece bunun değişken adlandırmasını nasıl etkilediğini görebilirsiniz
- Varsayılan değer kabul eden tüm soru türleri için varsayılan değerler
- Uyarlama - Mevcut 16 EM nokta gösterimi son ekinin tümünü gösteren sayfa içi ve sayfa dışı raporlar
- Bu raporlar o ana kadar girilen tüm verileri gösterir (yani yanıtları yazdır ekranı yerine kullanıcılar için kendi yazdırılabilir raporlarınızı nasıl oluşturabileceğinizi gösterir)
- Tüm değişkenlerin doğru Qcode ve SGQA adlandırması
Ekran görüntüleri
Bu çok büyük bir anket olduğundan ekran görüntüsü eklememeyi tercih ettik. Bunun yerine lütfen anketi indirip üzerinde denemeler yapın.
İndirme
Anketi indirmek için şu bağlantıya tıklayın: LS3_EM_question_attributes.lss
Geleneksel geçerlilik denetimi, yeniden tasarlandı
Özet
Bu örnek, ifadelerden yararlanan tüm geçerlilik denetimi türlerini ve bunların geçerlilik denetimini destekleyen soru türlerini nasıl etkilediğini gösterir. Çoğu durumda geçerlilik ipuçları gizli başlar ve yalnızca bir soru geçerlilik ölçütlerini karşılamadığında görünür (soru ölçütleri karşıladığında ise yeniden kaybolur).
Gösterilen geçerlilik denetimi türleri
- min_num_value_n - bir yanıt için en küçük değer
- max_num_value_n - bir yanıt için en büyük değer
- min_answers - gereken en az yanıt sayısı
- max_answers - izin verilen en fazla yanıt sayısı
- multiflexible_min - bir yanıt için izin verilen en küçük değer (çoklu esnek sayılar soru türü için)
- multiflexible_max - bir yanıt için izin verilen en büyük değer (çoklu esnek sayılar soru türü için)
- min_num_value - sorunun tüm yanıtları üzerinden izin verilen en küçük toplam
- max_num_value - sorunun tüm yanıtları üzerinden izin verilen en büyük toplam
- equals_num_value - sorunun tüm yanıtlarının toplamı bu değere eşit olmalıdır
- validation - sorunun kurallı ifade ile geçerlilik denetimidir - tek tek hücrelere uygulanabilir
Ekran görüntüleri
Yeni CSS stilleri kullanılarak her geçerlilik denetimi türü ayrı bir ipucu olarak görüntülenir. Gösteriliyorlarsa hide_tip seçeneğiyle gizlenebilirler. Varsayılan seçenek, soru geçerlilik ölçütlerini karşılamıyorsa ipuçlarını kırmızı, karşılıyorsa yeşil yazı rengiyle göstermektir:

Kullanıcı, geçerlilik hataları bulunan bir sayfayı gönderemez. Yanlış bilgi girdiğinde hemen uyarılır:

Geçerlilik denetimi, bir dizi içindeki tek tek hücrelere uygulanabilir. Bu örnekte kurallı ifade denetimleri, her girişin alan kodu dahil doğru biçimlendirilmiş bir ABD telefon numarası olmasını sağlar.

İndirme
Yukarıdaki örneği indirmek için şu bağlantıya tıklayın: LS3_Validation_tests.zip.
Geçerlilik denklemleri
Özet
Bazen geleneksel en küçük/en büyük ölçütlerle sağlanamayan özel bir geçerlilik denetimine ihtiyaç duyarsınız. Bunun için, karmaşık geçerlilik denklemlerini sırasıyla soru ve alt soru düzeyinde oluşturmanızı sağlayan em_validation_q ve em_validation_sq seçeneklerini kullanmanız gerekir.
Gösterilen EM özellikleri
- em_validation_q - sorunun tamamının geçerli olup olmadığını belirleyen denklemdir
- em_validation_q_tip - soru em_validation_q ölçütlerini karşılamadığında gösterilecek iletidir
- em_validation_sq - her alt sorunun (dizi hücresinin) geçerli olup olmadığını belirleyen denklemdir
- em_validation_sq_tip - alt sorulardan herhangi biri geçersiz olduğunda gösterilecek iletidir.
Genel olarak em_validation_sq kullanıldığında, herhangi bir hücre geçersizse bir hata olduğunu belirtmek için o hücrenin arka plan rengi kırmızıya döner.
Ekran görüntüleri

Bu soru, aşağıdaki geçerlilik denklemini uygulayarak çocuklarınızın yaşlarını büyükten küçüğe doğru girmenizi sağlar:
q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4

Aşağıdaki örnekte geçerlilik denetimi, şu denklemi uygulayarak herhangi bir satırda en fazla 3 sorunun yanıtlanmasını sağlar:
(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)
Bunu aşağıdaki gibi de yazabilirsiniz; LimeSurvey bunu çalışma zamanında otomatik olarak yukarıda listelenen ifadeye dönüştürür.
(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)

İndirme
Yukarıdaki örneklerde kullanılan anket örneğini indirmek için aşağıdaki bağlantıya tıklayın: ls2_test_em_sq_validation.lss.
Alt soru uygunluğu
Özet
Bu örnek, array_filter ile doğrulama ölçütlerinin birbirleriyle nasıl etkileşime girebileceğini gösterir. Toplamlara uygulanan doğrulamalarda yalnızca uygun (görünür) değerler dikkate alınır.
Gösterilen EM özellikleri
Ayrıca temel sorularda yanıtlanan soru sayılarının dinamik olarak raporlanmasını da gösterir.
Ekran görüntüleri
Görünür satır sayısını değiştirmek toplamı dinamik olarak değiştirir. Bir alt soruyu uygunsuz olarak işaretlemek değerini silmez. Bunun yerine, alt soru uygunsuzsa değerleri hiçbir denkleme katkıda bulunmaz.


İlk soru olan "Which rows should appear below" için "Fifth subquestion" seçeneğini işaretlediğimizde ne olduğuna dikkat edin. İkinci "Enter some numbers" sorusunun toplamının artık 5 olduğunu görürsünüz. Bu sorunun 5. alt sorusu hâlâ 14 değerine sahip olsa da (örneğin beşinci alt sorunun işaretini kaldırırsanız 14 değerini yeniden görürsünüz), alt soru şu anda uygunsuz olduğundan bu değer toplama katkıda bulunmaz. Tüm uygunsuz veriler gönderim sırasında temizlenir (veritabanında NULL yapılır), ancak kullanıcılar yanıtları hakkında fikirlerini değiştirmek isterse diye sayfada erişilebilir kalır.

İndirme
Örneğimizi indirmek için buraya tıklayın: ls2_subquestion_relevance.lss.
Ondalık ayracı olarak virgül kullanma (Ondalık noktası)
Özet
ExpressionScript, sayısal alanlara yalnızca geçerli sayıların girilebilmesini sağlar. Geçersiz bir sayı girerseniz bir şeylerin yanlış olduğu konusunda uyarılırsınız (örneğin fruity temasında tüm soru "kırmızıya boyanır").
Sayısal değerlerin veritabanında her zaman ondalık ayracı olarak nokta kullanılacak şekilde dönüştürüldüğünü unutmayın. Bu sayede istatistiksel analizler doğru çalışır.
Ondalık ayracını değiştirmek için Ayarlar sekmesi altında bulunan Yazı bileşenleri seçeneklerine gidin ve Ondalık simgesi işlevini bulun.
Ondalık ayracı kullanan soru türleri
- Sayısal giriş [N]
- Birkaç sayısal giriş [K]
- Dizi (Rakamlar) [:]
- Dizi (Yazılar) [;], numbers_only özniteliği kullanıldığında
- Liste (radyo) [L], other_numbers_only özniteliği kullanıldığında
- Kısa serbest yazı [S], numbers_only özniteliği kullanıldığında
- Birkaç kısa yazı [Q], numbers_only özniteliği kullanıldığında
- Birkaç seçim [M], other_numbers_only özniteliği kullanıldığında
- Açıklamalar ile birkaç seçenek [P], other_numbers_only özniteliği kullanıldığında
Ekran görüntüleri
Aşağıdaki ekran görüntülerinde virgülün ondalık ayracı olarak kullanılabildiğini görebilirsiniz.

İndirme
Yukarıdaki örneği indirmek için aşağıdaki bağlantıya tıklayın: ls2_comma_as_radix_separator.lss.
Rastgeleleştirme grupları
Özet
Bu anket, random_group özniteliğinin nasıl kullanılacağını gösterir.
Bu öznitelik kullanıldığında, anketi her başlattığınızda soru sırası rastgele belirlenir. Ancak anket başladıktan sonra, dili değiştirseniz bile rastgele sıra sabit kalır.
Ekran görüntüleri
Aşağıdaki örneği birlikte inceleyelim. Sayfadaki ilk rastgele soru Q1, Q4 veya Q7 olacaktır. Sayfadaki ikinci rastgele soru ise Q2, Q5 veya Q8 olacaktır.

Bu anketi ilk kez test ettiğimde oluşturulan rastgele sıra şöyleydi.

Anketi ikinci kez test ettiğimde farklı bir rastgele sıra oluşturuldu.

Ancak anketi yeniden başlatmadan Fransızcaya geçtiğimde rastgele sıra aynı kaldı.

İndirme
Yukarıdaki örneği indirmek için şu bağlantıya tıklayın: Randomization_Group_Test.lss
Her gruptan rastgele bir soru sorma
Özet
Bu anket, her gruptan rastgele bir soru görüntülemek üzere bir anketin nasıl yapılandırılabileceğini gösterir. Ankette her biri 6 sorudan oluşan 5 grup vardır. En başta, Grup 0'da ask1-ask5 adlı beş gizli Denklem sorusu doldurulur. Bunların her birinin Soru yazısı alanında {floor(rand(1,6.9999))} değeri bulunur; bu da ask1-ask5 değişkenlerinin her birinin 1 ile 6 arasında bir değer alacağı anlamına gelir. Ardından gruptaki her sorunun "ask1==N" gibi bir İlinti denklemi vardır; burada N, gruptaki N. sorudur (yani 1. gruptaki üçüncü sorunun İlinti denklemi "ask1==3" olur).
Bu anket, tüm anket bir arada, grup grup ve soru soru modlarında eşit derecede iyi çalışır. Rastgeleleştirme ilk grupta ayarlandığından ve bu grup fiilen gizli olduğundan (ask1-ask5 soruları gizlidir), rastgele sıra katılımcı için aynı kalır; ancak her katılımcının rastgele sırası farklı olur.
Gösterilen özellikler
- Denklem soru türü
- Rastgeleleştirme işlevleri
- Koşullu (if) işlevi
Ekran görüntüleri
Bu, her grup için 1 ile 6 arasında rastgele değerler seçmek üzere Denklem soru türünü kullanan Grup0'dır (yalnızca 4 sorusu olan son grup hariç). "if()" işlevinin önce ask1 değerinin daha önce ayarlanıp ayarlanmadığını kontrol ettiğine, ayarlanmışsa bu değeri kullandığına dikkat edin. Değer ayarlanmamışsa, ask1 değerini belirlemek için rastgele bir değer kullanır.

Bu grup, Grup0'daki değişkenin (ask4) dördüncü grupta hangi sorunun görüneceğini denetlemek için nasıl kullanıldığını gösterir.

İndirme
Yukarıdaki anket örneğini indirmek için buraya tıklayın: Grup içinde rastgele sorular anket örneği.
Bir grupta belirli sayıda soruyu rastgele sorma (soruların bir alt kümesi)
Özet
Bu anket, bir gruptaki soruların rastgele bir alt kümesinin nasıl sorulacağını gösterir. Örneğin, bir grupta yer alan 10 sorudan rastgele 5 tanesini gösterme.
Ankette 10 soru içeren bir grup vardır. Tüm sorulara aynı Rastgele grubu adı atanmıştır. Bunun sonucunda sorular, sayfa yüklendiğinde rastgele sırayla görüntülenir. Her soruya, gruptaki diğer tüm soruların "relevanceStatus" değerlerinin toplamının göstermek istediğiniz soru sayısından küçük olmasını koşul koyan bir İlinti denklemi verilir. relevanceStatus değeri sorular işlenirken atandığından, bu işlem fiilen önceki soruların sayısını toplar.
Dolayısıyla 10 sorudan 5'ini gösterdiğimiz örnekte, Q1 için denklem şöyle olur:
sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Q2 için şöyle olur:
sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5
Diğer sorular için de aynı şekilde devam edilir...
Gösterilen Özellikler
İndirme
Yukarıdaki örneği indirmek için şu bağlantıya tıklayın: 10 sorudan rastgele 5 soru anket örneği.
Kullanıcının Girdiği Ürün Listesini Derecelendirme
Özet
Aşağıdaki örnek, kullanıcılardan ilgilendikleri ürünleri listelemelerini ve ardından bu ürünleri derecelendirmelerini nasıl isteyebileceğinizi gösterir.
Gösterilen ES Özellikleri
- Yanıtları uyarlama - ürünler derecelendirilirken etiketler, önceki Birkaç seçim sorusunun yorum alanından alınır
- Ölçekleri uyarlama - ölçek başlıkları gibi birçok gelişmiş soru seçeneği de uyarlanabilir.
Ekran görüntüleri
Bu görüntü, yalnızca 1, 3 ve 5 numaralı ürünler seçildiği için yalnızca bu 3 ürünün görüntülendiğini gösterir (array_filter özniteliği kullanılarak). Ayrıca ikinci sorudaki satır etiketleri, yorum alanına hiçbir şey girilmemişse ürün numaralarından, girilmişse yorum alanlarının içeriğinden oluşur.

Bu görüntü, uyarlanmış yanıtların nasıl belirtildiğini gösterir:

Aşağıda bu sorunun Mantık Dosyasını Göster görünümü yer almaktadır. Bu görünüm, koşullu mantığın istendiği gibi çalıştığını (örneğin sözdizimi hataları olup olmadığını) doğrulamamızı sağlar:

Sonraki görüntüde 5 puanlık bir derecelendirme ölçeğini (Seçenekler 1-5), ölçeğin başlığını ve derecelendirmek istediğiniz ürünleri belirttiğiniz bir grup gösterilmektedir. Son soru, dizi sorusunun her bir bölümünün uyarlanabildiğini gösterir:

Sonraki görüntü, son sorunun mantık dosyası görünümünü gösterir. Görebileceğiniz gibi alt sorular, yanıtlar ve ölçek başlıkları uyarlanabilir.

İndirme
Yukarıdaki anket örneğini indirmek için şu bağlantıya tıklayın: Kullanıcının girdiği ürün listesini derecelendirme anket örneği.