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
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.
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.
- Avatar (
TsgcVCLAvatar): inicjały lub zdjęcie ze wskaźnikiem statusu. - Grupa awatarów (
TsgcVCLAvatarGroup): nakładające się awatary zespołu, które po przekroczeniuMaxVisiblezwijają się w znacznik “+N”. - Wskaźnik obecności (
TsgcVCLPresenceIndicator): wskaźnik statusu z opisem, przeznaczony dla list zespołu i zestawień. - Użytkownicy sgcChat są teraz również użytkownikami obecności, więc czat i lista zespołu korzystają z tych samych osób.
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:
- Toasty (
TsgcVCLToastManager): ułożone w stos powiadomienia w rogu formularza lub ekranu, które nigdy nie przejmują fokusu, same znikają, wstrzymują się, gdy nad nimi znajduje się mysz, i oferują przyciski akcji. Kolory ważności pochodzą z motywu. - Skrzynka odbiorcza (
TsgcVCLNotificationInbox): zwirtualizowana lista pogrupowana według dni, z filtrami Wszystkie i Nieprzeczytane, oznaczaniem wszystkich jako przeczytane, odrzucaniem i akcjami. - Preferencje (
TsgcVCLNotificationPrefsEditor): siatka kategorii i kanałów: w aplikacji, toast, e-mail i push. Menedżer toastów pokazuje tylko to, o co poprosił użytkownik. - Plakietka dzwonka (
TsgcToolbarBadgeLink): liczba nieprzeczytanych jako plakietka elementu paska narzędzi, “99+” powyżej 99, a w edycji Zarejestrowanej także elementu wstążki.
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 (
TsgcVCLActivityFeed): oś czasu pogrupowana według dni z czasem względnym w 12 językach, filtrami według wykonawcy, czasownika, typu obiektu i tekstu oraz stronicowanym doczytywaniem starszych wpisów. - Ścieżka audytu (
TsgcVCLAuditTrail): te same wpisy jako wiersze, które po rozwinięciu pokazują każde zmienione pole ze starą i nową wartością. - Kafelki pulpitu: kafelki Strumień aktywności i Ścieżka audytu dla sgcDashboard, z polem wyszukiwania, zapisywane w układzie pulpitu.
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.
- Kolory poziomów pochodzą z motywu, a wyróżnienia działają według tekstu lub wyrażenia regularnego.
- Follow tail utrzymuje najnowszy wiersz w widoku i sam się zatrzymuje, gdy użytkownik przewija w górę, aby czytać.
- Pause i Resume oraz Copy lines dla zaznaczonych wierszy.
- Widoczne wiersze pozostają na miejscu, gdy napływają nowe, a najstarsze opuszczają bufor.
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
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.
