Get-BreadcrumbTreeJson #
ÜBERSICHT #
Liefert den EULANDA-Breadcrumb-Baum einer Tabelle als JSON-taugliche Tree-Struktur mit sprachaufgelösten Labels und Stamm-Namen als Pfad-Präfix.
SYNTAX #
Get-BreadcrumbTreeJson [-Conn] <__ComObject> [-TableName] <string> [[-Language] <string>]
[[-StartPath] <string>] [<CommonParameters>]
BESCHREIBUNG #
Kombiniert drei Schritte zu einer Funktion, die direkt an einen UI-Tree (z.B. WebKit eul-tree) weitergereicht werden kann:
1. Get-BreadcrumbXml holt den hierarchischen XML-Baum aus der DB.
2. Der Tabellen-Stamm-Knoten (z.B. ':AR@1071') wird über cnMessages
in einen lesbaren Klartext aufgelöst (z.B. 'Artikel').
3. Alle Pfad-IDs werden mit dem aufgelösten Stamm-Namen als Präfix
versehen – z.B. '\Artikel\KEYWORDS\EANCOM' statt '\KEYWORDS\EANCOM'.
Das entspricht der Delphi-konsistenten UI-Darstellung. Vor dem
SQL-Aufruf wird der Präfix später über ConvertTo-BreadcrumbDbPath
wieder entfernt.
Der erste MERKMAL-Knoten in der XML-Antwort (der Tabellen-Stamm) wird NICHT als sichtbarer Tree-Knoten zurückgegeben – er erscheint nur als Root-Label des einen zurückgelieferten Wurzelknotens; seine Kinder bilden die echten Top-Level-Einträge des Baumes.
PARAMETER #
-Conn #
Type: __ComObject
ADODB.Connection-Objekt zur EULANDA-Datenbank.
-TableName #
Type: string
Name der EULANDA-Tabelle, deren Baum geholt werden soll (z.B. ‘Artikel’, ‘Adresse’, ‘Rechnung’).
-Language #
Type: string
Default: 'DE'
ISO-Sprachcode für die Auflösung der ‘:SUB@TYPE’-Tags. Default ‘DE’.
-StartPath #
Type: string
Default: '\'
Optional. Wenn gesetzt, wird der Baum erst ab diesem Pfad aufgebaut (analog Get-BreadcrumbXml -StartPath). Default ‘' (kompletter Baum).
AUSGABEN #
[hashtable] mit zwei Eigenschaften:
rootLabel [string] Aufgelöster Stamm-Name, z.B. ‘Artikel’. nodes [object[]] Ein Array mit GENAU EINEM Wurzelknoten in der Form @{ id; label; expanded; children }. Knoten-Struktur: @{ id = ‘\Artikel\KEYWORDS\EANCOM’; label = ‘EANCOM’; children = @(…); # optional expanded = $true; # nur am Root gesetzt }
BEISPIELE #
$conn = Get-ConnByUdl -Udl 'C:\Eulanda\EULANDA_1 Mustermann.udl'
$tree = Get-BreadcrumbTreeJson -Conn $conn -TableName 'Artikel'
$tree.rootLabel # → 'Artikel'
$tree.nodes[0].id # → '\Artikel'
$tree.nodes[0].children[0].id # → '\Artikel\KEYWORDS' (o.ä.)
# JSON für eine WebKit-UI erzeugen
$tree = Get-BreadcrumbTreeJson -Conn $conn -TableName 'Adresse' -Language 'DE'
$json = $tree | ConvertTo-Json -Depth 20 -Compress
HINWEISE #
Verwendet Expand-EulandaMessageRefs mit einem Per-Aufruf-Cache – derselbe Tag wird also nur einmal pro Tree-Aufbau aus der DB gelesen.
Die zurückgegebene Hashtable ist so geformt, dass sie 1:1 an JavaScript-basierte Tree-Komponenten (z.B. eul-tree) übergeben werden kann (ConvertTo-Json -Depth 20 reicht für übliche Baum-Tiefen).