web: sortable column headers with tooltips in timing path table#10627
web: sortable column headers with tooltips in timing path table#10627maliberty wants to merge 4 commits into
Conversation
Match the Qt GUI's timing viewer: clicking a path table header sorts by that column (toggling ascending/descending, slack ascending by default) and the Skew, Logic Delay and Logic Depth headers show explanatory tooltips. Tooltips use a custom styled div like the charts/clock-tree widgets since native title tooltips are easy to miss. Paths are tagged with their server-side index before sorting so timing_highlight requests stay correct after reordering. Also fix resizable-header regressions: re-renders now reinstall the resize grips, and makeResizableHeaders swallows the click generated by a resize drag so it does not trigger header click handlers. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
|
Addresses item 2 in #10263 |
There was a problem hiding this comment.
Code Review
This pull request introduces column sorting and custom header tooltips to the timing widget's path table, aligning its behavior with the Qt GUI. It also updates the resize handler to prevent column sorting from triggering at the end of a resize drag, and adds comprehensive unit tests. The reviewer suggested passing savedWidths directly to makeResizableHeaders to avoid forced reflows, and clamping the tooltip's vertical position to prevent it from overflowing the bottom of the viewport.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ccbf743f98
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
In static mode the timing_report response is the shared cached JSON object, so sorting its paths array in place reordered the cache and broke the slack-histogram filter's _originalIndex tagging, selecting the wrong overlay path. Sort copies instead, in both update() and showPaths(), so the cache keeps its server-side ordering. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
…reflow makeResizableHeaders now takes an optional widths array; when given (e.g. widths saved from the previous render) it applies them directly instead of resetting to auto layout and reading offsetWidth, avoiding a forced reflow on every timing table re-render. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
The 5s CMake default can be exceeded when discovering gtest tests on a loaded machine, causing spurious configure-time failures. Signed-off-by: Matt Liberty <mliberty@precisioninno.com>
Match the Qt GUI's timing viewer in the web timing widget:
TimingPathsModel. Tooltips use a custom styled div (like the charts/clock-tree widgets) since native title tooltips are easy to miss; they follow the cursor, clamp to the viewport, and hide during drags and re-renders.timing_highlightrequests keep mapping to the right path after reordering (reuses the histogram filter's_originalIndexmechanism).Also fixes two resizable-header regressions exposed by sorting re-renders:
makeResizableHeaders, losing the resize grips.makeResizableHeadersnow swallows that click so it can't trigger header click handlers such as sorting.