Delphi, C++Builder & .NET Schermate live

Il pacchetto Realtime UI di sgcUI

Tutto ciò che serve a una schermata che segue un sistema live, integrato nei prodotti sgcUI che già usi: chi è online, toast e una casella delle notifiche con un badge dei non letti, un feed delle attività con un registro di controllo e un visualizzatore di log live. Un server li alimenta via WebSocket, MQTT o server-sent events, oppure li pilota direttamente il tuo codice.

VCLFireMonkeyWinFormsWPFAvalonia
La demo sgcUI Realtime: l'elenco di un team con gli indicatori di presenza, il feed delle attività, la casella delle notifiche sopra le preferenze di notifica, una campanella con il conteggio dei non letti, gli avatar del team e una griglia di log live

Cinque prodotti, una schermata live

Il pacchetto Realtime UI non è un prodotto separato. Ogni parte vive nel prodotto sgcUI a cui appartiene, nelle unit, nei package e nei pacchetti NuGet che già usi, e segue l'edizione di quel prodotto. Ogni parte richiede solo sgcUICore e il prodotto che la contiene, e nessuna richiede sgcHTML.

Presenza e avatar

Chi è online, assente, occupato o offline, con avatar, un gruppo di avatar e un indicatore di presenza.

Prodotto: sgcUICore.

Presenza →

Notifiche

Un modello di notifica con toast, una casella, preferenze per categoria e canale e un badge dei non letti sulla toolbar.

Prodotti: sgcNavigation e sgcToolbar.

Notifiche →

Feed delle attività e registro di controllo

Chi ha fatto che cosa su quale oggetto, come feed, come tabella di controllo e come tile della dashboard.

Prodotto: sgcDashboard.

Attività →

Visualizzatore di log live

Una griglia che segue le righe di log più recenti, con pausa, filtri ed esportazione.

Prodotto: sgcGrid.

Log live →

Sorgenti live

Connessioni WebSocket, MQTT e server-sent events di sgcWebSockets che alimentano ogni modello.

Prodotto: sgcUICore, ponte sgcUICoreWS.

Dati live →

Da Delphi 7 a Delphi 13 con VCL, FireMonkey da Delphi XE6, C++Builder e .NET WinForms, WPF e Avalonia. Leggi l'argomento della guida sul pacchetto Realtime UI.

Presenza e avatar

Mostra chi è online, in ogni prodotto sgcUI.

TsgcUIPresenceModel tiene gli utenti e il loro stato (online, assente, occupato o offline) con un testo di stato. I controlli avatar seguono il modello, quindi un cambio di stato ridisegna subito ogni avatar e indicatore di quell'utente.

  • Il modello di presenza riceve le modifiche da AddOrUpdate e SetStatus nel codice, oppure da un messaggio live per ogni modifica.
  • Un avatar, un gruppo di avatar con un chip "+N" per gli utenti che non entrano e un indicatore di presenza con il pallino di stato e il testo di stato.
  • Il feed delle attività di sgcDashboard legge lo stesso modello, quindi ogni attore mostra il suo avatar e il suo stato.
Prodotto
sgcUICore, condiviso da ogni prodotto sgcUI
Delphi e C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator e i loro gemelli TsgcFMX
Edizione
Ogni edizione, Community compresa, anche i messaggi live di presenza

Guida: Presenza e Avatar e indicatore di presenza.

Toast, casella, preferenze e badge

Un centro notifiche per le applicazioni desktop.

TsgcNotificationModel tiene le notifiche con il loro titolo, la gravità, la categoria e lo stato di lettura, e mantiene il conteggio dei non letti. Il gestore dei toast, la casella, le preferenze e il badge link lo seguono tutti.

  • Toast: un toast per ogni nuova notifica non letta, che si ferma mentre il puntatore è sopra.
  • Casella delle notifiche: le notifiche raggruppate per giorno, tutte o solo quelle non lette, con Segna tutto come letto.
  • Preferenze di notifica: una riga per categoria e una colonna per canale, con il relativo editor. Disattivare il canale pop-up di una categoria ne ferma i toast, e la casella le elenca comunque.
  • Badge dei non letti: TsgcToolbarBadgeLink di sgcToolbar mostra il conteggio dei non letti su una voce di toolbar o ribbon, 99+ oltre 99.
Prodotti
sgcNavigation (modello, toast, casella e preferenze) e sgcToolbar (badge link)
Delphi and C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor e i loro gemelli TsgcFMX
Edizione
Ogni edizione, Community compresa. I messaggi live di notifica e un ribbon come bersaglio del badge sono Registered.

Guida: Notifiche, Toast, Casella delle notifiche, Preferenze di notifica, Messaggi live di notifica e TsgcToolbarBadgeLink.

Feed delle attività e registro di controllo

Chi ha fatto che cosa, e che cosa è cambiato.

TsgcDashboardActivityModel registra ogni attività come un attore, un verbo e un oggetto, con i campi modificati. Il feed delle attività e il registro di controllo sono due viste dello stesso modello.

  • Feed delle attività: l'attività più recente per prima, con orari relativi e l'avatar di ogni attore preso dal modello di presenza.
  • Registro di controllo: una tabella le cui righe si espandono sui campi modificati.
  • Entrambi sono controlli autonomi e anche tile di attività e di controllo per una dashboard.
Prodotto
sgcDashboard
Delphi and C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile e i loro gemelli TsgcFMX
Edizione
Ogni edizione, Community compresa. I messaggi live di attività sono Registered.

Guida: Feed delle attività, Messaggi live di attività, Tile attività e Tile controllo.

Un visualizzatore di log live su sgcGrid

Segui migliaia di righe di log senza bloccare la schermata.

TsgcGridLogModel tiene le righe di log con un orario, un livello da trace a fatal, una sorgente e un messaggio, e TsgcGridLogLink le mostra in una sgcGrid in modalità virtuale. Il modello di log è thread safe, quindi un thread di lavoro può aggiungere righe direttamente.

  • Segui la coda: scorrere verso l'alto interrompe il seguimento e tornare in fondo lo riprende, e Pausa ferma la vista mentre l'utente legge.
  • Righe colorate per livello, filtri per livello, sorgente e testo, regole di evidenziazione ed esportazione.
  • Una raffica di righe di log da un thread socket costa una sola visita al thread principale.
Prodotto
sgcGrid
Delphi and C++Builder
TsgcGridLogModel e TsgcGridLogLink con una TsgcVCLGrid o una TsgcFMXGrid
Edizione
Ogni edizione, Community compresa. I messaggi live di log sono Registered.

Guida: Visualizzatore di log, TsgcGridLogModel e TsgcGridLogLink.

Sorgenti live via WebSocket, MQTT e SSE

Le sorgenti live del ponte sgcUICoreWS prendono i messaggi JSON che un server invia su una connessione sgcWebSockets e li passano ai modelli. I controlli seguono subito, senza codice tuo.

SorgenteClient sgcWebSocketsEvento che leggeSeleziona i messaggi per
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, ogni messaggio di testoUn filtro su un membro del messaggio
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, ogni publishUn filtro sul topic MQTT
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, il flusso di eventiIl tipo di evento SSE
  • La sorgente non si connette, non si sottoscrive e non invia mai. L'URL, le credenziali, TLS e la riconnessione appartengono al client, e l'aggancio sopravvive a una riconnessione del WatchDog.
  • Una sorgente alimenta più modelli tramite i suoi binding, quindi una connessione può pilotare un'intera schermata. Un binding può estrarre il contenuto da una busta applicativa, e il tuo gestore dell'evento del client scatta comunque.
  • I modelli sono sempre chiamati nel thread principale. I messaggi che arrivano in un thread socket sono messi in coda e applicati in una sola visita al thread principale, in ordine di arrivo.
  • Il ponte è solo in ingresso. Quando l'utente legge o chiude una notifica, l'applicazione invia un suo frame tramite lo stesso client.

Le quattro forme dei messaggi

Non c'è alcun nuovo protocollo. Ogni modello legge il messaggio live del suo feed: un oggetto JSON per ogni modifica, con un membro type che nomina il feed e un membro op.

FeedtypeopModello
Presenzapresence, facoltativoupsert, remove, snapshot, clearTsgcUIPresenceModel
Notifichenotification, obbligatorioadd, update, remove, read, unread, snapshotTsgcNotificationModel
Attivitàactivity, obbligatorioadd, update, remove, snapshotTsgcDashboardActivityModel
Loglog, facoltativoappend, 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 per feed
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// un binding per modello, selezionato dal suo 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 sorgente non si sottoscrive mai: sottoscrivi in OnMQTTConnect del client
MQTT.Subscribe('ops/#');

Le sorgenti live sono solo Registered e richiedono sgcWebSockets, come ogni ponte sgcWebSockets di sgcUI. Senza un server, o in una build Community, l'applicazione chiama invece l'API di ogni modello: AddOrUpdate e SetStatus del modello di presenza, Add o Post del modello di notifica, Add del modello di attività e Append del modello di log.

Leggi l'argomento della guida sulle sorgenti live

La demo Realtime

Una console operativa per un team di dodici persone, pilotata da un simulatore

La demo Realtime per Delphi VCL nel tema scuro: l'elenco del team, il feed delle attività, la casella e le preferenze di notifica, il badge della campanella, il gruppo di avatar e la griglia di log live

La demo di suite Realtime costruisce una console operativa con il pacchetto. La toolbar porta una campanella il cui badge è il conteggio dei non letti, l'avatar dell'utente corrente e il gruppo di avatar del team. Un elenco mostra ogni membro con un indicatore di presenza, una scheda contiene il feed delle attività e una il registro di controllo, la casella delle notifiche sta sopra l'editor delle preferenze, una griglia di log segue le righe più recenti e i toast compaiono in basso a destra.

  • Passa tra chiaro, scuro e alto contrasto, o specchia la finestra da destra a sinistra, mentre è in esecuzione
  • Un simulatore deterministico costruisce ogni modifica come messaggio live del suo modello, quindi la demo non richiede alcun server né sgcWebSockets
  • Eseguila con --test result.txt per le sue autoverifiche, una riga numerata PASS o FAIL ciascuna
Piattaforme
Delphi VCL (da Delphi 7 a 13) e FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF e Avalonia
Edizione necessaria
sgcUI Professional, Enterprise, All-Access o Trial, le edizioni che includono sgcDashboard. Una build Registered applica ogni modifica come messaggio live, una build Community tramite l'API del modello.
Sorgente
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime e demos\Suite\Realtime nella cartella .NET

Prodotti sgcUI inclusi

Vedi anche le altre demo di suite sgcUI.

La demo Realtime per Delphi FireMonkey nel tema chiaro
FireMonkey, tema chiaro
La demo Realtime per Delphi FireMonkey nel tema scuro
FireMonkey, tema scuro

Lo stesso pacchetto in WinForms, WPF e Avalonia

I modelli, i controlli e le sorgenti live hanno gli stessi nomi e leggono gli stessi messaggi JSON in .NET, nei pacchetti NuGet di ogni prodotto.

  • Modelli: TsgcUIPresenceModel (namespace esegece.sgcUICore), TsgcNotificationModel e TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) e TsgcGridLogModel con TsgcGridLogLink (esegece.sgcGrid).
  • Controlli: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail e gli altri controlli, ciascuno con il suo gemello TsgcWpf e TsgcAvalonia.
  • Sorgenti live: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT e TsgcUILiveSource_SSE nel pacchetto esegece.sgcUICore.sgcWebSockets, solo Registered.
  • I pacchetti Community gratuiti su NuGet, come esegece.sgcNavigation.Community e esegece.sgcGrid.Community, escludono le stesse parti delle build Delphi Community.
  • La demo .NET ha host WinForms, WPF e Avalonia su un unico progetto condiviso con i modelli, il simulatore e l'autoverifica.

Guida: Pacchetti .NET e Pacchetto Realtime UI.

Community e Registered

Ogni parte segue l'edizione del suo prodotto. I pacchetti .NET Community escludono le stesse parti delle build Delphi Community.

ParteProdottoCommunityRegistered
Modello di presenza con i suoi messaggi live, avatar, gruppo di avatar e indicatore di presenzasgcUICore
Modello di notifica, toast, casella e preferenzesgcNavigation
Messaggi live di notificasgcNavigation—
Badge link con una toolbarsgcToolbar
Badge link con un ribbonsgcToolbar—
Modello di attività, feed delle attività, registro di controllo ed entrambi i tilesgcDashboard
Messaggi live di attivitàsgcDashboard—
Modello di log e log linksgcGrid
Messaggi live di logsgcGrid—
Sorgenti live via WebSocket, MQTT e SSE (ponte sgcUICoreWS, richiede sgcWebSockets)sgcUICore—

Nella suite sgcUI, sgcNavigation, sgcToolbar e sgcGrid sono in ogni edizione e sgcDashboard da Professional. sgcUICore è incluso in ogni prodotto, e ogni prodotto si vende anche da solo, per Delphi e per .NET. Vedi la matrice delle funzionalità, l'argomento della guida Edizioni e i prezzi.

Domande frequenti

No. Ogni parte vive nel prodotto sgcUI a cui appartiene: presenza e avatar in sgcUICore, notifiche in sgcNavigation, il badge dei non letti in sgcToolbar, il feed delle attività e il registro di controllo in sgcDashboard e il visualizzatore di log in sgcGrid. Le ottieni con quei prodotti, nelle stesse unit, negli stessi package e pacchetti NuGet.

Solo per le sorgenti live del ponte sgcUICoreWS. I modelli e i controlli richiedono solo sgcUICore e il loro prodotto, e un'applicazione senza server li pilota dal codice. Nessuna delle parti richiede sgcHTML.

Qualsiasi server che invii un oggetto JSON per ogni modifica via WebSocket, tramite un broker MQTT o come server-sent events. Le quattro forme dei messaggi sono documentate e le sorgenti non definiscono alcun protocollo proprio. Un binding può anche estrarre il contenuto dalla busta di un protocollo applicativo esistente.

Il ponte è solo in ingresso. Quando l'utente legge o chiude una notifica, l'applicazione invia un suo frame tramite lo stesso client sgcWebSockets. L'argomento della guida sulle sorgenti live contiene un esempio.

No. I messaggi che arrivano in un thread socket sono messi in coda e applicati in una sola visita al thread principale, quindi una raffica di 1.000 righe di log costa una sola visita. Il modello di log è anche thread safe, quindi un thread di lavoro può aggiungere righe direttamente. Su Delphi da 7 a 2009 mantieni la notifica predefinita del client, che notifica nel thread principale.

I modelli e i controlli di ogni parte, e i messaggi live di presenza. I messaggi live dei modelli di notifica, attività e log, un ribbon come bersaglio del badge e le sorgenti live sono solo Registered.

Pagine dei prodotti: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets e la suite sgcUI.

La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Costruisci le tue schermate live con sgcUI

Il trial All-Access include ogni prodotto sgcUI, così puoi provare ogni parte del pacchetto.