Pacchetto sgcUI Realtime UI: presenza, notifiche, attività e log in tempo reale per Delphi, C++Builder e .NET

· Componenti
Pacchetto sgcUI Realtime UI: presenza, notifiche, attività e log in tempo reale per Delphi e .NET
Novità · pacchetto sgcUI Realtime UI

La tua applicazione, in tempo reale.
Chi è online, cosa è successo, cosa sta fallendo.

Avatar di presenza, toast e una casella di notifiche, un badge a campanella, un feed di attività con audit trail e un visualizzatore di log in tempo reale, tutto alimentato da WebSocket, MQTT o Server Sent Events. Controlli nativi per Delphi, C++Builder e .NET.

  • VCL
  • FireMonkey
  • C++Builder
  • WinForms
  • WPF
  • Avalonia
La demo di operations Realtime: presenza del team, feed di attività, casella di notifiche e un log in tempo reale
4modelli live
3sorgenti live
6framework UI
12lingue

Console operative, help desk, pannelli di amministrazione e schermate di trading devono rispondere tutti alle stesse domande mentre i dati continuano a muoversi: chi è online in questo momento, cosa richiede la mia attenzione, chi ha cambiato cosa e cosa sta fallendo adesso. Il pacchetto sgcUI Realtime UI risponde a ciascuna con un modello e un insieme di controlli nativi, e li collega tutti a un feed live con un unico tipo di messaggio JSON.

Il pacchetto Realtime UI in un minuto: presenza, notifiche, attività e log in tempo reale, alimentati da un unico messaggio JSON. Anche su YouTube.

PresenzaAvatar, indicatori di stato e chi è online
NotificheToast, una casella, preferenze e un badge a campanella
AttivitàUn feed di chi ha fatto cosa e un audit trail
LogUn visualizzatore di log live su qualsiasi sgcGrid

Il pacchetto Realtime UI non è un prodotto separato. Ogni componente vive nel prodotto sgcUI che estende, sgcUICore, sgcNavigation, sgcToolbar, sgcDashboard e sgcGrid, nelle unit, nei package e nei pacchetti NuGet che già usi, e segue l'edizione di quel prodotto. Funziona con VCL e FireMonkey per Delphi e C++Builder, e con WinForms, WPF e Avalonia per .NET, con temi chiaro, scuro e ad alto contrasto, layout da destra a sinistra e 12 lingue.

Presenza: chi è online

TsgcUIPresenceModel mantiene gli utenti della tua applicazione con nome, iniziali, colore, immagine dell'avatar, stato (online, assente, occupato o offline), testo di stato e ora dell'ultimo accesso. I controlli leggono il modello e si ridisegnano da soli quando cambia uno stato.

Un elenco del team con indicatori di presenza e un gruppo di avatar con un chip +7
L'elenco del team e il gruppo di avatar della toolbar, entrambi disegnati da un unico modello di presenza.
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;

Notifiche: toast, una casella e un badge a campanella

TsgcNotificationModel contiene le notifiche dell'utente corrente, con titolo, corpo, gravità, ora, stato di lettura, azioni e gruppo, e tiene il conteggio delle non lette. Quattro componenti lo mostrano:

La casella di notifiche sopra l'editor delle preferenze e l'elemento Notifiche della toolbar con il suo badge delle non lette
La casella raggruppata per giorno, le preferenze dei canali per categoria e il badge delle non lette nella 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;

Feed di attività e audit trail: chi ha fatto cosa

TsgcDashboardActivityModel registra chi ha fatto cosa e quando: l'attore, un verbo, l'oggetto, un esito e, ai fini dell'audit, il valore prima e dopo di ogni campo modificato. Nomi, colori e avatar degli attori provengono dal modello di presenza, quindi il feed e l'elenco del team coincidono sempre.

Il feed di attività con avatar degli attori, verbi, oggetti ed esiti
Il feed di attività: ogni riga mostra l'avatar dell'attore, il verbo, l'oggetto e l'esito.
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;

Visualizzatore di log live: cosa sta fallendo adesso

TsgcGridLogModel è un buffer circolare thread safe di righe di log con livelli da trace a fatal, una sorgente, un messaggio e proprietà, filtri per livello, sorgente e testo, ed esportazione in testo, JSON e CSV. Qualsiasi thread può aggiungere righe; le modifiche arrivano sullo schermo a blocchi. TsgcGridLogLink trasforma qualsiasi sgcGrid in un visualizzatore di log.

Un log live in uno sgcGrid con righe di avviso e di informazione nei colori del loro livello
Il log live: uno sgcGrid con colori dei livelli, Pause, Resume, un filtro per livello e 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');

Dati live: un messaggio per ogni feed

I quattro modelli leggono lo stesso tipo di messaggio JSON, quindi una sola connessione può trasportarli tutti. Ogni messaggio indica il proprio type e una op, e ogni modello prende solo i propri:

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

Tre sorgenti live collegano i modelli a un server tramite sgcWebSockets: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT e TsgcUILiveSource_SSE. Ogni sorgente si aggancia a un client già configurato, con il suo URL, le credenziali, TLS e riconnessione, e consegna ogni messaggio ai suoi binding. I messaggi che arrivano su un thread di lavoro vengono applicati sul thread principale in un unico blocco, così una raffica di mille righe di log costa una sola visita all'interfaccia utente. Un binding può anche scegliere un topic MQTT, il nome di un evento SSE, un filtro o un percorso all'interno di un envelope applicativo.

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;

Le sorgenti live sono Registered e richiedono sgcWebSockets, come ogni bridge di sgcUI con sgcWebSockets. Senza un server, o in una build Community, l'applicazione chiama invece l'API del modello: AddOrUpdate e SetStatus, Add o Post, AddActivity e Append.

Ogni piattaforma, chiaro e scuro

Gli stessi modelli e lo stesso JSON funzionano su ogni piattaforma. I controlli .NET sono controlli nativi WinForms, WPF e Avalonia con gli stessi nomi nei pacchetti esegece.sgcUICore, esegece.sgcNavigation, esegece.sgcToolbar, esegece.sgcDashboard e esegece.sgcGrid, e ogni tema della suite, scuro e ad alto contrasto inclusi, raggiunge i nuovi controlli.

La demo di operations Realtime su WinForms
WinForms
La demo di operations Realtime su WPF
WPF
La demo di operations Realtime su Avalonia con i toast in basso a destra
Avalonia
La demo di operations Realtime su FireMonkey, tema chiaro
FireMonkey, chiaro
La demo di operations Realtime su FireMonkey, tema scuro
FireMonkey, scuro

La demo di operations Realtime

La demo di operations Realtime riunisce ogni componente in una sola schermata: un elenco del team, toast con la casella e le preferenze, un badge a campanella, il feed di attività e l'audit trail, e un log live, il tutto guidato da un simulatore integrato, quindi funziona senza server. È inclusa per VCL, FireMonkey e C++Builder nelle demo della Suite Delphi, e per WinForms, WPF e Avalonia nelle demo della Suite .NET, e il simulatore produce la stessa sequenza su ogni piattaforma. Una seconda demo VCL, RealtimeLive, invia gli stessi messaggi tramite un server WebSocket in-process e un TsgcUILiveSource_WebSocket, e un campo URL permette di collegarla invece al tuo server.

Edizioni

Ogni componente segue l'edizione del prodotto che lo contiene. I componenti di presenza di sgcUICore e quelli di log di sgcGrid sono presenti in ogni edizione, Community inclusa, e così anche i messaggi di presenza. I componenti di notifica e badge richiedono sgcNavigation e sgcToolbar, in sgcUI Standard e superiori, e quelli di attività richiedono sgcDashboard, in sgcUI Professional e superiori. Anche i pacchetti .NET Community gratuiti li includono, mentre l'edizione Community per Delphi contiene solo sgcGrid. I messaggi live di notifiche, attività e log, la ribbon come destinazione del badge e le tre sorgenti live sono Registered. Leggi la pagina del pacchetto Realtime UI e la guida del pacchetto Realtime UI per i dettagli di ogni prodotto.

Rendi la tua applicazione live

Una versione di prova per Delphi e una per C++Builder installano ogni prodotto sgcUI, pacchetto Realtime UI incluso.

Domande o feedback? Mettiti in contatto, riceverai una risposta dalle persone che hanno scritto il codice.