تعبيرات النموذج

يمكنك استخدام تعبيرات في الاستطلاع للتحكم في السلوك الافتراضي للأسئلة. يمكن إخفاء سؤال أو مجموعة أسئلة، وإظهارها بناءً على الإجابات السابقة باستخدام التعبيرات في العمود ذي الصلة. عند إخفاء سؤال من خلال تعبير في العمود ذي الصلة، لا يتم إرسال أي بيانات للسؤال.

ملاحظة:‏

في التطبيق الميداني ArcGIS Survey123، إذا تم إدخال إجابة لسؤال تم إخفاؤه لاحقًا بسبب تعبير ذي صلة، يتم مسح الإجابة. .إذا أصبح السؤال ذا صلة مرة أخرى، يجب إدخال إجابة جديدة. في تطبيق الويب، لا يتم مسح الإجابة، لذلك إذا أصبح السؤال ذا صلة مرة أخرى، يتم استخدام الإجابة التي تم إدخالها مسبقًا.

يمكنك أيضًا تطبيق التعبيرات على عمود القراءة فقط، وهو ما يمكنه تعطيل الإدخالات إلى سؤال أو مجموعة بناءً على نتيجة التعبير. يدعم العمود المطلوب أيضًا التعبيرات، مما يسمح للاستطلاع بمطالبة المستخدم بالإجابة على سؤال فقط في ظل ظروف محددة.

ملاحظة:‏

تعبيرات القراءة فقط غير مدعومة في تطبيق الويب.

يجب دائمًا الإشارة إلى الأسئلة السابقة في التعبيرات بتنسيق ${field_name}.

رؤية السؤال

يمكنك إخفاء سؤال من العرض مع تعبير باستخدام عمود body::esri:visible. يخفي هذا العمود السؤال إذا كان التعبير الذي يحتوي عليه لا يتم تقييمه على أنه صحيح، مع الاحتفاظ بمحتويات السؤال. على سبيل المثال، يتسبب التعبير ${edit_location}='yes' في عرض السؤال فقط إذا كان سؤال edit_location مساويًا لـ yes.

يشبه هذا السلوك العمود ذا الصلة، حيث يخفي العمودان سؤالاً حتى يتم تقييم التعبير الموجود في العمود بأنه صحيح. الاختلاف الأساسي هو أن body::esri:visible لا يمسح قيمة السؤال المخفي بواسطة التعبير، ويرسل القيم الموجودة إلى طبقة المعالم. استخدم العمود ذا الصلة بدلاً من body::esri:visible عندما تريد التأكد من أن السؤال لن يحتوي على قيم محسوبة أو مخزنة عندما لا يكون ذا صلة.

عند استخدام body::esri:visible أو الأعمدة ذات الصلة للتحكم في رؤية السؤال، يتم فرض الإعدادات الافتراضية والقيود وأقنعة الإدخال المطلوبة فقط عندما يكون السؤال مرئيًا.

يمكنك أيضًا التحكم في رؤية الأسئلة باستخدام نوع السؤال المخفي والمظهر المخفي، ولكن لا يمكن التحكم فيهما باستخدام تعبير.

ملاحظة:‏

لا تدعم أسئلة الصور والصوت والملفات الإخفاء بواسطة عمود body::esri:visible.

التعبيرات البسيطة

أفضل طريقة لاستخدام أحد هذه التعبيرات هي تغيير سلوك أو رؤية السؤال، ما لم يتم تقديم إجابة معينة مسبقًا. على سبيل المثال، يتحقق التعبير التالي مما إذا كانت الإجابة على السؤال السابق صحيحة أم لا:

${previous_question} = 'true'

يتحقق المثال التالي مما إذا كانت الإجابة على السؤال السابق أكبر من أو تساوي 100:

${previous_question} < 100

يحتفظ نوع السؤال select_multiple بالقيم بشكل مختلف عن أنواع الأسئلة الأخرى، مع إدخال كل إجابة محددة بالترتيب الذي تم تحديده بها، ومفصولة بفواصل. على سبيل المثال، تحديد إجابات أ و ب في ذلك الترتيب سوف يمثل الاستجابة في صورة أ، ب. لاستخدام سؤال select_multiple كجزء من تعبير، سيتعين عليك استخدام الوظيفة selected. يتحقق المثال التالي مما إذا كان المستخدم قد أجاب على السؤال السابق بـ "أ" ويعمل بغض النظر عن الإجابات الأخرى المختارة:

selected(${previous_question}, 'A')

تحسب دالة count-selected عدد الخيارات التي تم تحديدها في سؤال select_multiple وتوفر رقمًا لاستخدامه كعامل. يتحقق المثال التالي مما إذا كان قد تم تحديد أكثر من خيارين للسؤال السابق:

count-selected(${previous_question}) > 2

يمكنك استخدام دالة count-selected كقيد لأسئلة الصورة أو الملف مع مظهر multiline للتحكم في عدد الملفات المرسلة.

التعبيرات الرياضية

يجمع المثال التالي بين عوامل وأسئلة متعددة:

${previous_question} + ${other_previous_question} <= 100

عند استخدام عوامل التشغيل الرياضية، قد يتعين عليك أحيانًا تحويل القيم إلى أرقام. في المثال السابق، من المفترض أن يكون previous_question و other_previous_question عددين صحيحين أو كسرين عشريين، ولكن إذا كانت أنواع الأسئلة عبارة عن سلاسل، فقم بتحويلها على النحو التالي:

int(${previous_question}) + int(${other_previous_question}) <= 100

يمكنك أيضًا إجراء تعبيرات رياضية على أسئلة التاريخ ، التي يتم حفظها في صورة وقت Epoch, وكمية الميلي ثانية التي تم تمريرها منذ 1 يناير 1970. يكشف التعبير التالي عن سؤال فقط إذا كانت الإجابة على السؤال السابق قبل أكثر من أسبوعين من اليوم:

if( ${previous_question}='',false,today() - ${previous_question} > 1000*60*60*24*15)

التعبيرات العادية

التعبير العادي هو سلسلة من الرموز المستخدمة لمطابقة الأنماط في السلاسل. في Survey123، في حالة مطابقة النمط، سيعود التعبير صحيحًا؛ فإذا لم يكن النمط مطابقًا، فسيعود التعبير خطأً.

يمكنك استخدام التعبيرات العادية في أي عمود يقبل التعبيرات لتغيير سلوك السؤال، ما لم تكن السلسلة التي يوفرها سؤال آخر بتنسيق معين. المثال التالي، عند وضعه في عمود ذي صلة، يعرض سؤالاً فقط إذا تمت الإجابة عن سؤال آخر بأحرف:

regex(${question},'[A-Za-z]')

عند وضع المثال التالي في عمود Choice_filter لسؤال select_one لأسماء الشوارع، سيعرض فقط خيارات الشوارع المضمنة في قائمة شوارع المدينة التي تطابق اسم المدينة المحدد في سؤال سابق باسم المدينة:

regex(citystreets,${city})

لمزيد من المعلومات حول التعبيرات العادية، راجع الصيغ.