blockly > الأحداث

مساحة اسم الأحداث

صفوف

لكل الصف الوصف
BlockBase فئة مجردة لأي حدث مرتبط بالكتل
BlockChange لإعلام المستمعين عند تغيير بعض عناصر أحد الأقسام (مثل قيم الحقول والتعليقات وما إلى ذلك)
BlockCreate تُرسِل إشعارًا إلى المستمعين عند إنشاء كتلة (أو حزمة متصلة من الكتل).
BlockDelete تُرسِل هذه الرسالة إلى المستمعين عند حذف كتلة (أو حزمة متصلة من الكتل).
BlockDrag إرسال إشعارات إلى المستمعين عند سحب/إسقاط قالب يدويًا
BlockFieldIntermediateChange يُرسِل إشعارًا للمستمعين عند تغيير قيمة حقل في أحد العناصر، ولكن التغيير لم يكتمل بعد، ومن المتوقّع أن يتبعه حدث تغيير في العنصر.
BlockMove إرسال إشعارات إلى المستمعين عند نقل مجموعة ويمكن أن يكون ذلك من اتصال إلى آخر، أو من موقع جغرافي في مساحة العمل إلى آخر.
BubbleOpen فئة لحدث فتح فقاعة
انقر يُرسِل إشعارًا للمستمعين بأنّه تم النقر على عنصر مربّع.
CommentBase فئة مجردة لحدث التعليق
CommentChange إشعار المستمعين بأنّه تم تغيير محتوى تعليق في مساحة العمل
CommentCollapse
CommentCreate إرسال إشعار للمستمعين بأنّه تم إنشاء تعليق في مساحة العمل
CommentDelete إرسال إشعار للمستمعين بأنّه تم حذف تعليق في مساحة العمل
CommentDrag إرسال إشعار للمستمعين عند سحب تعليق أو إسقاطه يدويًا
CommentMove إرسال إشعار للمستمعين بأنّه تم نقل تعليق في مساحة العمل
CommentResize إرسال إشعار إلى المستمعين بأنّه تم تغيير حجم تعليق في مساحة العمل
FinishedLoading يُرسِل إشعارًا إلى المستمعين عند انتهاء مساحة العمل من إلغاء تسلسل البيانات من تنسيق JSON/XML.
تم اختياره فئة لحدث محدّد لإعلام المستمعين بأنّه تم اختيار عنصر جديد
ThemeChange إشعار المستمعين بأنّه تم تغيير مظهر مساحة العمل
ToolboxItemSelect يُرسِل إشعارًا للمستمعين بأنّه تم اختيار عنصر من صندوق الأدوات.
TrashcanOpen إرسال إشعارات إلى المستمعين عند فتح أو إغلاق "المهملات"
UiBase الطبقة الأساسية لحدث واجهة المستخدم أحداث واجهة المستخدم هي أحداث لا تحتاج إلى إرسالها عبر الإنترنت لكي يعمل التعديل المتعدد المستخدمين (مثل الانتقال في مساحة العمل والتكبير/التصغير وفتح فئات صندوق الأدوات). لا يمكن التراجع عن أحداث واجهة المستخدم أو إعادتها.
VarBase فئة مجردة لحدث متغيّر
VarCreate يُعلم المستمعين بأنّه تم إنشاء نموذج متغيّر.
VarDelete لإرسال إشعار للمستمعين بأنّه تم حذف نموذج متغيّر
VarRename إشعار المستمعين بأنّه تم تغيير اسم نموذج متغيّر
VarTypeChange يُعلم المستمعين بأنّه تم تغيير نوع متغيّر.
ViewportChange

يُرسِل إشعارًا للمستمعين بأنّه تم تغيير موضع سطح مساحة العمل أو حجمه.

لا يتم إرسال إشعار عند تغيير حجم مساحة العمل نفسها.

الفئات المجردة

فئة مجردة الوصف
الملخّص فئة مجردة لحدث

التعدادات

التعداد الوصف
BubbleType
ClickTarget

الدوال

الوظيفة الوصف
clearPendingUndo() عدِّل أحداث التراجع في انتظار المراجعة لكي لا تنتقل إلى حزمة التراجع عند تنشيطها. يتم استدعاؤه من خلال Workspace.clearUndo.
disable()‎ توقّف عن إرسال الأحداث. يجب أن تستدعي كلّ مكالمة لهذه الدالة أيضًا الدالة enable.
disableOrphans(event) يمكنك ضبط ما إذا كان سيتم إيقاف القسم بناءً على ما إذا كان متصلاً بشكل صحيح. استخدِم هذا الأسلوب في التطبيقات التي يجب فيها ربط جميع الكتل بكتلة علوية.
enable()‎ ابدأ بإرسال الأحداث. ما لم تكن الأحداث قد سبق أن تم إيقافها عند إجراء الطلب المقابل للإيقاف.
filter(queue)

فلترة الأحداث في "قائمة الانتظار" من خلال دمج النُسخ المكرّرة وإزالة الأحداث غير الصالحة وإعادة تسجيل أحداث BlockChange

سجلّ هذه الدالة:

تمت إضافة هذه الدالة في الأصل في الإصدار cf257ea5 بهدف تقليل العدد الإجمالي للأحداث المُرسَلة بشكل كبير. في البداية، كان هذا الإجراء يؤثر فقط في أحداث BlockMove، ولكن تمّت إضافة أحداث أخرى بمرور الوقت.

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

https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351

في وقت لاحق، في الطلب المقدَّم لمراجعة الرمز البرمجي رقم 1205، تم استبدال التنفيذ الأصلي بترتيب O(n^2) بتنفيذ يستغرق وقتًا خطيًا، على الرغم من إجراء إصلاحات إضافية لاحقًا.

في آب (أغسطس) 2024، تم إجراء عدد من التبسيطات المهمة:

كان يتم استدعاء هذه الدالة سابقًا من Workspace.prototype.undo، ولكن تسبّبت عملية تحويل الأحداث من خلال هذه الدالة في حدوث المشكلة رقم 7026 (يُرجى العِلم أنّه سيتم دمج الأحداث بشكل مختلف بترتيب عكسي مقارنةً بالترتيب الأمامي). كان الإصلاح الذي تم اختياره في الأصل لهذه المشكلة هو إضافة رمز إلى fireNow (في الطلب المقدَّم رقم 7069) لفلترة ‎.undoStack_ و‎.redoStack_ بعد أي مساحة عمل كانت قد شاركت للتو في إرسال الأحداث. يبدو أنّ هذا الإجراء قد حلّ المشكلة، ولكنه أضاف تعقيدًا إضافيًا كبيرًا وصعّب فهم كيفية معالجة الأحداث للتراجع/الإعادة، لذا تمت إزالة الطلب من undo ورمز المعالجة اللاحقة، وتم ضبط forward=true على الإعداد التلقائي، وتم إيقاف الدالة مع forward=false نهائيًا.

في الوقت نفسه، تم استبدال الرمز البرمجي الذي يتضمّن أخطاء لإعادة ترتيب أحداث BlockChange بإصدار أقلّ خطأً من الوظيفة نفسها في دالة جديدة، وهي enqueueEvent، التي يتمّ استدعاؤها من fireInternal، ما يضمن ترتيب الأحداث بالترتيب الصحيح في وقت استدعاء الفلتر.

بالإضافة إلى ذلك، تم تعديل رمز دمج الأحداث لكي يتم دمج الأحداث المجاورة فقط. وقد سهّل ذلك عملية التنفيذ مع ضمان عدم إعادة ترتيب الأحداث عند دمجها.

fire(event)

إضافة حدث إلى "قائمة الانتظار" لإرساله إلى أدوات معالجة التغييرات

ملاحظات:

- يتم إدراج الأحداث في قائمة الانتظار إلى أن يتم تجاوز مهلة، وذلك عادةً بعد اكتمال العرض أو في نهاية المهمة الصغيرة الحالية، إذا لم تكن قيد التشغيل في متصفّح. - تخضع الأحداث المُدرَجة في "قائمة الانتظار" لتعديل مدمِّر من خلال دمجها مع الأحداث المُدرَجة في "قائمة الانتظار" لاحقًا، ولكن فقط إلى أن يتم تشغيلها. - يتم إرسال الأحداث من خلال طريقة fireChangeListener في مساحة العمل المتأثرة.

fromJson(json, workspace) فك ترميز ملف JSON إلى حدث.
get(eventType) تحصل على فئة لنوع حدث معيّن من السجلّ.
getGroup() المجموعة الحالية
getRecordUndo() تعرِض ما إذا كانت ستتم إضافة الأحداث إلى حزمة التراجع أم لا.
isEnabled() تعرِض ما إذا كان يمكن تنشيط الأحداث أم لا.
setGroup(state) بدء مجموعة أو إيقافها
setRecordUndo(newValue) لضبط ما إذا كان يجب إضافة الأحداث إلى حزمة التراجع.

واجهات

الواجهة الوصف
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

المتغيّرات

متغيّر الوصف
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTS

قائمة بالأحداث التي تؤدي إلى إعادة عرض العناصر في الجزء المرئي من مساحة العمل

لا يجب الخلط بين هذه الميزة وميزة "الدفع إلى الأعلى" التي تجعل الاتصالات غير المتصلة تبدو متصلة.

تغيير
انقر
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
إنشاء
حذف
FINISHED_LOADING
MOVE
تم اختياره
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
واجهة المستخدم
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

الأسماء البديلة

النوع: عنوان بديل الوصف
BumpEvent

نوع الأحداث التي تؤدي إلى إعادة عرض العناصر في الجزء المرئي من مساحة العمل

لا يجب الخلط بين هذه الميزة وميزة "الدفع إلى الأعلى" التي تجعل الاتصالات غير المتصلة تبدو متصلة.