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)(Wert, Validator, Konfiguration) Konstruiert eine neue Instanz der Field-Klasse

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.
Konstanten_ protected ConstantProvider | null Konstanten, die dem Renderer des Quellblocks zugeordnet sind
CURSOR String Stil des Mauszeigers, wenn er sich über dem Hotspot befindet, 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.
aktiviert_ protected boolean Kann der Feldwert bei einem bearbeitbaren Block mit dem Editor geändert werden?
Feldgruppe_ protected SVGGElement | null Das SVG-Gruppenelement des gerenderten Felds.
isDirty_ protected boolean Muss dieser Block neu gerendert werden?
maxDisplayLength Zahl Maximale Zeichenanzahl des Textes, der angezeigt werden soll, bevor Auslassungspunkte hinzugefügt werden.
Name? String (Optional) Name des Felds. Er 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 auch serialisierbar sein. Dies ist nicht standardmäßig der Fall, sodass SERIALIZABLE abwärtskompatibel ist.
size_ protected Größe
EINRICHTUNG ÜBERSPRINGEN

static

readonly

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

Methoden

Methode Modifikatoren Beschreibung
applyColour()

Das Feld wird an die Farbe bzw. den Stil des Blocks angepasst.

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

Weitere Informationen finden Sie in der Dokumentation zu Feldern. Im Feld „FieldDropdown“ finden Sie ein Beispiel.

bindEvents_() protected Ereignisse werden an das Feld gebunden. 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 rechteckiges Element mit Feldrahmen. Nicht von Unterklassen überschrieben werden. Ändern Sie stattdessen das Ergebnis der Funktion in initView oder erstellen Sie eine separate Funktion, die aufgerufen werden soll.
createTextElement_() protected Erstellt ein Feldtextelement. Nicht von Unterklassen überschrieben werden. Ä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 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 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 Dient dazu, dass in das Feld ein ungültiger Wert eingegeben wurde. Kann von Unterklassen überschrieben werden, siehe FieldTextInput. Standardmäßig betriebslos.
doValueUpdate_(newValue) protected Wird verwendet, um den Wert eines Felds zu aktualisieren. Kann von Unterklassen überschrieben werden, um benutzerdefinierte Werte zu speichern bzw. externe Elemente zu aktualisieren.
getAbsoluteXY_() protected Gibt die absoluten Koordinaten der oberen linken Ecke dieses Feldes zurück. Der Ursprung (0,0) ist die linke obere Ecke des Seitentexts.
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 der SVG-Stamm des Felds verwendet. Wenn Sie auf dieses Element in einem bearbeitbaren Feld klicken, 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 anderer Formatierung 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 *in der Regel* die einzige Stelle sein, von der 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 Feldes nicht nur eine Stringumwandlung seines Werts ist. Gibt null zurück, um auf eine Stringumwandlung zurückzugreifen.
getText() Rufen Sie den Text aus diesem Feld ab. Überschreiben Sie getText_, um ein anderes Verhalten zu erzielen als einfach den Wert 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 kein Wert festgelegt ist.
getValue() Ruft den aktuellen Wert des Felds ab.
initModel() Initialisiert das Modell des Felds, nachdem es in einem Block installiert wurde. Standardmäßig betriebslos.
initView() protected Erstellen Sie die Block-UI für dieses Feld.
isClickable() Prüfen Sie, ob dieses Feld die Funktion showEditor_ definiert.
isCurrentlyEditable() Prüfen Sie, ob dieses Feld derzeit bearbeitet werden kann. Einige Felder (z.B. Textbeschriftungen) sind nie BEARBEITBAR. Andere Felder sind möglicherweise BEARBEITBAR, können aber in nicht bearbeitbaren Blöcken vorhanden oder derzeit deaktiviert sein.
isEnabled() Prüfen Sie, ob der Wert dieses Feldes 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 mit Ihrem beabsichtigten Verhalten, um zu sehen, ob es einen anderen Ansatz gibt.

isSerializable() Prüfen Sie, ob dieses Feld vom XML-Renderer serialisiert werden soll. Verarbeitet die Logik für Abwärtskompatibilität und inkonsistente Zustände.
isTabNavigable() Gibt an, ob das Feld über die Tabulatortaste navigierbar ist.
isSichtbar() Ruft ab, ob dieses bearbeitbare Feld sichtbar ist oder nicht.
loadLegacyState(callingClass, state) Lädt den angegebenen Status mithilfe der alten XML-Hooks, falls sie verwendet werden sollten. Gibt „true“ zurück, um anzuzeigen, dass der Ladevorgang durchgeführt wurde, andernfalls „false“.
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 alle 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()

Ein Entwickler-Hook zur Neupositionierung von „WidgetDiv“ während der Größenänderung eines Fensters. Sie müssen diesen Hook definieren, wenn Ihr Feld ein WidgetDiv enthält, das sich neu positionieren muss, wenn die Größe des Fensters geändert wird. Beispielsweise definieren Texteingabefelder diesen Hook, sodass das Eingabe-WidgetDiv sich selbst bei einem Ereignis zur Größenanpassung neu positionieren kann. Dies ist besonders wichtig, wenn modale Eingaben deaktiviert wurden, da Android-Geräte ein Ereignis zur Größenanpassung des Fensters auslösen, wenn die Softtastatur geöffnet wird.

Wenn WidgetDiv sich selbst ausblenden 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 hat.

saveLegacyState(callingClass) protected Gibt eine Version des XML-Status als String zurück, falls diese verwendet werden sollte. 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 Feldes mit dem Editor geändert werden kann, wenn der Quellblock bearbeitbar ist.
setSourceBlock(block) Dieses Feld an einen Block anhängen.
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 einen 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 oder einen undefinierten Wert zurückgibt, wird der neue Wert als gültig akzeptiert. Auf diese Weise können Felder 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 zum Erstellen eines Editors für das Feld. Dies ist standardmäßig managementfrei und muss überschrieben werden, um einen Editor zu erstellen.
updateEditable() aktualisieren. 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 Feldes basierend auf dem Text.