Delphi, C++Builder & .NET Pantallas en vivo

El Realtime UI Pack de sgcUI

Todo lo que necesita una pantalla que sigue un sistema en vivo, integrado en los productos sgcUI que ya usas: quién está conectado, toasts y una bandeja de notificaciones con una insignia de no leídas, un feed de actividad con una pista de auditoría y un visor de registros en vivo. Un servidor los alimenta por WebSocket, MQTT o eventos enviados por el servidor, o tu código los controla directamente.

VCLFireMonkeyWinFormsWPFAvalonia
La demo Realtime de sgcUI: una lista del equipo con indicadores de presencia, el feed de actividad, la bandeja de notificaciones sobre las preferencias de notificaciones, una campana con el recuento de no leídas, los avatares del equipo y una cuadrícula de registros en vivo

Cinco productos, una pantalla en vivo

El Realtime UI Pack no es un producto aparte. Cada pieza vive en el producto sgcUI al que pertenece, en las unidades, los paquetes y los paquetes NuGet que ya usas, y sigue la edición de ese producto. Cada pieza requiere solo sgcUICore y el producto que la contiene, y ninguna necesita sgcHTML.

Presencia y avatares

Quién está conectado, ausente, ocupado o desconectado, con avatares, un grupo de avatares y un indicador de presencia.

Producto: sgcUICore.

Presencia →

Notificaciones

Un modelo de notificaciones con toasts, una bandeja, preferencias por categoría y canal, y una insignia de no leídas en la barra de herramientas.

Productos: sgcNavigation y sgcToolbar.

Notificaciones →

Feed de actividad y pista de auditoría

Quién hizo qué a qué objeto, como feed, como tabla de auditoría y como mosaicos de panel.

Producto: sgcDashboard.

Actividad →

Visor de registros en vivo

Una cuadrícula que sigue las líneas de registro más recientes, con pausa, filtros y exportación.

Producto: sgcGrid.

Registros en vivo →

Orígenes en vivo

Conexiones WebSocket, MQTT y de eventos enviados por el servidor de sgcWebSockets que alimentan cada modelo.

Producto: sgcUICore, puente sgcUICoreWS.

Datos en vivo →

De Delphi 7 a Delphi 13 con VCL, FireMonkey desde Delphi XE6, C++Builder, y .NET WinForms, WPF y Avalonia. Lee el tema de ayuda del Realtime UI Pack.

Presencia y avatares

Muestra quién está conectado, en cada producto sgcUI.

TsgcUIPresenceModel guarda los usuarios y su estado (conectado, ausente, ocupado o desconectado) con un texto de estado. Los controles de avatar siguen al modelo, de modo que un cambio de estado repinta a la vez todos los avatares e indicadores de ese usuario.

  • El modelo de presencia recibe sus cambios de AddOrUpdate y SetStatus en código, o de un mensaje en vivo por cambio.
  • Un avatar, un grupo de avatares con un chip "+N" para los usuarios que no caben, y un indicador de presencia con el punto de estado y el texto de estado.
  • El feed de actividad de sgcDashboard lee el mismo modelo, de modo que cada actor muestra su avatar y su estado.
Producto
sgcUICore, compartido por todos los productos sgcUI
Delphi y C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator y sus gemelos TsgcFMX
Edición
Todas las ediciones, Community incluida, y también los mensajes de presencia en vivo

Ayuda: Presencia y Avatares e indicador de presencia.

Toasts, bandeja, preferencias e insignias

Un centro de notificaciones para aplicaciones de escritorio.

TsgcNotificationModel guarda las notificaciones con su título, gravedad, categoría y estado de lectura, y lleva el recuento de no leídas. El gestor de toasts, la bandeja, las preferencias y el enlace de insignia lo siguen.

  • Toasts: un toast por cada notificación nueva no leída, que se detiene mientras el puntero está encima.
  • Bandeja de notificaciones: las notificaciones agrupadas por día, todas o solo las no leídas, con Marcar todas como leídas.
  • Preferencias de notificaciones: una fila por categoría y una columna por canal, con su editor. Desactivar el canal de ventana emergente de una categoría detiene sus toasts, y la bandeja los sigue listando.
  • Insignia de no leídas: TsgcToolbarBadgeLink de sgcToolbar muestra el recuento de no leídas en un elemento de la barra de herramientas o del ribbon, 99+ por encima de 99.
Productos
sgcNavigation (modelo, toasts, bandeja y preferencias) y sgcToolbar (enlace de insignia)
Delphi y C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor y sus gemelos TsgcFMX
Edición
Todas las ediciones, Community incluida. Los mensajes de notificaciones en vivo y un ribbon como destino de la insignia son de la edición Registrada.

Ayuda: Notificaciones, Toasts, Bandeja de notificaciones, Preferencias de notificaciones, Mensajes en vivo de notificaciones y TsgcToolbarBadgeLink.

Feed de actividad y pista de auditoría

Quién hizo qué, y qué cambió.

TsgcDashboardActivityModel registra cada actividad como un actor, un verbo y un objeto, con los campos que cambiaron. El feed de actividad y la pista de auditoría son dos vistas del mismo modelo.

  • Feed de actividad: lo más reciente primero, con horas relativas y el avatar de cada actor tomado del modelo de presencia.
  • Pista de auditoría: una tabla cuyas filas se expanden a los campos modificados.
  • Ambos son controles independientes y también mosaicos de actividad y de auditoría para un panel.
Producto
sgcDashboard
Delphi y C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile y sus gemelos TsgcFMX
Edición
Todas las ediciones, Community incluida. Los mensajes de actividad en vivo son de la edición Registrada.

Ayuda: Feed de actividad, Mensajes de actividad en vivo, Tile de actividad y Tile de auditoría.

Un visor de registros en vivo sobre sgcGrid

Sigue miles de líneas de registro sin congelar la pantalla.

TsgcGridLogModel guarda las líneas de registro con una hora, un nivel de trace a fatal, un origen y un mensaje, y TsgcGridLogLink las muestra en un sgcGrid en modo virtual. El modelo de registro es seguro entre hilos, así que un hilo de trabajo puede añadir líneas directamente.

  • Seguimiento de la cola: al desplazarse hacia arriba se deja de seguir y al volver al final se reanuda, y Pausa detiene la vista mientras el usuario lee.
  • Líneas coloreadas por nivel, filtros por nivel, origen y texto, reglas de resaltado y exportación.
  • Una ráfaga de líneas de registro desde un hilo de socket cuesta una sola visita al hilo principal.
Producto
sgcGrid
Delphi y C++Builder
TsgcGridLogModel y TsgcGridLogLink con un TsgcVCLGrid o un TsgcFMXGrid
Edición
Todas las ediciones, Community incluida. Los mensajes de registro en vivo son de la edición Registrada.

Ayuda: Visor de registros, TsgcGridLogModel y TsgcGridLogLink.

Orígenes en vivo por WebSocket, MQTT y SSE

Los orígenes en vivo del puente sgcUICoreWS toman los mensajes JSON que un servidor envía por una conexión de sgcWebSockets y se los entregan a los modelos. Los controles los siguen al instante, sin código tuyo.

OrigenCliente de sgcWebSocketsEvento que leeSelecciona los mensajes por
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, cada mensaje de textoUn filtro sobre un miembro del mensaje
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, cada publicaciónUn filtro de tema MQTT
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, el flujo de eventosEl tipo de evento SSE
  • El origen nunca se conecta, se suscribe ni envía. La URL, las credenciales, TLS y la reconexión corresponden al cliente, y el enlace sobrevive a una reconexión del WatchDog.
  • Un origen alimenta varios modelos mediante sus enlaces, así que una sola conexión puede controlar toda una pantalla. Un enlace puede desenvolver un sobre de aplicación, y tu propio manejador del evento del cliente se sigue disparando.
  • Los modelos se llaman siempre en el hilo principal. Los mensajes que llegan en un hilo de socket se ponen en cola y se aplican en una sola visita al hilo principal, en orden de llegada.
  • El puente es solo de entrada. Cuando el usuario lee o descarta una notificación, la aplicación envía su propia trama por el mismo cliente.

Las cuatro formas de mensaje

No hay ningún protocolo nuevo. Cada modelo lee el mensaje en vivo de su flujo: un objeto JSON por cambio, con un miembro type que nombra el flujo y un miembro op.

FlujotypeopModelo
Presenciapresence, opcionalupsert, remove, snapshot, clearTsgcUIPresenceModel
Notificacionesnotification, obligatorioadd, update, remove, read, unread, snapshotTsgcNotificationModel
Actividadactivity, obligatorioadd, update, remove, snapshotTsgcDashboardActivityModel
Registrolog, opcionalappend, 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 tema MQTT por flujo
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// un enlace por modelo, seleccionado por su tema
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/+';
// el origen nunca se suscribe: suscríbete en OnMQTTConnect del cliente
MQTT.Subscribe('ops/#');

Los orígenes en vivo son solo de la edición Registrada y necesitan sgcWebSockets, como todos los puentes de sgcUI con sgcWebSockets. Sin servidor, o en una compilación Community, la aplicación llama en su lugar a la API de cada modelo: AddOrUpdate y SetStatus del modelo de presencia, Add o Post del modelo de notificaciones, Add del modelo de actividad y Append del modelo de registro.

Lee el tema de ayuda Orígenes en vivo

La demo Realtime

Una consola de operaciones para un equipo de doce personas, controlada por un simulador

La demo Realtime para Delphi VCL en el tema oscuro: la lista del equipo, el feed de actividad, la bandeja y las preferencias de notificaciones, la insignia de la campana, el grupo de avatares y la cuadrícula de registros en vivo

La demo Realtime de la suite crea una consola de operaciones con el paquete. La barra de herramientas lleva una campana cuya insignia es el recuento de no leídas, el avatar del usuario actual y el grupo de avatares del equipo. Una lista muestra a cada miembro con un indicador de presencia, una pestaña contiene el feed de actividad y otra la pista de auditoría, la bandeja de notificaciones está sobre el editor de preferencias, una cuadrícula de registros sigue las líneas más recientes y los toasts aparecen abajo a la derecha.

  • Cambia entre claro, oscuro y alto contraste, o refleja la ventana de derecha a izquierda, mientras se ejecuta
  • Un simulador determinista construye cada cambio como el mensaje en vivo de su modelo, así que la demo no necesita servidor ni sgcWebSockets
  • Ejecútala con --test result.txt para sus autocomprobaciones, con una línea numerada PASS o FAIL por cada una
Plataformas
Delphi VCL (de Delphi 7 a 13) y FireMonkey (Delphi 13), C++Builder, .NET WinForms, WPF y Avalonia
Edición necesaria
sgcUI Professional, Enterprise, All-Access o Trial, las ediciones que incluyen sgcDashboard. Una compilación Registrada aplica cada cambio como un mensaje en vivo, una compilación Community mediante la API del modelo.
Código fuente
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime y demos\Suite\Realtime en la carpeta .NET

Productos sgcUI incluidos

Mira también las otras demos de la suite sgcUI.

La demo Realtime para Delphi FireMonkey en el tema claro
FireMonkey, tema claro
La demo Realtime para Delphi FireMonkey en el tema oscuro
FireMonkey, tema oscuro

El mismo paquete en WinForms, WPF y Avalonia

Los modelos, los controles y los orígenes en vivo tienen los mismos nombres y leen los mismos mensajes JSON en .NET, en los paquetes NuGet de cada producto.

  • Modelos: TsgcUIPresenceModel (espacio de nombres esegece.sgcUICore), TsgcNotificationModel y TsgcNotificationPreferences (esegece.sgcNavigation), TsgcToolbarBadgeLink (esegece.sgcToolbar), TsgcDashboardActivityModel (esegece.sgcDashboard) y TsgcGridLogModel con TsgcGridLogLink (esegece.sgcGrid).
  • Controles: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail y los demás controles, cada uno con su gemelo TsgcWpf y TsgcAvalonia.
  • Orígenes en vivo: TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT y TsgcUILiveSource_SSE en el paquete esegece.sgcUICore.sgcWebSockets, solo en la edición Registrada.
  • Los paquetes Community gratuitos de NuGet, como esegece.sgcNavigation.Community y esegece.sgcGrid.Community, dejan fuera las mismas partes que las compilaciones Community de Delphi.
  • La demo .NET tiene anfitriones WinForms, WPF y Avalonia sobre un proyecto compartido con los modelos, el simulador y la autocomprobación.

Ayuda: Paquetes .NET y Realtime UI Pack.

Community y Registrada

Cada pieza sigue la edición de su producto. Los paquetes .NET Community dejan fuera las mismas partes que las compilaciones Community de Delphi.

PiezaProductoCommunityRegistrada
Modelo de presencia con sus mensajes en vivo, avatares, grupo de avatares e indicador de presenciasgcUICore
Modelo de notificaciones, toasts, bandeja y preferenciassgcNavigation
Mensajes de notificaciones en vivosgcNavigation—
Enlace de insignia con una barra de herramientassgcToolbar
Enlace de insignia con un ribbonsgcToolbar—
Modelo de actividad, feed de actividad, pista de auditoría y ambos mosaicossgcDashboard
Mensajes de actividad en vivosgcDashboard—
Modelo de registro y enlace de registrosgcGrid
Mensajes de registro en vivosgcGrid—
Orígenes en vivo por WebSocket, MQTT y SSE (puente sgcUICoreWS, necesita sgcWebSockets)sgcUICore—

En la suite sgcUI, sgcNavigation, sgcToolbar y sgcGrid están en todas las ediciones y sgcDashboard desde Professional. sgcUICore viene con cada producto, y cada producto se vende también por separado, para Delphi y para .NET. Consulta la matriz de funciones, el tema de ayuda Ediciones y los precios.

Preguntas frecuentes

No. Cada pieza vive en el producto sgcUI al que pertenece: presencia y avatares en sgcUICore, notificaciones en sgcNavigation, la insignia de no leídas en sgcToolbar, el feed de actividad y la pista de auditoría en sgcDashboard, y el visor de registros en sgcGrid. Las obtienes con esos productos, en las mismas unidades, paquetes y paquetes NuGet.

Solo para los orígenes en vivo del puente sgcUICoreWS. Los modelos y los controles necesitan solo sgcUICore y su propio producto, y una aplicación sin servidor los controla desde código. Ninguna de las piezas necesita sgcHTML.

Cualquier servidor que envíe un objeto JSON por cambio por WebSocket, a través de un broker MQTT o como eventos enviados por el servidor. Las cuatro formas de mensaje están documentadas y los orígenes no definen ningún protocolo propio. Un enlace también puede desenvolver el sobre de un protocolo de aplicación existente.

El puente es solo de entrada. Cuando el usuario lee o descarta una notificación, la aplicación envía su propia trama por el mismo cliente de sgcWebSockets. El tema de ayuda Orígenes en vivo incluye un ejemplo.

No. Los mensajes que llegan en un hilo de socket se ponen en cola y se aplican en una sola visita al hilo principal, así que una ráfaga de 1.000 líneas de registro cuesta una sola visita. El modelo de registro también es seguro entre hilos, por lo que un hilo de trabajo puede añadir líneas directamente. En Delphi 7 a 2009 mantén la notificación predeterminada del cliente, que notifica en el hilo principal.

Los modelos y los controles de cada pieza, y los mensajes de presencia en vivo. Los mensajes en vivo de los modelos de notificaciones, actividad y registro, un ribbon como destino de la insignia y los orígenes en vivo son solo de la edición Registrada.

Páginas de producto: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets y la suite sgcUI.

La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Crea tus pantallas en vivo con sgcUI

La prueba All-Access incluye todos los productos sgcUI, así que puedes probar cada pieza del paquete.