M2 table formatting and linking architecture
Objective
Define a coherent table formatting and linking model at table and column config scope: rendered cells still exist, but M2 does not introduce a cell-level format namespace in YAML—per-row presentation comes from data plus column-ID-first fields and templates.
Scope
- Link behavior at table/column level, including cross-column URL mapping.
- Formatting at table and column scope for M2.
- In-cell visual encodings (for example data bars and sparklines) as formatting-owned behavior.
- Cross-column mapping of source values to presentation attributes (URL, colors, font weight, etc.).
- Breaking adoption of
style.table/style.columnson table charts in docs and examples (no runtime migration or compatibility shims pre-launch).
Deliverables
- [x] Create initiative scaffold and attach M2 tasks.
- [x] Research external BI and table-library configuration patterns.
- [x] Propose unified option taxonomy for table formatting + linking.
- [x] Define recommended config organization and precedence model.
- [x] Define full M2 deliverable set for table format (single milestone).
Task Plan (M2)
- [ ] m2-table-formatting-survey-and-option-inventory
- [ ] m2-table-config-schema-and-precedence-model
- [ ] m2-linking-actions-for-headers-rows-and-cells
- [ ] m2-conditional-formatting-and-row-level-styling-engine
- [ ] m2-in-cell-visual-encodings-and-sparkline-consolidation
- [ ] vega-lite-format-parity-for-tables-and-python-formatters
- [ ] m2-docs-examples-and-qa-matrix-for-table-formatting
Recommendation Snapshot
- Nest table presentation under chart
style:style.table(table-wide) andstyle.columns(per query column ID), alongside genericstylechrome keys. - Treat linking as a first-class concern at column scope; row-level URL variation via column ID on
link(column-ID-first) or URL templates with column placeholders. - Keep in-cell visuals (bars/sparklines) under
style.columns.<id>.visualso one column can combine number formatting, link behavior, and micro-visualization coherently. - For M2, keep logic/conditions in query/data output; formatter config maps values to presentation attributes (column-ID-first strings, no parallel
*FromColumnnames). - Table
valuenumber/date formatting mirrors Vega-Lite (format/formatType); shared Python implementation with charts (see Vega-Lite format parity task). - Duplicate YAML keys are compile errors everywhere dashboard YAML is loaded.