blockly > Feld

Feldklasse

Abstrakte Klasse für ein bearbeitbares Feld.

Unterschrift:

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

Implementierung:IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Konstruktoren

Konstruktor Modifikatoren Beschreibung
(Konstruktor)(Wert, Validator, Konfiguration) Erstellt eine neue Instanz der Field-Klasse

Attribute

Attribut 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 Mauszeigerstil, wenn er über dem Hotspot liegt, durch den der Editor gestartet wird.
DEFAULT_VALUE D | null

Wenn Sie den in **Feld** festgelegten Standardwert überschreiben möchten, aktualisieren Sie den Prototyp direkt.

Beispiel: FieldImage.prototype.DEFAULT_VALUE = null;

BEARBEITBAR boolean Bearbeitbare Felder zeigen normalerweise eine Art Benutzeroberfläche an, die anzeigt, dass sie bearbeitet werden können. 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 Anzahl von Textzeichen, die vor dem Hinzufügen von Auslassungspunkten angezeigt werden
Name? String Optional: Name des Felds. Innerhalb jedes Blocks eindeutig. Statische Labels haben in der Regel keinen Namen.
NBSP

static

readonly

(nicht angegeben) Geschütztes Leerzeichen.
SERIALISierbar boolean Serialisierbare Felder werden vom Serialisierer gespeichert, nicht serialisierbare Felder nicht. Bearbeitbare Felder sollten auch 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, wenn der Konstruktor eines Felds den Wert des Felds *nicht* festlegen oder „configure_“ ausführen soll, sondern eine Unterklasse, die dies stattdessen tun soll.
sourceBlock_ protected Blockieren | null Blockieren, mit dem dieses Feld verknüpft ist Beginnt mit null und wird dann init festgelegt.
textContent_ protected Text | null Das Textinhaltselement des gerenderten Felds.
textElement_ protected SVGTextElement | null Das SVG-Textelement des gerenderten Felds.
validator_ protected FieldValidator&lt;T&gt; | null Die Validierungsfunktion wird aufgerufen, wenn ein Nutzer ein bearbeitbares Feld bearbeitet.
value_ protected D | null
visible_ protected boolean Ist das Feld sichtbar oder ausgeblendet, weil der Block minimiert wurde?

Methoden

Methode Modifikatoren Beschreibung
applyColour()

Aktualisiert das Feld an die Farbe/den Stil des Blocks

Diese Implementierung kann für nicht abstrakte Unterklassen sinnvoll sein, wenn die Farbe des Felds von der Farbe des Blocks abhängt. Es wird automatisch zu relevanten Zeitpunkten aufgerufen, etwa wenn sich der übergeordnete Block oder der Renderer ändert.

Weitere Informationen finden Sie in der Felddokumentation oder als Beispiel „FieldDropdown“.

bindEvents_() protected Ereignisse an das Feld binden. Kann von Unterklassen überschrieben werden, wenn eine benutzerdefinierte Eingabeverarbeitung erforderlich ist.
configure_(config) protected Verarbeiten Sie die Konfigurationszuordnung, die an das Feld übergeben wurde.
createBorderRect_() protected Erstellt ein Feldrahmen-Rechteckelement. Wird nicht von abgeleiteten Klassen überschrieben. Ä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. Wird nicht von abgeleiteten Klassen überschrieben. Ändern Sie stattdessen das Ergebnis der Funktion in initView oder erstellen Sie eine separate Funktion, die aufgerufen werden soll.
doClassValidation_(newValue) protected

Validieren Sie die Änderungen am Wert eines Felds, bevor sie festgelegt werden. Ein Beispiel für die Implementierung von abgeleiteten Klassen finden Sie unter **FieldDropdown**.

**HINWEIS:** Bei der Validierung wird eine Option zwischen T, null und undefined zurückgegeben. Die Implementierung von **Field** gibt nie undefined zurück. Es ist jedoch gültig, dass eine Unterklasse undefined zurückgibt, wenn der neue Wert mit T kompatibel ist.

doClassValidation_(newValue) protected
doValueUngültig_(_unzulässigerWert, _fireChangeEvent) protected Wird verwendet, um das Feld zu informieren, dass ein ungültiger Wert eingegeben wurde. Kann von abgeleiteten Klassen überschrieben werden, siehe FieldTextInput. Standardmäßig managementfrei.
doValueUpdate_(newValue) protected Wird zum Aktualisieren des Werts eines Felds verwendet. Kann von abgeleiteten Klassen überschrieben werden, um Werte benutzerdefiniert zu speichern bzw. externe Elemente zu aktualisieren.
fromJson(_options) static

Abgeleitete Klassen sollten diese Methode erneut implementieren, um ihre abgeleitete Field-Klasse aus einem JSON-arg-Objekt zu erstellen.

Der Versuch, eine abgeleitete Feldklasse in FieldRegistry zu registrieren, führt zu einem Fehler, wenn diese Methode diese Methode nicht überschrieben hat.

getAbsoluteXY_() protected Gibt die absoluten Koordinaten der oberen linken Ecke dieses Felds zurück. Der Ursprung (0,0) ist die linke obere Ecke des Seitentexts.
getBorderRect() protected Ruft das Rahmen-Rechteck-Element ab.
getClickTarget_() protected Das Element, an das der Klick-Handler gebunden werden soll. Wenn nicht explizit festgelegt, wird standardmäßig der SVG-Stamm des Felds verwendet. Wenn auf dieses Element geklickt wird, wird der Editor geöffnet.
getConstants() Anbieter der Renderer-Konstante abrufen
getDisplayText_() protected Der Text aus diesem Feld wird im Block angezeigt. Kann aufgrund von Auslassungspunkten und anderen Formatierungen von „getText“ abweichen.
getFlipRtl() Gibt zurück, ob das Feld in RTL umgedreht werden soll.
getSize()

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

Dies sollte *im Allgemeinen* der einzige Ort sein, von dem 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 für die Positionierung verwendet.
getText_() protected Ein Entwickler-Hook, um den zurückgegebenen Text dieses Felds zu überschreiben. Wird überschrieben, wenn die Textdarstellung des Werts in diesem Feld nicht nur eine Stringumwandlung seines Werts ist. Gibt null zurück, um eine Stringumwandlung zu erzeugen.
getText() Rufen Sie den Text aus diesem Feld ab. Überschreiben Sie getText_, um ein anderes Verhalten bereitzustellen, als den Wert einfach in einen String umzuwandeln.
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 managementfrei.
initView() protected Erstellen Sie die Block-UI für dieses Feld.
isClickable() Prüfen Sie, ob dieses Feld die Funktion showEditor_ definiert.
isClickableInFlyout(autoClosingFlyout) Überprüfen Sie, ob das Feld anklickbar sein soll, wenn sich der Block in einem Flyout befindet. Standardmäßig sind Felder in immer geöffneten Flyouts wie der einfachen Toolbox anklickbar, in automatisch schließenden Flyouts wie der Kategorie-Toolbox jedoch nicht. Abgeleitete Klassen können diese Funktion überschreiben, um dieses Verhalten zu ändern. Für isClickable muss auch „true“ zurückgegeben werden, damit dies wirksam wird.
isCurrentlyEditable() Prüfen Sie, ob dieses Feld derzeit bearbeitet werden kann. Einige Felder können nie bearbeitet werden (z.B. Textlabels). Andere Felder sind möglicherweise BEARBEITBAR, befinden sich aber möglicherweise in nicht bearbeitbaren Blockierungen oder sind derzeit deaktiviert.
isEnabled() Prüfen Sie, ob der Wert dieses Feldes mit dem Editor geändert werden kann, wenn der Quellblock bearbeitet werden kann.
isFullBlockField() protected

Definiert, 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, da es sich um einen Hackerangriff handelt. Wenn Sie darüber nachdenken, diese Funktion zu überschreiben, posten Sie im Forum mit dem gewünschten Verhalten, um zu sehen, ob es einen anderen Ansatz gibt.

isSerializable() Überprüfen Sie, ob dieses Feld vom XML-Renderer serialisiert werden soll. Verarbeitet die Logik für Abwärtskompatibilität und nicht stimmige 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 entweder mithilfe der alten XML-Hooks, falls diese verwendet werden sollen. Gibt „true“ zurück, wenn der Ladevorgang verarbeitet wurde, andernfalls „false“.
onLocationChange(_) Informiert das Feld darüber, dass sich die Position geändert hat.
onMouseDown_(e) protected Verarbeitet ein Pointerdown-Ereignis für ein Feld.
onShortcut(_shortcut) Verarbeitet die angegebene Tastenkombination.
positionBorderRect_() protected Positioniert das Rahmenrechteck eines Felds nach einer Größenänderung.
positionTextElement_(xOffset, contentWidth) protected Positioniert 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 beliebige DOM-Elemente zu verschieben bzw. ihre Größe zu ändern 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()

Entwickler-Hook zur Neupositionierung des WidgetDivs während der Größenänderung des Fensters. Dieser Hook muss definiert werden, wenn das Feld ein WidgetDiv-Element enthält, das sich bei einer Größenänderung des Fensters neu positionieren muss. Dieser Hook wird beispielsweise in Texteingabefeldern definiert, sodass sich das WidgetDiv-Eingabefeld bei einem Ereignis zur Größenanpassung des Fensters neu positionieren kann. Dies ist besonders wichtig, wenn modale Eingaben deaktiviert sind, da Android-Geräte ein Ereignis zur Größenanpassung des Fensters auslösen, wenn die Bildschirmtastatur geöffnet wird.

Wenn das WidgetDiv selbst ausgeblendet werden soll, 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-Element enthält.

saveLegacyState(callingClass) protected Gibt eine String-Version des XML-Status zurück, falls dieser 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 bearbeitet werden kann.
setSourceBlock(block) Dieses Feld mit einem Block verknüpfen.
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 übernimmt den neuen Feldwert und gibt den validierten Wert zurück. Der validierte Wert kann der Eingabewert, eine geänderte Version des Eingabewerts oder null sein, um die Änderung abzubrechen.

Wenn die Funktion nichts oder nicht definierte Werte zurückgibt, wird der neue Wert als gültig akzeptiert. Dadurch werden Felder zugelassen, die die validierte Funktion als Änderungsereignisbenachrichtigung auf Feldebene verwenden.

setValue(newValue, fireChangeEvent) Wird zum Ändern des Feldwerts verwendet. Verarbeitet Validierung und Ereignisse. Abgeleitete Klassen sollten doClassValidation_ und doValueUpdate_ anstelle dieser Methode überschreiben.
showEditor_(_e) protected Einen Entwickler-Hook zum Erstellen eines Editors für das Feld. Dies 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 dieses Feld bearbeitbar ist oder nicht.
updateSize_(margin) protected Aktualisiert die Größe des Felds basierend auf dem Text.