Perspective orders column groups by the value string, and SortDir's col asc / col desc only reverses that -- so Prior Year -> Plan -> Actual -> Forecast is expressible as neither, being alphabetical in neither direction. The order has to be part of the value, as a "01 · " prefix. Done as Perspective expression columns, named Bucket and Segment, generated from pf.version.bucket_order and pf.log.seq. The first attempt computed the prefix in the served SQL (archived on feature/column-sequencing-sql), which was the wrong layer: the prefix is a pivot-ordering concern, and putting it in the query put it in every other reader too -- the change log and the bridge's basis list would both have read "04 · Forecast". It also meant a Generate SQL to introduce the placeholder, and a reload to see any change. As expressions it stays in the pivot, travels with saved layouts because it lives in ViewConfig, and reordering on the Baseline page takes effect immediately -- the expressions are rebuilt and the pivot re-renders, no reload. Kept from the SQL attempt: pf.version.bucket_order and pf.log.seq, which are needed either way, and the Baseline controls -- a seq column per segment and a reorderable row of bucket chips. bucket_order is on the version because the Baseline page is version-scoped; Setup is the only source-level context and not where anyone would look for this. Anything unordered falls through to the raw column, so it sorts after the ordered entries (digits before letters) rather than silently landing first. The expressions are merged into the live config rather than replacing it, so a user's own expressions survive, and an expression that stops existing is dropped from the axes first -- restore() rejects a config that pivots on an expression it no longer defines. Needs 01_schema.sql for the two columns. No Generate SQL. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| vendor | ||
| .gitignore | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.