Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter entities in the UI (part 7): Refactor and optimize re_time_panel and add more tests #8863

Merged
merged 13 commits into from
Jan 30, 2025

Conversation

abey79
Copy link
Member

@abey79 abey79 commented Jan 30, 2025

Related

What

This PR refactors the streams tree code in a similar way as what was done in the blueprint tree in #8795. In addition, it makes it significantly faster.

I've decided against listing all components in the data structure and instead keep that at the (on-demand) UI level. The reason for that is that store.all_components_for_entity() can be rather expensive as the number of entities grows.

Note: This PR does not introduce shift-click range selection (that will be in a follow up PR). Because of the design decision above, it will be slightly more tricky (but worth it perf-wise).

Visual changes

Only visual/behavioural change introduced in this PR is that leaf entities are now collapsed by default when the entity filter is active (we're searching for entities, not components, so we don't need to see them).

Performance

Like the previous PR, we are now parsing the entire entity tree regardless of whether we're going to use/display it or not. With air traffic data, that's 0.3ms only.

As for the optimisations, it's hard to keep track of everything. But frame time for air traffic data with no view and uncollapsed time panel went from ~44ms (0.21) to ~26ms (this PR).

@abey79 abey79 added ui concerns graphical user interface 🚜 refactor Change the code, not the functionality include in changelog labels Jan 30, 2025
Copy link

github-actions bot commented Jan 30, 2025

Web viewer built successfully. If applicable, you should also test it:

  • I have tested the web viewer
Result Commit Link Manifest
0c1eb2c https://rerun.io/viewer/pr/8863 +nightly +main

Note: This comment is updated whenever you push a commit.

@Wumpf Wumpf self-requested a review January 30, 2025 08:53
@abey79 abey79 force-pushed the antoine/filt7-refactor-streams-tree branch from ac9dd5b to a4c38ef Compare January 30, 2025 08:55
Copy link
Member

@Wumpf Wumpf left a comment

Choose a reason for hiding this comment

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

looking great!

crates/viewer/re_time_panel/tests/time_panel_tests.rs Outdated Show resolved Hide resolved
crates/viewer/re_time_panel/tests/time_panel_tests.rs Outdated Show resolved Hide resolved
@abey79 abey79 added the do-not-merge Do not merge this PR label Jan 30, 2025
Base automatically changed from antoine/shift-click-select-blueprint-tree to main January 30, 2025 15:28
abey79 added a commit that referenced this pull request Feb 5, 2025
### Related

- Closes #8903
- Part of #8586 
- Part of a series of PR:
  - #8645
  - #8652
  - #8654
  - #8672
  - #8706
  - #8728
  - #8795
  - #8863
  - #8886
  - #8933

### What

This PR supports `/` in filter query. Semantics are now as follows:

- Queries are made of whitespace separated keyword.
- Paths are not matched unless they match all keywords individually at
least once.
- Keywords may have 1 or more  `/` separated "parts".
- Single part keyword behave as before: paths are matched if they
contain that keyword anywhere at least once.
- Single part keyword can now be prefixed and/or postfixed with a slash,
eg. "/fir". In that case, the keyword part must be found at the
beginning and/or end of at least one path part to match (e.g. "/fir"
matches "/my/first/entity" but doesn't match "xxfire/entity").
- Multi-part keyword (e.g. "a/b/c") match paths that contains
corresponding, matching sequence of part (e.g. "/xxxxa/b/cxxxxx"). Such
keywords can also be prefixed and/or postfixed with a "/", with the same
semantics.


<img width="293" alt="image"
src="https://github.com/user-attachments/assets/efca95df-5021-425b-96d2-036aeb7d1236"
/>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
include in changelog 🚜 refactor Change the code, not the functionality ui concerns graphical user interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants