Dashlet (der Instanz-Handle)

Das Objekt, das installDashletGlobal(options) zurückgibt. Es ist ein einfacher Handle — ein Promise plus Abos und Methoden — und lässt sich mit den Zustands- und Lebenszyklus-Primitiven jedes Frameworks zusammensetzen (keine Framework-Konstrukte).

1. Signatur

interface Dashlet {
    readonly init: Promise<InitContext>;
    onInit(listener: (ctx: InitContext, info: InitInfo) => void): () => void;
    onUpdate(listener: (ctx: InitContext, info: UpdateInfo) => void): () => void;
    onError(listener: (error: unknown) => void): () => void;
    call<T = unknown>(method: string, params?: unknown[]): Promise<T>;
    // die sieben portablen Fassade-Methoden (unten)
    openIndexData(options: OpenIndexDataOptions): Promise<boolean | undefined>;
    openObject(objectId: string | number): Promise<boolean | undefined>;
    openLocation(options: OpenLocationOptions): Promise<void>;
    openHitListByIds(options: OpenHitListByIdsOptions): Promise<void>;
    refreshHitListObjects(ids: Array<string | number>): Promise<boolean | undefined>;
    getSelectedObjects(): Promise<SelectedObjectRef[]>;
    resetSessionTimeout(): Promise<void>;
    getWebclientApi(): WebclientApi;
    getRichClientApi(): RichClientApi;
    destroy(): void;
}

2. Mitglieder

Mitglied Art Beschreibung

init

Eigenschaft

Das init-Promise — init (löst sich genau einmal auf, wird niemals abgelehnt, ist begrenzt).

onInit

Methode

Abo der Init-Emissionen — onInit (einschließlich der späten-Abonnenten-Nachlieferung und der Rich-Client-Neu-Emission).

onUpdate

Methode

Der vorgesehene Update-Slot — onUpdate (Auswahl-/Kontext-Änderungen nach dem Init).

onError

Methode

Abo von Fehlern — onError (Timeouts, Host-Fehler, Listener-Fehler).

call

Methode

Der dünne Methoden-Durchgang — call (zeichenkettenbasiert; leitet portable Namen durch denselben Dispatch-Kern wie die Fassade).

openIndexData

Methode

Die Index-Daten eines Objekts öffnen — openIndexData.

openObject

Methode

Das Objekt in seiner natürlichen Ansicht öffnen — openObject.

openLocation

Methode

Den Ort des Objekts öffnen — openLocation.

openHitListByIds

Methode

Eine gemischte Hit-Liste öffnen — openHitListByIds (die Fire-and-forget-Sonderheit steht dort).

refreshHitListObjects

Methode

Objekte in offenen Hit-Listen aktualisieren — refreshHitListObjects.

getSelectedObjects

Methode

Die ausgewählten Objekte, in beiden Clients normalisiert — getSelectedObjects.

resetSessionTimeout

Methode

Den Sitzungstimeout zurücksetzen — resetSessionTimeout (dokumentiertes No-Op im Rich Client).

getWebclientApi

Methode

Der Webclient-Handle — getWebclientApi (die sieben Endpunkte + rohe call, asynchron; gecacht; hart-falsche Umgebung = beschreibender TypeError).

getRichClientApi

Methode

Der Rich-Client-Handle — getRichClientApi (die komplette osjx*-Bridge + has() + rohe call, synchron; gecacht; hart-falsche Umgebung = beschreibender TypeError).

destroy

Methode

Hört das Polling auf, entfernt die Listener, trennt den Wire (unten beschrieben).

Die sieben portablen Fassade-Methoden laufen durch denselben Dispatch-Kern wie call(method, params) (eine einzige geteilte Tabelle), so dass die typisierte Fassade und der zeichenkettenbasierte Aufruf nicht divergieren können — die Wire-Posts, die Auflösungswerte und die Fehlerpfade sind identisch.

3. destroy()

destroy(): void

Reißt das Dashlet ab: stoppt die Erkennungs-Polling- und die Warm-up-Zeitmesser, entfernt den Host-Callback-Handler, zerstört den Webclient-Wire und räumt den geteilten Message-Sink nur dann auf, wenn er noch zu dieser Instanz gehört (ein Geschwister-Dashlet im selben Fenster könnte ihn ersetzt haben).

Reihenfolge-Garantie: Wenn das Dashlet sich noch im Erkennungszustand befindet, löst destroy das init-Promise zuerst als Standalone auf (das Promise muss sich noch lösen — es hängt niemals) und schaltet erst danach in den zerstörten Zustand um. Spätere Methodenaufrufe an einem zerstörten Dashlet werden mit einem einfachen Error('dashlet destroyed') abgelehnt.

4. Beispiele

const dashlet = installDashletGlobal();

const offInit = dashlet.onInit((ctx) => render(ctx));
const offUpdate = dashlet.onUpdate((ctx) => rerender(ctx));

// später, beim Abbau:
offInit();
offUpdate();
dashlet.destroy();