Repository navigation
v0.9.13
Release v0.9.13
📦 NPM packages
🐳 Docker image
docker pull ms2data/malloy-publisher:0.9.13
docker pull ms2data/malloy-publisher:latest
ℹ️ Details
- Release branch:
release/v0.9.13 - Triggered by: @kylenesbit
A filter's dropdown can find values past its first 1,000
A select or multiselect control over a dimension with more than 1,000 distinct values could only ever offer the first 1,000 in order: its options were fetched once, and typing filtered them in the browser, so a value past the cutoff (say "General Motors, LLC" among 2,901 manufacturers) could not be found and no request was sent. Now the suggest asks for one row past its limit, so a cut-off list is known to be one. Typing in such a control searches the whole dimension on the server after a 250ms pause, with a case-insensitive "contains" that every dialect compiles, and offers up to 200 matches. The dropdown says when a list is partial. Lists of 1,000 or fewer behave exactly as before and send no extra requests. This applies to both a package report and a text-held document (textSource), since both fill their controls the same way.
A named suggest (suggest { query=… }) cannot be searched, because there is nowhere to add the condition to a whole query. Its list is still filtered in the browser; when it comes back at the server's 1,000-row cap, the dropdown says the list is partial and that a value not listed can still be typed.
For an SDK host: useSuggestOptions also returns truncated (the givens whose list was cut off) and search (a server search per searchable given), and GivensPanel and GivenInput take them as optionsTruncated and optionSearch. buildSuggestQuery's query now asks for limit: 1001, and it takes an optional search text. Hosts that draw controls through useDocumentControls get all of this with no change.
Edits put back on opening are said in the save status, not in a banner
A builder that keeps drafts (ReportEditor with keepDraft, or ReportBuilder with draftKey) no longer draws a full-width "Restored your unsaved edits from 5:26 PM." banner above the report when it opens on edits kept in this browser. Edits stay kept until Done, so a host that always keeps drafts showed it on nearly every Edit, and it pushed the page down. Now the save status says it: it reads "Draft saved" as before, its dot takes the accent colour, and the first line of its menu reads "Restored your unsaved edits from 5:26 PM" above Discard edits. Once the menu has been opened, or after the next edit, the dot goes back to normal and the line goes back to "Kept in this browser at …". BuilderBar and the in-page toolbar both draw it, so a host that draws BuilderBar in its own header gets it with no change. The in-page toolbar draws the status only when a draft is kept, so a builder without draftKey looks as it did.
A draft kept before the report changed is still asked about on the page, with Restore them and Discard. That warning no longer has a close button: putting the draft back would replace the newer version and dropping it loses the edits, so it stays until the author picks one. An edit counts as picking: the edits replace the offered draft and the warning goes. Before, an edit dropped the draft but left the warning up, and Restore them then did nothing.
BuilderControls gains three optional fields for a host that draws its own status: restored ({ savedAt, stale, pending }, the new RestoredDraft type, exported), restore (present while restored.pending; applies the stale draft) and dismissRestored (present while restored edits are news; call it once the author has seen them). discard is now also present while a stale draft is pending, as its other answer. Nothing was removed.
The builder's Linear / Grid switch is gone
The report builder no longer offers a switch between layout=linear and layout=grid, in the Console's bar or in the SDK's BuilderToolbar. The builder draws a report in the layout its ## artifact tag declares and never rewrites layout=; to change a report's layout, edit the tag in the file. The switch turned a dashboard into a story (or back) in one click, and the page it left behind was more often a mess than the report anyone meant.
For a host on the SDK: ReportEditor and ReportBuilder drop the allowLayoutChange prop, BuilderControls drops its layout entry (so a host drawing the controls itself has nothing to draw for it), and the report.layout_changed event is no longer emitted or in the ReportEvent union. readReportTagOfText still reads the layout from any text.
What's Changed
- chore(release): 0.9.12 by @housejester in #1423
- feat(server): list, drop and reclaim tables in a storage destination by @housejester in #1337
- feat(builder): say restored edits in the save status, not a banner by @kylenesbit in #1431
- fix(builder): keep the description's selection ring and its shadow clear of the filter row by @kylenesbit in #1432
- feat(builder)!: remove the Linear / Grid layout switch by @kylenesbit in #1429
- skills: data apps that load light, hold still, and keep drawers on screen when embedded by @kylenesbit in #1347
- feat(givens): search a filter's dropdown on the server past its first 1,000 values by @kylenesbit in #1434
- fix(givens): offer Reset only when it would change something by @kylenesbit in #1433
Full Changelog: v0.9.12...v0.9.13