Delphi, C++Builder & .NET Live-Oberflächen

Das sgcUI Realtime-UI-Paket

Alles, was eine Oberfläche braucht, die einem Live-System folgt, eingebaut in die sgcUI-Produkte, die du schon verwendest: wer online ist, Toasts und ein Benachrichtigungs-Posteingang mit einem Badge für ungelesene Meldungen, ein Aktivitäts-Feed mit Audit-Trail und ein Live-Log-Viewer. Ein Server speist sie über WebSocket, MQTT oder Server-Sent Events, oder dein Code steuert sie direkt.

VCLFireMonkeyWinFormsWPFAvalonia
Die sgcUI-Realtime-Demo: eine Team-Liste mit Präsenzanzeigen, der Aktivitäts-Feed, der Benachrichtigungs-Posteingang über den Benachrichtigungseinstellungen, eine Glocke mit der Zahl der ungelesenen Meldungen, die Avatare des Teams und ein Live-Log-Grid

Fünf Produkte, eine Live-Oberfläche

Das Realtime-UI-Paket ist kein eigenes Produkt. Jeder Baustein steckt in dem sgcUI-Produkt, zu dem er passt, in den Units, Packages und NuGet-Paketen, die du schon verwendest, und folgt der Edition dieses Produkts. Jeder Baustein braucht nur sgcUICore und das Produkt, das ihn enthält, und keiner braucht sgcHTML.

Präsenz und Avatare

Wer online, abwesend, beschäftigt oder offline ist, mit Avataren, einer Avatar-Gruppe und einer Präsenzanzeige.

Produkt: sgcUICore.

Präsenz →

Benachrichtigungen

Ein Benachrichtigungsmodell mit Toasts, einem Posteingang, Einstellungen pro Kategorie und Kanal und einem Badge für ungelesene Meldungen in der Toolbar.

Produkte: sgcNavigation und sgcToolbar.

Benachrichtigungen →

Aktivitäts-Feed und Audit-Trail

Wer was an welchem Objekt getan hat, als Feed, als Audit-Tabelle und als Dashboard-Kacheln.

Produkt: sgcDashboard.

Aktivität →

Live-Log-Viewer

Ein Grid, das den neuesten Logzeilen folgt, mit Pause, Filtern und Export.

Produkt: sgcGrid.

Live-Logs →

Live-Quellen

WebSocket-, MQTT- und Server-Sent-Events-Verbindungen von sgcWebSockets, die jedes Modell speisen.

Produkt: sgcUICore, Brücke sgcUICoreWS.

Live-Daten →

Delphi 7 bis Delphi 13 mit VCL, FireMonkey ab Delphi XE6, C++Builder und .NET WinForms, WPF und Avalonia. Das Hilfethema zum Realtime-UI-Paket lesen.

Präsenz und Avatare

Zeige in jedem sgcUI-Produkt, wer online ist.

TsgcUIPresenceModel verwaltet die Benutzer und ihren Status (online, abwesend, beschäftigt oder offline) mit einem Statustext. Die Avatar-Steuerelemente folgen dem Modell, sodass eine Statusänderung jeden Avatar und jede Anzeige dieses Benutzers sofort neu zeichnet.

  • Das Präsenzmodell übernimmt seine Änderungen aus AddOrUpdate und SetStatus im Code oder aus einer Live-Nachricht pro Änderung.
  • Ein Avatar, eine Avatar-Gruppe mit einem "+N"-Chip für die Benutzer, die nicht hineinpassen, und eine Präsenzanzeige mit Statuspunkt und Statustext.
  • Der Aktivitäts-Feed von sgcDashboard liest dasselbe Modell, sodass jeder Akteur seinen Avatar und seinen Status zeigt.
Produkt
sgcUICore, von jedem sgcUI-Produkt gemeinsam genutzt
Delphi und C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator und ihre TsgcFMX-Gegenstücke
Edition
Jede Edition, auch Community, ebenso die Live-Präsenznachrichten

Hilfe: Präsenz und Avatare und Präsenzanzeige.

Toasts, Posteingang, Einstellungen und Badges

Ein Benachrichtigungscenter für Desktop-Anwendungen.

TsgcNotificationModel hält die Benachrichtigungen mit Titel, Schweregrad, Kategorie und Lesestatus und führt die Zahl der ungelesenen. Der Toast-Manager, der Posteingang, die Einstellungen und der Badge-Link folgen ihm.

  • Toasts: ein Toast für jede neue ungelesene Benachrichtigung, der pausiert, solange der Mauszeiger darüber steht.
  • Benachrichtigungs-Posteingang: die Benachrichtigungen nach Tagen gruppiert, alle oder nur ungelesene, mit "Alle als gelesen markieren".
  • Benachrichtigungseinstellungen: eine Zeile pro Kategorie und eine Spalte pro Kanal, mit ihrem Editor. Wer den Pop-up-Kanal einer Kategorie abschaltet, stoppt ihre Toasts, und der Posteingang listet sie weiterhin auf.
  • Badge für ungelesene Meldungen: TsgcToolbarBadgeLink von sgcToolbar zeigt die Zahl der ungelesenen an einem Toolbar- oder Ribbon-Element, 99+ ab 100.
Produkte
sgcNavigation (Modell, Toasts, Posteingang und Einstellungen) und sgcToolbar (Badge-Link)
Delphi und C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor und ihre TsgcFMX-Gegenstücke
Edition
Jede Edition, auch Community. Die Live-Benachrichtigungsnachrichten und ein Ribbon als Badge-Ziel sind Registriert.

Hilfe: Benachrichtigungen, Toasts, Benachrichtigungs-Posteingang, Benachrichtigungseinstellungen, Live-Benachrichtigungsnachrichten und TsgcToolbarBadgeLink.

Aktivitäts-Feed und Audit-Trail

Wer was getan hat und was sich geändert hat.

TsgcDashboardActivityModel erfasst jede Aktivität als Akteur, Verb und Objekt, mit den Feldern, die sich geändert haben. Der Aktivitäts-Feed und der Audit-Trail sind zwei Ansichten desselben Modells.

  • Aktivitäts-Feed: die neueste Aktivität zuerst, mit relativen Zeitangaben und dem Avatar jedes Akteurs aus dem Präsenzmodell.
  • Audit-Trail: eine Tabelle, deren Zeilen sich zu den geänderten Feldern aufklappen.
  • Beide sind eigenständige Steuerelemente und auch Aktivitäts- und Audit-Kacheln für ein Dashboard.
Produkt
sgcDashboard
Delphi und C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile und ihre TsgcFMX-Gegenstücke
Edition
Jede Edition, auch Community. Die Live-Aktivitätsnachrichten sind Registriert.

Hilfe: Aktivitäts-Feed, Live-Aktivitätsnachrichten, Aktivitäts-Kachel und Audit-Kachel.

Ein Live-Log-Viewer auf sgcGrid

Verfolge Tausende von Logzeilen, ohne dass die Oberfläche einfriert.

TsgcGridLogModel hält die Logzeilen mit Zeit, einer Stufe von Trace bis Fatal, einer Quelle und einer Meldung, und TsgcGridLogLink zeigt sie in einem sgcGrid im virtuellen Modus. Das Logmodell ist Thread-sicher, sodass ein Worker-Thread Zeilen direkt anhängen kann.

  • Ende verfolgen: Wer nach oben scrollt, beendet das Mitlaufen, und Zurückscrollen ans Ende setzt es fort. Pause hält die Ansicht an, solange der Benutzer liest.
  • Nach Stufe eingefärbte Zeilen, Filter nach Stufe, Quelle und Text, Hervorhebungsregeln und Export.
  • Ein Schwall von Logzeilen aus einem Socket-Thread kostet einen einzigen Besuch im Hauptthread.
Produkt
sgcGrid
Delphi und C++Builder
TsgcGridLogModel und TsgcGridLogLink mit einem TsgcVCLGrid oder einem TsgcFMXGrid
Edition
Jede Edition, auch Community. Die Live-Lognachrichten sind Registriert.

Hilfe: Log-Viewer, TsgcGridLogModel und TsgcGridLogLink.

Live-Quellen über WebSocket, MQTT und SSE

Die Live-Quellen der Brücke sgcUICoreWS nehmen die JSON-Nachrichten, die ein Server über eine sgcWebSockets-Verbindung sendet, und reichen sie an die Modelle weiter. Die Steuerelemente folgen sofort, ohne Code von dir.

QuellesgcWebSockets-ClientGelesenes EreignisWählt die Nachrichten nach
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, jede TextnachrichtEinem Filter auf ein Member der Nachricht
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, jedes PublishEinem MQTT-Topic-Filter
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, der Event-StreamDem SSE-Ereignistyp
  • Die Quelle verbindet sich nie, abonniert nichts und sendet nichts. Die URL, die Zugangsdaten, TLS und die Wiederverbindung gehören dem Client, und der Hook übersteht eine Wiederverbindung durch den WatchDog.
  • Eine Quelle speist über ihre Bindungen mehrere Modelle, sodass eine Verbindung eine ganze Oberfläche antreiben kann. Eine Bindung kann einen Anwendungs-Umschlag auspacken, und dein eigener Handler des Client-Ereignisses wird weiterhin aufgerufen.
  • Die Modelle werden immer im Hauptthread aufgerufen. Nachrichten, die in einem Socket-Thread eintreffen, werden eingereiht und in einem einzigen Besuch im Hauptthread in der Reihenfolge ihres Eintreffens angewendet.
  • Die Brücke ist nur eingehend. Wenn der Benutzer eine Benachrichtigung liest oder verwirft, sendet die Anwendung ihren eigenen Frame über denselben Client.

Die vier Nachrichtenformen

Es gibt kein neues Protokoll. Jedes Modell liest die Live-Nachricht seines Feeds: ein JSON-Objekt pro Änderung, mit einem Member type, der den Feed benennt, und einem Member op.

FeedtypeopModell
Präsenzpresence, optionalupsert, remove, snapshot, clearTsgcUIPresenceModel
Benachrichtigungennotification, erforderlichadd, update, remove, read, unread, snapshotTsgcNotificationModel
Aktivitätactivity, erforderlichadd, update, remove, snapshotTsgcDashboardActivityModel
Loglog, optionalappend, batch, clearTsgcGridLogModel
messages.json
{"type":"presence","op":"upsert","user":{"id":"u7","presence":"away","statusText":"Lunch"}}
{"type":"notification","op":"add","notification":{"id":"n2","title":"Build 812 passed","severity":"success"}}
{"type":"activity","op":"add","item":{"id":"a20","actorId":"u7","verb":"updated","objectName":"Invoice INV-17"}}
{"type":"log","op":"append","entry":{"level":"warning","source":"api","message":"Slow query"}}
Delphi, ein MQTT-Topic pro Feed
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// eine Bindung pro Modell, gewählt über sein Topic
oBinding := oSource.Bindings.Add;
oBinding.Target := PresenceModel;
oBinding.Topic := 'ops/presence';
oBinding := oSource.Bindings.Add;
oBinding.Target := NotificationModel;
oBinding.Topic := 'ops/notifications';
oBinding := oSource.Bindings.Add;
oBinding.Target := ActivityModel;
oBinding.Topic := 'ops/activity';
oBinding := oSource.Bindings.Add;
oBinding.Target := LogModel;
oBinding.Topic := 'ops/log/+';
// die Quelle abonniert nie: abonniere in OnMQTTConnect des Clients
MQTT.Subscribe('ops/#');

Die Live-Quellen sind nur in Registriert enthalten und brauchen sgcWebSockets, wie jede sgcWebSockets-Brücke von sgcUI. Ohne Server oder in einem Community-Build ruft die Anwendung stattdessen die API jedes Modells auf: AddOrUpdate und SetStatus des Präsenzmodells, Add oder Post des Benachrichtigungsmodells, Add des Aktivitätsmodells und Append des Logmodells.

Das Hilfethema zu den Live-Quellen lesen

Die Realtime-Demo

Eine Betriebskonsole für ein Team von zwölf, angetrieben von einem Simulator

Die Realtime-Demo für Delphi VCL im dunklen Theme: die Team-Liste, der Aktivitäts-Feed, der Benachrichtigungs-Posteingang und die Einstellungen, das Glocken-Badge, die Avatar-Gruppe und das Live-Log-Grid

Die Suite-Demo Realtime baut aus dem Paket eine Betriebskonsole. Die Toolbar trägt eine Glocke, deren Badge die Zahl der ungelesenen Meldungen ist, den Avatar des aktuellen Benutzers und die Avatar-Gruppe des Teams. Eine Liste zeigt jedes Mitglied mit einer Präsenzanzeige, ein Tab enthält den Aktivitäts-Feed und ein weiterer den Audit-Trail, der Benachrichtigungs-Posteingang sitzt über dem Einstellungs-Editor, ein Log-Grid folgt den neuesten Zeilen, und Toasts erscheinen unten rechts.

  • Wechsle zwischen hell, dunkel und hohem Kontrast oder spiegle das Fenster von rechts nach links, während die Demo läuft
  • Ein deterministischer Simulator erzeugt jede Änderung als Live-Nachricht ihres Modells, sodass die Demo weder einen Server noch sgcWebSockets braucht
  • Starte sie mit --test result.txt für ihre Selbsttests, je eine nummerierte PASS- oder FAIL-Zeile
Plattformen
Delphi VCL (Delphi 7 bis 13) und FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF und Avalonia
Benötigte Edition
sgcUI Professional, Enterprise, All-Access oder die Testversion, die Editionen, die sgcDashboard enthalten. Ein Registriert-Build wendet jede Änderung als Live-Nachricht an, ein Community-Build über die Modell-API.
Quellcode
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime und demos\Suite\Realtime im .NET-Ordner

Enthaltene sgcUI-Produkte

Siehe auch die anderen sgcUI-Suite-Demos.

Die Realtime-Demo für Delphi FireMonkey im hellen Theme
FireMonkey, helles Theme
Die Realtime-Demo für Delphi FireMonkey im dunklen Theme
FireMonkey, dunkles Theme

Dasselbe Paket in WinForms, WPF und Avalonia

Die Modelle, die Steuerelemente und die Live-Quellen heißen unter .NET gleich und lesen dieselben JSON-Nachrichten, in den NuGet-Paketen jedes Produkts.

  • Modelle: TsgcUIPresenceModel (Namespace esegece.sgcUICore), TsgcNotificationModel und TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) und TsgcGridLogModel mit TsgcGridLogLink (esegece.sgcGrid).
  • Steuerelemente: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail und die übrigen Steuerelemente, jedes mit seinem TsgcWpf- und TsgcAvalonia-Gegenstück.
  • Live-Quellen: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT und TsgcUILiveSource_SSE im Paket esegece.sgcUICore.sgcWebSockets, nur in Registriert.
  • Die kostenlosen Community-Pakete auf NuGet, wie esegece.sgcNavigation.Community und esegece.sgcGrid.Community, lassen dieselben Teile weg wie die Delphi-Community-Builds.
  • Die .NET-Demo hat WinForms-, WPF- und Avalonia-Hosts über einem gemeinsamen Projekt mit den Modellen, dem Simulator und dem Selbsttest.

Hilfe: .NET-Pakete und Realtime-UI-Paket.

Community und Registriert

Jeder Baustein folgt der Edition seines Produkts. Die .NET-Community-Pakete lassen dieselben Teile weg wie die Delphi-Community-Builds.

BausteinProduktCommunityRegistriert
Präsenzmodell mit seinen Live-Nachrichten, Avatare, Avatar-Gruppe und PräsenzanzeigesgcUICore
Benachrichtigungsmodell, Toasts, Posteingang und EinstellungensgcNavigation
Live-BenachrichtigungsnachrichtensgcNavigation—
Badge-Link mit einer ToolbarsgcToolbar
Badge-Link mit einem RibbonsgcToolbar—
Aktivitätsmodell, Aktivitäts-Feed, Audit-Trail und beide KachelnsgcDashboard
Live-AktivitätsnachrichtensgcDashboard—
Logmodell und Log-LinksgcGrid
Live-LognachrichtensgcGrid—
Live-Quellen über WebSocket, MQTT und SSE (Brücke sgcUICoreWS, braucht sgcWebSockets)sgcUICore—

In der sgcUI-Suite sind sgcNavigation, sgcToolbar und sgcGrid in jeder Edition enthalten und sgcDashboard ab Professional. sgcUICore gehört zu jedem Produkt, und jedes Produkt wird auch einzeln verkauft, für Delphi und für .NET. Siehe die Funktionsmatrix, das Hilfethema Editionen und die Preise.

Häufig gestellte Fragen

Nein. Jeder Baustein steckt in dem sgcUI-Produkt, zu dem er passt: Präsenz und Avatare in sgcUICore, Benachrichtigungen in sgcNavigation, das Badge für ungelesene Meldungen in sgcToolbar, der Aktivitäts-Feed und der Audit-Trail in sgcDashboard und der Log-Viewer in sgcGrid. Du bekommst sie mit diesen Produkten, in denselben Units, Packages und NuGet-Paketen.

Nur für die Live-Quellen der Brücke sgcUICoreWS. Die Modelle und die Steuerelemente brauchen nur sgcUICore und ihr eigenes Produkt, und eine Anwendung ohne Server steuert sie aus dem Code. Kein Baustein braucht sgcHTML.

Jeder Server, der pro Änderung ein JSON-Objekt über WebSocket, über einen MQTT-Broker oder als Server-Sent Events sendet. Die vier Nachrichtenformen sind dokumentiert, und die Quellen definieren kein eigenes Protokoll. Eine Bindung kann auch den Umschlag eines vorhandenen Anwendungsprotokolls auspacken.

Die Brücke ist nur eingehend. Wenn der Benutzer eine Benachrichtigung liest oder verwirft, sendet die Anwendung ihren eigenen Frame über denselben sgcWebSockets-Client. Das Hilfethema zu den Live-Quellen enthält ein Beispiel.

Nein. Nachrichten, die in einem Socket-Thread eintreffen, werden eingereiht und in einem einzigen Besuch im Hauptthread angewendet, sodass ein Schwall von 1.000 Logzeilen einen Besuch kostet. Das Logmodell ist außerdem Thread-sicher, sodass ein Worker-Thread direkt anhängen kann. Behalte unter Delphi 7 bis 2009 die Standardbenachrichtigung des Clients bei, die im Hauptthread benachrichtigt.

Die Modelle und die Steuerelemente jedes Bausteins sowie die Live-Präsenznachrichten. Die Live-Nachrichten des Benachrichtigungs-, Aktivitäts- und Logmodells, ein Ribbon als Badge-Ziel und die Live-Quellen sind nur in Registriert enthalten.

Produktseiten: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets und die sgcUI-Suite.

Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Baue deine Live-Oberflächen mit sgcUI

Die All-Access-Testversion enthält jedes sgcUI-Produkt, sodass du jeden Baustein des Pakets ausprobieren kannst.