egutierrez
c438dc6916
data_table: Phase 2 — Button + events + tooltip + RightClick + TQL persist column_specs (issue 0081-O)
- CellRenderer::Button=5: renders SmallButton per cell; emits TableEvent::ButtonClick on click
- TableEventKind enum (ButtonClick/RowDoubleClick/RowRightClick/CellEdit) + TableEvent struct
- render() extended overload: adds events_out parameter (nullptr = back-compat, no events)
- RowDoubleClick and RowRightClick detection in raw table loop (stage 0)
- RowRightClick also detected in aggregated stage table (stage 1+)
- Tooltip per cell: tooltip_on_hover + tooltip fields on ColumnSpec; "auto" = show cell value
- State::aux_column_specs: TQL-persisted column specs sidecar per table
- tql_emit: serializes aux_column_specs[0] as column_specs block (badge/progress/duration/icon/button/tooltip)
- tql_apply: parses column_specs block back into state.aux_column_specs[0]
- render() merges aux_column_specs into TableInput when caller passes empty column_specs
- test_column_specs: 5->8 tests (Button struct, tooltip fields, both render() signatures link)
- tql_emit_test: 3 new tests (column_specs badge/button/tooltip emit) — 52 passed
- tql_apply_test: 3 new tests (column_specs badge/button/tooltip roundtrip) — 106 passed
- Back-compat: existing apps (graph_explorer, registry_dashboard) unchanged
- Version bump: data_table v1.1.0 -> v1.2.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 16:59:26 +02:00
..
2026-04-28 22:05:31 +02:00
2026-04-28 22:05:31 +02:00
2026-04-28 23:40:51 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-14 00:28:20 +02:00
2026-05-03 00:32:55 +02:00
2026-04-25 21:25:51 +02:00
2026-04-28 23:40:51 +02:00
2026-04-24 14:52:09 +02:00
2026-04-24 14:52:09 +02:00
2026-04-28 23:42:35 +02:00
2026-04-25 21:50:29 +02:00
2026-04-25 21:50:29 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-04-28 23:42:35 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-04-28 23:44:55 +02:00
2026-05-15 16:59:26 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-24 14:52:09 +02:00
2026-04-24 14:52:09 +02:00
2026-04-28 23:42:35 +02:00
2026-04-28 23:53:49 +02:00
2026-04-28 23:53:49 +02:00
2026-04-28 23:53:49 +02:00
2026-04-28 23:55:11 +02:00
2026-04-28 23:55:11 +02:00
2026-04-28 23:55:11 +02:00
2026-04-06 23:46:36 +02:00
2026-04-06 23:46:36 +02:00
2026-05-14 00:28:20 +02:00
2026-04-24 21:31:00 +02:00
2026-04-08 01:17:44 +02:00
2026-04-28 23:40:51 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-05-03 00:50:33 +02:00
2026-04-25 21:25:25 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:25:25 +02:00
2026-04-25 21:25:51 +02:00
2026-04-25 21:25:51 +02:00
2026-05-14 00:28:20 +02:00
2026-05-10 13:30:27 +02:00
2026-05-10 13:30:27 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 11:50:57 +02:00
2026-04-25 21:25:51 +02:00
2026-04-28 23:40:51 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-11 16:28:50 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-04-25 21:51:15 +02:00
2026-04-25 21:51:15 +02:00
2026-04-28 23:40:51 +02:00
2026-04-24 14:52:09 +02:00
2026-04-24 14:52:09 +02:00
2026-04-28 23:42:35 +02:00
2026-04-25 21:25:51 +02:00
2026-04-25 21:25:51 +02:00
2026-04-28 23:40:51 +02:00
2026-05-04 11:52:50 +02:00
2026-05-04 11:52:50 +02:00
2026-05-14 00:28:20 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-28 23:53:08 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:53:08 +02:00
2026-04-28 23:52:37 +02:00
2026-04-28 23:52:37 +02:00
2026-04-28 23:52:37 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-05-04 11:50:57 +02:00
2026-05-04 11:50:57 +02:00
2026-05-14 00:28:20 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 11:52:50 +02:00
2026-05-04 11:52:50 +02:00
2026-05-14 00:28:20 +02:00
2026-04-28 23:58:40 +02:00
2026-04-28 23:51:23 +02:00
2026-04-28 23:51:23 +02:00
2026-04-28 23:51:59 +02:00
2026-04-25 21:48:50 +02:00
2026-05-14 00:28:20 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:00:31 +02:00
2026-04-25 21:00:31 +02:00
2026-04-28 23:40:51 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:50:35 +02:00
2026-04-25 21:50:35 +02:00
2026-05-14 00:28:20 +02:00
2026-05-05 23:12:50 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-05-12 03:10:00 +02:00
2026-04-25 21:14:15 +02:00
2026-04-28 23:44:55 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-05-15 16:59:26 +02:00
2026-05-15 16:59:26 +02:00
2026-05-15 16:59:26 +02:00
2026-05-15 16:59:26 +02:00
2026-04-08 00:10:18 +02:00
2026-04-08 00:10:18 +02:00
2026-05-14 00:28:20 +02:00
2026-04-25 21:25:39 +02:00
2026-04-25 21:25:39 +02:00
2026-04-28 23:42:35 +02:00
2026-04-25 21:50:21 +02:00
2026-04-25 21:50:21 +02:00
2026-04-28 23:44:55 +02:00