Skip to content

feat(log-viewer): configurable column views across grids#860

Merged
lcottercertinia merged 6 commits into
certinia:mainfrom
lukecotter:feat-298-column-views
Jul 21, 2026
Merged

feat(log-viewer): configurable column views across grids#860
lcottercertinia merged 6 commits into
certinia:mainfrom
lukecotter:feat-298-column-views

Conversation

@lukecotter

@lukecotter lukecotter commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

📝 PR Overview

Adds configurable column views across the Call Tree, Analysis and Database (SOQL/DML) grids — switch between preset column sets, show/hide individual columns, and reset per view — so each grid can focus on the metrics that matter. Also adds new per-method metric columns and fixes grid rendering issues the wider column sets exposed.

🛠️ Changes made

  • Column views engine: shared presets (General / Time / Governor Limits / Database / Memory), a Columns toolbar button + header menu to show/hide columns, and an inline per-view reset. The active view is a discoverable lana.* setting; the opaque per-view overrides persist in globalState, routed through the LogView getConfig/updateConfig handler.
  • New Call Tree / Analysis columns: SOSL Count/Rows, Heap Allocated (+ Self), Avg Self Time, and Self variants; governor columns reworked to Gov. Avg (mean) + Gov. Peak (max) with clearer tooltips.
  • Database tables: SOQL/DML gain column views, a SOQL Query Plan view, and a % row-count bar.
  • Governor cost accuracy + perf: SOSL rows are excluded from governor cost and shown as a plain count — verified in-org that they have no governor limit (only SOSL queries, capped at 20) and don't count against the 50k query-rows limit. Gov. Avg/Peak are now computed in a single pass during tree build instead of a second full-tree walk.
  • Column-view fixes: the view chosen from the header right-click menu now persists (Call Tree / Analysis); an unknown persisted view id falls back to the default view; showing/hiding a column re-fits column widths (stock tabulator doesn't re-run fitColumns on visibility change).
  • Grid fixes: restore the body horizontal scrollbar (overflow-x) and fix frozen-cell bleed-through CSS. The sticky Name column is temporarily disabled pending a horizontal/vertical renderer fix (commented with re-add notes).

🧩 Type of change (check all applicable)

  • 🐛 Bug fix - something not working as expected
  • ✨ New feature – adds new functionality
  • ♻️ Refactor - internal changes with no user impact
  • ⚡ Performance Improvement
  • 📝 Documentation - README or documentation site changes
  • 🔧 Chore - dev tooling, CI, config
  • 💥 Breaking change

📷 Screenshots / gifs / video [optional]

Screenshot 2026-07-20 at 16 50 49

🔗 Related Issues

closes #298
related #32

✅ Tests added?

  • 👍 yes
  • 🙅 no, not needed
  • 🙋 no, I need help

📚 Docs updated?

  • 🔖 README.md
  • 🔖 CHANGELOG.md
  • 📖 help site
  • 🧪 Marked any pre-release-only features (README 🧪 badge — see RELEASING.md)
  • 🙅 not needed

Anything else we need to know? [optional]

  • Partially addresses Add support for heap size #32: adds per-method heap columns (Heap + Self, Memory view); the heap-over-time chart remains out of scope.
  • The sticky/frozen Name column is disabled for now — the frozen layout and the custom vertical virtual renderer don't compose cleanly yet; the code is commented with re-add notes.
  • Review focus: ColumnViews.ts + VsSelect.ts/ContextMenu.ts (menu + inline reset), the AppConfig/LogView persistence split, and DataGrid.scss (scroll + frozen-cell fixes).

- New shared ColumnViews engine: preset views (General/Time/Governor Limits/Database/Memory), header-menu
show/hide, and Reset — persisted per view via new lana.callTree/lana.database settings and an updateConfig
message handler
- Gov. Cost reworked to an average across all reported governors plus a Peak Limit (max) column; parser
gains a per-node heapAllocated field + rollup to back the Heap columns
- New call-tree columns (SOSL counts/rows, Heap + Self, Avg Self Time, self variants) rendered as % bars;
SOSL plumbed through the aggregated/time-order/bottom-up row builds
- Database SOQL/DML gain column views + a SOQL Query Plan view and % row-count bars; frozen Name column
enabled via FrozenColumnsModule + full-width virtual renderer
- Move per-view column overrides to globalState (columnView stays a discoverable setting), routed through the LogView getConfig/updateConfig handler
- Add inline per-view reset + live edited marker in the view dropdown and header menu,
a Columns toolbar button that opens the menu, and keep the menu open for multi-toggle
- Relabel governor columns Gov. Cost → Gov. Avg and Peak Limit → Gov. Peak so their
avg-vs-max relationship reads clearly
- Fix frozen-column bleed-through and restore the body horizontal scrollbar in DataGrid.scss; disable the sticky Name column pending a horizontal/vertical renderer fix
- exclude SOSL rows from governor cost — verified in-org they have no
  limit and don't count against the 50k query-rows limit; render them as a
  plain count instead of a bar against the wrong limit
- compute governor cost during tree build instead of a second full-tree
  walk (annotateGovernorCost → per-row setGovernorCost)
- persist the view chosen from the header context menu in Call Tree and
  Analysis, and fall back to the default view for an unknown persisted id
- restore table.redraw() after show/hide so columns resize — stock
  tabulator does not re-run fitColumns on column visibility change
- add heapSize cases to governor-timeline.test: negative deltas (dealloc via negative HEAP_ALLOCATE) lower the line, absolute snapshots re-baseline to the cumulative peak,
and a delta-less FINE log steps to cumulative with no grey divergence
- clarify heap comments in apex-limit-series/governor-timeline: negative HEAP_ALLOCATE is the deallocation,
HEAP_DEALLOCATE is distinct (no double-subtract), and cumulative 'Maximum heap size' is the authoritative peak
@lcottercertinia
lcottercertinia merged commit 3c9d61c into certinia:main Jul 21, 2026
7 checks passed
@lukecotter
lukecotter deleted the feat-298-column-views branch July 23, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Multiple colums views for calltree + analysis views

2 participants