blockly > الحقل

فئة الحقل

فئة مجردة لحقل قابل للتعديل

Signature:

export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode 

تنفِّذ: IKeyboardAccessible وIRegistrable وISerializable وIFocusableNode

الشركات المصنِّعة

الشركة المصنِّعة مفاتيح التعديل الوصف
(constructor)(value, validator, config) إنشاء مثيل جديد من فئة Field

الخصائص

الموقع مفاتيح التعديل النوع الوصف
borderRect_ protected SVGRectElement | null عنصر حدود SVG للحقل المعروض
clickTarget_ protected عنصر | null العنصر المرتبط بمعالج النقرات
constants_ protected ConstantProvider | null الثوابت المرتبطة ببرنامج عرض الكتلة المصدر
DEFAULT_VALUE T | null

لإلغاء القيمة التلقائية التي تم ضبطها في **الحقل**، عدِّل النموذج الأولي مباشرةً.

مثلاً: FieldImage.prototype.DEFAULT_VALUE = null;

قابلة للتعديل قيمة منطقية تعرض الحقول القابلة للتعديل عادةً نوعًا من واجهة المستخدم يشير إلى أنّها قابلة للتعديل. وسيحفظها أيضًا أداة التحويل إلى سلسلة.
enabled_ protected قيمة منطقية هل يمكن تغيير قيمة الحقل باستخدام المحرِّر في قالب قابل للتعديل؟
fieldGroup_ protected SVGGElement | null عنصر مجموعة SVG للحقل المعروض
isDirty_ protected قيمة منطقية هل يجب إعادة عرض هذا المربّع؟
maxDisplayLength الرقم الحد الأقصى لعدد أحرف النص المعروضة قبل إضافة علامة شرطة منقطة
name؟ سلسلة (اختياري) اسم الحقل فريد ضمن كل قطعة وعادةً ما تكون التصنيفات الثابتة بدون اسم.
NBSP

static

readonly

(غير مُعلَن) مسافة غير فاصل
SERIALIZABLE قيمة منطقية يحفظ معرِّف البيانات التسلسلية الحقول القابلة للتسلسل، ولا يحفظ الحقول غير القابلة للتسلسل. يجب أيضًا أن تكون الحقول القابلة للتعديل قابلة للتسلسل. لا يحدث ذلك تلقائيًا حتى يكون SERIALIZABLE متوافقًا مع الإصدارات القديمة.
size_ protected الحجم تحصل على حجم هذا الحقل. بما أنّ getSize() وupdateSize() لهما تأثيرات جانبية، فإنّ هذا يعمل كحلّ مؤقت للفئات الفرعية التي تريد تعديل حدود الحقل عند ضبط الحجم أو الحصول عليه بدون بدء عرض غير مرغوب فيه أو تأثيرات جانبية أخرى. يُرجى العلم أنّه يجب أن تلغي الفئات الفرعية *كلا* الأسلوبَين get وset في حال تم إلغاء أيّ منهما، وقد يستدعي التنفيذ super مباشرةً، ولكن يجب أن يكون متوفّرًا وفقًا لمواصفات JS.
SKIP_SETUP

static

readonly

رمز فريد قيمة تُستخدَم للإشارة إلى الحالات التي يجب فيها ألا يضبط باني الحقل قيمة الحقل أو يُشغِّل configure_، ويجب أن يسمح لفئة فرعية بإجراء ذلك بدلاً من ذلك.
sourceBlock_ protected حظر | null الحظر الذي تم إرفاق هذا الحقل به يبدأ العنصر على أنّه فارغ، ثم يتم ضبطه في الإعداد.
textContent_ protected نص | null عنصر محتوى النص للحقل المعروض
textElement_ protected SVGTextElement | null عنصر نص SVG للحقل المعروض
validator_ protected FieldValidator<T> | null يتمّ استدعاء وظيفة التحقّق عندما يعدّل المستخدِم حقلًا قابلاً للتعديل.
value_ protected T | null
visible_ protected قيمة منطقية هل الحقل مرئي أم مخفي بسبب تصغير الكتلة؟

الطُرق

الطريقة مفاتيح التعديل الوصف
applyColour()

تعديل الحقل ليطابق لون/نمط الكتلة

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

اطّلِع على مستندات الحقول للحصول على مزيد من المعلومات، أو على FieldDropdown للحصول على مثال.

bindEvents_() protected اربط الأحداث بالحقل. يمكن أن تلغي الأنواع الفرعية هذه الإعدادات إذا كانت بحاجة إلى معالجة إدخال مخصّص.
canBeFocused() راجِع IFocusableNode.canBeFocused.
configure_(config) protected عالج خريطة الإعدادات التي تم تمريرها إلى الحقل.
createBorderRect_() protected أنشئ عنصرًا مستطيلاً لحدود الحقل. يجب ألا يتم إلغاؤها من خلال الفئات الفرعية. بدلاً من ذلك، يمكنك تعديل نتيجة الدالة داخل initView أو إنشاء دالة منفصلة للاتّصال بها.
createTextElement_() protected أنشئ عنصر نص حقل. يجب ألا يتم إلغاؤها من خلال الفئات الفرعية. بدلاً من ذلك، يمكنك تعديل نتيجة الدالة داخل initView أو إنشاء دالة منفصلة للاتّصال بها.
dispose()‎ تخلص من جميع عناصر DOM والأحداث التي تنتمي إلى هذا الحقل القابل للتعديل.
doClassValidation_(newValue) protected

التحقّق من صحة التغييرات التي تم إجراؤها على قيمة حقل قبل ضبطها اطّلِع على **FieldDropdown** للحصول على مثال على تنفيذ الفئة الفرعية.

**ملاحظة:** تعرض عملية التحقّق خيارًا واحدًا بين T وnull وundefined. لن تعرض عملية تنفيذ **Field** أبدًا القيمة undefined، ولكن من الصحيح أن تعرض فئة فرعية القيمة undefined إذا كانت القيمة الجديدة متوافقة مع T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected تُستخدَم لإعلام الحقل بأنّه تم إدخال قيمة غير صالحة. يمكن إلغاء هذه السمة من خلال الفئات الفرعية، راجِع FieldTextInput. لا يتم إجراء أي إجراء تلقائيًا.
doValueUpdate_(newValue) protected تُستخدَم لتعديل قيمة حقل. يمكن أن تلغي الأنواع الفرعية هذه القيمة لإجراء تخزين مخصّص للقيم أو تعديل العناصر الخارجية.
forceRerender() فرض إعادة عرض الكتلة التي تم تثبيت هذا الحقل عليها، ما سيؤدي إلى إعادة عرض هذا الحقل وتعديل أي تغييرات في الحجم ولن تتم إعادة عرض الحقول الأخرى في الكتلة نفسها، لأنّه سبق أن تم تسجيل أحجامها.
fromJson(_options) static

يجب أن تعيد الفئات الفرعية تنفيذ هذه الطريقة لإنشاء فئة فرعية من الحقل من عنصر JSON arg.

من الخطأ محاولة تسجيل فئة فرعية للحقل في FieldRegistry إذا لم تلغي هذه الفئة الفرعية هذه الطريقة.

fromXml(fieldElement) لضبط قيمة الحقل استنادًا إلى عنصر XML المحدّد يجب ألا يتم استدعاؤها إلا من خلال Blockly.Xml.
getAbsoluteXY_() protected عرض الإحداثيات المطلقة للزاوية العلوية اليسرى من هذا الحقل نقطة الأصل (0,0) هي أعلى يمين نص الصفحة.
getBorderRect() protected تحصل على عنصر المستطيل الحدودي.
getClickTarget_() protected العنصر الذي سيتم ربط معالِج النقر به. إذا لم يتم ضبطه بشكل صريح، يتم ضبطه تلقائيًا على جذر SVG للحقل. عند النقر على هذا العنصر في حقل قابل للتعديل، سيتم فتح المحرِّر.
getConstants() الحصول على موفّر متغيّرات العرض
getDisplayText_() protected احصل على النص من هذا الحقل لعرضه في المربّع. قد يختلف عن getText بسبب النقاط اللاتينية المتسلسلة والتنسيقات الأخرى.
getFlipRtl()‎ تعرِض ما إذا كان علينا قلب الحقل باتجاه RTL أم لا.
getFocusableElement() راجِع IFocusableNode.getFocusableElement.
getFocusableTree() راجِع IFocusableNode.getFocusableTree.
getSize()

عرض ارتفاع الحقل وعرضه

يجب أن يكون هذا هو المكان الوحيد الذي يتم من خلاله استدعاء render_ *بشكل عام*.

getSourceBlock() الحصول على الكتلة التي تم إرفاق هذا الحقل بها
getSvgRoot() تحصل على عنصر المجموعة لهذا الحقل القابل للتعديل. تُستخدَم لقياس الحجم وتحديد الموضع.
getText_() protected عبارة تُستخدَم من قِبل المطوّرين لتجاهل النص المعروض في هذا الحقل يمكنك إلغاء القيمة إذا كان التمثيل النصي لقيمة هذا الحقل ليس مجرد سلسلة نصية تم تحويلها إلى قيمة. عرض قيمة فارغة للرجوع إلى تحويل سلسلة.
getText() الحصول على النص من هذا الحقل يمكنك إلغاء getText_ لتقديم سلوك مختلف عن مجرد تحويل القيمة إلى سلسلة.
getTextContent() protected الحصول على محتوى النص
getTextElement() protected الحصول على عنصر النص
getTooltip() تعرِض هذه السمة نص التلميح لهذا الحقل.
getValidator() تحصل على دالة التحقّق للحقول القابلة للتعديل، أو تكون فارغة إذا لم يتم ضبطها.
getValue() الحصول على القيمة الحالية للحقل
initModel() تُستخدَم هذه الدالة لإعداد نموذج الحقل بعد تثبيته على أحد الكتل. لا يتم إجراء أي إجراء تلقائيًا.
initView() protected أنشئ واجهة مستخدم للوحدة الأساسية لهذا الحقل.
isClickable() تحقَّق ممّا إذا كان هذا الحقل يحدِّد الدالة showEditor_.
isClickableInFlyout(autoClosingFlyout) تحقّق مما إذا كان يجب أن يكون الحقل قابلاً للنقر عندما يكون المربّع في نافذة منبثقة. الإعداد التلقائي هو أنّه يمكن النقر على الحقول في النوافذ المنبثقة المفتوحة دائمًا، مثل صندوق الأدوات البسيط، ولكن ليس في النوافذ المنبثقة التي يتم إغلاقها تلقائيًا، مثل صندوق أدوات الفئات. يمكن للطبقات الفرعية إلغاء هذه الوظيفة لتغيير هذا السلوك. يُرجى العلم أنّه يجب أن يعرض isClickable أيضًا قيمة صحيحة لكي يكون لهذا الإجراء أي تأثير.
isCurrentlyEditable() تحقّق ممّا إذا كان هذا الحقل قابلاً للتعديل حاليًا. لا يمكن تعديل بعض الحقول مطلقًا (مثل التصنيفات النصية). قد تكون الحقول الأخرى قابلة للتعديل، ولكن قد تكون موجودة في وحدات غير قابلة للتعديل أو قد تكون غير مفعّلة حاليًا.
isEnabled() تحقَّق ممّا إذا كان يمكن تغيير قيمة هذا الحقل باستخدام المحرِّر عندما تكون الكتلة المصدر قابلة للتعديل.
isSerializable() تحقَّق ممّا إذا كان يجب أن يُسلسل مُعرِّف XML هذا الحقل. تعالج هذه القيمة منطق التوافق مع الإصدارات القديمة والحالات غير المتوافقة.
isVisible() تحصل على ما إذا كان هذا الحقل القابل للتعديل مرئيًا أم لا.
loadLegacyState(callingClass, state) تحمِّل الحالة المحدّدة باستخدام أدوات الربط القديمة بتنسيق XML، في حال كان يجب استخدامها. تعرِض هذه الدالة القيمة true للإشارة إلى أنّه تمّ التعامل مع عملية التحميل، وتعرض القيمة false في الحالات الأخرى.
loadState(state) لضبط حالة الحقل استنادًا إلى قيمة الحالة المحدّدة يجب ألا يتم استدعاؤه إلا من خلال نظام التسلسل.
onLocationChange(_) إرسال إشعار إلى الحقل بأنّه تم تغيير المواقع الجغرافية
onMouseDown_(e) protected معالجة حدث pointerdown في حقل
onNodeBlur() راجِع IFocusableNode.onNodeBlur.
onNodeFocus() راجِع IFocusableNode.onNodeFocus.
onShortcut(_shortcut) تعالج اختصار لوحة المفاتيح المحدّد.
positionBorderRect_() protected تحديد موضع مستطيل حدود الحقل بعد تغيير حجمه
positionTextElement_(xOffset, contentWidth) protected تحديد موضع عنصر نص الحقل بعد تغيير حجمه يعالج هذا الإجراء موضع النص من اليمين إلى اليسار والعكس.
referencesVariables() ما إذا كان هذا الحقل يشير إلى أي متغيّرات في Blockly إذا كان صحيحًا، قد تحتاج إلى التعامل معه بشكل مختلف أثناء التسلسل وإزالة التسلسل. ويمكن أن تلغي الفئات الفرعية ذلك.
refreshVariableName() أعِد تحميل اسم المتغيّر الذي يشير إليه هذا الحقل إذا كان هذا الحقل يشير إلى متغيّرات.
render_() protected

تُستخدَم دالة getSize() لتحريك أو تغيير حجم أي عناصر DOM والحصول على الحجم الجديد.

يجب تنفيذ جميع عمليات التقديم التي تؤثّر في حجم/شكل الكتلة هنا، ويجب تشغيلها باستخدام getSize().

repositionForWindowResize()

عنصر ربط للمطوّر لإعادة وضع WidgetDiv أثناء تغيير حجم النافذة يجب تحديد هذا العنصر إذا كان الحقل يحتوي على WidgetDiv يحتاج إلى إعادة ضبط موضعه عند تغيير حجم النافذة. على سبيل المثال، تحدِّد حقول إدخال النصوص هذا العنصر الإضافي لكي يتمكّن WidgetDiv للّوحة إدخال من إعادة ضبط موضعه عند حدوث حدث تغيير حجم النافذة. وهذا مهم بشكل خاص عند إيقاف إدخالات النوافذ المنبثقة، لأنّ أجهزة Android ستُطلق حدث إعادة تغيير حجم النافذة عند فتح لوحة المفاتيح.

إذا أردت إخفاء WidgetDiv بدلاً من إعادة وضعه، أعِد القيمة false. هذا هو السلوك التلقائي.

تتعامل عناصر DropdownDiv مع منطق تحديد موضع عناصرها، لذا لا تحتاج إلى إلغاء هذه الوظيفة إذا كان الحقل يتضمّن عنصر DropdownDiv فقط.

saveLegacyState(callingClass) protected تعرِض هذه السمة نسخة من حالة XML تم تحويلها إلى سلسلة، إذا كان من المفترض استخدامها. بخلاف ذلك، يتم عرض القيمة null للإشارة إلى أنّ الحقل يجب أن يستخدم تسلسله الخاص.
saveState(_doFullSerialization) تُحفظ قيمة هذه الحقول كشيء يمكن تسلسله إلى تنسيق JSON. يجب ألا يتم استدعاؤه إلا من خلال نظام التسلسل.
setEnabled(enabled) حدِّد ما إذا كان يمكن تغيير قيمة هذا الحقل باستخدام المحرِّر عندما تكون الكتلة المصدر قابلة للتعديل.
setSourceBlock(block) إرفاق هذا الحقل بوحدة
setTooltip(newTip) لضبط التلميح التعليمي لهذا الحقل
setValidator(handler)

تُستخدَم لضبط دالة التحقّق الجديدة للحقول القابلة للتعديل، أو لمحو مدقّق تم ضبطه سابقًا.

تأخذ دالة المدقّق قيمة الحقل الجديدة، وتُرجع القيمة التي تم التحقّق منها. يمكن أن تكون القيمة التي تم التحقّق منها هي قيمة الإدخال أو نسخة معدَّلة من قيمة الإدخال أو قيمة فارغة لإلغاء التغيير.

إذا لم تعرِض الدالة أيّ قيمة (أو عرَضت قيمة غير محدّدة)، يتم قبول القيمة الجديدة على أنّها صالحة. يهدف ذلك إلى السماح للحقول باستخدام الدالة التي تم التحقّق منها كإشعار لحدث تغيير على مستوى الحقل.

setValue(newValue, fireChangeEvent) تُستخدَم لتغيير قيمة الحقل. تعالج عمليات التحقّق من الصحة والأحداث. يجب أن تلغي الفئات الفرعية doClassValidation_ وdoValueUpdate_ بدلاً من هذه الطريقة.
showEditor_(_e) protected عبارة تربط المطوّر لإنشاء محرِّر للحقل يكون هذا الخيار غير مفعّل تلقائيًا، ويجب إلغاؤه لإنشاء محرِّر.
toXml(fieldElement) تسلسل قيمة هذا الحقل إلى تنسيق XML يجب ألا يتم استدعاؤها إلا من خلال Blockly.Xml.
updateEditable() أضِف واجهة المستخدم التي تشير إلى ما إذا كان هذا الحقل قابلاً للتعديل أم لا أو أزِلها.
updateSize_(margin) protected تعديل حجم الحقل استنادًا إلى النص