Summary
When a user clicks a plan tree node on the web app (plans.erikdarling.com), show a slide-out side panel with the full operator properties — matching the desktop app's properties panel behavior.
Context
The web app currently shows operator details only via hover tooltips (BuildTooltip in Index.razor), which are limited in space and can't display long predicates or multi-line data well.
The desktop app (PlanViewerControl.axaml.cs) shows a full properties panel on node click with:
- Operator name, logical op, node ID
- Cost metrics (estimated cost, subtree cost, I/O, CPU)
- Row estimates vs actuals (with accuracy %)
- Actual runtime stats (elapsed, CPU, logical/physical reads, scans, read-aheads)
- Predicates (seek predicates, residual predicate, output columns)
- Join details (hash keys build/probe, outer references)
- Sort/aggregate (order by, group by)
- Object context (database, table, index)
- Parallelism (DOP, execution mode, partitioning)
- Memory (grant, desired, max used per operator)
- Operator warnings
All this data is already on PlanNode — just needs a UI to display it.
Suggested approach
- Click a node in the plan tree → show a right-side panel (similar to desktop)
- Click another node → update panel contents
- Click outside or close button → dismiss panel
- Panel scrolls independently from the plan tree
- Predicates and column lists displayed in monospace, selectable text
Files involved
src/PlanViewer.Web/Pages/Index.razor — add click handler on nodes, panel markup
src/PlanViewer.Web/wwwroot/css/app.css — panel styles
src/PlanViewer.Core/Models/PlanModels.cs — data source (read-only, no changes needed)
Summary
When a user clicks a plan tree node on the web app (
plans.erikdarling.com), show a slide-out side panel with the full operator properties — matching the desktop app's properties panel behavior.Context
The web app currently shows operator details only via hover tooltips (
BuildTooltipinIndex.razor), which are limited in space and can't display long predicates or multi-line data well.The desktop app (
PlanViewerControl.axaml.cs) shows a full properties panel on node click with:All this data is already on
PlanNode— just needs a UI to display it.Suggested approach
Files involved
src/PlanViewer.Web/Pages/Index.razor— add click handler on nodes, panel markupsrc/PlanViewer.Web/wwwroot/css/app.css— panel stylessrc/PlanViewer.Core/Models/PlanModels.cs— data source (read-only, no changes needed)