Client-side benchmarks, unchanged array data. Group shows Year → Month → Day → PerformedBy → OwnAccount as a five-level tree, descending at every level.
Group / Span / Heights disable virtual scrolling for correctness. Large datasets can exhaust browser memory.
XLSX uses ExcelJS for styles and hierarchical outlines. Double-click a cell to edit.
Compatibility and benchmark notes
Data scripts are loaded from data/ first, then the HTML directory; accounts.js must be beside this file.
Dependencies are loaded from local JS / CSS files beside this HTML; no CDN connection is required.
No source data is pre-sorted, pre-filtered or pre-grouped. Formula accessors retain the 14-element arrays.
Bootstrap Table renders row HTML for the entire dataset even with virtual scrolling; 5M is not guaranteed.
There is no horizontal virtualization, native multi-level grouping, column grouping, or zero-lag switch.
The tree adapter adds one prefix group header per grouping level above native leaf groups.
Payment data is never pre-grouped. The tree adapter synchronizes nested collapse state, selection, visibility, totals and export.
Copy uses native prepend / append / insertRow; editing uses updateCell; columns use refreshOptions.
A benchmark-only adapter delegates body events and refreshes edited formula dependencies and the virtual row cache locally.
Changes affecting sort, filter or group keys still use a full native refresh.
Span uses native automatic rowspan / colspan rendering instead of post-render mergeCells loops.
DOM-node formatters avoid repeated HTML parsing; fixed-width headers avoid per-cell layout measurements. Local files should be Bootstrap Table / extensions version 1.27.3.
Change uses batched updateRow; native per-row index lookups can be quadratic.
Group ordering uses the native Multiple Sort implementation, descending by every selected grouping field.
Year / Month / Day sort chronologically descending; PerformedBy / OwnAccount sort by visible labels Z-A.
Set GroupSortListLabels=false in the script to sort the two named lists by their stored numeric codes instead.
Source insertion positions are retained, but active sorting and grouping override visual insertion positions.
Export is an explicit adapter with one outline level per grouping field. Printable expands the same hierarchy and includes all current filtered rows.
All timings include layout opportunities; preparation, script load, and render are reported separately.