Skip to content

feat(ui): entities viewer and detail panel - #564

Merged
rapids-bot[bot] merged 80 commits into
rapidsai:mainfrom
cmatzenbach:entities-panel
Aug 27, 2026
Merged

rapids-bot[bot] merged 80 commits into
rapidsai:mainfrom
cmatzenbach:entities-panel

Conversation

@cmatzenbach

@cmatzenbach cmatzenbach commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

Description

This brings in the Entities table originally mocked out by @johanpel, with numerous UI/UX improvements. In addition, it adds an entities detail tab, which can be accessed either by clicking on a row in the entities table or by clicking on an entity in the timeline section.

Entities table changes:

  • Added QueryToolbar to the top of the view, so that current filters can be seen/cleared/etc
  • Revised layout of the dropdowns
  • Improved styling
  • Improved verbiage
  • Fixed default text rendering
  • Added sort options to all columns
  • Added a "Sequence" row, which gives a preview of all the states that particular entity goes through

Entities Detail tab:

  • Fix styling
  • Show total timespan, dominant state (with %), and bar showing % of time spent in each state with tooltip
  • Adds chart showing data consumption/flow per state
  • Colors each state detail section to match up with timelines
  • Adds bar to each state detail section showing how much time was spent in that state

Testing

  1. Open Entities tab, ensure the table works as expected
  2. Click on an entity row, ensure the entity details panel pops up and shows all relevant information
  3. Click on an entity from the timeline view, ensure it is highlighted
  4. Ensure entity details panel pops up after clicking on an entity from timeline
  5. Verify all information is displayed

Screenshots

entities-table.mp4
entity-detail-panel.mp4

johanpel and others added 30 commits July 16, 2026 13:50
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Auto-load a long-entities Gantt under each leaf resource (injected synthetic
row in QueryResourceTree), filtered by the same getLongEntitiesThreshold cutoff
the timelines use. Remove the entity marks overlay from the resource timelines
(and the now-dead "Hide tasks" toggle / hideTasks atom), and stop requesting
long_fsms in the timeline bulk/single fetches.
Use the shared three-argument builder API after moving elapsed-time normalization earlier in the stack.
Keep the tooltip and row files compliant with the repository copyright hook.
…have same fsm states as timeline; portal tooltip to new re-usable component
Comment thread ui/src/components/entities-table/EntityDetailPanel.tsx Outdated
Comment thread ui/src/components/entities-table/utils.ts Outdated
}

function parseOptionalNumber(value: string): number | null {
if (value.trim() === '') return null;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'll need to merge in main and run lint:fix, since main will enforce the brackets rule now

@cmatzenbach cmatzenbach left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commenting for now, as I haven't gotten a chance to do a thorough UI test

Comment thread ui/packages/@quent/components/src/lib/sliderField.utils.ts

@johallar johallar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look great! One organizational comment and one thought on the duration slider:

The duration slider should probably not have max of the whole range, but should be the longest entity (maybe query for a single entity sorted by longest duration to get the max of this slider?)

@johallar

Copy link
Copy Markdown
Contributor
Screenshot 2026-08-26 at 9 22 18 PM

Bubbling this up actually, i'm not sure if we want to have the operator dropdown here since the DAG is on the left and probably a better way to select this crossfilter.

@johanpel johanpel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rust changes LGTM. Very nice feature, thanks!

@cmatzenbach

cmatzenbach commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor Author

Changes look great! One organizational comment and one thought on the duration slider:

The duration slider should probably not have max of the whole range, but should be the longest entity (maybe query for a single entity sorted by longest duration to get the max of this slider?)

Agree - fixed. I ended up using the top entity's end timestamp, since that gives us an absolute time range.

EDIT: On second thought, we may want to revisit this in the future. The problem is, there are a decent amount of entities with very short ranges above that max. So setting the slider's max at the max of the longest entity automatically excludes these values. They can be restored by clicking the "Reset" button, but that behavior may not be desired - a point for discussion later on. For now how it works is, on page load all the entities are shown. If you drag the top end of the slider, it will treat the proposed max as the range of the slider. Thus, if you drag it back to the full range, you will be looking at a filtered result set - it does show one active filter, so hitting Reset will clear this filter and get you back to showing all the entities, but the user has to realize that.

@cmatzenbach

Copy link
Copy Markdown
Contributor Author
Screenshot 2026-08-26 at 9 22 18 PM Bubbling this up actually, i'm not sure if we want to have the operator dropdown here since the DAG is on the left and probably a better way to select this crossfilter.

I dunno, I could see some use for it. Using the search option within the combobox to find specific operators is a lot quicker than having to navigate through the DAG tree, especially when you have multiple physical plans. Also, users could collapse the DAG tree if they want to focus on the other items, in which case the Operator field would be very useful. I say we leave it for now and if it doesn't get much use we can remove it later - for example, if we find people are used to navigating solely from the DAG.

@cmatzenbach

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit fbdbeed into rapidsai:main Aug 27, 2026
20 checks passed
@cmatzenbach
cmatzenbach deleted the entities-panel branch August 27, 2026 21:36
@johallar

Copy link
Copy Markdown
Contributor

I dunno, I could see some use for it. Using the search option within the combobox to find specific operators is a lot quicker than having to navigate through the DAG tree, especially when you have multiple physical plans. Also, users could collapse the DAG tree if they want to focus on the other items, in which case the Operator field would be very useful. I say we leave it for now and if it doesn't get much use we can remove it later - for example, if we find people are used to navigating solely from the DAG.

Fair enough re collapsing the dag panel. It may be nice to add more detail here (like we I'd like to do for the resources dropdown) so you can see associated parent plans or workers, etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature request New feature or request non-breaking Introduces a non-breaking change ui Pertains to the UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants