blockly > Feld

Feldklasse

Abstrakte Klasse für ein bearbeitbares Feld.

Unterschrift:

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

Implementierungen: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Konstruktoren

Konstruktor Modifikatoren Beschreibung
(constructor)(value, validator, config) Konstruiert eine neue Instanz der Klasse Field

Attribute

Property Modifikatoren Typ Beschreibung
borderRect_ protected SVGRectElement | null Das SVG-Rahmenelement des gerenderten Felds.
clickTarget_ protected Element | null Das Element, an das der Klick-Handler gebunden ist.
constants_ protected ConstantProvider | null Konstanten, die dem Renderer des Quellblocks zugeordnet sind
CURSOR String Stil des Mauszeigers, wenn er über dem Hotspot liegt, mit dem der Editor gestartet wird.
DEFAULT_VALUE T | null

Um den in **Feld** festgelegten Standardwert zu überschreiben, aktualisieren Sie den Prototyp direkt.

Beispiel: FieldImage.prototype.DEFAULT_VALUE = null;

BEARBEITBAR boolean Bearbeitbare Felder zeigen normalerweise eine Art UI an, die angibt, dass sie bearbeitbar sind. Sie werden auch vom Serializer gespeichert.
enabled_ protected boolean Kann der Feldwert bei einem bearbeitbaren Block mit dem Editor geändert werden?
fieldGroup_ protected SVGGElement | null Das SVG-Gruppenelement des gerenderten Felds.
isDirty_ protected boolean Muss dieser Block noch einmal gerendert werden?
maxDisplayLength Zahl Maximale Zeichenanzahl, die angezeigt werden soll, bevor Auslassungspunkte hinzugefügt werden
Name? String (Optional) Name des Felds. Dieser Wert ist in jedem Block eindeutig. Statische Labels sind normalerweise unbenannt.
NBSP

static

readonly

(nicht deklariert) Geschütztes Leerzeichen.
SERIALISIERT boolean Serialisierbare Felder werden vom Serializer gespeichert, nicht-serialisierbare Felder nicht. Bearbeitbare Felder sollten außerdem serialisierbar sein. Dies ist nicht standardmäßig der Fall, sodass SERIALIZABLE abwärtskompatibel ist.
size_ protected Größe
SKIP_SETUP

static

readonly

eindeutiges Symbol Ein Wert, der signalisiert, wann der Konstruktor eines Felds *nicht* den Wert des Feldes festlegen oder „config_“ ausführen soll. Er sollte stattdessen einer Unterklasse erlauben, dies zu tun.
sourceBlock_ protected Blockieren | null Blockieren, an das dieses Feld angehängt ist. Beginnt mit null und wird dann in init festgelegt.
textContent_ protected Text | null Das Textinhaltselement des gerenderten Felds.
textElement_ protected SVGTextElement | null Das SVG-Textelement des gerenderten Felds.
validator_ protected FieldValidator<T> | null Die Validierungsfunktion, die aufgerufen wird, wenn ein Nutzer ein bearbeitbares Feld bearbeitet.
value_ protected T | null
visible_ protected boolean Ist das Feld sichtbar oder ausgeblendet, weil der Block minimiert wurde?

Methoden

Methode Modifikatoren Beschreibung
applyColour()

Aktualisiert das Feld, sodass es der Farbe bzw. dem Stil des Blocks entspricht.

Dies kann für nicht abstrakte Unterklassen implementiert werden, wenn die Farbe des Felds von der Farbe des Blocks abhängt. Er wird automatisch zu relevanten Zeiten aufgerufen, z. B. wenn sich der übergeordnete Block oder der Renderer ändert.

Weitere Informationen finden Sie in der Dokumentation zu Feldern oder „FieldDropdown“.

bindEvents_() protected Bindet Ereignisse an das Feld. Kann von Unterklassen überschrieben werden, wenn sie eine benutzerdefinierte Eingabeverarbeitung ausführen müssen.
configure_(config) protected Verarbeiten Sie die an das Feld übergebene Konfigurationszuordnung.
createBorderRect_() protected Erstellt ein Rechteckelement mit Feldrahmen. Nicht durch Unterklassen überschreiben. Ändern Sie stattdessen das Ergebnis der Funktion in initView oder erstellen Sie eine separate Funktion, die aufgerufen werden soll.
createTextElement_() protected Erstellen Sie ein Feldtextelement. Nicht durch Unterklassen überschreiben. Ändern Sie stattdessen das Ergebnis der Funktion in initView oder erstellen Sie eine separate Funktion, die aufgerufen werden soll.
doClassValidation_(newValue) protected

Änderungen am Wert eines Feldes validieren, bevor sie festgelegt werden Ein Beispiel für die Implementierung von Unterklassen finden Sie unter **FieldDropdown**.

**HINWEIS:** Die Validierung gibt eine Option zwischen T, null und undefined zurück. Die Implementierung von **Field** gibt niemals undefined zurück. Eine Unterklasse kann jedoch undefined zurückgeben, wenn der neue Wert mit T kompatibel ist.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected Wird verwendet, um über die Eingabe eines ungültigen Werts in das Feld informiert zu werden. Kann von Unterklassen überschrieben werden, siehe „FieldTextInput“. Standardmäßig operativ.
doValueUpdate_(newValue) protected Wird verwendet, um den Wert eines Felds zu aktualisieren. Kann von Unterklassen überschrieben werden, um benutzerdefinierte Werte zu speichern oder externe Elemente zu aktualisieren.
getAbsoluteXY_() protected Gibt die absoluten Koordinaten der oberen linken Ecke dieses Felds zurück. Der Ursprung (0,0) ist die linke obere Ecke des Seitentextes.
getBorderRect() protected Ruft das Rahmenrechteckelement ab.
getClickTarget_() protected Das Element, an das der Klick-Handler gebunden werden soll. Wenn nicht explizit festgelegt, wird standardmäßig das SVG-Stammverzeichnis des Felds verwendet. Wenn auf dieses Element in einem bearbeitbaren Feld geklickt wird, wird der Editor geöffnet.
getConstants() Rufen Sie den konstanten Renderer-Anbieter ab.
getDisplayText_() protected Rufen Sie den Text aus diesem Feld ab, der im Block angezeigt werden soll. Kann aufgrund von Auslassungspunkten und anderen Formatierungen von getText abweichen.
getFlipRtl() Gibt zurück, ob das Feld in RTL umgedreht werden soll.
getSize()

Gibt Höhe und Breite des Felds zurück.

Dies sollte *im Allgemeinen* der einzige Ort sein, von dem aus render_ aufgerufen wird.

getSourceBlock() Rufen Sie den Block ab, an den dieses Feld angehängt ist.
getSvgRoot() Ruft das Gruppenelement für dieses bearbeitbare Feld ab. Wird zum Messen der Größe und zur Positionierung verwendet.
getText_() protected Ein Entwickler-Hook, um den zurückgegebenen Text dieses Felds zu überschreiben. Wird überschrieben, wenn die Textdarstellung des Werts dieses Felds nicht nur eine Stringumwandlung seines Werts ist. Gibt null zurück, um eine Stringumwandlung zu verwenden.
getText() Rufen Sie den Text aus diesem Feld ab. Überschreiben Sie getText_, um ein anderes Verhalten zu ermöglichen als das einfache Umwandeln des Werts in einen String.
getTextContent() protected Ruft den Textinhalt ab.
getTextElement() protected Ruft das Textelement ab.
getTooltip() Gibt den Text der Kurzinfo für dieses Feld zurück
getValidator() Ruft die Validierungsfunktion für bearbeitbare Felder oder null ab, wenn nicht festgelegt.
getValue() Ruft den aktuellen Wert des Felds ab.
initModel() Initialisiert das Modell des Felds, nachdem es in einem Block installiert wurde. Standardmäßig operativ.
initView() protected Erstellen Sie die Block-UI für dieses Feld.
isClickable() Prüfen Sie, ob dieses Feld die Funktion showEditor_ definiert.
isClickableInFlyout(autoClosingFlyout) Prüfen Sie, ob das Feld anklickbar sein soll, während sich der Block in einem Flyout-Element befindet. Standardmäßig sind Felder in immer geöffneten Flyouts wie der einfachen Toolbox anklickbar, nicht jedoch in Flyouts mit automatischem Schließen wie der Kategorie-Toolbox. Abgeleitete Klassen können diese Funktion überschreiben, um dieses Verhalten zu ändern. Beachten Sie, dass isClickable ebenfalls „true“ zurückgeben muss, damit dies wirksam wird.
isCurrentlyEditable() Prüfen Sie, ob dieses Feld derzeit bearbeitbar ist. Einige Felder, z.B. Textbeschriftungen, können nie bearbeitet werden. Andere Felder können BEARBEITBAR sein, sind aber möglicherweise in nicht bearbeitbaren Blöcken vorhanden oder sind derzeit deaktiviert.
isEnabled() Prüfen Sie, ob der Wert dieses Felds mit dem Editor geändert werden kann, wenn der Quellblock bearbeitbar ist.
isFullBlockField() protected

Legt fest, ob dieses Feld den gesamten Block einnehmen soll oder nicht.

Seien Sie vorsichtig, wenn Sie diese Funktion überschreiben. Es funktioniert möglicherweise nicht wie erwartet / beabsichtigt, weil das Verhalten irgendwie gehackt wurde. Wenn Sie darüber nachdenken, diese Funktion zu überschreiben, posten Sie im Forum Ihr beabsichtigtes Verhalten, um zu sehen, ob es einen anderen Ansatz gibt.

isSerializable() Überprüft, ob dieses Feld vom XML-Renderer serialisiert werden soll. Verarbeitet die Logik für Abwärtskompatibilität und nicht übereinstimmende Zustände.
isTabNavigable() Gibt an, ob das Feld über die Tabulatortaste navigierbar ist.
isVisible() Ruft ab, ob dieses bearbeitbare Feld sichtbar ist oder nicht.
loadLegacyState(callingClass, state) Lädt den angegebenen Status mithilfe der alten XML-Hooks, falls diese verwendet werden sollten. Gibt „true“ zurück, um anzuzeigen, dass der Ladevorgang durchgeführt wurde, andernfalls „false“.
onLocationChange(_) Informiert das Feld darüber, dass der Standort geändert wurde.
onMouseDown_(e) protected Verarbeitet ein Pointerdown-Ereignis für ein Feld.
onShortcut(_shortcut) Verarbeitet das angegebene Tastaturkürzel.
positionBorderRect_() protected Positionieren Sie das Rahmenrechteck eines Felds nach einer Größenänderung.
positionTextElement_(xOffset, contentWidth) protected Positionieren Sie das Textelement eines Felds nach einer Größenänderung. Damit wird sowohl die LTR- als auch die RTL-Positionierung verarbeitet.
render_() protected

Wird von getSize() verwendet, um DOM-Elemente zu verschieben bzw. ihre Größe anzupassen und die neue Größe abzurufen.

Jegliches Rendering, das sich auf die Größe/Form des Blocks auswirkt, sollte hier erfolgen und durch getSize() ausgelöst werden.

repositionForWindowResize()

Ein Entwickler-Hook zur Neupositionierung von „WidgetDiv“ während der Größe des Fensters. Dieser Hook muss definiert werden, wenn Ihr Feld ein WidgetDiv enthält, das sich neu positionieren muss, wenn die Größe des Fensters geändert wird. Zum Beispiel definieren Texteingabefelder diesen Hook, sodass sich das Eingabe-WidgetDiv bei einem Ereignis zur Größenänderung des Fensters neu positionieren kann. Das ist besonders wichtig, wenn modale Eingaben deaktiviert wurden, da Android-Geräte ein Ereignis zum Ändern der Fenstergröße auslösen, wenn die Bildschirmtastatur geöffnet wird.

Wenn Sie möchten, dass „WidgetDiv“ sich selbst versteckt, anstatt es neu zu positionieren, geben Sie „false“ zurück. Das ist das Standardverhalten.

DropDivs verarbeiten bereits ihre eigene Positionierungslogik, sodass Sie diese Funktion nicht überschreiben müssen, wenn Ihr Feld nur ein DropDiv hat.

saveLegacyState(callingClass) protected Gibt eine Version des XML-Status als String zurück, falls diese verwendet werden soll. Andernfalls wird null zurückgegeben, um zu signalisieren, dass das Feld seine eigene Serialisierung verwenden soll.
setEnabled(enabled) Legen Sie fest, ob der Wert dieses Felds mit dem Editor geändert werden kann, wenn der Quellblock bearbeitbar ist.
setSourceBlock(block) Hängen Sie dieses Feld an einen Block an.
setTooltip(newTip) Legt die Kurzinfo für dieses Feld fest.
setValidator(handler)

Legt eine neue Validierungsfunktion für bearbeitbare Felder fest oder löscht eine zuvor festgelegte Validierung.

Die Validierungsfunktion nimmt den neuen Feldwert an und gibt den validierten Wert zurück. Der validierte Wert kann der Eingabewert, eine modifizierte Version des Eingabewerts oder null sein, um die Änderung abzubrechen.

Wenn die Funktion nichts zurückgibt (oder nicht definiert), wird der neue Wert als gültig akzeptiert. Dies ermöglicht Felder, die die validierte Funktion als Benachrichtigung über Änderungsereignisse auf Feldebene verwenden.

setValue(newValue, fireChangeEvent) Dient zum Ändern des Feldwerts. Verarbeitet die Validierung und Ereignisse. Abgeleitete Klassen sollten „doClassValidation_“ und „doValueUpdate_“ anstelle dieser Methode überschreiben.
showEditor_(_e) protected Ein Entwickler-Hook, um einen Editor für das Feld zu erstellen. Diese Option ist standardmäßig managementfrei und muss überschrieben werden, um einen Editor zu erstellen.
updateEditable() Fügen Sie die Benutzeroberfläche hinzu oder entfernen Sie sie, um anzugeben, ob das Feld bearbeitet werden kann oder nicht.
updateSize_(margin) protected Aktualisiert die Größe des Felds basierend auf dem Text.