Add engine-specific icons and improve table list in Play UI#101134
Add engine-specific icons and improve table list in Play UI#101134alexey-milovidov wants to merge 30 commits intomasterfrom
Conversation
…y UI Previously the balloon appeared when hovering anywhere on the row, including the empty space after the table name. Now it only appears when the pointer is over the table name button itself, using the CSS adjacent sibling combinator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each table in the sidebar now shows an SVG icon to the left of its name, reflecting the table engine: - MergeTree family: table grid icon - `SummingMergeTree`/`AggregatingMergeTree`: capital sigma (Σ) - `Memory`: microchip - `View`: eye - `MaterializedView`: eye over table lines - `Merge`: three overlaid tables - `Distributed`: fanout (box with arrows to three boxes) - `Proxy`: arrow between two boxes Replicated and Shared prefixes are stripped before matching. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Sigma: fix direction to match Σ (left-to-right-to-left zigzag) - Microchip: make body square (12x12 instead of 12x16) - Fanout: center source box vertically to make arrows symmetric - Merge: shadow tables offset to bottom-right instead of top-right Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The front table with the header line is drawn last (on top) at the top-left, and the two shadow copies peek out behind it toward the bottom-right. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each of the three layers is now a closed rectangle with a header line. The tables use background-color fill so the front table properly occludes the ones behind it, creating a clean stacked appearance. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ames Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The block display made the button take full row width, pushing the absolutely-positioned balloon to the far right. With inline-block the button is only as wide as its text, so the balloon appears right after the table name. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Uses a CSS animation with a delay so the balloon does not flash when quickly moving the pointer across the table list. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Workflow [PR], commit [a675c79] Summary: ❌
AI ReviewSummaryThis PR adds engine icons and table-list UX polish in Missing context
Findings❌ Blockers
ClickHouse Rules
Final Verdict
|
Replace display toggling and keyframe animation with opacity and pointer-events transitions. Both showing and hiding now have a 0.1s delay, preventing flicker when moving the pointer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
src/Storages/StorageProxy.h
Outdated
| virtual StoragePtr getNested() const = 0; | ||
|
|
||
| String getName() const override { return "StorageProxy"; } | ||
| String getName() const override { return "Proxy"; } |
There was a problem hiding this comment.
StorageProxy::getName is used as the system.tables.engine value for table-function-backed tables, and changing it from StorageProxy to Proxy breaks existing behavior and tests.
Concrete evidence in this PR branch:
tests/queries/0_stateless/02888_system_tables_with_inaccessible_table_function.referenceexpectsStorageProxy.tests/queries/0_stateless/00076_system_columns_bytes.sqlfilters onengine = 'StorageProxy'.
This change will regress compatibility for users/scripts that rely on the current engine name. Please keep StorageProxy here, and if you need Play UI icon mapping, handle it purely in UI mapping logic.
…e_function` The test expected `StorageProxy` as the engine name, but the PR renamed it to `Proxy`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LLVM Coverage Report
Changed lines: 66.67% (2/3) · Uncovered code |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…instead Address review feedback: keep `StorageProxy` as the engine name in `system.tables` to preserve backward compatibility. The Play UI icon mapping now matches on `StorageProxy` instead of `Proxy`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
programs/server/play.html
Outdated
| } | ||
|
|
||
| /// StorageProxy - arrow between two boxes | ||
| if (e === 'StorageProxy') |
There was a problem hiding this comment.
Just "Proxy", as we renamed it.
| } | ||
|
|
||
| /// StorageProxy - arrow between two boxes | ||
| if (e === 'Proxy') |
There was a problem hiding this comment.
I saw you reverted the rename from StorageProxy -> Proxy in 85c4338, so I don't understand why we're still looking for Proxy here instead of StorageProxy
There was a problem hiding this comment.
| if (e === 'Proxy') | |
| if (e === 'StorageProxy') |
There was a problem hiding this comment.
No, it's not meant to be reverted. The name will be Proxy.


Add inline SVG icons next to table names in the Play UI sidebar, reflecting the table engine:
SummingMergeTree/AggregatingMergeTree: capital sigma (Σ)Memory: microchipView: eyeMaterializedView: eye over table linesMerge: three overlaid tablesDistributed: fanout (box with arrows to three boxes)Proxy: arrow between two boxesAdditional improvements:
.innerare sorted lastChangelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):
Add engine-specific icons and improve table list UX in the Play UI sidebar.
Documentation entry for user-facing changes