sgcUI Realtime UI Pack: Präsenz, Benachrichtigungen, Aktivität und Live-Logs für Delphi, C++Builder und .NET

· Komponenten
sgcUI Realtime UI Pack: Präsenz, Benachrichtigungen, Aktivität und Live-Logs für Delphi und .NET
Neu · sgcUI Realtime UI Pack

Ihre Anwendung, live.
Wer ist online, was ist passiert, was schlägt fehl.

Präsenz-Avatare, Toasts und ein Benachrichtigungsposteingang, ein Glocken-Badge, ein Aktivitätsfeed mit Audit-Trail und ein Live-Log-Viewer, alles gespeist über WebSocket, MQTT oder Server Sent Events. Native Steuerelemente für Delphi, C++Builder und .NET.

  • VCL
  • FireMonkey
  • C++Builder
  • WinForms
  • WPF
  • Avalonia
Die Realtime-Operations-Demo: Teampräsenz, Aktivitätsfeed, Benachrichtigungsposteingang und ein Live-Log
4Live-Modelle
3Live-Quellen
6UI-Frameworks
12Sprachen

Operations-Konsolen, Helpdesks, Admin-Oberflächen und Trading-Bildschirme müssen dieselben Fragen beantworten, während sich die Daten ständig ändern: Wer ist gerade online, was braucht meine Aufmerksamkeit, wer hat was geändert und was schlägt im Moment fehl. Das sgcUI Realtime UI Pack beantwortet jede dieser Fragen mit einem Modell und einem Satz nativer Steuerelemente und verbindet alle über eine einzige Art von JSON-Nachricht mit einem Live-Feed.

Das Realtime UI Paket in einer Minute: Präsenz, Benachrichtigungen, Aktivität und Live-Logs, gespeist von einer einzigen JSON-Nachricht. Auch auf YouTube.

PräsenzAvatare, Statuspunkte und wer online ist
BenachrichtigungenToasts, ein Posteingang, Einstellungen und ein Glocken-Badge
AktivitätEin Feed darüber, wer was getan hat, und ein Audit-Trail
LogsEin Live-Log-Viewer für jedes sgcGrid

Das Realtime UI Pack ist kein eigenständiges Produkt. Jeder Baustein steckt in dem sgcUI-Produkt, das er erweitert, sgcUICore, sgcNavigation, sgcToolbar, sgcDashboard und sgcGrid, in den Units, Packages und NuGet-Paketen, die Sie bereits verwenden, und folgt der Edition dieses Produkts. Es läuft unter VCL und FireMonkey für Delphi und C++Builder sowie unter WinForms, WPF und Avalonia für .NET, mit hellen, dunklen und Hochkontrast-Themes, Rechts-nach-links-Layouts und 12 Sprachen.

Präsenz: Wer ist online

TsgcUIPresenceModel verwaltet die Benutzer Ihrer Anwendung mit Name, Initialen, Farbe, Avatarbild, Status (online, abwesend, beschäftigt oder offline), Statustext und Zeitpunkt der letzten Aktivität. Die Steuerelemente lesen das Modell und zeichnen sich selbstständig neu, wenn sich ein Status ändert.

Eine Teamliste mit Präsenzanzeigen und eine Avatargruppe mit einem +7-Chip
Die Teamliste und die Avatargruppe der Toolbar, beide aus einem einzigen Präsenzmodell gezeichnet.
uses
  sgcUICore_Presence, sgcUICore_Presence_VCL;

procedure TfrmMain.LoadTeam;
begin
  // usually set in the Object Inspector
  sgcVCLAvatarGroup1.Model := FPresence;
  sgcVCLAvatarGroup1.MaxVisible := 5;

  FPresence.AddOrUpdate('u1', 'Alex Morgan');
  FPresence.AddOrUpdate('u2', 'Bianca Ruiz', uprAway, 'Back at 3');
  // later, when the status changes
  FPresence.SetStatus('u1', uprBusy, 'In a meeting');
end;

Benachrichtigungen: Toasts, ein Posteingang und ein Glocken-Badge

TsgcNotificationModel hält die Benachrichtigungen des aktuellen Benutzers mit Titel, Text, Schweregrad, Zeit, Lesestatus, Aktionen und Gruppe und führt die Zahl der ungelesenen. Vier Bausteine zeigen sie an:

Der Benachrichtigungsposteingang über dem Einstellungs-Editor und das Toolbar-Element Benachrichtigungen mit seinem Badge für Ungelesene
Der nach Tagen gruppierte Posteingang, die Kanaleinstellungen pro Kategorie und das Badge für Ungelesene in der Toolbar.
uses
  sgcNavigation_Notification, sgcNavigation_Toast_VCL,
  sgcNavigation_Inbox_VCL, sgcToolbar_BadgeLink;

procedure TfrmMain.SetupNotifications;
begin
  sgcVCLToastManager1.Model := FNotifications;
  sgcVCLToastManager1.Preferences := FPreferences;
  sgcVCLNotificationInbox1.Model := FNotifications;
  // the unread count as the badge of the first toolbar item
  sgcToolbarBadgeLink1.Source := FNotifications;
  sgcToolbarBadgeLink1.Target := sgcVCLToolbar1;
  sgcToolbarBadgeLink1.ItemIndex := 0;

  FNotifications.Add('Deployed billing', 'Version 1.8 is live in 3 regions',
    nsvSuccess, 'deploy');
end;

Aktivitätsfeed und Audit-Trail: Wer hat was getan

TsgcDashboardActivityModel erfasst, wer was wann getan hat: den Akteur, ein Verb, das Objekt, ein Ergebnis und, für Audit-Zwecke, den Wert vor und nach der Änderung jedes geänderten Felds. Namen, Farben und Avatare der Akteure stammen aus dem Präsenzmodell, daher stimmen Feed und Teamliste immer überein.

Der Aktivitätsfeed mit Akteur-Avataren, Verben, Objekten und Ergebnissen
Der Aktivitätsfeed: Jede Zeile zeigt den Avatar des Akteurs, das Verb, das Objekt und das Ergebnis.
uses
  sgcDashboard_Activity, sgcDashboard_Activity_VCL;

procedure TfrmMain.RecordApproval;
var
  oItem: TsgcDashboardActivity;
begin
  FActivity.Presence := FPresence; // actor names, colours and avatars
  sgcVCLActivityFeed1.Model := FActivity;
  sgcVCLAuditTrail1.Model := FActivity;

  oItem := TsgcDashboardActivity.Create;
  oItem.Id := 'a18';
  oItem.Time := FActivity.NowUTC;
  oItem.ActorId := 'u2';
  oItem.Verb := 'approved';
  oItem.ObjectName := 'Change request 102';
  oItem.Outcome := 'success';
  oItem.Changes.Add('status', 'pending', 'approved');
  // the model owns the item and inserts it by Time
  FActivity.AddActivity(oItem);
end;

Live-Log-Viewer: Was schlägt gerade fehl

TsgcGridLogModel ist ein threadsicherer Ringpuffer für Logzeilen mit Stufen von trace bis fatal, einer Quelle, einer Meldung und Eigenschaften, Filtern nach Stufe, Quelle und Text sowie Export als Text, JSON und CSV. Jeder Thread kann Zeilen anhängen; die Änderungen erreichen den Bildschirm gebündelt. TsgcGridLogLink macht aus jedem sgcGrid einen Log-Viewer.

Ein Live-Log in einem sgcGrid mit Warn- und Informationszeilen in den Farben ihrer Stufe
Das Live-Log: ein sgcGrid mit Stufenfarben, Pause, Resume, einem Stufenfilter und Copy lines.
uses
  sgcGrid_Log, sgcGrid_LogLink;

procedure TfrmMain.SetupLog;
begin
  FLog.Capacity := 100000;
  sgcGridLogLink1.Model := FLog;
  sgcGridLogLink1.Grid := sgcVCLGrid1;
  sgcGridLogLink1.FollowTail := True;
  sgcGridLogLink1.Active := True;
end;

// from any thread
FLog.Append(gllWarning, 'gateway', 'slow query 668 ms');

Live-Daten: Eine Nachricht für jeden Feed

Die vier Modelle lesen dieselbe Art von JSON-Nachricht, sodass eine einzige Verbindung alle transportieren kann. Jede Nachricht nennt ihren type und eine op, und jedes Modell übernimmt nur die eigenen:

{"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"}}

Drei Live-Quellen verbinden die Modelle über sgcWebSockets mit einem Server: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT und TsgcUILiveSource_SSE. Jede Quelle klinkt sich in einen bereits konfigurierten Client ein, mit dessen URL, Zugangsdaten, TLS und Wiederverbindung, und reicht jede Nachricht an ihre Bindungen weiter. Nachrichten, die in einem Worker-Thread eintreffen, werden in einem einzigen Stapel im Hauptthread angewendet, sodass ein Schwall von tausend Logzeilen nur einen Besuch der Benutzeroberfläche kostet. Eine Bindung kann außerdem ein MQTT-Topic, einen SSE-Ereignisnamen, einen Filter oder einen Pfad innerhalb eines Anwendungs-Umschlags auswählen.

uses
  sgcWebSocket, sgcUICoreWS_Live, sgcUICoreWS_Live_WebSocket;

procedure TfrmMain.ConnectLive;
var
  oSource: TsgcUILiveSource_WebSocket;
begin
  oSource := TsgcUILiveSource_WebSocket.Create(Self);
  oSource.Client := sgcWebSocketClient1;
  // every message carries its type, so each model takes only its own
  oSource.Bindings.Add.Target := FPresence;
  oSource.Bindings.Add.Target := FNotifications;
  oSource.Bindings.Add.Target := FActivity;
  oSource.Bindings.Add.Target := FLog;
end;

Die Live-Quellen gehören zur Edition Registriert und benötigen sgcWebSockets, wie jede sgcWebSockets-Brücke von sgcUI. Ohne Server oder in einem Community-Build ruft die Anwendung stattdessen die Modell-API auf: AddOrUpdate und SetStatus, Add oder Post, AddActivity und Append.

Jede Plattform, hell und dunkel

Dieselben Modelle und dasselbe JSON laufen auf jeder Plattform. Die .NET-Steuerelemente sind native WinForms-, WPF- und Avalonia-Steuerelemente mit denselben Namen in den Paketen esegece.sgcUICore, esegece.sgcNavigation, esegece.sgcToolbar, esegece.sgcDashboard und esegece.sgcGrid, und jedes Theme der Suite, einschließlich Dunkel und Hochkontrast, erreicht die neuen Steuerelemente.

Die Realtime-Operations-Demo unter WinForms
WinForms
Die Realtime-Operations-Demo unter WPF
WPF
Die Realtime-Operations-Demo unter Avalonia mit Toasts unten rechts
Avalonia
Die Realtime-Operations-Demo unter FireMonkey, helles Theme
FireMonkey, hell
Die Realtime-Operations-Demo unter FireMonkey, dunkles Theme
FireMonkey, dunkel

Die Realtime-Operations-Demo

Die Realtime-Operations-Demo vereint jeden Baustein auf einem Bildschirm: eine Teamliste, Toasts mit Posteingang und Einstellungen, ein Glocken-Badge, den Aktivitätsfeed und den Audit-Trail sowie ein Live-Log, alles gesteuert von einem eingebauten Simulator, sodass sie ohne Server läuft. Sie wird für VCL, FireMonkey und C++Builder in den Delphi-Suite-Demos und für WinForms, WPF und Avalonia in den .NET-Suite-Demos mitgeliefert, und der Simulator erzeugt auf jeder Plattform dieselbe Abfolge. Eine zweite VCL-Demo, RealtimeLive, sendet dieselben Nachrichten über einen WebSocket-Server im selben Prozess und eine TsgcUILiveSource_WebSocket, und über ein URL-Feld verbinden Sie sie stattdessen mit Ihrem eigenen Server.

Editionen

Jeder Baustein folgt der Edition des Produkts, das ihn enthält. Die Präsenzbausteine von sgcUICore und die Log-Bausteine von sgcGrid sind in jeder Edition enthalten, auch in Community, ebenso die Präsenznachrichten. Die Bausteine für Benachrichtigungen und Badge brauchen sgcNavigation und sgcToolbar, ab sgcUI Standard, und die Aktivitätsbausteine brauchen sgcDashboard, ab sgcUI Professional. Die kostenlosen .NET-Community-Pakete enthalten sie ebenfalls, die Delphi-Community-Edition enthält dagegen nur sgcGrid. Die Live-Nachrichten für Benachrichtigungen, Aktivität und Logs, das Ribbon als Badge-Ziel und die drei Live-Quellen gehören zur Edition Registriert. Lesen Sie die Seite zum Realtime UI Pack und die Hilfe zum Realtime UI Pack für die Details je Produkt.

Machen Sie Ihre Anwendung live

Eine Testversion für Delphi und eine für C++Builder installieren jedes sgcUI-Produkt, das Realtime UI Pack inbegriffen.

Fragen oder Feedback? Nehmen Sie Kontakt auf, Sie erhalten eine Antwort von den Leuten, die den Code geschrieben haben.