blockly > فیلد

کلاس میدانی

کلاس انتزاعی برای یک فیلد قابل ویرایش.

امضا:

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

پیاده سازی: IASTNodeLocationSvg ، IASTNodeLocationWithBlock , IKeyboardAccessible ، قابل ثبت است ISerializable

سازندگان

سازنده اصلاح کننده ها شرح
(سازنده) (مقدار، اعتبار سنج، پیکربندی) یک نمونه جدید از کلاس Field می سازد

خواص

ویژگی اصلاح کننده ها تایپ کنید شرح
borderRect_ protected SVGRectElement | خالی عنصر حاشیه SVG فیلد رندر شده.
کلیک هدف_ protected عنصر | خالی عنصری که کنترل کننده کلیک به آن متصل است.
ثابت_ protected ConstantProvider | خالی ثابت های مرتبط با رندر بلوک منبع.
مکان نما رشته سبک مکان‌نمای ماوس در زمانی که روی نقطه اتصالی که ویرایشگر را شروع می‌کند قرار می‌گیرد.
مقدار پیش فرض T | خالی

برای بازنویسی مقدار پیش‌فرض که در **فیلد** تنظیم شده است، مستقیماً نمونه اولیه را به‌روزرسانی کنید.

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

قابل ویرایش بولی فیلدهای قابل ویرایش معمولاً نوعی رابط کاربری را نشان می دهند که نشان می دهد قابل ویرایش هستند. آنها همچنین توسط سریال ساز ذخیره می شوند.
فعال_ protected بولی آیا می توان مقدار فیلد را با استفاده از ویرایشگر روی یک بلوک قابل ویرایش تغییر داد؟
fieldGroup_ protected SVGGElement | خالی عنصر گروه SVG فیلد رندر شده.
کثیف است_ protected بولی آیا این بلوک نیاز به رندر مجدد دارد؟
maxDisplayLength عدد حداکثر کاراکترهای متن برای نمایش قبل از افزودن بیضی.
نام؟ رشته (اختیاری) نام فیلد. منحصر به فرد در هر بلوک. برچسب های استاتیک معمولاً بدون نام هستند.
NBSP

static

readonly

(اعلام نشده) فضای بدون شکستگی.
قابل سریال سازی بولی فیلدهای قابل سریال‌سازی توسط سریال‌ساز ذخیره می‌شوند، فیلدهای غیرقابل سریال‌سازی ذخیره نمی‌شوند. فیلدهای قابل ویرایش نیز باید سریال شوند. این مورد به طور پیش‌فرض نیست، بنابراین SERIALIZABLE با عقب سازگار است.
اندازه_ protected اندازه
SKIP_SETUP

static

readonly

نماد منحصر به فرد زمانی که سازنده یک فیلد نباید مقدار فیلد را *نباید* تعیین کند یا configure_ را اجرا کند، برای سیگنال دادن استفاده می‌شود و باید به یک کلاس فرعی اجازه دهد که این کار را انجام دهد.
sourceBlock_ protected بلوک | خالی مسدود کردن این فیلد به آن پیوست شده است. به صورت null شروع می شود، سپس در init تنظیم می شود.
متن محتوا_ protected متن | خالی عنصر محتوای متنی فیلد رندر شده.
textElement_ protected SVGTextElement | خالی عنصر متنی SVG فیلد ارائه شده.
اعتباردهنده_ protected Field Validator <T> | خالی هنگامی که کاربر یک فیلد قابل ویرایش را ویرایش می کند، تابع اعتبارسنجی فراخوانی می شود.
ارزش_ protected T | خالی
قابل رویت_ protected بولی آیا فیلد به دلیل جمع شدن بلوک قابل مشاهده است یا پنهان است؟

مواد و روش ها

روش اصلاح کننده ها شرح
applicationColour()

فیلد را برای مطابقت با رنگ/سبک بلوک به روز می کند.

اگر رنگ فیلد به رنگ بلوک بستگی داشته باشد، کلاس‌های فرعی غیرانتزاعی ممکن است بخواهند این را پیاده‌سازی کنند. به طور خودکار در زمان های مربوطه فراخوانی می شود، مانند زمانی که بلوک والد یا رندر تغییر می کند.

برای اطلاعات بیشتر به مستندات فیلد یا برای مثال FieldDropdown مراجعه کنید.

bindEvents_() protected رویدادها را به میدان پیوند دهید. در صورت نیاز به انجام مدیریت ورودی سفارشی، می‌توان توسط کلاس‌های فرعی نادیده گرفت.
configure_(config) protected نقشه پیکربندی ارسال شده به فیلد را پردازش کنید.
createBorderRect_() protected یک عنصر حاشیه درست درست کنید. نباید توسط زیر کلاس‌ها نادیده گرفته شود. در عوض نتیجه تابع را در داخل initView تغییر دهید یا یک تابع جداگانه برای فراخوانی ایجاد کنید.
createTextElement_() protected یک عنصر متن فیلد ایجاد کنید. نباید توسط زیر کلاس‌ها نادیده گرفته شود. در عوض نتیجه تابع را در داخل initView تغییر دهید یا یک تابع جداگانه برای فراخوانی ایجاد کنید.
doClassValidation_(newValue) protected

تغییرات مربوط به مقدار یک فیلد را قبل از تنظیم اعتبارسنجی کنید. برای مثالی از اجرای زیر کلاس، **FieldDropdown** را ببینید.

**توجه:** اعتبارسنجی یک گزینه را بین T ، null و undefined برمی گرداند. پیاده سازی **فیلد** هرگز undefined برنمی گردد، اما اگر مقدار جدید با T سازگار باشد، برای یک زیرکلاس معتبر است که undefined برگردد.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected برای اطلاع دادن به فیلد، مقدار نامعتبری وارد شده است. می‌تواند توسط زیر کلاس‌ها لغو شود، به FieldTextInput مراجعه کنید. No-op به طور پیش فرض.
doValueUpdate_(newValue) protected برای به روز رسانی مقدار یک فیلد استفاده می شود. برای ذخیره سازی سفارشی مقادیر/به روز رسانی چیزهای خارجی می توان آن را با زیر کلاس ها لغو کرد.
getAbsoluteXY_() protected مختصات مطلق گوشه سمت چپ بالای این فیلد را برگردانید. مبدا (0,0) گوشه سمت چپ بالای بدنه صفحه است.
getBorderRect() protected عنصر مستطیل حاشیه را دریافت می کند.
getClickTarget_() protected عنصری که باید کنترل کننده کلیک به آن متصل شود. اگر به صراحت تنظیم نشده باشد، به طور پیش فرض روی ریشه SVG فیلد تنظیم می شود. هنگامی که این عنصر روی یک فیلد قابل ویرایش کلیک می شود، ویرایشگر باز می شود.
getConstants() ارائه دهنده ثابت رندر را دریافت کنید.
getDisplayText_() protected متن را از این قسمت دریافت کنید تا در بلوک نمایش داده شود. ممکن است به دلیل بیضی بودن و سایر قالب بندی ها با getText متفاوت باشد.
getFlipRtl() نشان می دهد که آیا باید فیلد را در RTL برگردانیم یا نه.
getSize()

ارتفاع و عرض فیلد را برمی‌گرداند.

این باید *به طور کلی* تنها جایی باشد که render_ از آن فراخوانی می شود.

getSourceBlock() بلوکی که این فیلد به آن پیوست شده است را دریافت کنید.
getSvgRoot() عنصر گروه را برای این فیلد قابل ویرایش دریافت می کند. برای اندازه گیری اندازه و موقعیت یابی استفاده می شود.
getText_() protected یک قلاب توسعه دهنده برای لغو متن برگشتی این فیلد. اگر نمایش متنی مقدار این فیلد فقط یک رشته از مقدار آن نباشد، لغو کنید. برای متوسل شدن به بازیگری رشته ای، null را برگردانید.
getText() متن را از این قسمت دریافت کنید. برای ارائه رفتاری متفاوت از ارسال مقدار به یک رشته، getText_ را لغو کنید.
getTextContent() protected محتوای متن را دریافت می کند.
getTextElement() protected عنصر متن را دریافت می کند.
getTooltip() متن راهنمای ابزار را برای این فیلد برمی‌گرداند.
getValidator() تابع اعتبارسنجی را برای فیلدهای قابل ویرایش دریافت می کند، یا اگر تنظیم نشده باشد، null می شود.
getValue() مقدار فعلی فیلد را بدست آورید.
initModel() مدل فیلد را پس از نصب روی یک بلوک مقداردهی اولیه می کند. No-op به طور پیش فرض.
initView() protected بلوک UI را برای این فیلد ایجاد کنید.
isClickable() بررسی کنید که آیا این فیلد تابع showEditor_ را تعریف می کند یا خیر.
isClickableInFlyout (autoClosingFlyout) بررسی کنید که آیا در زمانی که بلوک در حال پرواز است، فیلد باید قابل کلیک باشد یا خیر. پیش‌فرض این است که فیلدها در فلای‌آوت‌های همیشه باز مانند جعبه ابزار ساده قابل کلیک هستند، اما در قسمت‌های بسته شدن خودکار مانند جعبه ابزار دسته‌بندی قابل کلیک نیستند. کلاس های فرعی ممکن است این تابع را لغو کنند تا این رفتار را تغییر دهند. توجه داشته باشید که isClickable نیز باید مقدار true را برگرداند تا تاثیری داشته باشد.
isCurrentlyEditable() بررسی کنید که آیا این فیلد در حال حاضر قابل ویرایش است یا خیر. برخی از فیلدها هرگز قابل ویرایش نیستند (مثلاً برچسب های متنی). فیلدهای دیگر ممکن است EDITABLE باشند اما ممکن است در بلوک های غیر قابل ویرایش وجود داشته باشند یا در حال حاضر غیرفعال باشند.
فعال شده است() بررسی کنید که آیا مقدار این فیلد را می توان با استفاده از ویرایشگر تغییر داد، زمانی که بلوک منبع قابل ویرایش است.
isFullBlockField() protected

مشخص می کند که آیا این فیلد باید کل بلوک را اشغال کند یا خیر.

هنگام نادیده گرفتن این عملکرد محتاط باشید. ممکن است آنطور که شما انتظار دارید / قصد دارید کار نکند زیرا رفتار به نوعی هک شده است. اگر به فکر نادیده گرفتن این عملکرد هستید، با رفتار مورد نظر خود در انجمن پست کنید تا ببینید آیا رویکرد دیگری وجود دارد یا خیر.

isSerializable() بررسی کنید که آیا این فیلد باید توسط رندر XML سریال شود یا خیر. منطق سازگاری با عقب و حالت های نامتجانس را مدیریت می کند.
isTabNavigable() نشان می دهد که آیا این فیلد قابل پیمایش برگه است یا خیر.
isVisible() مشخص می کند که آیا این قسمت قابل ویرایش قابل مشاهده است یا خیر.
loadLegacyState (کلاس فراخوان، حالت) حالت داده شده را با استفاده از قلاب های XML قدیمی بارگیری می کند، در صورتی که باید استفاده شوند. درست را نشان می دهد که بارگیری انجام شده است، در غیر این صورت false.
onLocationChange(_) به فیلد اطلاع می دهد که مکان خود را تغییر داده است.
onMouseDown_(e) protected یک رویداد اشاره گر در یک فیلد را مدیریت کنید.
onShortcut(_shortcut) میانبر صفحه کلید داده شده را کنترل می کند.
positionBorderRect_() protected پس از تغییر اندازه، مرز یک فیلد را به صورت مستقیم قرار دهید.
positionTextElement_(xOffset، ContentWidth) protected بعد از تغییر اندازه، عنصر متنی فیلد را قرار دهید. این هر دو موقعیت LTR و RTL را کنترل می کند.
ارائه دادن_() protected

توسط getSize() برای جابجایی/تغییر اندازه عناصر DOM و دریافت اندازه جدید استفاده می شود.

تمام رندرهایی که روی اندازه/شکل بلوک تاثیر دارند باید در اینجا انجام شوند و باید توسط getSize() فعال شوند.

repositionForWindowResize()

یک قلاب توسعه دهنده برای تغییر مکان WidgetDiv در طول تغییر اندازه پنجره. اگر فیلد شما دارای یک WidgetDiv است که باید هنگام تغییر اندازه پنجره، موقعیت خود را تغییر دهد، باید این قلاب را تعریف کنید. به عنوان مثال، فیلدهای ورودی متن این قلاب را تعریف می کنند تا WidgetDiv ورودی بتواند در یک رویداد تغییر اندازه پنجره، موقعیت خود را تغییر دهد. این امر به ویژه زمانی مهم است که ورودی‌های مدال غیرفعال شده باشند، زیرا دستگاه‌های Android با باز شدن صفحه‌کلید نرم، رویداد تغییر اندازه پنجره را اجرا می‌کنند.

اگر می خواهید WidgetDiv به جای تغییر موقعیت، خود را پنهان کند، false را برگردانید. این رفتار به طور پیش فرض است.

DropdownDiv ها از قبل منطق موقعیت یابی خود را مدیریت می کنند، بنابراین اگر فیلد شما فقط دارای یک DropdownDiv باشد، نیازی به لغو این تابع نیست.

saveLegacyState(callingClass) protected اگر باید از آن استفاده شود، یک نسخه رشته‌ای از حالت XML را برمی‌گرداند. در غیر این صورت این عدد تهی را برمی‌گرداند، برای سیگنال دادن به فیلد باید از سریال‌سازی خود استفاده کرد.
setEnabled (فعال) تنظیم کنید که آیا می‌توان مقدار این فیلد را با استفاده از ویرایشگر تغییر داد، زمانی که بلوک منبع قابل ویرایش است.
setSourceBlock (block) این فیلد را به یک بلوک وصل کنید.
setTooltip (نکته جدید) راهنمای ابزار را برای این فیلد تنظیم می کند.
setValidator (هندلر)

یک تابع اعتبار سنجی جدید را برای فیلدهای قابل ویرایش تنظیم می کند یا اعتبارسنجی تنظیم شده قبلی را پاک می کند.

تابع اعتبارسنجی مقدار فیلد جدید را می گیرد و مقدار اعتبارسنجی شده را برمی گرداند. مقدار تأیید شده می تواند مقدار ورودی، نسخه اصلاح شده مقدار ورودی یا تهی برای لغو تغییر باشد.

اگر تابع چیزی را برگرداند (یا تعریف نشده برمی گرداند) مقدار جدید به عنوان معتبر پذیرفته می شود. این برای اجازه دادن به فیلدهایی است که از تابع تأیید شده به عنوان اعلان رویداد تغییر در سطح فیلد استفاده می کنند.

setValue (newValue، fireChangeEvent) برای تغییر مقدار فیلد استفاده می شود. اعتبارسنجی و رویدادها را کنترل می کند. کلاس‌های فرعی باید doClassValidation_ و doValueUpdate_ را به جای این روش لغو کنند.
showEditor_(_e) protected یک قلاب توسعه دهنده برای ایجاد ویرایشگر برای فیلد. این به طور پیش‌فرض no-op است و برای ایجاد یک ویرایشگر باید لغو شود.
updateEditable() رابط کاربری را اضافه یا حذف کنید که نشان می دهد این قسمت قابل ویرایش است یا خیر.
updateSize_(حاشیه) protected اندازه فیلد را بر اساس متن به روز می کند.