Skip to main content
Version: 1.0.8

AI Live Dashboards New in 1.0.8

An operator types "Line 2 temperature and power for the last 8 hours, with alarms" into an AI Chat widget and gets a live dashboard beside the conversation: gauges, readouts, trends, charts and tables bound to real tags and saved queries, updating like any other screen. They can rearrange it by hand, ask the assistant to change it, keep it, and open it again tomorrow.

It shows only what that person could already read, and it saves nothing on its own.

Switching it on​

Three things must all be true, and a missing one degrades quietly rather than failing:

  1. Administrator — Settings → AI Assistant, switch on Build dashboards. It is off by default, like every capability over a surface that did not exist before. Turning it off withdraws dashboards everywhere at once, including the My dashboards list.
  2. Engineer — on the AI Chat widget, set mode to dashboard and tick the Live Dashboards skill.
  3. The widget's fences — the tag scope and the databases list say what a dashboard on this screen may show, exactly as they do for a chat answer. See What fences it.

With mode set to dashboard but the skill unticked or the capability off, the widget renders a plain chat. In LiveView that is all an operator sees; in the Designer the canvas names the switch that is missing, so the engineer who can fix it is told.

promptPosition places the chat left (the default), right or bottom of the dashboard. A widget too narrow to divide shows the dashboard and reveals the chat from a bar; one under about 420 px tall opens the chat over the dashboard instead of splitting it. The chat pane collapses to a rail and keeps its half-typed question. → AI Chat widget

Asking for one​

The assistant does not write a view. It writes a short intent per tile — a kind, and the tag, tags or query it shows — and the server compiles that into a real view: the widget, its properties, its bindings, its alarm limits and where it sits at every screen width. That is what makes a dashboard cost one model round trip instead of the many a hand-built view takes, and why a dashboard can only ever be a grid of tiles. It cannot draw a P&ID, place a symbol or wire an event; that stays with View Authoring in the Designer.

The real names, before the model is asked​

Before the model sees the question, the server looks up the plant's own names for what was asked and attaches them to the turn:

  • Plant Vocabulary — an alias an engineer wrote down ("Pump 1" → PMP-01, "suhu" → Temperature) resolves exactly. Only exact matches are used; an ambiguous one is left for the assistant to ask about.
  • Tag search — up to eight keywords from the question, searched in the namespace, for whatever the vocabulary did not cover. At most 30 tag rows are attached, and the model is told the list is not the whole namespace.
  • Tables — for datasets, the tables and columns of the screen's AI-enabled databases: up to 3 connections, 12 tables and 24 columns a table.

This happens only on a turn that can build a dashboard, and keyword extraction works in every script, not only Latin text. The operator's thread shows what they typed, not what the server added.

Tile kinds​

KindShowsBuilt from
ReadoutA label, the value with its unit, and where it sits in its rangeOne tag
Gauge · Progress · TankA live value against its range, a bar, a levelOne tag (Progress: several)
TrendWhat happened, several tags, zoomableUp to 8 tags' history
HMI trend · SparklineWhether one tag is in spec, large or tinyOne tag's history
Line · Bar · Pie · Query sparklineA chart of rowsA saved query or a dataset
TableRows, pagedA saved query or a dataset
Scatter · RadarA chart of rowsA saved query or a dataset
SchedulerA read-only resource and timeline boardTwo saved queries: the resources and the work
MapAssets on a geographic mapA namespace folder, or a saved query
TextA short noteText the assistant writes

A dashboard holds at most 24 tiles.

Readout is the tile meant by "show me the power". It is neutral while the value is normal, turns amber past Lo/Hi and red past LoLo/HiHi with the limit named, and draws a range bar from the tag's engineering range. Every limit and range comes from the tag's own configuration, never from the model; a tag with no limits gets no limit lines, rather than the sample limits the HMI widgets ship with.

Scheduler needs both queries, or it is refused. One left unbound would draw the widget's sample work orders against real machines. It is always read-only: an AI-built screen does not write.

Map is given a folder and nothing else. The server looks under it for a pair of position tags per asset — leaf names Lat, Latitude, GPS_Lat, PosLat and their longitude counterparts (Lng, Lon, Long, Longitude, …), matched exactly — and places one marker per asset with both. X and Y are deliberately not coordinates. With no position tags it falls back to a saved query of lat, lng, label, state rows; with neither, the tile is dropped with a reason. The map opens on a world view rather than fitting to its markers.

What it refuses​

A tile the server cannot build honestly is dropped, and the canvas names it with the reason ("Plant/L9/Temp is not in the area this screen can show"). The rest of the dashboard is kept.

DroppedWhy
A tag outside the widget's scopeThe fence.
A tag that does not existUnder a * scope the fence permits every path, so existence is checked separately. A multi-tag trend keeps the tags that exist.
A history tile on a tag that records no historyIt would be a chart that stays empty.
A saved query the project does not haveIt would bind to nothing.
A dataset over a database the screen may not readSee datasets.

When nothing survives, the canvas shows the refusal instead of the invitation to ask, so an operator can tell "it did not build" from "I never asked".

Datasets — data with no saved query​

A chart or table normally names a saved query, which is an allow-list an engineer wrote. When there is none for what was asked, the assistant can declare a dataset instead: a table, some columns or aggregates, filters, a grouping and a sort. It never writes SQL.

The server composes a read-only SELECT from that declaration and runs it. The SQL never reaches the browser.

  • One table, no joins, no sub-queries, no unions.
  • Aggregates: sum, avg, min, max, count. Filters are ANDed and every value is bound as a parameter.
  • Names are checked against the live schema. A table or column that does not exist is refused, not guessed.
  • At most 1,000 rows, 200 when the dataset states no limit. A table over a dataset pages those rows in the browser.

Which databases a dataset may read is the widget's databases fence, the same one every other AI database read on that screen uses: * means every AI-enabled database, a list means those, and empty means none. A connection the administrator has not marked AI-enabled is refused even when the widget lists it. A dataset may name a connection by its name or its id.

What fences it​

A dashboard can show nothing a chat answer on the same screen could not:

DataFenced by
Tags, trends, readouts, map positionsThe widget's tag scope, or the operator's role ceiling when limitToRole is on
Saved queriesThe project's own saved queries
DatasetsThe widget's databases list and each connection's AI-enabled flag

The fences are read from the saved screen on every build, every hand edit and every reopen, never from the browser. Building one needs only View Namespace, which an operator who can read a tag already holds; the capability switch is the real gate. → Skills & fences

Changing it​

By asking. "Make the gauge wider", "add the pressure": the assistant edits the dashboard on screen rather than rebuilding it, so whatever the operator adjusted by hand survives. It picks the tile by what it shows — its tag, query, kind or title — never by position. An edit cannot change what a tile reads; repointing a tile is a remove and an add, fenced like any new tile.

By hand. Tiles on the dashboard bar lists every tile. Each can be:

SectionSetting
HeaderTitle and subtitle, edited or hidden. Empty means named from the data.
LayoutWidth (3, 4, 6, 8 or 12 of 12 columns), height (Auto, preset rows up to 16, or 2–24 typed), Start new row
AppearanceCard (on by default; Table and Map are never carded), Legend on line, bar, pie, scatter and radar, Data labels on pie
Show asAnother kind that reads the same data — a gauge can become a tank or a trend, never a table

Move earlier, Move later and Remove sit on each row. Hand edits never ask the AI again and cost no tokens: the server recompiles the dashboard and applies the same fences, so an edit cannot widen what it shows. Every tile in a row is as tall as the tallest one in it, so shortening a row means shortening its tallest tile.

The assistant can also set a widget's own look on a tile — a gauge's colour, a chart's legend position, a table's frozen, merged or coloured columns. Only presentational properties are settable; anything that fetches, runs, or repoints the tile is refused, and the assistant is told which properties it may set.

Keeping it​

The dashboard on screen is autosaved as a draft, one per widget per operator, and restored when they come back. The bar says Draft · not saved for as long as that is true.

ActionWhere
SaveThe dashboard bar. Names it — the assistant's title is suggested — and keeps it to the operator's own account.
My dashboardsThe menu beside it. Open a kept dashboard, or delete one of your own.
Discard this draftSame menu. Clears the canvas at once.
Back to chatShown while a kept dashboard is open.

Kept dashboards are stored in the project's User Database, beside the operator's conversations, up to 50 per operator per project. They work in LiveView for a signed-in operator.

A kept dashboard is stored as its intent, not as a compiled view. Opening one recompiles it against the widget's fences and the tags as they are now, at no token cost. Narrow a widget's scope and every dashboard built from it loses the tiles it may no longer show, each with its reason; widen it again and they come back. A dashboard whose tiles have all gone out of scope still opens, showing why, so it can be rebuilt or deleted.

Gotchas​

  • Only the newest dashboard is on the canvas. Each turn that built one keeps it on its message in the conversation; a later question that builds nothing leaves the dashboard where it is.
  • A map does not frame its markers. Zoom to them by hand.
  • There is no alarms tile. The alarm widget cannot be limited to an area, so a tile for "Line 2 alarms" would show the whole plant's.
  • Tables are styled per column. "Make the Status column's header dark" works; "give every table a dark header" has no column to attach to.

See also​