Delphi, C++Builder & .NET Ekrany na żywo

Pakiet sgcUI Realtime UI

Wszystko, czego potrzebuje ekran śledzący system na żywo, wbudowane w produkty sgcUI, których już używasz: kto jest online, toasty i skrzynka powiadomień z plakietką nieprzeczytanych, kanał aktywności ze śladem audytu oraz przeglądarka dzienników na żywo. Serwer zasila je przez WebSocket, MQTT lub zdarzenia wysyłane przez serwer albo steruje nimi bezpośrednio Twój kod.

VCLFireMonkeyWinFormsWPFAvalonia
Demo sgcUI Realtime: skład zespołu ze wskaźnikami obecności, kanał aktywności, skrzynka powiadomień nad preferencjami powiadomień, dzwonek z liczbą nieprzeczytanych, awatary zespołu i siatka dziennika na żywo

Pięć produktów, jeden ekran na żywo

Pakiet Realtime UI nie jest osobnym produktem. Każdy element jest w produkcie sgcUI, do którego pasuje, w jednostkach, pakietach i pakietach NuGet, których już używasz, i podąża za edycją tego produktu. Każdy element wymaga tylko sgcUICore i produktu, który go zawiera, a żaden nie wymaga sgcHTML.

Obecność i awatary

Kto jest online, z dala, zajęty lub offline, z awatarami, grupą awatarów i wskaźnikiem obecności.

Produkt: sgcUICore.

Obecność →

Powiadomienia

Model powiadomień z toastami, skrzynką, preferencjami dla każdej kategorii i kanału oraz plakietką nieprzeczytanych na pasku narzędzi.

Produkty: sgcNavigation i sgcToolbar.

Powiadomienia →

Kanał aktywności i ślad audytu

Kto co zrobił z jakim obiektem, jako kanał, jako tabela audytu i jako kafelki pulpitu.

Produkt: sgcDashboard.

Aktywność →

Przeglądarka dzienników na żywo

Siatka, która podąża za najnowszymi wierszami dziennika, z wstrzymywaniem, filtrami i eksportem.

Produkt: sgcGrid.

Dzienniki na żywo →

Źródła na żywo

Połączenia WebSocket, MQTT i zdarzeń wysyłanych przez serwer z sgcWebSockets, które zasilają każdy model.

Produkt: sgcUICore, most sgcUICoreWS.

Dane na żywo →

Od Delphi 7 do Delphi 13 z VCL, FireMonkey od Delphi XE6, C++Builder oraz .NET WinForms, WPF i Avalonia. Przeczytaj temat pomocy o pakiecie Realtime UI.

Obecność i awatary

Pokaż, kto jest online, w każdym produkcie sgcUI.

TsgcUIPresenceModel przechowuje użytkowników i ich status (online, z dala, zajęty lub offline) wraz z tekstem statusu. Kontrolki awatarów podążają za modelem, więc zmiana statusu przemalowuje jednocześnie każdy awatar i wskaźnik tego użytkownika.

  • Model obecności przyjmuje zmiany z AddOrUpdate i SetStatus w kodzie albo z jednego komunikatu na żywo na zmianę.
  • Awatar, grupa awatarów z chipem „+N” dla użytkowników, którzy się nie mieszczą, oraz wskaźnik obecności z kropką statusu i tekstem statusu.
  • Kanał aktywności sgcDashboard czyta ten sam model, więc każdy aktor ma swój awatar i status.
Produkt
sgcUICore, wspólny dla wszystkich produktów sgcUI
Delphi i C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator oraz ich odpowiedniki TsgcFMX
Edycja
Każda edycja, także Community, również komunikaty obecności na żywo

Pomoc: Obecność i Awatary i wskaźnik obecności.

Toasty, skrzynka, preferencje i plakietki

Centrum powiadomień dla aplikacji desktopowych.

TsgcNotificationModel przechowuje powiadomienia z tytułem, ważnością, kategorią i stanem przeczytania oraz zlicza nieprzeczytane. Menedżer toastów, skrzynka, preferencje i link plakietki podążają za nim.

  • Toasty: toast dla każdego nowego nieprzeczytanego powiadomienia, który zatrzymuje się, gdy wskaźnik myszy jest nad nim.
  • Skrzynka powiadomień: powiadomienia pogrupowane według dni, wszystkie lub tylko nieprzeczytane, z przyciskiem Oznacz wszystkie jako przeczytane.
  • Preferencje powiadomień: jeden wiersz na kategorię i jedna kolumna na kanał, wraz z edytorem. Wyłączenie kanału wyskakującego okna dla kategorii zatrzymuje jej toasty, a skrzynka nadal je wyświetla.
  • Plakietka nieprzeczytanych: TsgcToolbarBadgeLink z sgcToolbar pokazuje liczbę nieprzeczytanych na elemencie paska narzędzi lub Ribbonu, 99+ powyżej 99.
Produkty
sgcNavigation (model, toasty, skrzynka i preferencje) oraz sgcToolbar (link plakietki)
Delphi i C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor oraz ich odpowiedniki TsgcFMX
Edycja
Każda edycja, także Community. Komunikaty powiadomień na żywo i Ribbon jako cel plakietki są w wersji Zarejestrowanej.

Pomoc: Powiadomienia, Toasty, Skrzynka powiadomień, Preferencje powiadomień, Powiadomienia na żywo i TsgcToolbarBadgeLink.

Kanał aktywności i ślad audytu

Kto co zrobił i co się zmieniło.

TsgcDashboardActivityModel zapisuje każdą aktywność jako aktora, czasownik i obiekt, wraz ze zmienionymi polami. Kanał aktywności i ślad audytu to dwa widoki tego samego modelu.

  • Kanał aktywności: najnowsza aktywność na górze, z czasami względnymi i awatarem każdego aktora z modelu obecności.
  • Ślad audytu: tabela, której wiersze rozwijają się do zmienionych pól.
  • Oba są samodzielnymi kontrolkami, a także kafelkami aktywności i audytu dla pulpitu.
Produkt
sgcDashboard
Delphi i C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile oraz ich odpowiedniki TsgcFMX
Edycja
Każda edycja, także Community. Komunikaty aktywności na żywo są w wersji Zarejestrowanej.

Pomoc: Kanał aktywności, Aktywność na żywo, Kafelek aktywności i Kafelek audytu.

Przeglądarka dzienników na żywo w sgcGrid

Śledź tysiące wierszy dziennika bez zawieszania ekranu.

TsgcGridLogModel przechowuje wiersze dziennika z czasem, poziomem od trace do fatal, źródłem i komunikatem, a TsgcGridLogLink pokazuje je w sgcGrid w trybie wirtualnym. Model dziennika jest bezpieczny wątkowo, więc wątek roboczy może dołączać wiersze bezpośrednio.

  • Śledzenie końca: przewinięcie w górę przestaje śledzić, a powrót na koniec wznawia je, a Pauza zatrzymuje widok, gdy użytkownik czyta.
  • Wiersze pokolorowane według poziomu, filtry według poziomu, źródła i tekstu, reguły wyróżniania oraz eksport.
  • Seria wierszy dziennika z wątku gniazda kosztuje jedną wizytę w głównym wątku.
Produkt
sgcGrid
Delphi i C++Builder
TsgcGridLogModel i TsgcGridLogLink z TsgcVCLGrid lub TsgcFMXGrid
Edycja
Każda edycja, także Community. Komunikaty dziennika na żywo są w wersji Zarejestrowanej.

Pomoc: Przeglądarka dzienników, TsgcGridLogModel i TsgcGridLogLink.

Źródła na żywo przez WebSocket, MQTT i SSE

Źródła na żywo mostu sgcUICoreWS biorą komunikaty JSON, które serwer wysyła przez połączenie sgcWebSockets, i przekazują je modelom. Kontrolki podążają od razu, bez Twojego kodu.

ŹródłoKlient sgcWebSocketsZdarzenie, które czytaWybiera komunikaty według
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, każdy komunikat tekstowyFiltra na elemencie komunikatu
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, każda publikacjaFiltra tematu MQTT
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, strumień zdarzeńTypu zdarzenia SSE
  • Źródło nigdy się nie łączy, nie subskrybuje ani nie wysyła. Adres URL, dane logowania, TLS i ponowne łączenie należą do klienta, a podpięcie przetrwa ponowne połączenie przez WatchDog.
  • Jedno źródło zasila kilka modeli przez swoje powiązania, więc jedno połączenie może sterować całym ekranem. Powiązanie może rozpakować kopertę protokołu aplikacji, a Twój własny program obsługi zdarzenia klienta nadal się wywołuje.
  • Modele są zawsze wywoływane w głównym wątku. Komunikaty, które przychodzą w wątku gniazda, są kolejkowane i stosowane w jednej wizycie w głównym wątku, w kolejności nadejścia.
  • Most działa tylko w kierunku przychodzącym. Gdy użytkownik czyta lub odrzuca powiadomienie, aplikacja wysyła własną ramkę przez tego samego klienta.

Cztery kształty komunikatów

Nie ma nowego protokołu. Każdy model czyta komunikat na żywo swojego kanału: jeden obiekt JSON na zmianę, z elementem type, który nazywa kanał, i elementem op.

KanałtypeopModel
Obecnośćpresence, opcjonalnyupsert, remove, snapshot, clearTsgcUIPresenceModel
Powiadomienianotification, wymaganyadd, update, remove, read, unread, snapshotTsgcNotificationModel
Aktywnośćactivity, wymaganyadd, update, remove, snapshotTsgcDashboardActivityModel
Dzienniklog, opcjonalnyappend, 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, jeden temat MQTT na kanał
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// jedno powiązanie na model, wybierane przez jego temat
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/+';
// źródło nigdy nie subskrybuje: subskrybuj w OnMQTTConnect klienta
MQTT.Subscribe('ops/#');

Źródła na żywo są tylko w wersji Zarejestrowanej i wymagają sgcWebSockets, jak każdy most sgcWebSockets w sgcUI. Bez serwera lub w wersji Community aplikacja wywołuje zamiast tego API każdego modelu: AddOrUpdate i SetStatus modelu obecności, Add lub Post modelu powiadomień, Add modelu aktywności i Append modelu dziennika.

Przeczytaj temat pomocy o źródłach na żywo

Demo Realtime

Konsola operacyjna dla dwunastoosobowego zespołu, sterowana symulatorem

Demo Realtime dla Delphi VCL w ciemnym motywie: skład zespołu, kanał aktywności, skrzynka i preferencje powiadomień, plakietka dzwonka, grupa awatarów i siatka dziennika na żywo

Demo Suite Realtime buduje z pakietu konsolę operacyjną. Pasek narzędzi ma dzwonek, którego plakietka to liczba nieprzeczytanych, awatar bieżącego użytkownika i grupę awatarów zespołu. Skład wymienia każdego członka ze wskaźnikiem obecności, jedna karta zawiera kanał aktywności, a druga ślad audytu, skrzynka powiadomień leży nad edytorem preferencji, siatka dziennika podąża za najnowszymi wierszami, a toasty pojawiają się w prawym dolnym rogu.

  • W trakcie działania przełączaj jasny, ciemny i wysoki kontrast albo odbij okno od prawej do lewej
  • Deterministyczny symulator buduje każdą zmianę jako komunikat na żywo jej modelu, więc demo nie potrzebuje serwera ani sgcWebSockets
  • Uruchom je z --test result.txt, by wykonać autotesty, po jednej numerowanej linii PASS lub FAIL na test
Platformy
Delphi VCL (Delphi 7 do 13) i FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF i Avalonia
Wymagana edycja
sgcUI Professional, Enterprise, wersja All-Access lub próbna, czyli edycje zawierające sgcDashboard. Wersja Zarejestrowana stosuje każdą zmianę jako komunikat na żywo, wersja Community przez API modelu.
Kod źródłowy
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime oraz demos\Suite\Realtime w folderze .NET

Produkty sgcUI w środku

Zobacz też pozostałe dema pakietu sgcUI.

Demo Realtime dla Delphi FireMonkey w jasnym motywie
FireMonkey, jasny motyw
Demo Realtime dla Delphi FireMonkey w ciemnym motywie
FireMonkey, ciemny motyw

Ten sam pakiet w WinForms, WPF i Avalonia

Modele, kontrolki i źródła na żywo mają w .NET te same nazwy i czytają te same komunikaty JSON, w pakietach NuGet każdego produktu.

  • Modele: TsgcUIPresenceModel (przestrzeń nazw esegece.sgcUICore), TsgcNotificationModel i TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) oraz TsgcGridLogModel z TsgcGridLogLink (esegece.sgcGrid).
  • Kontrolki: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail i pozostałe kontrolki, każda z odpowiednikami TsgcWpf i TsgcAvalonia.
  • Źródła na żywo: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT i TsgcUILiveSource_SSE w pakiecie esegece.sgcUICore.sgcWebSockets, tylko w wersji Zarejestrowanej.
  • Bezpłatne pakiety Community w NuGet, takie jak esegece.sgcNavigation.Community i esegece.sgcGrid.Community, pomijają te same części co kompilacje Community dla Delphi.
  • Demo .NET ma hosty WinForms, WPF i Avalonia nad jednym wspólnym projektem z modelami, symulatorem i autotestem.

Pomoc: Pakiety .NET i Pakiet Realtime UI.

Community i Zarejestrowana

Każdy element podąża za edycją swojego produktu. Pakiety .NET Community pomijają te same części co kompilacje Community dla Delphi.

ElementProduktCommunityZarejestrowana
Model obecności z komunikatami na żywo, awatary, grupa awatarów i wskaźnik obecnościsgcUICore
Model powiadomień, toasty, skrzynka i preferencjesgcNavigation
Powiadomienia na żywosgcNavigation—
Link plakietki z paskiem narzędzisgcToolbar
Link plakietki z RibbonemsgcToolbar—
Model aktywności, kanał aktywności, ślad audytu i oba kafelkisgcDashboard
Aktywność na żywosgcDashboard—
Model dziennika i powiązanie dziennikasgcGrid
Dzienniki na żywosgcGrid—
Źródła na żywo przez WebSocket, MQTT i SSE (most sgcUICoreWS, wymaga sgcWebSockets)sgcUICore—

W pakiecie sgcUI sgcNavigation, sgcToolbar i sgcGrid są w każdej edycji, a sgcDashboard od Professional. sgcUICore jest dołączony do każdego produktu, a każdy produkt jest też sprzedawany osobno, dla Delphi i dla .NET. Zobacz macierz funkcji, temat pomocy Edycje i cennik.

Najczęściej zadawane pytania

Nie. Każdy element jest w produkcie sgcUI, do którego pasuje: obecność i awatary w sgcUICore, powiadomienia w sgcNavigation, plakietka nieprzeczytanych w sgcToolbar, kanał aktywności i ślad audytu w sgcDashboard, a przeglądarka dzienników w sgcGrid. Dostajesz je razem z tymi produktami, w tych samych jednostkach, pakietach i pakietach NuGet.

Tylko dla źródeł na żywo mostu sgcUICoreWS. Modele i kontrolki wymagają tylko sgcUICore i własnego produktu, a aplikacja bez serwera steruje nimi z kodu. Żaden z elementów nie wymaga sgcHTML.

Każdy serwer, który wysyła jeden obiekt JSON na zmianę przez WebSocket, przez broker MQTT lub jako zdarzenia wysyłane przez serwer. Cztery kształty komunikatów są udokumentowane, a źródła nie definiują własnego protokołu. Powiązanie może też rozpakować kopertę istniejącego protokołu aplikacji.

Most działa tylko w kierunku przychodzącym. Gdy użytkownik czyta lub odrzuca powiadomienie, aplikacja wysyła własną ramkę przez tego samego klienta sgcWebSockets. Temat pomocy o źródłach na żywo zawiera przykład.

Nie. Komunikaty, które przychodzą w wątku gniazda, są kolejkowane i stosowane w jednej wizycie w głównym wątku, więc seria 1000 wierszy dziennika kosztuje jedną wizytę. Model dziennika jest też bezpieczny wątkowo, więc wątek roboczy może dołączać do niego bezpośrednio. W Delphi od 7 do 2009 zachowaj domyślne powiadamianie klienta, które powiadamia w głównym wątku.

Modele i kontrolki każdego elementu oraz komunikaty obecności na żywo. Komunikaty na żywo modeli powiadomień, aktywności i dziennika, Ribbon jako cel plakietki oraz źródła na żywo są tylko w wersji Zarejestrowanej.

Strony produktów: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets oraz pakiet sgcUI.

Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Buduj ekrany na żywo z sgcUI

Wersja próbna All-Access zawiera każdy produkt sgcUI, więc możesz wypróbować każdy element pakietu.