Skip to content

Web: Add operator properties panel on node click #176

@erikdarlingdata

Description

@erikdarlingdata

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions