blockly > Field

סיווג שדה

מחלקה מופשטת לשדה שניתן לערוך.

Signature:

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

הטמעות: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

יצרנים

יצרן גורמי שינוי התיאור
(constructor)(value, validator, config) יצירת מופע חדש של המחלקה Field

תכונות

נכס גורמי שינוי תיאור התיאור
borderRect_ protected SVGRectElement | null רכיב גבול ה-SVG של השדה שעבר עיבוד.
clickTarget_ protected רכיב | null הרכיב שאליו קשור ה-handler של הקליקים.
constants_ protected ConstantProvider | null קבועים שמשויכים לרינדור של בלוק המקור.
סמן מחרוזת הסגנון של סמן העכבר מעל לנקודה לשיתוף אינטרנט שמפעיל את העורך.
DEFAULT_VALUE T | null

כדי להחליף את ערך ברירת המחדל שמוגדר ב **שדה**, צריך לעדכן ישירות את אב הטיפוס.

לדוגמה: FieldImage.prototype.DEFAULT_VALUE = null;

עריכה boolean בשדות הניתנים לעריכה בדרך כלל מוצג ממשק משתמש כלשהו שמציין שניתן לערוך אותם. הן יישמרו גם על ידי מבצע הסדרה.
enabled_ protected boolean האם אפשר לשנות את ערך השדה באמצעות העורך בבלוק שניתן לערוך?
fieldGroup_ protected SVGGElement | null רכיב קבוצת ה-SVG של השדה שעבר עיבוד.
isDirty_ protected boolean האם צריך לעבד מחדש את הבלוק הזה?
maxDisplayLength מספר מספר התווים המקסימלי בטקסט לתצוגה לפני הוספה של שלוש נקודות.
name? מחרוזת (אופציונלי) שם השדה. ייחודי בכל בלוק. תוויות סטטיות בדרך כלל ללא שם.
NBSP

static

readonly

(לא הוצהר) רווח קשיח.
לצורך סיווג boolean שדות שניתן לערוך בהם סדרות נשמרים על ידי יוצר הסדרה, ואילו שדות שאינם ניתנים לסריאליות לא נשמרים בו. גם שדות שניתן לערוך צריכים להיות ניתנים לעריכה בסדר טורי. זה לא המקרה כברירת מחדל, ולכן ל-SERIALIZABLE יש תאימות לאחור.
size_ protected גודל
SKIP_SETUP

static

readonly

סמל ייחודי ערך שמשמש לאות כאשר בנאי של שדה *לא* מגדיר את ערך השדה או להריץ את configuration_ . במקום זאת, צריך לאפשר למחלקה משנית לעשות זאת.
sourceBlock_ protected חסימה | null חסימת השדה הזה מצורף. מתחיל כ-null, ולאחר מכן מוגדר בכניסה.
textContent_ protected טקסט | null רכיב תוכן הטקסט של השדה שעבר עיבוד.
textElement_ protected SVGTextElement | null רכיב טקסט SVG של השדה שעבר עיבוד.
validator_ protected FieldValidator<T> | null מתבצעת קריאה לפונקציית אימות כשמשתמש עורך שדה שניתן לעריכה.
value_ protected T | null
visible_ protected boolean האם השדה גלוי או מוסתר מפני שהחסימה מכווצת?

שיטות

שיטה גורמי שינוי התיאור
applyColour()

מעדכן את השדה כך שיתאים לצבע/לסגנון של הבלוק.

מחלקות משנה לא מופשטות עשויות לרצות ליישם זאת אם צבע השדה תלוי בצבע הבלוק. היא תופעל באופן אוטומטי בזמנים רלוונטיים, למשל כאשר חסימת ההורה או ה-Renderer משתנים.

אפשר לקרוא מידע נוסף במסמכי התיעוד בנושא או באפשרות FieldDropdown כדי לראות דוגמה.

bindEvents_() protected קישור אירועים לשדה. מחלקות משנה יכולות לדרוס אותן אם צריך לבצע טיפול מותאם אישית בקלט.
configure_(config) protected לעבד את מפת התצורה שמועברת לשדה.
createBorderRect_() protected צור רכיב מלבני של גבול שדה. לא יחול שינוי על ידי מחלקות משנה. במקום זאת, צריך לשנות את התוצאה של הפונקציה בתוך initView או ליצור פונקציה נפרדת לקריאה.
createTextElement_() protected יוצרים רכיב טקסט בשדה. לא יחול שינוי על ידי מחלקות משנה. במקום זאת, צריך לשנות את התוצאה של הפונקציה בתוך initView או ליצור פונקציה נפרדת לקריאה.
doClassValidation_(newValue) protected

לאמת את השינויים בערך של שדה לפני שהם מוגדרים. דוגמה להטמעה של מחלקה משנית זמינה בקטע **תפריט נפתח של**.

**הערה:** האימות מחזיר אפשרות אחת בין T, null ו-undefined. הטמעת **השדה** אף פעם לא תחזיר undefined, אבל מחלקה משנית תוכל להחזיר undefined אם הערך החדש תואם לערך T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected ההודעה משמשת לציון ערך לא חוקי בשדה. אפשר לבטל מחלקות משנה באמצעות מחלקות משנה. ללא הפעלה כברירת מחדל.
doValueUpdate_(newValue) protected משמש לעדכון הערך של שדה. מחלקות משנה יכולות לבטל את השינוי כדי לבצע אחסון מותאם אישית של ערכים/עדכון של דברים חיצוניים.
getAbsoluteXY_() protected מחזירה את הקואורדינטות המוחלטות של הפינה השמאלית העליונה של השדה הזה. המקור (0,0) הוא הפינה הימנית העליונה של גוף הדף.
getBorderRect() protected הפונקציה מקבלת את הרכיב של מלבן הגבול.
getClickTarget_() protected הרכיב שאליו צריך לקשר את ה-handler של הקליקים. אם לא מגדירים במפורש, ברירת המחדל היא הרמה הבסיסית של SVG של השדה. כשלוחצים על הרכיב הזה בשדה שניתן לעריכה, העורך נפתח.
getConstants() מקבלים את הספק הקבוע של ה-Renderer.
getDisplayText_() protected קבל את הטקסט מהשדה הזה להצגה בבלוק. עשוי להיות שונה מ-getText בשל שלוש נקודות ועיצוב אחר.
getFlipRtl() פונקציה זו מחזירה את השאלה אם עלינו להפוך את השדה ב-RTL.
getSize()

מחזירה את הגובה והרוחב של השדה.

באופן כללי, אזור זה צריך להיות *בדרך כלל* המקום היחיד שממנו מתקבלת קריאה ל-render_.

getSourceBlock() מקבלים את החסימה שאליה מצורף השדה הזה.
getSvgRoot() הפונקציה מקבלת את רכיב הקבוצה עבור השדה שניתן לעריכה. משמשת למדידת הגודל ולמיקום.
getText_() protected קישור הוק (hook) של מפתח לביטול הטקסט המוחזר בשדה הזה. שינוי אם ייצוג הטקסט של הערך בשדה הזה הוא לא רק העברת מחרוזת של הערך שלו. מחזירים את הערך null כדי לבצע העברה למחרוזת.
getText() מקבלים את הטקסט מהשדה הזה. יש לשנות את getText_ כדי לספק התנהגות שונה מ-cast של הערך למחרוזת.
getTextContent() protected מקבל את תוכן הטקסט.
getTextElement() protected הפונקציה מקבלת את רכיב הטקסט.
getTooltip() מחזירה את טקסט ההסבר הקצר עבור שדה זה.
getValidator() הפונקציה מקבלת את פונקציית האימות עבור שדות שניתן לערוך, או את הערך null אם לא הוגדר.
getValue() מקבלים את הערך הנוכחי בשדה.
initModel() מפעיל את המודל של השדה לאחר שהוא מותקן בבלוק. ללא הפעלה כברירת מחדל.
initView() protected יוצרים את ממשק המשתמש לחסימה בשדה הזה.
isClickable() בודקים אם השדה הזה מגדיר את הפונקציה showEditor_ .
isClickableInFlyout(autoClosingFlyout) בודקים אם השדה צריך להיות קליקבילי כשהבלוק נמצא במצב נפתח. ברירת המחדל היא שהשדות בשקפים פתוחים תמיד, כמו ארגז הכלים הפשוט, יכולים ללחוץ על שדות, אבל לא בשקפים בסגירה אוטומטית כמו ארגז הכלים של הקטגוריה. מחלקות משנה יכולות לבטל את הפונקציה הזו כדי לשנות את ההתנהגות הזו. לתשומת ליבכם, גם הפונקציה isClickable צריכה להחזיר את הערך true כדי שתהיה לכך השפעה כלשהי.
isCurrentlyEditable() בדוק אם השדה הזה ניתן כעת לעריכה. חלק מהשדות אף פעם לא ניתנים לעריכה (למשל תוויות טקסט). ייתכן שניתן לערוך שדות אחרים, אבל יכול להיות שהם קיימים בבלוקים שלא ניתנים לעריכה או שהם מושבתים כרגע.
isEnabled() ניתן לבדוק אם אפשר לשנות את הערך של השדה הזה באמצעות כלי העריכה כשניתן לערוך את בלוק המקור.
isFullBlockField() protected

מגדיר אם השדה הזה ייכלל בבלוק המלא או לא.

יש להיזהר כשמבטלים את הפונקציה הזו. יכול להיות שהתכונה לא תפעל בהתאם לציפיות או מהתכוונתם שלכם, מאחר שההתנהגות הזו נפרצה. אם החלטת לבטל את הפונקציה הזו, יש לפרסם בפורום את ההתנהגות שרצית לראות אם יש גישה אחרת.

isSerializable() בודקים אם מעבד ה-XML יכול לארגן את השדה הזה בסדרה. מטפל בלוגיקה של תאימות לאחור ומצבים לא תואמים.
isTabNavigable() מראה אם ניתן לנווט בשדה או לא.
isVisible() מראה אם השדה שניתן לעריכה גלוי או לא.
loadLegacyState(callingClass, state) טוען את המצב הנתון באמצעות קטעי ה-hook הישנים של XML, אם יש להשתמש בהם. הפונקציה מחזירה את הערך True כדי לציין שהטעינה טופלה. אחרת, היא מחזירה את הערך False.
onLocationChange(_) הצגת הודעה לשדה על כך שמיקומים שונים השתנו.
onMouseDown_(e) protected צריך לטפל באירוע מצביע מטה בשדה.
onShortcut(_shortcut) מטפל במקש הקיצור הנתון.
positionBorderRect_() protected יש למקם את הגבול של שדה לאחר שינוי הגודל.
positionTextElement_(xOffset, contentWidth) protected יש למקם את רכיב הטקסט של שדה אחרי שינוי הגודל. אפשרות זו מטפלת במיקום של LTR וגם מימין לשמאל.
render_() protected

משמש את getSize() כדי להעביר רכיבי DOM או לשנות את הגודל שלהם, ולקבל את הגודל החדש.

כל הרינדור שיש לו השפעה על הגודל/הצורה של הבלוק צריך להתבצע כאן, וצריך להיות מופעל על ידי getSize().

repositionForWindowResize()

קישור (hook) למפתחים למיקום מחדש של ה-WidgetDiv במהלך שינוי גודל של חלון. עליכם להגדיר את ה-hook הזה אם לשדה שלכם יש WidgetDiv שצריך למקם את עצמו מחדש לאחר שינוי גודל החלון. לדוגמה, שדות להזנת טקסט מגדירים את ה-hook הזה כדי ש-WidgetDiv הקלט יוכל למקם את עצמו מחדש באירוע שינוי גודל של חלון. הדבר חשוב במיוחד כשקלט מודאלי מושבת, מפני שמכשירי Android יפעילו אירוע של שינוי גודל החלון כאשר המקלדת הקלה נפתחת.

אם רוצים שהווידג'ט יסתיר את עצמו במקום לשנות את המיקום שלו, צריך להחזיר את הווידג'ט FALSE. זאת התנהגות ברירת המחדל.

תפריטים נפתחים כבר מטפלים בלוגיקת מיקום משלהם, כך שאין צורך לעקוף פונקציה זו אם השדה שלך כולל רק DropdownDiv.

saveLegacyState(callingClass) protected מחזירה גרסת stringified של מצב ה-XML, אם צריך להשתמש בה. אחרת, הפעולה הזו מחזירה null, כדי לסמן שהשדה צריך להשתמש בסדרה משל עצמו.
setEnabled(enabled) אפשר לקבוע אם ניתן לשנות את הערך בשדה הזה באמצעות כלי העריכה כשניתן לערוך את בלוק המקור.
setSourceBlock(block) צירוף השדה הזה לבלוק.
setTooltip(newTip) מגדיר את ההסבר הקצר לשדה הזה.
setValidator(handler)

מגדירה פונקציית אימות חדשה לשדות שניתנים לעריכה, או מנקה מאמת שהוגדר בעבר.

פונקציית התיקוף מקבלת את ערך השדה החדש ומחזירה ערך שאומת. הערך המאומת יכול להיות ערך הקלט, גרסה ששונתה של ערך הקלט או null כדי לבטל את השינוי.

אם הפונקציה לא מחזירה שום דבר (או מחזירה ערך לא מוגדר), הערך החדש יתקבל כחוקי. המטרה היא לאפשר שדות שמשתמשים בפונקציה המאומתת כהתראה על אירוע שינוי ברמת השדה.

setValue(newValue, fireChangeEvent) משמש לשינוי הערך בשדה הזה. טיפול באימות ובאירועים. מחלקות משנה צריכות לבטל את doClassValidation_ ו-doValueUpdate_ ולא את השיטה הזו.
showEditor_(_e) protected קישור למפתח כדי ליצור עורך לשדה. ברירת המחדל היא ללא תפעול, וצריך לעקוף אותה כדי ליצור עורך.
updateEditable() מוסיפים או מסירים את ממשק המשתמש שמציין אם השדה הזה ניתן לעריכה.
updateSize_(margin) protected עדכון גודל השדה בהתאם לטקסט.