Pack d'interface sgcUI Realtime : présence, notifications, activité et journaux en direct pour Delphi, C++Builder et .NET

· Composants
Pack d'interface sgcUI Realtime : présence, notifications, activité et journaux en direct pour Delphi et .NET
Nouveau · pack d'interface sgcUI Realtime

Votre application, en direct.
Qui est en ligne, ce qui s'est passé, ce qui échoue.

Avatars de présence, toasts et boîte de notifications, badge en forme de cloche, fil d'activité avec piste d'audit et visualiseur de journaux en direct, le tout alimenté par WebSocket, MQTT ou Server Sent Events. Des contrôles natifs pour Delphi, C++Builder et .NET.

  • VCL
  • FireMonkey
  • C++Builder
  • WinForms
  • WPF
  • Avalonia
La démo d'exploitation Realtime : présence de l'équipe, fil d'activité, boîte de notifications et journal en direct
4modèles en direct
3sources en direct
6frameworks d'interface
12langues

Les consoles d'exploitation, les centres d'assistance, les panneaux d'administration et les écrans de trading doivent tous répondre aux mêmes questions pendant que les données continuent de bouger : qui est en ligne en ce moment, ce qui demande mon attention, qui a modifié quoi, et ce qui échoue à cet instant. Le pack d'interface sgcUI Realtime répond à chacune d'elles avec un modèle et un ensemble de contrôles natifs, et les relie tous à un flux en direct avec un seul type de message JSON.

Le pack Realtime UI en une minute : présence, notifications, activité et journaux en direct, alimentés par un seul message JSON. Également sur YouTube.

PrésenceAvatars, pastilles de statut et qui est en ligne
NotificationsToasts, boîte de réception, préférences et badge en forme de cloche
ActivitéUn fil de qui a fait quoi, et une piste d'audit
JournauxUn visualiseur de journaux en direct sur n'importe quel sgcGrid

Le pack d'interface Realtime n'est pas un produit séparé. Chaque élément réside dans le produit sgcUI qu'il étend, sgcUICore, sgcNavigation, sgcToolbar, sgcDashboard et sgcGrid, dans les unités, les packages et les packages NuGet que vous utilisez déjà, et suit l'édition de ce produit. Il fonctionne sur VCL et FireMonkey pour Delphi et C++Builder, et sur WinForms, WPF et Avalonia pour .NET, avec des thèmes clair, sombre et à contraste élevé, des dispositions de droite à gauche et 12 langues.

Présence : qui est en ligne

TsgcUIPresenceModel conserve les utilisateurs de votre application avec leur nom, leurs initiales, leur couleur, leur image d'avatar, leur statut (en ligne, absent, occupé ou hors ligne), leur texte de statut et leur dernière connexion. Les contrôles lisent le modèle et se redessinent d'eux-mêmes lorsqu'un statut change.

Une liste d'équipe avec des indicateurs de présence et un groupe d'avatars avec une pastille +7
La liste d'équipe et le groupe d'avatars de la barre d'outils, tous deux alimentés par un même modèle de présence.
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;

Notifications : toasts, boîte de réception et badge en forme de cloche

TsgcNotificationModel contient les notifications de l'utilisateur courant, avec titre, corps, gravité, heure, état de lecture, actions et groupe, et tient le compte des non lues. Quatre éléments l'affichent :

La boîte de notifications au-dessus de l'éditeur de préférences, et l'élément Notifications de la barre d'outils avec son badge de non lues
La boîte de réception groupée par jour, les préférences de canal par catégorie et le badge de non lues dans la barre d'outils.
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;

Fil d'activité et piste d'audit : qui a fait quoi

TsgcDashboardActivityModel enregistre qui a fait quoi et quand : l'acteur, un verbe, l'objet, un résultat et, à des fins d'audit, la valeur avant et après de chaque champ modifié. Les noms, les couleurs et les avatars des acteurs viennent du modèle de présence, de sorte que le fil et la liste d'équipe concordent toujours.

Le fil d'activité avec les avatars des acteurs, les verbes, les objets et les résultats
Le fil d'activité : chaque ligne affiche l'avatar de l'acteur, le verbe, l'objet et le résultat.
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;

Visualiseur de journaux en direct : ce qui échoue en ce moment

TsgcGridLogModel est un tampon circulaire thread safe de lignes de journal avec des niveaux de trace à fatal, une source, un message et des propriétés, des filtres par niveau, source et texte, et un export en texte, JSON et CSV. N'importe quel thread peut y ajouter des lignes ; les changements arrivent à l'écran par lots. TsgcGridLogLink transforme n'importe quel sgcGrid en visualiseur de journaux.

Un journal en direct dans un sgcGrid avec des lignes d'avertissement et d'information dans les couleurs de leur niveau
Le journal en direct : un sgcGrid avec des couleurs de niveau, Pause, Resume, un filtre de niveau et 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');

Données en direct : un seul message pour tous les flux

Les quatre modèles lisent le même type de message JSON, si bien qu'une seule connexion peut tous les transporter. Chaque message indique son type et une op, et chaque modèle ne prend que les siens :

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

Trois sources en direct relient les modèles à un serveur via sgcWebSockets : TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT et TsgcUILiveSource_SSE. Chaque source se branche sur un client que vous avez déjà configuré, avec son URL, ses identifiants, TLS et sa reconnexion, et transmet chaque message à ses liaisons. Les messages qui arrivent sur un thread de travail sont appliqués sur le thread principal en un seul lot, si bien qu'une rafale de mille lignes de journal ne coûte qu'un seul passage dans l'interface utilisateur. Une liaison peut aussi choisir un sujet MQTT, un nom d'événement SSE, un filtre ou un chemin à l'intérieur d'une enveloppe applicative.

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;

Les sources en direct font partie de l'édition Enregistrée et nécessitent sgcWebSockets, comme chaque passerelle sgcWebSockets de sgcUI. Sans serveur, ou dans une version Community, l'application appelle à la place l'API du modèle : AddOrUpdate et SetStatus, Add ou Post, AddActivity et Append.

Toutes les plateformes, clair et sombre

Les mêmes modèles et le même JSON fonctionnent sur toutes les plateformes. Les contrôles .NET sont des contrôles natifs WinForms, WPF et Avalonia, avec les mêmes noms dans les packages esegece.sgcUICore, esegece.sgcNavigation, esegece.sgcToolbar, esegece.sgcDashboard et esegece.sgcGrid, et chaque thème de la suite, y compris le sombre et le contraste élevé, s'applique aux nouveaux contrôles.

La démo d'exploitation Realtime sur WinForms
WinForms
La démo d'exploitation Realtime sur WPF
WPF
La démo d'exploitation Realtime sur Avalonia avec des toasts en bas à droite
Avalonia
La démo d'exploitation Realtime sur FireMonkey, thème clair
FireMonkey, clair
La démo d'exploitation Realtime sur FireMonkey, thème sombre
FireMonkey, sombre

La démo d'exploitation Realtime

La démo d'exploitation Realtime réunit tous les éléments sur un seul écran : une liste d'équipe, des toasts avec la boîte de réception et les préférences, un badge en forme de cloche, le fil d'activité et la piste d'audit, et un journal en direct, le tout piloté par un simulateur intégré qui fonctionne sans serveur. Elle est fournie pour VCL, FireMonkey et C++Builder dans les démos de la Suite Delphi, et pour WinForms, WPF et Avalonia dans les démos de la Suite .NET, et le simulateur produit la même séquence sur toutes les plateformes. Une seconde démo VCL, RealtimeLive, envoie les mêmes messages via un serveur WebSocket in process et un TsgcUILiveSource_WebSocket, et un champ URL permet de la connecter à votre propre serveur.

Éditions

Chaque élément suit l'édition du produit qui le contient. Les éléments de présence de sgcUICore et les éléments de journal de sgcGrid sont présents dans toutes les éditions, Community comprise, ainsi que les messages de présence. Les éléments de notification et de badge demandent sgcNavigation et sgcToolbar, dans sgcUI Standard et au-delà, et les éléments d'activité demandent sgcDashboard, dans sgcUI Professional et au-delà. Les packages .NET Community gratuits les incluent aussi, alors que l'édition Community pour Delphi ne contient que sgcGrid. Les messages en direct de notifications, d'activité et de journal, le ruban comme cible de badge et les trois sources en direct font partie de l'édition Enregistrée. Consultez la page du pack d'interface Realtime et l'aide du pack d'interface Realtime pour le détail par produit.

Rendez votre application vivante

Un essai pour Delphi et un pour C++Builder installent tous les produits sgcUI, pack d'interface Realtime inclus.

Des questions ou des remarques ? Contactez-nous, vous recevrez une réponse de la part des personnes qui ont écrit le code.