Delphi, C++Builder & .NET Live schermen

Het sgcUI Realtime UI-pakket

Alles wat een scherm nodig heeft dat een live systeem volgt, ingebouwd in de sgcUI-producten die je al gebruikt: wie er online is, toastmeldingen en een meldingeninbox met een badge voor ongelezen meldingen, een activiteitenfeed met een audittrail en een live logviewer. Een server voedt ze via WebSocket, MQTT of Server-Sent Events, of je eigen code stuurt ze rechtstreeks aan.

VCLFireMonkeyWinFormsWPFAvalonia
De sgcUI Realtime-demo: een teamlijst met aanwezigheidsindicatoren, de activiteitenfeed, de meldingeninbox boven de meldingsvoorkeuren, een bel met het aantal ongelezen meldingen, de avatars van het team en een raster met live logs

Vijf producten, één live scherm

Het Realtime UI-pakket is geen apart product. Elk onderdeel zit in het sgcUI-product waar het bij hoort, in de units, pakketten en NuGet-pakketten die je al gebruikt, en volgt de editie van dat product. Elk onderdeel heeft alleen sgcUICore en het product dat het bevat nodig, en geen enkel onderdeel heeft sgcHTML nodig.

Aanwezigheid en avatars

Wie er online, afwezig, bezet of offline is, met avatars, een avatargroep en een aanwezigheidsindicator.

Product: sgcUICore.

Aanwezigheid →

Meldingen

Een meldingsmodel met toastmeldingen, een inbox, voorkeuren per categorie en kanaal, en een badge voor ongelezen meldingen op de werkbalk.

Producten: sgcNavigation en sgcToolbar.

Meldingen →

Activiteitenfeed en audittrail

Wie wat met welk object heeft gedaan, als feed, als audittabel en als dashboardtegels.

Product: sgcDashboard.

Activiteit →

Live logviewer

Een raster dat de nieuwste logregels volgt, met pauzeren, filters en export.

Product: sgcGrid.

Live logs →

Live-bronnen

WebSocket-, MQTT- en Server-Sent Events-verbindingen van sgcWebSockets die elk model voeden.

Product: sgcUICore, bridge sgcUICoreWS.

Live gegevens →

Van Delphi 7 tot Delphi 13 met VCL, FireMonkey vanaf Delphi XE6, C++Builder, en .NET WinForms, WPF en Avalonia. Lees het helponderwerp over het Realtime UI-pakket.

Aanwezigheid en avatars

Toon wie er online is, in elk sgcUI-product.

TsgcUIPresenceModel bewaart de gebruikers en hun status (online, afwezig, bezet of offline) met een statustekst. De avatar-besturingselementen volgen het model, zodat een statuswijziging alle avatars en indicatoren van die gebruiker tegelijk opnieuw tekent.

  • Het aanwezigheidsmodel krijgt zijn wijzigingen via AddOrUpdate en SetStatus in code, of via een live bericht per wijziging.
  • Een avatar, een avatargroep met een "+N"-chip voor de gebruikers die niet passen, en een aanwezigheidsindicator met de statuspunt en de statustekst.
  • De activiteitenfeed van sgcDashboard leest hetzelfde model, zodat elke actor zijn avatar en aanwezigheid toont.
Product
sgcUICore, gedeeld door alle sgcUI-producten
Delphi en C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator en hun TsgcFMX-tegenhangers
Editie
Alle edities, ook Community, en ook de live aanwezigheidsberichten

Help: Aanwezigheid en Avatars en aanwezigheidsindicator.

Toastmeldingen, inbox, voorkeuren en badges

Een meldingencentrum voor desktoptoepassingen.

TsgcNotificationModel bewaart de meldingen met hun titel, ernst, categorie en gelezen-status, en houdt de teller van ongelezen meldingen bij. De toastmanager, de inbox, de voorkeuren en de badgelink volgen het model.

  • Toastmeldingen: een toastmelding voor elke nieuwe ongelezen melding, die pauzeert zolang de aanwijzer erboven staat.
  • Meldingeninbox: de meldingen gegroepeerd per dag, alle of alleen de ongelezene, met Alles als gelezen markeren.
  • Meldingsvoorkeuren: een rij per categorie en een kolom per kanaal, met een editor. Het pop-upkanaal van een categorie uitzetten stopt haar toastmeldingen, en de inbox toont ze nog wel.
  • Badge voor ongelezen meldingen: TsgcToolbarBadgeLink van sgcToolbar toont het aantal ongelezen meldingen op een werkbalk- of ribbon-item, 99+ boven 99.
Producten
sgcNavigation (model, toastmeldingen, inbox en voorkeuren) en sgcToolbar (badgelink)
Delphi en C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor en hun TsgcFMX-tegenhangers
Editie
Alle edities, ook Community. De live meldingsberichten en een ribbon als badgedoel zijn Geregistreerd.

Help: Meldingen, Toastmeldingen, Meldingeninbox, Meldingsvoorkeuren, Live meldingsberichten en TsgcToolbarBadgeLink.

Activiteitenfeed en audittrail

Wie wat deed, en wat er veranderde.

TsgcDashboardActivityModel legt elke activiteit vast als een actor, een werkwoord en een object, met de velden die zijn gewijzigd. De activiteitenfeed en de audittrail zijn twee weergaven van hetzelfde model.

  • Activiteitenfeed: het nieuwste bovenaan, met relatieve tijden en de avatar van elke actor uit het aanwezigheidsmodel.
  • Audittrail: een tabel waarvan de rijen uitklappen naar de gewijzigde velden.
  • Beide zijn losse besturingselementen en ook activiteits- en audittegels voor een dashboard.
Product
sgcDashboard
Delphi en C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile en hun TsgcFMX-tegenhangers
Editie
Alle edities, ook Community. De live activiteitsberichten zijn Geregistreerd.

Help: Activiteitenfeed, Live activiteitsberichten, Activiteitstegel en Audittegel.

Een live logviewer op sgcGrid

Volg duizenden logregels zonder dat het scherm vastloopt.

TsgcGridLogModel bewaart de logregels met een tijd, een niveau van trace tot fatal, een bron en een bericht, en TsgcGridLogLink toont ze in een sgcGrid in virtuele modus. Het logmodel is threadveilig, dus een werkthread kan regels rechtstreeks toevoegen.

  • Staart volgen: omhoog scrollen stopt het volgen en terug naar het einde hervat het, en Pauze houdt de weergave stil terwijl de gebruiker leest.
  • Regels gekleurd per niveau, filters op niveau, bron en tekst, markeerregels en export.
  • Een salvo logregels vanuit een socketthread kost maar één bezoek aan de hoofdthread.
Product
sgcGrid
Delphi en C++Builder
TsgcGridLogModel en TsgcGridLogLink met een TsgcVCLGrid of een TsgcFMXGrid
Editie
Alle edities, ook Community. De live logberichten zijn Geregistreerd.

Help: Logviewer, TsgcGridLogModel en TsgcGridLogLink.

Live-bronnen via WebSocket, MQTT en SSE

De live-bronnen van de bridge sgcUICoreWS nemen de JSON-berichten die een server over een sgcWebSockets-verbinding stuurt en geven ze aan de modellen. De besturingselementen volgen ze direct, zonder code van jou.

BronsgcWebSockets-clientGebeurtenis die ze leestSelecteert berichten op
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, elk tekstberichtEen filter op een lid van het bericht
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, elke publicatieEen MQTT-onderwerpfilter
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, de gebeurtenisstroomHet SSE-gebeurtenistype
  • De bron maakt nooit verbinding, abonneert zich nooit en verstuurt niets. De URL, de inloggegevens, TLS en het opnieuw verbinden zijn aan de client, en de koppeling overleeft een herverbinding van de WatchDog.
  • Eén bron voedt meerdere modellen via zijn koppelingen, zodat één verbinding een heel scherm kan aansturen. Een koppeling kan een toepassingsenvelop uitpakken, en je eigen gebeurtenishandler van de client blijft afgaan.
  • De modellen worden altijd in de hoofdthread aangeroepen. Berichten die in een socketthread binnenkomen, komen in een wachtrij en worden in één bezoek aan de hoofdthread toegepast, in volgorde van aankomst.
  • De bridge werkt alleen inkomend. Als de gebruiker een melding leest of verwijdert, stuurt de toepassing haar eigen frame via dezelfde client.

De vier berichtvormen

Er is geen nieuw protocol. Elk model leest het live bericht van zijn stroom: een JSON-object per wijziging, met een lid type dat de stroom noemt en een lid op.

StroomtypeopModel
Aanwezigheidpresence, optioneelupsert, remove, snapshot, clearTsgcUIPresenceModel
Meldingennotification, verplichtadd, update, remove, read, unread, snapshotTsgcNotificationModel
Activiteitactivity, verplichtadd, update, remove, snapshotTsgcDashboardActivityModel
Loglog, optioneelappend, 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, een MQTT-onderwerp per stroom
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// een koppeling per model, geselecteerd op zijn onderwerp
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/+';
// de bron abonneert zich nooit: abonneer in OnMQTTConnect van de client
MQTT.Subscribe('ops/#');

De live-bronnen zijn alleen Geregistreerd en hebben sgcWebSockets nodig, zoals alle sgcUI-bridges met sgcWebSockets. Zonder server, of in een Community-build, roept de toepassing in plaats daarvan de API van elk model aan: AddOrUpdate en SetStatus van het aanwezigheidsmodel, Add of Post van het meldingsmodel, Add van het activiteitenmodel en Append van het logmodel.

Lees het helponderwerp Live-bronnen

De Realtime-demo

Een operatieconsole voor een team van twaalf, aangestuurd door een simulator

De Realtime-demo voor Delphi VCL in het donkere thema: de teamlijst, de activiteitenfeed, de inbox en de voorkeuren voor meldingen, de badge van de bel, de avatargroep en het raster met live logs

De Realtime-demo van de suite bouwt met het pakket een operatieconsole. De werkbalk heeft een bel waarvan de badge het aantal ongelezen meldingen is, de avatar van de huidige gebruiker en de avatargroep van het team. Een lijst toont elk lid met een aanwezigheidsindicator, een tabblad bevat de activiteitenfeed en een ander de audittrail, de meldingeninbox staat boven de voorkeureneditor, een lograster volgt de nieuwste regels en de toastmeldingen verschijnen rechtsonder.

  • Wissel tijdens het draaien tussen licht, donker en hoog contrast, of spiegel het venster van rechts naar links
  • Een deterministische simulator bouwt elke wijziging als het live bericht van zijn model, dus de demo heeft geen server en geen sgcWebSockets nodig
  • Start hem met --test result.txt voor de zelfcontroles, met een genummerde regel PASS of FAIL voor elke controle
Platforms
Delphi VCL (Delphi 7 tot 13) en FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF en Avalonia
Benodigde editie
sgcUI Professional, Enterprise, All-Access of proefversie, de edities met sgcDashboard. Een Geregistreerd-build past elke wijziging toe als live bericht, een Community-build via de API van het model.
Broncode
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime en demos\Suite\Realtime in de .NET-map

sgcUI-producten erin

Bekijk ook de andere demo's van de sgcUI-suite.

De Realtime-demo voor Delphi FireMonkey in het lichte thema
FireMonkey, licht thema
De Realtime-demo voor Delphi FireMonkey in het donkere thema
FireMonkey, donker thema

Hetzelfde pakket op WinForms, WPF en Avalonia

De modellen, de besturingselementen en de live-bronnen hebben in .NET dezelfde namen en lezen dezelfde JSON-berichten, in de NuGet-pakketten van elk product.

  • Modellen: TsgcUIPresenceModel (naamruimte esegece.sgcUICore), TsgcNotificationModel en TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) en TsgcGridLogModel met TsgcGridLogLink (esegece.sgcGrid).
  • Besturingselementen: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail en de andere besturingselementen, elk met zijn TsgcWpf- en TsgcAvalonia-tegenhanger.
  • Live-bronnen: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT en TsgcUILiveSource_SSE in het pakket esegece.sgcUICore.sgcWebSockets, alleen Geregistreerd.
  • De gratis NuGet Community-pakketten, zoals esegece.sgcNavigation.Community en esegece.sgcGrid.Community, laten dezelfde onderdelen weg als de Community-builds van Delphi.
  • De .NET-demo heeft hosts voor WinForms, WPF en Avalonia op een gedeeld project met de modellen, de simulator en de zelfcontrole.

Help: .NET-pakketten en Realtime UI-pakket.

Community en Geregistreerd

Elk onderdeel volgt de editie van zijn product. De .NET Community-pakketten laten dezelfde onderdelen weg als de Community-builds van Delphi.

OnderdeelProductCommunityGeregistreerd
Aanwezigheidsmodel met zijn live berichten, avatars, avatargroep en aanwezigheidsindicatorsgcUICore
Meldingsmodel, toastmeldingen, inbox en voorkeurensgcNavigation
Live meldingsberichtensgcNavigation—
Badgelink met een werkbalksgcToolbar
Badgelink met een ribbonsgcToolbar—
Activiteitenmodel, activiteitenfeed, audittrail en beide tegelssgcDashboard
Live activiteitsberichtensgcDashboard—
Logmodel en loglinksgcGrid
Live logberichtensgcGrid—
Live-bronnen via WebSocket, MQTT en SSE (bridge sgcUICoreWS, vereist sgcWebSockets)sgcUICore—

In de sgcUI-suite zitten sgcNavigation, sgcToolbar en sgcGrid in alle edities en sgcDashboard vanaf Professional. sgcUICore wordt met elk product meegeleverd, en elk product wordt ook los verkocht, voor Delphi en voor .NET. Zie de functiematrix, het helponderwerp Edities en de prijzen.

Veelgestelde vragen

Nee. Elk onderdeel zit in het sgcUI-product waar het bij hoort: aanwezigheid en avatars in sgcUICore, meldingen in sgcNavigation, de badge voor ongelezen meldingen in sgcToolbar, de activiteitenfeed en de audittrail in sgcDashboard, en de logviewer in sgcGrid. Je krijgt ze met die producten, in dezelfde units, pakketten en NuGet-pakketten.

Alleen voor de live-bronnen van de bridge sgcUICoreWS. De modellen en de besturingselementen hebben alleen sgcUICore en hun eigen product nodig, en een toepassing zonder server stuurt ze aan vanuit code. Geen enkel onderdeel heeft sgcHTML nodig.

Elke server die één JSON-object per wijziging verstuurt via WebSocket, via een MQTT-broker of als Server-Sent Events. De vier berichtvormen zijn gedocumenteerd en de bronnen definiëren geen eigen protocol. Een koppeling kan ook de envelop van een bestaand toepassingsprotocol uitpakken.

De bridge werkt alleen inkomend. Als de gebruiker een melding leest of verwijdert, stuurt de toepassing haar eigen frame via dezelfde sgcWebSockets-client. Het helponderwerp Live-bronnen bevat een voorbeeld.

Nee. Berichten die in een socketthread binnenkomen, komen in een wachtrij en worden in één bezoek aan de hoofdthread toegepast, dus een salvo van 1.000 logregels kost maar één bezoek. Het logmodel is ook threadveilig, zodat een werkthread regels rechtstreeks kan toevoegen. Houd in Delphi 7 tot 2009 de standaardmelding van de client aan, die in de hoofdthread meldt.

De modellen en de besturingselementen van elk onderdeel, en de live aanwezigheidsberichten. De live berichten van de modellen voor meldingen, activiteit en logs, een ribbon als badgedoel en de live-bronnen zijn alleen Geregistreerd.

Productpagina's: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets en de sgcUI-suite.

De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Bouw je live schermen met sgcUI

De All-Access-proefversie bevat elk sgcUI-product, zodat je elk onderdeel van het pakket kunt uitproberen.