OpenSparrow v4.2 adds native Excel export, column masking for viewers, and record‑tooltips in drilldowns — plus a handful of UI polish and stability fixes.
Native Excel export
The record grid, public share links, saved views and the mass‑edit “Export Selected” panel can now download a real .xlsx workbook alongside the existing CSV. The workbook is built completely in the browser by a dependency‑free writer (public/assets/js/export_xlsx.js) that emits a valid OPC package:
- Typed cells for numbers, booleans and dates
- XML‑escaped text and sanitized sheet names (max 31 chars)
- Required
docProps/core.xmlanddocProps/app.xmlparts
The UI now shows an Export Excel button (also in the mobile actions menu), views and share pages render one next to Export CSV, and the mass‑edit panel adds a Format radio (CSV / Excel) that switches the download label. All new strings are translated in every one of the 20 languages.
Viewer column masking
A column can be flagged in the schema editor (Schema → table → column → Mask value for Viewer) to hide its value from frontend Viewer accounts. The column stays visible everywhere, but every value is replaced with the ••••• placeholder:
- Grid, drill‑down sub‑tables, record form, board cards, calendar events, roadmap bars, dashboard lists and group/time‑series labels
- M2M option labels, FK
__displaylabels, and public share links
Masking is enforced server‑side – the raw value never leaves the backend for a Viewer – while Editors and Admins see the real data. The flag lives in the schema configuration (columns.<col>.mask_for_viewer) and requires no migration; the schema editor marks such columns with a warning badge.
Record tooltip in drilldowns
Hovering a child row inside an expanded drill‑down now shows the same record tooltip as grid cells, with the child’s title and its configured columns. The tooltip logic was refactored to use a monotonic show token, eliminating race conditions between overlapping hovers.
Also in this release
-
XLSX export hardening – object‑URL revocation is now deferred (
setTimeout(…, 0)) so Firefox no longer cancels a download before it starts, and every download site (grid, views, mass‑edit CSV, share) uses the shareddownloadBlobhelper instead of hand‑rolled<a>+URL.createObjectURLcode. - Tooltip hide race fixed – a stale hide timer could dismiss a tooltip that a newer hover had just shown; the new token‑based approach guarantees the correct tooltip stays visible.
Top comments (0)