# Dashboards

Cx Assistant help · platform: web · module: dashboards · updated 2026-10-08
Canonical: https://cx-assistant.com/en/help/web/dashboards

## What are dashboards

Dashboards are custom pages of charts and metrics built from your project's data — assets, issues, RFIs, reviews, scripts, and trackers. Each dashboard is a set of sections containing widgets (charts and figures) that render live data every time you open it.

Open Dashboards from the sidebar. Viewing requires the dashboards.read permission (all built-in roles have it). You can build dashboards yourself in the builder, or ask the AI to build them for you — see the Build dashboards with AI section.

## The dashboards list

The Dashboards page shows every dashboard you can see as a card with a mini-preview thumbnail, so you can recognize each one at a glance. Click a card to open the dashboard.

Users with the dashboards.manage permission also see create and delete actions here, and users allowed to build dashboards in chat see a Build with AI button that opens a new chat with the Commissioning Assistant.

## How to create a dashboard

1. On the Dashboards page, click the create button (requires the dashboards.manage permission — Project Admins and Project Members by default).
2. Start from BLANK or pick a starter template: Project overview, Issues deep-dive, Delivery, or My work.
3. Give it a name and description.
4. Set the visibility toggle to control whether it's shared or just for you.
5. Create — then open the builder to add or adjust sections and widgets.

Prefer talking it through? The Build with AI button on the same page opens a chat where the assistant creates and edits the dashboard for you.

## The dashboard builder: sections, widgets, and filters

Click Edit on a dashboard (requires dashboards.manage) to open the builder:
- Title and description: edit at the top.
- Sections: add, rename, reorder, and delete sections to organize the page.
- Widgets: add a widget to a section and configure it in the widget editor — choose the data source (a dataset or an insight template), group-bys, metrics and filters, then the widget type: chart, number card, table, progress, text, or divider.
- Width: each widget takes a share of a 12-column row (a number card 3, a chart 6, a table 6). A dashboard reflows on its own when its column is narrow (the chat panel open, a small window): small cards pair up and charts stack; "Width when narrow" in the widget editor overrides that for one widget. On phones everything is full width.
- The preview inside the widget editor runs automatically as you change the query, so you always see real data while you build. If it shows "Run preview to see data", the query hasn't run yet.
- Filters: define the filters viewers will see on the dashboard, including defaults (see the filter bindings section).

Click Save when done — the server re-validates the dashboard before storing it.

## Datasets and insight templates — what data can a widget show

A widget's data comes from one of two source kinds:

DATASETS — build your own query over the project's raw records:
- Issues: one row per issue — status, priority, type, created and closed dates, assignee, plus "Open" and "Assigned to me" filters.
- RFIs: one row per RFI — status, priority, type, created/closed dates, due date, official response date, plus "Open" and "Overdue" filters.
- Assets: one row per asset — type, category, status, location, created date, and the number of open issues linked to each asset.
- Reviews: one row per document review — open, closed, or cancelled, with opened and closed dates.
- Scripts: one row per commissioning script — status (not started, in progress, completed, on hold, failed) and progress.
- Tracker rows: one row per row across the project's trackers.

INSIGHT TEMPLATES — ready-made analyses with tunable settings:
- Issues created vs closed: cumulative created and closed issues over time.
- Asset plan vs actual: cumulative planned vs actual asset sign-offs over time, optionally restricted to a sub-population of assets (for example, only assets with open issues).
- Tracker summary: one tracker's cell totals by status.
- Document tracker: document approval progress per document group (total, linked, approved, pending, rejected).

Pick Dataset when you want to slice raw data your own way; pick Insight template when one of the curated analyses already answers your question.

## Metrics glossary — what each metric means

Metrics are the numbers computed over your query's matching rows:
- Count: the number of matching rows (issues, assets, RFIs, …). The default metric everywhere.
- Average close time (issues, RFIs): average days from creation to close. Items that are not closed yet are left out of the math, so combine it with a "Closed has a value" or "Open is false" filter to make the population explicit.
- Median close time (issues): the middle value of days-to-close — half closed faster, half slower. Less sensitive to outliers than the average.
- 90th-percentile close time (issues, RFIs): 9 out of 10 items closed within this many days. A good "worst realistic case".
- Longest close time (issues): the single slowest item's days-to-close.
- Average cycle time / 90th-percentile cycle time (reviews): days from a review opening to closing.
- Average response time (RFIs): average days from RFI creation to the official response.
- Average completion days (scripts): average days from script creation to close.
- Average progress percent (scripts): the average completion percentage across matching scripts.
- Open issues (assets): how many non-closed issues are linked to each asset. Also usable as a filter — "Open issues is greater than zero" gives you only the assets that currently have open issues.

In the pickers, each metric shows this plain-language description under its name.

## Chart mapping: category axis, values, and series

A chart widget maps your query's output onto chart slots:
- Category / time axis: which field labels the bottom axis — usually your first Group by (for example status, or a time bucket).
- Values: the metric(s) that set the bar heights or line positions — you can pick more than one.
- Split into series by: an optional second field that splits the data into multiple colored series (for example priority within each status).
- Donuts and treemaps use Slice labels and Slice values instead of axes.
- Breakdown bars (the Home dashboard's priority bars) draw one full-width bar per category with segments sized by their share of that row, the count at the right end — pick it over stacked bars when row totals differ a lot. It needs a category axis and a series split.

The builder fills the mapping in automatically from your query — first group-by becomes the category axis, metrics become values, a second group-by becomes the series — and keeps it in step when the query changes. If the preview shows a warning like "To draw this chart, choose: category / time axis", the chart is missing a required slot: pick a field for it (usually by adding a Group by to the query) and the chart will draw.

Series colors can be overridden per series name — colors are matched by the name shown in the legend.

Three taste knobs sit under the mapping:
- Colors: Project colors (the default) use your status and priority colors where the data has them; Brand lime draws one series in lime and two series as a grey reference plus lime (plan vs actual, created vs closed); Categorical palette uses the fixed palette and ignores flow colors. A color set per series always wins.
- Legend: shown when there are several series, or always, or never.
- Grid lines: Faint (the default, the Home dashboard's hairline look), Normal, or None. Grid lines exist on bar, line and area charts only.

## Dashboard filters and widget bindings

The filters a viewer sees at the top of a dashboard only affect widgets that are BOUND to them — a binding says which field of the widget's data a filter applies to. You normally never have to manage this by hand:
- When you add a filter, it automatically binds to every widget whose data has a matching field.
- When you add a widget, it automatically picks up bindings for the dashboard's existing filters.
- A date-range filter binds to each widget's date field, so one date filter can drive different date fields on different widgets.

Your manual choices always win: in the widget editor's Dashboard filters section you can point a binding at a different field or set it to "Not bound" to opt that widget out — automatic binding never overrides what you set.

In the builder, widgets that no dashboard filter affects show a "Not affected by filters" badge, so you can spot them at a glance. If a viewer changes a filter and one widget doesn't react, that widget is unbound — open its editor and bind the filter.

## Number cards: getting a single total

A number card (KPI) shows ONE number: the chosen metric read from the first row of its query's result. For a project-wide total, the query should return a single row — leave Group by empty.

If the query returns several rows (because it groups by status, priority, and so on), the card can only show the first group's number — which is usually not the total you meant. The builder warns you: "This query returns N rows — this widget shows only the first. Remove Group by to get a single total." Do exactly that, or add filters until one row remains.

When a dashboard filter (or the card's own filter) narrows a number card, the card says "Filtered" under the figure — so a total that differs from the project-wide one does not read like a bug.

## Headline figure: the big number under a chart title

A chart or table widget can show a headline figure under its title — the "161 · 16% closed" row the Home dashboard uses. Turn it on in the widget editor under Headline figure.

- Figure: one metric from the widget's own query. Read it from the last row (right for cumulative series such as issues over time), the first row, the sum of all rows (a total across a breakdown) or the largest row.
- Number format: whole number, compact (1.2k) or percent.
- Chip: optional text next to the figure. Write {percent} in it where a percentage goes, then choose which metric is a percentage of which (closed out of created gives "16% closed"). A chip without a percentage is a plain label.

The headline is computed from the same rows the chart draws, so filters that change the chart change the figure too, and PDF, Word and PowerPoint exports print the same number.

## Progress widgets: a percent field, or value out of total

A progress widget draws a progress bar from the first row of its query's result, in one of two modes:
- A percent field: pick one field that already holds a 0–100 value (for example a script's average progress percent).
- Value out of total: pick two fields — the bar shows value ÷ total (for example approved documents out of all documents, using the Document tracker template).

Layout: One bar reads the first row only. One bar per row draws a bar for every row of the result, named by the field you choose as the label — the Asset completion card on Home is this layout over the Asset status completion template, one bar per status with the value out of total under it. Bars are green from 70%, amber from 40% and red below.

If the widget says it needs its fields set, the chosen fields don't yield a usable number for the current query — switch mode or pick different fields, and use the preview to check.

## Assigned to me and the My work dashboard

The issues dataset has an "Assigned to me" filter. It is VIEWER-RELATIVE: "me" means whoever is looking at the dashboard right now. On a shared dashboard, each person sees their own issues — two colleagues open the same dashboard and get different, correct numbers by design. An export to PDF, Word or PowerPoint likewise captures the issues of the person who exports.

Details worth knowing:
- "Assigned to me is false" means "not assigned to me" — unassigned issues are included.
- The Assignee field can also be filtered or grouped directly for per-assignee breakdowns.
- Filtering by a group or team's assignments is not available yet.

The quickest start is the My work starter template when creating a dashboard: it comes with "my open issues", "my issues by status", and a table of what's assigned to you — and every viewer of it sees their own workload.

## Build dashboards with AI

You don't have to build dashboards by hand — the Commissioning Assistant can do it with you in chat. Describe what you want to see ("a delivery dashboard: plan vs actual sign-offs, open issues by priority, and my open issues") and it will:
- Create a new dashboard, or open and extend an existing one.
- Add, edit, and remove sections and widgets — charts, number cards, tables, progress bars, and text.
- Set up the viewer filter bar and bind the filters to the right widgets.
- Preview every query and chart with your real project data before applying it, and iterate until it looks right.
- Inspect the project's datasets so it uses your exact statuses, types, and priorities.
- Build viewer-relative "my work" widgets, so a shared dashboard shows each person their own items.

To start, click Build with AI on the Dashboards page — it opens a new chat — or simply ask for a dashboard in any Commissioning Assistant chat on the web. Building dashboards in chat requires its own permission (granted to project admins by default), and the assistant's changes go through the same permission checks as the builder — it can never show data you couldn't see yourself.

## Viewing a dashboard: filters and refresh

Open a dashboard to see its widgets rendered with live data. The actions sit in the title row and appear when the pointer is over it (always shown on touch screens):
- Filters: the filter icon opens a card with the dashboard's filters (defaults set by the dashboard's author), time window first. A badge on the icon counts the filters you changed from their defaults; Reset inside the card puts them back. They narrow every widget bound to them.
- Refresh: reload every widget's data.
- Export: PDF, Word or PowerPoint.
- Edit (pencil): opens the builder (only shown with the dashboards.manage permission).

Hover a chart to reveal its own controls, at the top right of the card:
- The sliders icon opens the dashboard filters this widget is bound to, so you can narrow one chart without changing the others. The icon stays lit while a card-level filter is active; "Use the dashboard filters" clears it.
- Plan vs actual charts add a time-horizon toggle (Until today / Full schedule) and one chip per asset status to look at a single status.

These choices are not saved with the dashboard; an export made from the page carries them, so the file shows what you were looking at.

With the dashboards.manage permission the hover controls also include a gear. It opens a small panel to change the chart's look without entering the builder: its shape (only the shapes the chart's fields can feed), the palette, one color per series or bar, the legend, the grid lines and the card height. Changes draw at once and are saved to the dashboard for everyone a moment later; "Open in the builder" continues on the same widget with every option. The assistant can change the same things.

Click a bar, a slice, a breakdown segment or a point on a line to open the records behind it over the chart, inside the card: the key columns of each record, a Load more button for long lists, and Copy list to put the IDs on the clipboard. Click a row to open the record — assets and issues open in place, RFIs, reviews, scripts and trackers go to their page. The list is computed with your permissions, like the chart. A dashboard's author (or the assistant) can switch click-through off for a widget.

Everything you see is computed from data YOUR account can read — see the data-access section.

## Export a dashboard to PDF, Word or PowerPoint

1. Open the dashboard.
2. Apply any filters you want reflected in the export.
3. Click the Export button (the download icon next to Refresh).
4. Choose Export as PDF, Export as Word or Export as PowerPoint.
5. The file is generated and opens in a new browser tab so you can save or share it. The Export button is greyed out while the file is being built.

What each format gives you:
- PDF: a landscape document that keeps the dashboard's grid — widgets sit side by side as they do on screen.
- Word: a portrait A4 document. Word has one column, so the widgets follow one after another, section by section.
- PowerPoint: a widescreen deck with a title slide, then one slide per dashboard section. A section that does not fit continues on "(cont.)" slides.

All three start with the dashboard's name and description, the project name and the date it was generated. They contain the same content: section titles, charts, number cards, tables, progress bars and text. In Word and PowerPoint the charts are pictures, so you can resize them but not edit their data.

The export captures the dashboard as YOU see it: your filters, your data permissions, and — for "Assigned to me" widgets — your own assignments. A widget over data you cannot read shows the note "The exporting user does not have access to this data" instead of numbers.

## Dashboards and data access — widgets never show more than you can see

Dashboard data always respects the VIEWER's permissions. When you open a dashboard, each widget only computes over data your own role can already read — for example, a widget over assets shows nothing to a viewer without assets.read.

This also means the dashboards.manage permission never widens data access: building or editing a dashboard doesn't let anyone see data they couldn't see elsewhere, and two people can open the same dashboard and see different numbers if their permissions differ. The same holds when the AI assistant builds a dashboard — it works within your permissions.

## Who can view and manage dashboards (permissions)

- dashboards.read — open the Dashboards page and view dashboards. Default: Project Admin, Project Member, Technician.
- dashboards.manage — create, edit, and delete dashboards. Default: Project Admin, Project Member.
- Building dashboards in chat (Build with AI) has its own permission (agents.dashboards, "Dashboards skill in the assistant"), granted to project-admin roles by default.

The project owner can always do everything. Remember: dashboards.manage only controls who can BUILD dashboards — the data each viewer sees is always limited by that viewer's own read permissions.

## Dashboards troubleshooting

- Dashboards missing from the sidebar: your role lacks dashboards.read — ask a project admin.
- No create or Edit button: you need the dashboards.manage permission.
- A chart in the builder stays blank: it's usually missing a required mapping slot — the preview says which (for example "To draw this chart, choose: category / time axis"). Add a Group by or pick the field in the Chart section.
- A number card shows a strangely small number: its query returns several rows and the card reads only the first — remove Group by to get a single total.
- A viewer filter doesn't change one widget: that widget isn't bound to the filter — in the builder it shows a "Not affected by filters" badge; open the widget editor's Dashboard filters section and bind it.
- A widget looks empty or numbers differ from a colleague's: widget data is computed with YOUR permissions — and "Assigned to me" widgets intentionally show each viewer their own items.
- Numbers look stale: click Refresh to reload all widgets.
- Save fails in the builder: the server re-validates the dashboard — check each widget has a valid data source, metric, and chart configuration.
- A widget shows a faint ghost chart and "No issues yet" (or no assets, RFIs, reviews, scripts, tracker rows): the project has no records of that kind yet — nothing is broken. The button under the message opens the page where the first one is added; it only appears when you have permission to create them. To change the wording, set the widget's Empty-state message in the builder.
