-
Notifications
You must be signed in to change notification settings - Fork 52
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
Streaming Datagrid #498
Streaming Datagrid #498
Conversation
I've tried this out on my dev machine and it works really well. I can help with the backend filtering/sorting if you wish, in this or a separate PR. |
Thanks a lot for the review!
💯 Feel free to push on my branch, I'm adding you as a collaborator on my fork |
698cc08
to
3595723
Compare
274e43c
to
ca9fa06
Compare
3713955
to
4b2a92e
Compare
I have added filtering and sorting on the backend when streaming. Here is a screencast (although the mouse pointer isn't shown which is unfortunate): Screencast.from.2024-09-06.12-07-26.webmSummary of changes:
Things to discuss and/or do:
|
Thanks a lot @ianthomas23 !! That looks exciting :) I'll look into your changes in the coming days |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Ian! I have a small suggestion concerning the communication between the front-end / back-end
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
+ Fix cases for "raw" buffers Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: martinRenou <martin.renou@gmail.com>
Signed-off-by: Ian Thomas <ianthomas23@gmail.com>
Signed-off-by: Ian Thomas <ianthomas23@gmail.com>
4672c74
to
d2150f4
Compare
This now has the transfer of unique values (for the filter by value dialog) from backend to frontend in binary format. This reuses the existing serialize/deserialize code even though it is simpler (single column only) rather than have multiple implementations. On the TypeScript side I've moved the deserialize code into a new file to avoid circular dependencies. Sending of the selected values to filter on from the frontend to backend in the |
I've noticed that selection does not work for |
CI is passing after commit 1248890 which comprises:
We need to add new tests for the new functionality. |
Here's a screencast showing select not working: ipydatagrid.mp4It shows the non-streaming case working as intended, you can select a column, row, individual cell or rectangle of cells. Then the streaming case in which you cannot select anything. There's an error shown in the console about an expected |
It turns out selections do work, you only need to pass the proper argument to enable selections: Uploading Screencast From 2024-12-16 11-51-47.mp4… They do raise an exception JS side though. I suggest we open a follow-up issue on this and merge |
Provide a new widget
StreamingDatagrid
which lazily requests data to the back-end upon scrolling/resizing the grid. It only requests data needed to render the current viewport.This is a very early draft for discussion, it requires more testing.
Screencast.from.2024-04-08.11-34-30.webm
Wish-list for this PR to be merge-able:
StreamingDatagrid
, simply because the front-end does not have the whole dataset. We may want to provide the ability to do back-end filtering for the mainDatagrid
widget too, but front-end filtering should stay the default to not break current applications.tick
method to the Python API to allow the back-end to notify the front-end the data has changed