Features

What functionality AurumReport offers today.

TypeScriptBrowser + Bun

AuReport JS engine

Pure TypeScript, isomorphic (browser + Bun): template JSON + data JSON → report model. Printing on paper, PDF (vector and raster), SVG / CSV / HTML / PNG / Excel / Word. The engine is honest — “what came in JSON, we render”: data preparation is done by external code or by the report script itself.

JSONrelationsIIf()??

Nested data (JSON)

Nested sources and relations, arbitrary depth; a flat report is a special case of a tree. Bindings by full path [kinds.categories.top.personFullName], indexes [main[0].field], expressions IIf/Substring/Trim, nullish ??, system variables [PageNumber], [RowNumber], [AbsRowNumber].

groupHeaderKeepWithData

Groups, totals, multi-column bands

Nested groups (a group inside a group), groupHeader/groupFooter with a total per group (countVar), “keep group on one page” (KeepWithData), details are not split (KeepDetail). Multi-column bands: snake (AcrossThenDown) and “newspaper” columns (DownThenAcross), row numbers [RowNumber]/[AbsRowNumber].

AuScriptnative JSDoublePass

Report scripts (AuScript)

Template code in native JavaScript — visible and editable in the designer (Code tab), travels with the template. Band and object events: OnBeforeData (sorting/filtering the data stream), OnBeforePrint, OnGetValue; double pass (DoublePass) for totals in headers; Report/Engine API. On the server the script runs in a sandbox with a timeout.

OnBeforeDatasort by total

Sorting data inside the report

Example Sort Group By Total: products are grouped by the first letter, but the groups are printed by SIZE (largest first) — the sorting is done by the report script (OnBeforeData), the engine stays an honest renderer.

Bookmarkcheckboxes

Interactivity and hyperlinks

External links and in-document bookmarks: clicking a category in the catalogue jumps to its block; the viewer has a “Back to contents” button. Checkboxes for boolean fields (Discontinued, etc.).

multi-pageprintOnAllPages

Pages

Multiple template pages, “print on previous page” (Print on Previous Page): the title and data share one sheet; header on every page (printOnAllPages); report summary (reportSummary).

gradientseven rowsWCAG

Styling

Fills and gradients, side borders, zebra striping (EvenStyle) — on the whole band or on separate text elements; a calm design palette with WCAG contrast (background + text pairs, no neon colours from legacy reports).

Figma-like snapData Lensgrid

Form designer

Pure TS core: object tree, property panel (including script events — chips and mini code), band badges, growing a band upwards, Figma-style snapping and smart guides, grid, Data Lens, locked, culture, Code tab for the report script.

searchlight/darkexport

Viewer

Page strip, search with highlighting, export and printing, light/dark theme, page thumbnails, reading mode, “Back to contents” after following a bookmark.

.mrt.frxStimulsoftFastReport

Template import

Import from StimulSoft (.mrt) and FastReport (.frx) into AurumTemplate: bands, text/image, fonts, borders, bindings, locked, scripts, culture, metadata.

100k ≈ 1.5 s1M ≈ 2 s (Bun)

Performance: 100 thousand and one million cells

Engine stress tests (a separate group in the demo): a 100,000-cell table (10,000 rows × 10 columns, 182 pages) renders right in the browser in ~1.5 s — the viewer turns on virtualization by itself (contents are built in a window around the visible page). One million cells (100,000 × 10, 1819 pages): the ~1.2 GB model does not fit into the browser memory, so the report is rendered by the server (Bun, ~2 s) and delivered page by page as ready-made images. Flip through ◄ 1/1819 ►, print or save any page to PDF/PNG.

in progress

AI in the designer (in progress)

AI panel: hints about data and template, help preparing a report (evolving).