Skip to content

Conversation

lucasmerlin
Copy link
Contributor

@lucasmerlin lucasmerlin commented Jul 30, 2025

Related

What

Instead of formatting arrow data as a String and displaying that, this adds an interactive arrow data explorer:

Screen.Recording.2025-07-30.at.16.19.21.mov

It's still usable if data is rapidly changing:

Screen.Recording.2025-07-30.at.16.21.59.mov

And it even handles large arrays:

Screen.Recording.2025-07-30.at.16.26.02.mov

Here is the example recording I've used to test it with lots of arrow AnyValues: https://rerunio.slack.com/archives/C08TEFXNHB2/p1755162445003819?thread_ts=1755162422.345739&cid=C08TEFXNHB2

@lucasmerlin lucasmerlin added ui concerns graphical user interface 🏹 arrow Apache Arrow include in changelog labels Jul 30, 2025
Copy link

github-actions bot commented Jul 30, 2025

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

  • I have tested the web viewer
Result Commit Link Manifest
3fcb30f https://rerun.io/viewer/pr/10777 +nightly +main

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

@emilk
Copy link
Member

emilk commented Aug 4, 2025

Nice 🤩

@grtlr grtlr changed the title Add arrow data inspector in seleciton panel Add arrow data inspector in selection panel Aug 6, 2025
@grtlr
Copy link
Contributor

grtlr commented Aug 6, 2025

@lucasmerlin is this ready for review?

# Conflicts:
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_narrow/VideoSample_placeholder.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_narrow/custom_small_array_any_value_small_array.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_narrow/one_large_blob_any_value_one_large_blob.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_narrow/one_small_blob_any_value_one_small_blob.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_narrow/two_large_blobs_any_value_two_large_blobs.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_wide/VideoSample_placeholder.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_wide/custom_small_array_any_value_small_array.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_wide/one_large_blob_any_value_one_large_blob.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_wide/one_small_blob_any_value_one_small_blob.png
#	crates/viewer/re_component_ui/tests/snapshots/all_components_list_item_wide/two_large_blobs_any_value_two_large_blobs.png
#	crates/viewer/re_ui/src/arrow_ui.rs
#	crates/viewer/re_ui/tests/snapshots/arrow_ui.png
Copy link
Member

@emilk emilk left a comment

Choose a reason for hiding this comment

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

Please make sure we have a test of a BinaryArray and LargeBinaryArray in there, for when we get back to #11068

Comment on lines 12 to 14
/// E.g. in a ListArray, this is the index in the child list. The index passed to
/// [`ArrowNode::show`] is the index in the parent array.
Index(usize),
Copy link
Member

Choose a reason for hiding this comment

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

I think this needs some ASCII art and/or a link to the arrow spec

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've added a link to show_index::list_ui where I've added a more thorough explanation and link to the GenericListArray docs which has an ascii art explanation.

Copy link
Member

Choose a reason for hiding this comment

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

Oh… because it is editable. This is interesting. We should open some sort of issue about this. It is sad that the things that support editing doesn't support syntax highlighting, and the other way around 🤔

Copy link
Member

Choose a reason for hiding this comment

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

This reads like a table with a Data type column with values 0, 1, 2, and a binary column

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, annoying 🙁 I've added a separate scope so they aren't aligned. It looks visually less appealing now but it's also less confusing. Maybe @gavrelina can have a look at this.

@lucasmerlin
Copy link
Contributor Author

Please make sure we have a test of a BinaryArray and LargeBinaryArray in there, for when we get back to #11068

Those are part of the arrow_test_data module 👍🏻

Copy link
Member

@abey79 abey79 left a comment

Choose a reason for hiding this comment

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

I didn't do a deep review, but I tried to sufficiently grasp what's going such that I could act on it if I needed to. I added a few comments that would help in the process.

Regardless, the result is stunning!

@lucasmerlin lucasmerlin merged commit 55b12f2 into main Sep 2, 2025
40 checks passed
@lucasmerlin lucasmerlin deleted the lucas/arrow-inspector branch September 2, 2025 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏹 arrow Apache Arrow include in changelog ui concerns graphical user interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve SyntaxHighlighting to make it easier for implementor to access theme and tokens Improve display of raw Arrow data in the viewer
4 participants