Skip to content

Tables & Alarm Viewer

TablePostgre — Industrial-Grade Data Tables

We built a complete data table widget with direct PostgreSQL connectivity, virtual scrolling, multi-column sorting, aggregation functions, advanced filtering, and real-time refresh — all in a single C++ EWO component.

Table overview

City Overview table showing plant data with multiple columns — sortable, filterable, and fully interactive.

Master-Detail Pattern

Click a row and a secondary table loads the related data. We designed this interaction to feel natural — no popups, no page changes, just fluid context switching:

Table clicked

Clicking "WTP_Trieste" in the cities table loads the plants for that city in the detail panel on the right.

Column Customization

Every column is individually configurable at runtime — sorting, formatting, filtering, conditional colors, and export:

Column customization

Per-column customization dialog: sorting direction, format (Numeric/Text), filter rules, conditional color rules, and export in 4 formats (CSV, XLSX, JSON, TXT).

Conditional Progress Bars

We implemented visual cell renderers that transform raw numbers into intuitive graphics. The progress bar renderer maps values to a filled bar with percentage label:

Progress bars

AVG_EFFICIENCY column rendered as green progress bars — instantly communicating performance at a glance.

Multi-View Dashboards

Multiple table instances can be synchronized in a single dashboard, creating complex analytical views:

4-view dashboard

Water Compliance dashboard with 4 synchronized table views: Site overview (top-left), Effluent metrics (top-right), Process data (bottom-left), and Non-compliance alerts (bottom-right). Clicking a site in the overview updates all other views.

Key Technical Features

  • Virtual scrolling — renders only visible rows, handles thousands of records without performance degradation
  • Multi-column sort — chained sorting with visual indicators
  • SQL aggregation — SUM, AVG, COUNT, MIN, MAX with summary rows
  • Real-time refresh — configurable polling interval for live data
  • Network support — can pull data from remote sources, not just local PostgreSQL

AlarmViewer — Real-Time Alarm Management

A specialized alarm widget for high-frequency industrial alarm streams:

  • Blink Controller — unacknowledged alarms blink with a configurable animation (row background, priority dot, or text) to grab operator attention
  • 7 column types — Text, Badge, Icon, Checkbox, Priority, DateTime, Actions
  • 4 priority levels — High (red), Medium (orange), Low (yellow), Warning (blue) with color-coded indicators
  • Deferred rendering — updates throttled to ~30fps, preventing UI freeze during alarm storms
  • Multi-select with Ctrl+Click and bulk acknowledge
  • Pagination — dynamic row calculation based on available viewport height

The blink controller is a separate, testable component — not embedded in the rendering loop. This means blink behavior can be changed without touching the table rendering code.