Appearance
Report Designer
Last updated
License feature: Reporting ModuleThe report designer works like the dashboard editor: you add modules from a palette, drag and resize them on a page, and set each one's properties. What you see is laid out the same way the PDF is — the PDF is rendered from this same page by a headless browser.
Open it from Reports → pencil, or it opens after New Report.
Layout of the designer
| Area | What it holds |
|---|---|
| Toolbar | Back arrow, report name, Unsaved badge, page settings, Edit / Preview, format and Generate, Discard, Save |
| Left: Modules palette | Built-in modules grouped as Data, Charts, Media, Layout, then Dashboard Widgets |
| Center: page | A white page at the chosen size, showing the modules |
| Right: properties | Module Title, Configuration, Duplicate Module, Delete Module for the selected module |
Toolbar
| Control | What it does | Default |
|---|---|---|
| Report name | Click to rename | The name you entered |
| Page size | Letter or A4 | Letter |
| Orientation | Portrait or Landscape | Portrait |
| Default date range | The period modules use unless they set their own: Today, Yesterday, Last 7 Days, Last 30 Days, This Month, Last Month | Last 7 Days |
| Edit / Preview | Preview hides the palette and properties and locks the layout | Edit |
| PDF / HTML / CSV + Generate | Renders the saved report in that format (or, for CSV, exports its data — see Reports) and downloads it. Disabled while there are unsaved changes ("Save before generating") | |
| Discard | Throws away unsaved changes and restores the last saved version of the report. Disabled when there is nothing to discard | — |
| Save | Saves the name, page settings, date range and layout | — |
The page margin is fixed at 32 px and the report description cannot be edited here.
Build a report
- Click a module in the palette. It is added at the bottom of the page and selected.
- Drag it by the handle that appears at its top-left corner on hover; resize from its bottom-right corner.
- With the module selected, set Module Title and the fields under Configuration (see module reference).
- Repeat. Use Duplicate Module to copy a configured module (it is placed below the original, titled "(copy)").
- Pick page size, orientation and the default date range.
- Click Save, then Generate to check the result.
Remove a module with Delete Module or the X on the module. There is no undo.
The grid
- The page is 24 columns wide; a row is 24 px tall with 8 px gaps.
- Modules stack upward to fill gaps (vertical compaction), as on a dashboard.
- Anything below the first page's height continues on further pages in the PDF, and every page gets the report's margins. There is no page-break module and no repeating page header or footer, and a chart, image or text module that straddles the page edge can be cut across two pages. Check page breaks in the generated PDF and move modules to avoid them.
- Data Table and Crosstab modules print every row they return, however tall you drew them. A long table grows downward, pushes the modules below it further down, and continues onto the next page with its column headings repeated; rows are never split across pages. Modules beside a long table keep the height you gave them.
What you see in the designer
- Header, Text, Image, Divider and Dashboard Widgets show real content. Dashboard widgets fetch live data as you design, using the report's date range.
- Data Table, Crosstab, Chart and KPI Stat show a placeholder with a summary (for example "alarm_history · up to 20 rows") and "Data renders on generate/preview". Their data appears only in the generated file — Preview mode does not fill them in. Generate to check them.
Date ranges
Every data module has a Date Range. Report Default (the default) uses the toolbar's default date range; any other choice overrides it for that module. A dashboard widget with Use the report's date range on always follows the report default.
| Range | Covers |
|---|---|
| Today | Midnight to now |
| Yesterday | The previous calendar day |
| Last 7 Days / Last 30 Days | The 7 or 30 × 24 hours before generation |
| This Month | The 1st of the month to now |
| Last Month | The whole previous calendar month |
| Custom | From (ISO) to To (ISO), e.g. 2026-09-01T06:00:00Z (data modules only) |
Calendar ranges (Today, Yesterday, This Month, Last Month) use the appliance's local time zone for every module, so a Data Table and an embedded dashboard widget in the same report cover the same hours. In Custom, a bare date such as 2026-09-01 means that whole local day; a value with a time is used exactly as written.
Note: OEE Snapshots store one date per snapshot, and that date is the UTC day. A local calendar range on that source includes every UTC day it overlaps, so near midnight it can include one extra day's snapshot.
Example: daily shift summary
- New Report → "Daily Production — Cell 3". Set Landscape, default date range Yesterday.
- Header: title "Cell 3 — Daily Production", Logo Image from the file manager.
- Two KPI Stat modules side by side (12 columns each): Quality Events / Sum /
quantity, unit "rejects"; Downtime Events / Sum /duration_s, unit "s". Don't add an OEE Snapshots KPI to a Yesterday report — it comes out empty (see the warning under Data sources). For OEE on this report, add the OEE dashboard widget from the palette's Dashboard Widgets section instead. - A Chart with Chart Tags Spindle Load and Feed Rate, Aggregate Window 15 minutes, Aggregate Fn Mean.
- A Data Table of Alarm History, Max Rows
25, Columns["fired_at", "rule_name", "tag_path", "value", "cleared_at"]. - Save → Generate. Then Schedule it every day at 06:00 (schedules).