Delphi, C++Builder & .NET Écrans en direct

Le pack Realtime UI de sgcUI

Tout ce dont un écran qui suit un système en direct a besoin, intégré aux produits sgcUI que tu utilises déjà : qui est en ligne, des toasts et une boîte de réception des notifications avec un badge de non lues, un flux d'activité avec une piste d'audit et une visionneuse de journal en direct. Un serveur les alimente par WebSocket, MQTT ou server-sent events, ou ton code les pilote directement.

VCLFireMonkeyWinFormsWPFAvalonia
La démo Realtime de sgcUI : une liste d'équipe avec des indicateurs de présence, le flux d'activité, la boîte de réception des notifications au-dessus des préférences de notification, une cloche avec le compteur de non lues, les avatars de l'équipe et une grille de journal en direct

Cinq produits, un seul écran en direct

Le pack Realtime UI n'est pas un produit séparé. Chaque élément vit dans le produit sgcUI qu'il étend, dans les unités, packages et packages NuGet que tu utilises déjà, et suit l'édition de ce produit. Chaque élément ne demande que sgcUICore et le produit qui le contient, et aucun ne demande sgcHTML.

Présence et avatars

Qui est en ligne, absent, occupé ou hors ligne, avec des avatars, un groupe d'avatars et un indicateur de présence.

Produit : sgcUICore.

Présence →

Notifications

Un modèle de notifications avec des toasts, une boîte de réception, des préférences par catégorie et par canal, et un badge de non lues sur la barre d'outils.

Produits : sgcNavigation et sgcToolbar.

Notifications →

Flux d'activité et piste d'audit

Qui a fait quoi sur quel objet, sous forme de flux, de tableau d'audit et de tuiles de tableau de bord.

Produit : sgcDashboard.

Activité →

Visionneuse de journal en direct

Une grille qui suit les lignes de journal les plus récentes, avec pause, filtres et export.

Produit : sgcGrid.

Journaux en direct →

Sources en direct

Les connexions WebSocket, MQTT et server-sent events de sgcWebSockets qui alimentent chaque modèle.

Produit : sgcUICore, pont sgcUICoreWS.

Données en direct →

Delphi 7 à Delphi 13 avec VCL, FireMonkey à partir de Delphi XE6, C++Builder, et .NET WinForms, WPF et Avalonia. Lis la rubrique d'aide sur le pack Realtime UI.

Présence et avatars

Montre qui est en ligne, dans chaque produit sgcUI.

TsgcUIPresenceModel conserve les utilisateurs et leur statut (en ligne, absent, occupé ou hors ligne) avec un texte de statut. Les contrôles d'avatar suivent le modèle, donc un changement de statut repeint d'un coup chaque avatar et chaque indicateur de cet utilisateur.

  • Le modèle de présence reçoit ses changements par AddOrUpdate et SetStatus dans le code, ou par un message en direct par changement.
  • Un avatar, un groupe d'avatars avec une pastille « +N » pour les utilisateurs qui ne tiennent pas, et un indicateur de présence avec le point de statut et le texte de statut.
  • Le flux d'activité de sgcDashboard lit le même modèle, donc chaque acteur affiche son avatar et son statut.
Produit
sgcUICore, partagé par chaque produit sgcUI
Delphi et C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator et leurs jumeaux TsgcFMX
Édition
Toutes les éditions, Community comprise, messages de présence en direct compris

Aide : Présence et Avatars et indicateur de présence.

Toasts, boîte de réception, préférences et badges

Un centre de notifications pour les applications de bureau.

TsgcNotificationModel conserve les notifications avec leur titre, leur gravité, leur catégorie et leur état de lecture, et tient le compteur de non lues. Le gestionnaire de toasts, la boîte de réception, les préférences et le lien de badge le suivent tous.

  • Toasts : un toast pour chaque nouvelle notification non lue, qui se met en pause tant que le pointeur est dessus.
  • Boîte de réception des notifications : les notifications regroupées par jour, toutes ou seulement les non lues, avec Tout marquer comme lu.
  • Préférences de notification : une ligne par catégorie et une colonne par canal, avec leur éditeur. Désactiver le canal des fenêtres contextuelles d'une catégorie arrête ses toasts, et la boîte de réception les liste toujours.
  • Badge de non lues : TsgcToolbarBadgeLink de sgcToolbar affiche le compteur de non lues sur un élément de barre d'outils ou de ruban, 99+ au-delà de 99.
Produits
sgcNavigation (modèle, toasts, boîte de réception et préférences) et sgcToolbar (lien de badge)
Delphi et C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor et leurs jumeaux TsgcFMX
Édition
Toutes les éditions, Community comprise. Les messages de notification en direct et un ruban comme cible du badge relèvent de l'édition Enregistrée.

Aide : Notifications, Toasts, Boîte de réception des notifications, Préférences de notification, Messages de notification en direct et TsgcToolbarBadgeLink.

Flux d'activité et piste d'audit

Qui a fait quoi, et ce qui a changé.

TsgcDashboardActivityModel enregistre chaque activité comme un acteur, un verbe et un objet, avec les champs modifiés. Le flux d'activité et la piste d'audit sont deux vues du même modèle.

  • Flux d'activité : l'activité la plus récente d'abord, avec des heures relatives et l'avatar de chaque acteur issu du modèle de présence.
  • Piste d'audit : un tableau dont les lignes se déplient sur les champs modifiés.
  • Les deux sont des contrôles autonomes et aussi des tuiles d'activité et d'audit pour un tableau de bord.
Produit
sgcDashboard
Delphi et C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile et leurs jumeaux TsgcFMX
Édition
Toutes les éditions, Community comprise. Les messages d'activité en direct relèvent de l'édition Enregistrée.

Aide : Flux d'activité, Messages d'activité en direct, Tuile d'activité et Tuile d'audit.

Une visionneuse de journal en direct sur sgcGrid

Suis des milliers de lignes de journal sans figer l'écran.

TsgcGridLogModel conserve les lignes de journal avec une heure, un niveau de trace à fatal, une source et un message, et TsgcGridLogLink les affiche dans un sgcGrid en mode virtuel. Le modèle de journal est thread-safe, donc un thread de travail peut ajouter des lignes directement.

  • Suivi de la fin : remonter arrête le suivi et revenir à la fin le reprend, et Pause fige la vue pendant que l'utilisateur lit.
  • Lignes colorées par niveau, filtres par niveau, source et texte, règles de mise en évidence et export.
  • Une rafale de lignes de journal venant d'un thread de socket coûte une seule visite au thread principal.
Produit
sgcGrid
Delphi et C++Builder
TsgcGridLogModel et TsgcGridLogLink avec un TsgcVCLGrid ou un TsgcFMXGrid
Édition
Toutes les éditions, Community comprise. Les messages de journal en direct relèvent de l'édition Enregistrée.

Aide : Visionneuse de journal, TsgcGridLogModel et TsgcGridLogLink.

Sources en direct par WebSocket, MQTT et SSE

Les sources en direct du pont sgcUICoreWS prennent les messages JSON qu'un serveur envoie sur une connexion sgcWebSockets et les passent aux modèles. Les contrôles suivent aussitôt, sans code de ta part.

SourceClient sgcWebSocketsÉvénement luSélectionne les messages par
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, chaque message texteUn filtre sur un membre du message
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, chaque publicationUn filtre de topic MQTT
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, le flux d'événementsLe type d'événement SSE
  • La source ne se connecte, ne s'abonne et n'envoie jamais. L'URL, les identifiants, TLS et la reconnexion appartiennent au client, et le crochet survit à une reconnexion par le WatchDog.
  • Une source alimente plusieurs modèles par ses liaisons, donc une seule connexion peut piloter tout un écran. Une liaison peut déballer une enveloppe d'application, et ton propre gestionnaire de l'événement du client se déclenche toujours.
  • Les modèles sont toujours appelés dans le thread principal. Les messages qui arrivent dans un thread de socket sont mis en file d'attente et appliqués en une seule visite au thread principal, dans l'ordre d'arrivée.
  • Le pont est entrant uniquement. Quand l'utilisateur lit ou ferme une notification, l'application envoie sa propre trame par le même client.

Les quatre formes de message

Il n'y a pas de nouveau protocole. Chaque modèle lit le message en direct de son flux : un objet JSON par changement, avec un membre type qui nomme le flux et un membre op.

FluxtypeopModèle
Présencepresence, facultatifupsert, remove, snapshot, clearTsgcUIPresenceModel
Notificationsnotification, obligatoireadd, update, remove, read, unread, snapshotTsgcNotificationModel
Activitéactivity, obligatoireadd, update, remove, snapshotTsgcDashboardActivityModel
Journallog, facultatifappend, 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, un topic MQTT par flux
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// une liaison par modèle, choisie par son 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/+';
// la source ne s'abonne jamais : abonne-toi dans OnMQTTConnect du client
MQTT.Subscribe('ops/#');

Les sources en direct relèvent uniquement de l'édition Enregistrée et demandent sgcWebSockets, comme chaque pont sgcWebSockets de sgcUI. Sans serveur, ou dans un build Community, l'application appelle à la place l'API de chaque modèle : AddOrUpdate et SetStatus du modèle de présence, Add ou Post du modèle de notifications, Add du modèle d'activité et Append du modèle de journal.

Lis la rubrique d'aide sur les sources en direct

La démo Realtime

Une console d'exploitation pour une équipe de douze personnes, pilotée par un simulateur

La démo Realtime pour Delphi VCL dans le thème sombre : la liste de l'équipe, le flux d'activité, la boîte de réception et les préférences de notification, le badge de la cloche, le groupe d'avatars et la grille de journal en direct

La démo Suite Realtime construit une console d'exploitation avec le pack. La barre d'outils porte une cloche dont le badge est le compteur de non lues, l'avatar de l'utilisateur courant et le groupe d'avatars de l'équipe. Une liste présente chaque membre avec un indicateur de présence, un onglet contient le flux d'activité et un autre la piste d'audit, la boîte de réception des notifications se place au-dessus de l'éditeur de préférences, une grille de journal suit les lignes les plus récentes et les toasts apparaissent en bas à droite.

  • Bascule entre clair, sombre et contraste élevé, ou inverse la fenêtre de droite à gauche, pendant qu'elle tourne
  • Un simulateur déterministe construit chaque changement comme le message en direct de son modèle, donc la démo n'a besoin ni de serveur ni de sgcWebSockets
  • Lance-la avec --test result.txt pour ses auto-contrôles, une ligne PASS ou FAIL numérotée chacun
Plateformes
Delphi VCL (Delphi 7 à 13) et FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF et Avalonia
Édition requise
sgcUI Professional, Enterprise, All-Access ou Trial, les éditions qui incluent sgcDashboard. Un build de l'édition Enregistrée applique chaque changement comme un message en direct, un build Community par l'API du modèle.
Source
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime et demos\Suite\Realtime dans le dossier .NET

Produits sgcUI à l'intérieur

Voir aussi les autres démos de la suite sgcUI.

La démo Realtime pour Delphi FireMonkey dans le thème clair
FireMonkey, thème clair
La démo Realtime pour Delphi FireMonkey dans le thème sombre
FireMonkey, thème sombre

Le même pack en WinForms, WPF et Avalonia

Les modèles, les contrôles et les sources en direct portent les mêmes noms et lisent les mêmes messages JSON en .NET, dans les packages NuGet de chaque produit.

  • Modèles : TsgcUIPresenceModel (espace de noms esegece.sgcUICore), TsgcNotificationModel et TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) et TsgcGridLogModel avec TsgcGridLogLink (esegece.sgcGrid).
  • Contrôles : TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail et les autres contrôles, chacun avec son jumeau TsgcWpf et TsgcAvalonia.
  • Sources en direct : TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT et TsgcUILiveSource_SSE dans le package esegece.sgcUICore.sgcWebSockets, édition Enregistrée uniquement.
  • Les packages Community gratuits sur NuGet, comme esegece.sgcNavigation.Community et esegece.sgcGrid.Community, laissent de côté les mêmes parties que les builds Delphi Community.
  • La démo .NET a des hôtes WinForms, WPF et Avalonia au-dessus d'un projet partagé avec les modèles, le simulateur et l'auto-test.

Aide : Packages .NET et Pack Realtime UI.

Community et Enregistrée

Chaque élément suit l'édition de son produit. Les packages .NET Community laissent de côté les mêmes parties que les builds Delphi Community.

ÉlémentProduitCommunityEnregistrée
Modèle de présence avec ses messages en direct, avatars, groupe d'avatars et indicateur de présencesgcUICore
Modèle de notifications, toasts, boîte de réception et préférencessgcNavigation
Messages de notification en directsgcNavigation—
Lien de badge avec une barre d'outilssgcToolbar
Lien de badge avec un rubansgcToolbar—
Modèle d'activité, flux d'activité, piste d'audit et les deux tuilessgcDashboard
Messages d'activité en directsgcDashboard—
Modèle de journal et lien de journalsgcGrid
Messages de journal en directsgcGrid—
Sources en direct par WebSocket, MQTT et SSE (pont sgcUICoreWS, demande sgcWebSockets)sgcUICore—

Dans la suite sgcUI, sgcNavigation, sgcToolbar et sgcGrid sont dans toutes les éditions et sgcDashboard à partir de Professional. sgcUICore est fourni avec chaque produit, et chaque produit est aussi vendu seul, pour Delphi et pour .NET. Voir la matrice des fonctionnalités, la rubrique d'aide Éditions et les tarifs.

Questions fréquentes

Non. Chaque élément vit dans le produit sgcUI qu'il étend : présence et avatars dans sgcUICore, notifications dans sgcNavigation, badge de non lues dans sgcToolbar, flux d'activité et piste d'audit dans sgcDashboard, et visionneuse de journal dans sgcGrid. Tu les obtiens avec ces produits, dans les mêmes unités, packages et packages NuGet.

Seulement pour les sources en direct du pont sgcUICoreWS. Les modèles et les contrôles ne demandent que sgcUICore et leur propre produit, et une application sans serveur les pilote depuis le code. Aucun des éléments ne demande sgcHTML.

Tout serveur qui envoie un objet JSON par changement par WebSocket, par un broker MQTT ou en server-sent events. Les quatre formes de message sont documentées et les sources ne définissent aucun protocole propre. Une liaison peut aussi déballer l'enveloppe d'un protocole d'application existant.

Le pont est entrant uniquement. Quand l'utilisateur lit ou ferme une notification, l'application envoie sa propre trame par le même client sgcWebSockets. La rubrique d'aide sur les sources en direct donne un exemple.

Non. Les messages qui arrivent dans un thread de socket sont mis en file d'attente et appliqués en une seule visite au thread principal, donc une rafale de 1 000 lignes de journal coûte une visite. Le modèle de journal est aussi thread-safe, donc un thread de travail peut y ajouter des lignes directement. Sur Delphi 7 à 2009, garde la notification par défaut du client, qui notifie dans le thread principal.

Les modèles et les contrôles de chaque élément, et les messages de présence en direct. Les messages en direct des modèles de notifications, d'activité et de journal, un ruban comme cible du badge et les sources en direct relèvent uniquement de l'édition Enregistrée.

Pages produit : sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets et la suite sgcUI.

Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Construis tes écrans en direct avec sgcUI

L'essai All-Access inclut tous les produits sgcUI, pour que tu puisses essayer chaque élément du pack.