GenericTreeAdapter

GenericTreeAdapter

new GenericTreeAdapter()

Description:
  • GenericTreeAdapter - Spielunabhängiger Tree-Adapter für numerische Bäume

    Erbt von BaseTreeAdapter und arbeitet ausschließlich mit numerischen Werten. Kein Wissen über TicTacToe, Knights-Tour oder andere Spiele.

    Features:

    • boardType: 'numeric' für alle Knoten (Kreisdarstellung im Diagramm-Modus)
    • Interaktive Klick-Evaluation (handleNodeClick → evaluateNode)
    • Minimax-Logik (MAX/MIN-Ebenen, Wert-Propagation, Best-Edge-Highlighting)
    • Optional: Alpha-Beta-Pruning (enableAlphaBeta-Flag)
    • Statistik-Callbacks (onStatsChanged, onActiveNodeChanged)

    Separation of Concerns:

    • Adapter orchestriert Baum-Aufbau und Evaluation
    • Rendering delegiert an NumericNodeRenderer (via boardType: 'numeric')
    • Farben/Status aus zentraler StatusConfig
Source:
Version:
  • 1.0
Author:
  • Alexander Wolf
See:
  • ENGINEERING_CONVENTIONS.md

Extends

Members

_bridge :IframeBridgeHost|null

Description:
  • Bridge-Host-Instanz (wenn verfügbar)

Source:
Inherited From:

Bridge-Host-Instanz (wenn verfügbar)

Type:

_bridgeActive :boolean

Description:
  • Bridge ist aktiv und hat Handshake abgeschlossen

Source:
Inherited From:

Bridge ist aktiv und hat Handshake abgeschlossen

Type:
  • boolean

_debugDomain :string

Description:
  • Debug-Domain-Key für DebugConfig

Source:
Overrides:

Debug-Domain-Key für DebugConfig

Type:
  • string

_debugPrefix :string

Description:
  • Log-Prefix für diesen Adapter

Source:
Overrides:

Log-Prefix für diesen Adapter

Type:
  • string

enableAlphaBeta :boolean

Description:
  • Steuert ob Alpha-Beta-Pruning aktiv ist

Source:

Steuert ob Alpha-Beta-Pruning aktiv ist

Type:
  • boolean

onActiveNodeChanged :function|null

Description:
  • Callback bei aktivem Knoten-Wechsel

Source:
Inherited From:

Callback bei aktivem Knoten-Wechsel

Type:
  • function | null

onNodeClicked :function|null

Description:
  • Callback bei Knoten-Klick aus TreeViz (nodeId, boardData)

Source:
Inherited From:

Callback bei Knoten-Klick aus TreeViz (nodeId, boardData)

Type:
  • function | null

onNodeFocused :function|null

Description:
  • Callback bei Expansion-Klick aus TreeViz (nodeId, boardData)

Source:
Inherited From:

Callback bei Expansion-Klick aus TreeViz (nodeId, boardData)

Type:
  • function | null

onStatsChanged :function|null

Description:
  • Callback bei Statistik-Änderungen

Source:
Inherited From:

Callback bei Statistik-Änderungen

Type:
  • function | null

stats :Object

Source:
Overrides:
Type:
  • Object

Methods

(protected) _debugLog(message, payloadopt, levelopt)

Description:
  • Einheitlicher Debug-Logger für alle Tree-Adapter. Subklassen setzen this._debugDomain und this._debugPrefix im Konstruktor.

Source:
Inherited From:
Parameters:
Name Type Attributes Default Description
message string

Log-Nachricht

payload Object <optional>

Optionaler Payload

level string <optional>
'debug'

Log-Level ('debug', 'warn', 'error')

(protected) _getHighlightEdgeStyle(bestValue) → {Object}

Description:
  • Liefert Farbe und Breite für Best-Edge-Highlighting.

Source:
Overrides:
Parameters:
Name Type Description
bestValue number
Returns:
Type
Object

(protected) _highlightBestEdges(nodeId, bestValue)

Description:
  • Markiert die beste(n) Kante(n) eines inneren Knotens. Nutzt _getHighlightEdgeStyle() als Hook für adaptersspezifische Farben/Breiten.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Elternknoten

bestValue number

Bester Wert (MAX oder MIN)

(protected) _highlightPropagationSubtree(parentId, color, width)

Description:
  • Markiert rekursiv alle Kanten eines Teilbaums ab parentId nach unten. Folgt allen offenen (nicht EVALUATED/PRUNED) Nachkommen. Wird für AB-Propagation-Pfeile verwendet.

Source:
Inherited From:
Parameters:
Name Type Description
parentId number

Startknoten

color string

Kantenfarbe

width number

Kantenbreite

(protected) _isLeafTerminal(nodeId, data) → {boolean}

Description:
  • Prüft ob ein Blattknoten terminal ist. Überschreibbar in Subklassen für spielspezifische Terminal-Erkennung.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Knoten-ID

data Object

treeStructure-Eintrag

Returns:
Type
boolean

(protected) _notifyStatsChanged()

Description:
  • Benachrichtigt UI über Statistik-Änderungen.

Source:
Inherited From:

addNumericNode(value, parentId, opts) → {number}

Description:
  • Erstellt einen numerischen Knoten im Baum.

Source:
Parameters:
Name Type Description
value number | null

Knotenwert (null für innere Knoten vor Evaluation)

parentId number | null

Elternknoten-ID (null für Root)

opts Object

Zusätzliche Optionen

Properties
Name Type Attributes Default Description
depth number

Tiefe im Baum

isMaximizing boolean

MAX- oder MIN-Knoten

isTerminal boolean <optional>
false

Blattknoten?

isPruned boolean <optional>
false

Geprunter Knoten?

alpha number <optional>

Alpha-Wert (nur bei AB)

beta number <optional>

Beta-Wert (nur bei AB)

Returns:

Neue Knoten-ID

Type
number

checkNodeStatus(nodeId)

Description:
  • Prüft und aktualisiert den Status eines Knotens.

    • Blattknoten (terminal) → READY
    • Innerer Knoten (alle Kinder EVALUATED/PRUNED) → READY
    • Sonst → WAIT
Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Zu prüfende Knoten-ID

createNode(state, parentId, metadata, status, boardTypeopt)

Description:
  • Erstellt einen Basis-Knoten und registriert ihn.

    Unterstützte boardTypes:

    • 'minimax': TicTacToe-Grid Darstellung (default für Rückwärtskompatibilität)
    • 'numeric': Kreis mit Zahlenwert (Diagramm-Modus, Lehrbuch-Darstellung)
    • undefined: Auto-Detection anhand boardData-Struktur (Knights-Tour, RotateBox)
Source:
Inherited From:
Parameters:
Name Type Attributes Default Description
state GameState | Object

Spielzustand oder generisches Datenobjekt

parentId number | null
metadata Object

Metadaten (value, isMaximizing, alpha, beta, etc.)

status string WAIT
boardType string <optional>
'minimax'

Expliziter boardType für Renderer-Routing

destroy()

Description:
  • Entfernt Event-Listener und räumt Ressourcen auf.

Source:
Inherited From:

evaluateNode(nodeId)

Description:
  • Bewertet einen Knoten (Blatt oder innerer Knoten).

    • Blatt: Übernimmt den gespeicherten Wert
    • Innerer Knoten: MAX/MIN über evaluierte Kinder
    • Bei AB: Prüft Pruning nach Evaluation
Source:
Parameters:
Name Type Description
nodeId number

Zu bewertende Knoten-ID

expandNodeChildren(nodeId, state)

Description:
  • Nicht verwendet im generischen Modus (Baum wird vollständig aufgebaut).

Source:
Parameters:
Name Type Description
nodeId number
state *

flushCommands()

Description:
  • Sendet alle gepufferten Commands als Batch und leert den Puffer.

Source:
Inherited From:

getBoardKey(board) → {string}

Description:
  • Erzeugt einen eindeutigen Schlüssel für ein Board/State-Objekt.

Source:
Inherited From:
Parameters:
Name Type Description
board Object

Board- oder State-Objekt

Returns:

Eindeutiger Schlüssel

Type
string

getInitialConfig() → {Object}

Description:
  • Liefert initiale Konfiguration für die Tree-Visualisierung.

Source:
Overrides:
Returns:

Config-Objekt für TreeEngine

Type
Object

handleMessage(data)

Description:
  • Verarbeitet eingehende Nachrichten vom Visualizer

Source:
Inherited From:
Parameters:
Name Type Description
data Object

handleNodeClick(nodeId)

Description:
  • Verarbeitet Klick auf einen Knoten. Nur READY-Knoten können evaluiert werden.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Geklickte Knoten-ID

(protected) onTreeReady()

Description:
  • Wird aufgerufen wenn das IFrame TREE_READY meldet.

Source:
Inherited From:

reset()

Description:
  • Setzt den Adapter-Zustand zurück und sendet CLEAR an das IFrame.

Source:
Inherited From:

sendCommand(command)

Description:
  • Sendet einen einzelnen Command an das IFrame. Nutzt IframeBridgeHost wenn verfügbar, sonst Legacy-postMessage.

Source:
Inherited From:
Parameters:
Name Type Description
command Object

Command-Objekt mit action-Property

startHandshake()

Description:
  • Startet den Handshake mit dem IFrame. Setzt ready-Flag als Fallback nach Timeout.

Source:
Inherited From:

visualizeTree(treeDefinition, config) → {Object}

Description:
  • Baut einen vordefinierten Baum auf und startet die Visualisierung.

Source:
Parameters:
Name Type Description
treeDefinition Object

Baumdefinition aus TreeFactory

Properties
Name Type Description
root Object

Wurzelknoten-Definition

config Object

Konfiguration

Properties
Name Type Attributes Default Description
enableAlphaBeta boolean <optional>
false

AB-Pruning aktivieren

Returns:

Ergebnis mit Statistiken

Type
Object

GenericTreeAdapter

new GenericTreeAdapter(iframeElement)

Source:
Parameters:
Name Type Description
iframeElement HTMLIFrameElement

Ziel-iFrame für Tree-Visualisierung

Members

_bridge :IframeBridgeHost|null

Description:
  • Bridge-Host-Instanz (wenn verfügbar)

Source:
Inherited From:

Bridge-Host-Instanz (wenn verfügbar)

Type:

_bridgeActive :boolean

Description:
  • Bridge ist aktiv und hat Handshake abgeschlossen

Source:
Inherited From:

Bridge ist aktiv und hat Handshake abgeschlossen

Type:
  • boolean

_debugDomain :string

Description:
  • Debug-Domain-Key für DebugConfig

Source:
Overrides:

Debug-Domain-Key für DebugConfig

Type:
  • string

_debugPrefix :string

Description:
  • Log-Prefix für diesen Adapter

Source:
Overrides:

Log-Prefix für diesen Adapter

Type:
  • string

enableAlphaBeta :boolean

Description:
  • Steuert ob Alpha-Beta-Pruning aktiv ist

Source:

Steuert ob Alpha-Beta-Pruning aktiv ist

Type:
  • boolean

onActiveNodeChanged :function|null

Description:
  • Callback bei aktivem Knoten-Wechsel

Source:
Inherited From:

Callback bei aktivem Knoten-Wechsel

Type:
  • function | null

onNodeClicked :function|null

Description:
  • Callback bei Knoten-Klick aus TreeViz (nodeId, boardData)

Source:
Inherited From:

Callback bei Knoten-Klick aus TreeViz (nodeId, boardData)

Type:
  • function | null

onNodeFocused :function|null

Description:
  • Callback bei Expansion-Klick aus TreeViz (nodeId, boardData)

Source:
Inherited From:

Callback bei Expansion-Klick aus TreeViz (nodeId, boardData)

Type:
  • function | null

onStatsChanged :function|null

Description:
  • Callback bei Statistik-Änderungen

Source:
Inherited From:

Callback bei Statistik-Änderungen

Type:
  • function | null

stats :Object

Source:
Overrides:
Type:
  • Object

Methods

(protected) _debugLog(message, payloadopt, levelopt)

Description:
  • Einheitlicher Debug-Logger für alle Tree-Adapter. Subklassen setzen this._debugDomain und this._debugPrefix im Konstruktor.

Source:
Inherited From:
Parameters:
Name Type Attributes Default Description
message string

Log-Nachricht

payload Object <optional>

Optionaler Payload

level string <optional>
'debug'

Log-Level ('debug', 'warn', 'error')

(protected) _getHighlightEdgeStyle(bestValue) → {Object}

Description:
  • Liefert Farbe und Breite für Best-Edge-Highlighting.

Source:
Overrides:
Parameters:
Name Type Description
bestValue number
Returns:
Type
Object

(protected) _highlightBestEdges(nodeId, bestValue)

Description:
  • Markiert die beste(n) Kante(n) eines inneren Knotens. Nutzt _getHighlightEdgeStyle() als Hook für adaptersspezifische Farben/Breiten.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Elternknoten

bestValue number

Bester Wert (MAX oder MIN)

(protected) _highlightPropagationSubtree(parentId, color, width)

Description:
  • Markiert rekursiv alle Kanten eines Teilbaums ab parentId nach unten. Folgt allen offenen (nicht EVALUATED/PRUNED) Nachkommen. Wird für AB-Propagation-Pfeile verwendet.

Source:
Inherited From:
Parameters:
Name Type Description
parentId number

Startknoten

color string

Kantenfarbe

width number

Kantenbreite

(protected) _isLeafTerminal(nodeId, data) → {boolean}

Description:
  • Prüft ob ein Blattknoten terminal ist. Überschreibbar in Subklassen für spielspezifische Terminal-Erkennung.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Knoten-ID

data Object

treeStructure-Eintrag

Returns:
Type
boolean

(protected) _notifyStatsChanged()

Description:
  • Benachrichtigt UI über Statistik-Änderungen.

Source:
Inherited From:

addNumericNode(value, parentId, opts) → {number}

Description:
  • Erstellt einen numerischen Knoten im Baum.

Source:
Parameters:
Name Type Description
value number | null

Knotenwert (null für innere Knoten vor Evaluation)

parentId number | null

Elternknoten-ID (null für Root)

opts Object

Zusätzliche Optionen

Properties
Name Type Attributes Default Description
depth number

Tiefe im Baum

isMaximizing boolean

MAX- oder MIN-Knoten

isTerminal boolean <optional>
false

Blattknoten?

isPruned boolean <optional>
false

Geprunter Knoten?

alpha number <optional>

Alpha-Wert (nur bei AB)

beta number <optional>

Beta-Wert (nur bei AB)

Returns:

Neue Knoten-ID

Type
number

checkNodeStatus(nodeId)

Description:
  • Prüft und aktualisiert den Status eines Knotens.

    • Blattknoten (terminal) → READY
    • Innerer Knoten (alle Kinder EVALUATED/PRUNED) → READY
    • Sonst → WAIT
Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Zu prüfende Knoten-ID

createNode(state, parentId, metadata, status, boardTypeopt)

Description:
  • Erstellt einen Basis-Knoten und registriert ihn.

    Unterstützte boardTypes:

    • 'minimax': TicTacToe-Grid Darstellung (default für Rückwärtskompatibilität)
    • 'numeric': Kreis mit Zahlenwert (Diagramm-Modus, Lehrbuch-Darstellung)
    • undefined: Auto-Detection anhand boardData-Struktur (Knights-Tour, RotateBox)
Source:
Inherited From:
Parameters:
Name Type Attributes Default Description
state GameState | Object

Spielzustand oder generisches Datenobjekt

parentId number | null
metadata Object

Metadaten (value, isMaximizing, alpha, beta, etc.)

status string WAIT
boardType string <optional>
'minimax'

Expliziter boardType für Renderer-Routing

destroy()

Description:
  • Entfernt Event-Listener und räumt Ressourcen auf.

Source:
Inherited From:

evaluateNode(nodeId)

Description:
  • Bewertet einen Knoten (Blatt oder innerer Knoten).

    • Blatt: Übernimmt den gespeicherten Wert
    • Innerer Knoten: MAX/MIN über evaluierte Kinder
    • Bei AB: Prüft Pruning nach Evaluation
Source:
Parameters:
Name Type Description
nodeId number

Zu bewertende Knoten-ID

expandNodeChildren(nodeId, state)

Description:
  • Nicht verwendet im generischen Modus (Baum wird vollständig aufgebaut).

Source:
Parameters:
Name Type Description
nodeId number
state *

flushCommands()

Description:
  • Sendet alle gepufferten Commands als Batch und leert den Puffer.

Source:
Inherited From:

getBoardKey(board) → {string}

Description:
  • Erzeugt einen eindeutigen Schlüssel für ein Board/State-Objekt.

Source:
Inherited From:
Parameters:
Name Type Description
board Object

Board- oder State-Objekt

Returns:

Eindeutiger Schlüssel

Type
string

getInitialConfig() → {Object}

Description:
  • Liefert initiale Konfiguration für die Tree-Visualisierung.

Source:
Overrides:
Returns:

Config-Objekt für TreeEngine

Type
Object

handleMessage(data)

Description:
  • Verarbeitet eingehende Nachrichten vom Visualizer

Source:
Inherited From:
Parameters:
Name Type Description
data Object

handleNodeClick(nodeId)

Description:
  • Verarbeitet Klick auf einen Knoten. Nur READY-Knoten können evaluiert werden.

Source:
Inherited From:
Parameters:
Name Type Description
nodeId number

Geklickte Knoten-ID

(protected) onTreeReady()

Description:
  • Wird aufgerufen wenn das IFrame TREE_READY meldet.

Source:
Inherited From:

reset()

Description:
  • Setzt den Adapter-Zustand zurück und sendet CLEAR an das IFrame.

Source:
Inherited From:

sendCommand(command)

Description:
  • Sendet einen einzelnen Command an das IFrame. Nutzt IframeBridgeHost wenn verfügbar, sonst Legacy-postMessage.

Source:
Inherited From:
Parameters:
Name Type Description
command Object

Command-Objekt mit action-Property

startHandshake()

Description:
  • Startet den Handshake mit dem IFrame. Setzt ready-Flag als Fallback nach Timeout.

Source:
Inherited From:

visualizeTree(treeDefinition, config) → {Object}

Description:
  • Baut einen vordefinierten Baum auf und startet die Visualisierung.

Source:
Parameters:
Name Type Description
treeDefinition Object

Baumdefinition aus TreeFactory

Properties
Name Type Description
root Object

Wurzelknoten-Definition

config Object

Konfiguration

Properties
Name Type Attributes Default Description
enableAlphaBeta boolean <optional>
false

AB-Pruning aktivieren

Returns:

Ergebnis mit Statistiken

Type
Object