-
Notifications
You must be signed in to change notification settings - Fork 841
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
[EuiDataGrid] Add Row Summary #8002
Comments
This looks difficult from a performance concern, it sounds like the underlying datagrid library does not offer the feature to expand a cell across all columns like this. We need a rough estimate on effort and implementation plan here before we can agree if this work is worth doing. |
Tagging a few folks for visibility: @ninoslavmiskovic @sophiec20 @dimadavid @logeekal @michaelolo24 @kertal @cee-chen @JasonStoltz @yanwalton |
Correct, it's a limitation of the underlying virtualization library. See: bvaughn/react-window#425 and bvaughn/react-window#60 (comment). An alternative approach could be looking for another virtualization library (or rolling your own) that supports this, and then using a custom grid body renderer (which puts the onus of a one-off use case on the implementing team, but still gains the team the benefits of EUI's toolbars/headers/footers/sorting/cell actions etc). To be a little spicy: I think this once again begs the question of whether a data grid component/library should fall under the purview of a design system team or whether it needs to be split off to its own team, as I consider this to be a very large engineering lift. |
Hi @cee-chen , Actually I did this experimentation with tanstack/react-virtual and our custom virtualization but the results were disappointing w.r.t to rendering of rows. I will try to implement it again in code-sandbox so that you or someone from your team can may be take a look. I have been, alternatively, thinking of an alternative approach. Today, Eui gives control of What if we can have a prop dedicated for a What do you think? Please let me know if I was not clear. |
Theoretically this is feasible if we know the height of this full width cell/'column' in advance, and if that height is a static number. Unfortunately if it's a dynamic height per row, it runs into the same performance/implementation issues that we run into with |
That is what I have been trying to research. I have just created this below PoC which does List virtualization ( using There are 2 questions to be answered before this could be implemented in production
Additonally, Currently column virtualization is not implemented but only row virtualization. But i think it can be easily implemented using the same technique of list virtualization. I am starting to make some changes in EUI to see how it can support our use cases. Please let me know what you think. |
@logeekal Some additional questions:
|
Hey @timductive ,
list_virtualization_prototype_sorting.movI will be working on below issues in order :
will keep this thread updated. |
Heyy @timductive , Virtualization is now working with decent performance. See below demo in timeline. event_renderer_100_rows.movThis technique does not let us enable column virtualization. But it is okay I think unless users add huge number of columns. Hey @cee-chen , I was able to leverage react-window only to add this virtualization since we are already using it. I am still on the fence whether it should be in EUI or in the code that implements EUIDataGrid. But i think we can first test it extensively in security solution and then can think of adding it in EUI. However, to enable this I have raised this PR ( #8028 ) for few minor changes in EUI. Currently, it is draft as i am still changing docs. But I will try to finalize it this week. Currently, I do not know whow move a change in EUI API with solutions also adapting that change in single PR. Is there a process for it? Please let me know if this needs more discussion. |
This feels like a solid compromise for sure! Awesome thinking! 👏
++ to what you said - if production usage goes well in terms of bugs or performance, we can discuss bringing the functionality back into EuiDataGrid later. But it feels much safer to only roll this out for a specific use case/datagrid rather than every single datagrid across Elastic/Kibana.
There's no way to release something in both EUI and Kibana at the same time. There's a week or so lag time between EUI main and Kibana main, where EUI handles the release and any Kibana-impacting changes in our weekly upgrades. If you want to test Kibana production usage before your code merges into EUI main, we have a wiki doc that should walk you through how to do so here: https://github.com/elastic/eui/blob/main/wiki/contributing-to-eui/testing/testing-in-kibana.md |
Is your feature request related to a problem? Please describe.
In Discover datagrid, we need to be able to summarize a document by adding a full-width row cell below the regular row.
This is done in Security for summarizing Events:
The text was updated successfully, but these errors were encountered: