Pakiet interfejsu sgcUI Realtime: obecność, powiadomienia, aktywność i logi na żywo dla Delphi, C++Builder i .NET

· Komponenty
Pakiet interfejsu sgcUI Realtime: obecność, powiadomienia, aktywność i logi na żywo dla Delphi i .NET
Nowość · pakiet interfejsu sgcUI Realtime

Twoja aplikacja, na żywo.
Kto jest online, co się stało, co zawodzi.

Awatary obecności, powiadomienia toast i skrzynka powiadomień, plakietka w kształcie dzwonka, strumień aktywności ze ścieżką audytu oraz przeglądarka logów na żywo, wszystko zasilane przez WebSocket, MQTT lub Server Sent Events. Natywne kontrolki dla Delphi, C++Builder i .NET.

  • VCL
  • FireMonkey
  • C++Builder
  • WinForms
  • WPF
  • Avalonia
Demo operacyjne Realtime: obecność zespołu, strumień aktywności, skrzynka powiadomień i log na żywo
4modele na żywo
3źródła na żywo
6frameworki UI
12języków

Konsole operacyjne, systemy helpdesk, panele administracyjne i ekrany transakcyjne muszą odpowiadać na te same pytania, podczas gdy dane stale się zmieniają: kto jest teraz online, co wymaga mojej uwagi, kto co zmienił i co w tej chwili zawodzi. Pakiet interfejsu sgcUI Realtime odpowiada na każde z nich za pomocą modelu i zestawu natywnych kontrolek, a wszystkie łączy ze strumieniem na żywo przy użyciu jednego rodzaju komunikatu JSON.

Pakiet Realtime UI w minutę: obecność, powiadomienia, aktywność i logi na żywo, zasilane jednym komunikatem JSON. Również w serwisie YouTube.

ObecnośćAwatary, wskaźniki statusu i informacja, kto jest online
PowiadomieniaToasty, skrzynka odbiorcza, preferencje i plakietka w kształcie dzwonka
AktywnośćStrumień informacji, kto co zrobił, oraz ścieżka audytu
LogiPrzeglądarka logów na żywo w dowolnym sgcGrid

Pakiet interfejsu Realtime nie jest osobnym produktem. Każdy element znajduje się w produkcie sgcUI, który rozszerza, czyli sgcUICore, sgcNavigation, sgcToolbar, sgcDashboard i sgcGrid, w jednostkach, pakietach i pakietach NuGet, których już używasz, i podlega edycji tego produktu. Działa w VCL i FireMonkey dla Delphi i C++Builder oraz w WinForms, WPF i Avalonia dla .NET, z motywami jasnym, ciemnym i wysokiego kontrastu, układami od prawej do lewej oraz 12 językami.

Obecność: kto jest online

TsgcUIPresenceModel przechowuje użytkowników Twojej aplikacji wraz z nazwą, inicjałami, kolorem, obrazem awatara, statusem (online, nieobecny, zajęty lub offline), tekstem statusu i czasem ostatniej aktywności. Kontrolki odczytują model i same się odrysowują, gdy zmieni się status.

Lista zespołu ze wskaźnikami obecności oraz grupa awatarów ze znacznikiem +7
Lista zespołu i grupa awatarów na pasku narzędzi, obie zasilane jednym modelem obecności.
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;

Powiadomienia: toasty, skrzynka odbiorcza i plakietka dzwonka

TsgcNotificationModel przechowuje powiadomienia bieżącego użytkownika, z tytułem, treścią, ważnością, czasem, stanem odczytu, akcjami i grupą, oraz zlicza nieprzeczytane. Pokazują go cztery elementy:

Skrzynka powiadomień nad edytorem preferencji oraz element paska narzędzi Powiadomienia z plakietką nieprzeczytanych
Skrzynka odbiorcza pogrupowana według dni, preferencje kanałów dla każdej kategorii i plakietka nieprzeczytanych na pasku narzędzi.
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;

Strumień aktywności i ścieżka audytu: kto co zrobił

TsgcDashboardActivityModel zapisuje, kto co zrobił i kiedy: wykonawcę, czasownik, obiekt, wynik oraz, na potrzeby audytu, wartość przed i po zmianie każdego zmodyfikowanego pola. Nazwy, kolory i awatary wykonawców pochodzą z modelu obecności, więc strumień i lista zespołu zawsze się zgadzają.

Strumień aktywności z awatarami wykonawców, czasownikami, obiektami i wynikami
Strumień aktywności: każdy wiersz pokazuje awatar wykonawcy, czasownik, obiekt i wynik.
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;

Przeglądarka logów na żywo: co zawodzi w tej chwili

TsgcGridLogModel to bezpieczny wątkowo bufor cykliczny wierszy logu z poziomami od trace do fatal, źródłem, komunikatem i właściwościami, filtrami poziomu, źródła i tekstu oraz eksportem do tekstu, JSON i CSV. Dopisywać do niego może dowolny wątek; zmiany trafiają na ekran partiami. TsgcGridLogLink zamienia dowolny sgcGrid w przeglądarkę logów.

Log na żywo w sgcGrid z wierszami ostrzeżeń i informacji w kolorach ich poziomów
Log na żywo: sgcGrid z kolorami poziomów, Pause, Resume, filtrem poziomu i 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');

Dane na żywo: jeden komunikat dla każdego strumienia

Cztery modele odczytują ten sam rodzaj komunikatu JSON, więc jedno połączenie może obsłużyć je wszystkie. Każdy komunikat podaje swój type i op, a każdy model przyjmuje tylko własne:

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

Trzy źródła na żywo łączą modele z serwerem za pośrednictwem sgcWebSockets: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT i TsgcUILiveSource_SSE. Każde źródło podpina się do klienta, którego już skonfigurowałeś, wraz z jego adresem URL, poświadczeniami, TLS i ponownym łączeniem, i przekazuje każdy komunikat swoim powiązaniom. Komunikaty, które docierają w wątku roboczym, są stosowane w wątku głównym w jednej partii, więc seria tysiąca wierszy logu kosztuje jedną wizytę w interfejsie użytkownika. Powiązanie może też wybrać temat MQTT, nazwę zdarzenia SSE, filtr lub ścieżkę wewnątrz koperty aplikacji.

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;

Źródła na żywo są dostępne w edycji Zarejestrowanej i wymagają sgcWebSockets, tak jak każdy most sgcWebSockets w sgcUI. Bez serwera lub w wersji Community aplikacja wywołuje zamiast tego API modelu: AddOrUpdate i SetStatus, Add lub Post, AddActivity i Append.

Każda platforma, jasny i ciemny motyw

Te same modele i ten sam JSON działają na każdej platformie. Kontrolki .NET to natywne kontrolki WinForms, WPF i Avalonia o tych samych nazwach w pakietach esegece.sgcUICore, esegece.sgcNavigation, esegece.sgcToolbar, esegece.sgcDashboard i esegece.sgcGrid, a każdy motyw pakietu, także ciemny i wysokiego kontrastu, obejmuje nowe kontrolki.

Demo operacyjne Realtime w WinForms
WinForms
Demo operacyjne Realtime w WPF
WPF
Demo operacyjne Realtime w Avalonia z toastami w prawym dolnym rogu
Avalonia
Demo operacyjne Realtime w FireMonkey, motyw jasny
FireMonkey, jasny
Demo operacyjne Realtime w FireMonkey, motyw ciemny
FireMonkey, ciemny

Demo operacyjne Realtime

Demo operacyjne Realtime łączy wszystkie elementy na jednym ekranie: listę zespołu, toasty ze skrzynką odbiorczą i preferencjami, plakietkę dzwonka, strumień aktywności i ścieżkę audytu oraz log na żywo, a wszystkim steruje wbudowany symulator, więc działa bez serwera. Jest dostarczane dla VCL, FireMonkey i C++Builder w demach pakietu Delphi Suite oraz dla WinForms, WPF i Avalonia w demach pakietu .NET Suite, a symulator generuje tę samą sekwencję na każdej platformie. Drugie demo VCL, RealtimeLive, wysyła te same komunikaty przez serwer WebSocket działający w tym samym procesie i TsgcUILiveSource_WebSocket, a pole URL pozwala podłączyć je do własnego serwera.

Edycje

Każdy element podlega edycji produktu, który go zawiera. Elementy obecności z sgcUICore i elementy logów z sgcGrid są dostępne w każdej edycji, także w Community, podobnie jak komunikaty obecności. Elementy powiadomień i plakietek wymagają sgcNavigation i sgcToolbar, czyli sgcUI Standard lub wyższej, a elementy aktywności wymagają sgcDashboard, czyli sgcUI Professional lub wyższej. Bezpłatne pakiety .NET Community też je zawierają, natomiast edycja Community dla Delphi zawiera tylko sgcGrid. Komunikaty na żywo dotyczące powiadomień, aktywności i logów, wstążka jako cel plakietki oraz trzy źródła na żywo są dostępne w edycji Zarejestrowanej. Szczegóły dla każdego produktu znajdziesz na stronie pakietu interfejsu Realtime oraz w pomocy pakietu interfejsu Realtime.

Ożyw swoją aplikację

Jedna wersja próbna dla Delphi i jedna dla C++Builder instalują każdy produkt sgcUI, w tym pakiet interfejsu Realtime.

Pytania lub uwagi? Skontaktuj się z nami, odpowiedzą Ci osoby, które napisały ten kod.