Pydeck: use individual widgets to represent visualization parts
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 14.6k
- Forks
- 2.3k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 42
Description
Target Use case
Splitting parts of the visualization into separate Jupyter Widget models allow for deeper integration with other widgets. For example, if LightSettings is its own widget that the core Deck widget depends on, a user could tie a Slider to the LightSettings widget to modify that part of the map on demand.
Proposed feature
Currently, there's a single Jupyter Widget, the DeckGLWidget
https://github.com/visgl/deck.gl/blob/7b3b615edb86c7a6adf9230bdcb139a58e9933d3/bindings/pydeck/pydeck/widget/widget.py#L12-L16
This means that to change a part of the map, say the ViewState, you can only update it as part of the DeckGLWidget, so there's no way to my knowledge for another widget to hook into the ViewState specifically.
I'd propose that to start, we attempt to make ViewState its own widget, since I think that would have the best combination of utility and straightforward-ness to implement. If that goes well, we could look at other classes going forward.
For discussion
- What parts should be enabled as widgets?
- If more classes become widgets, does that hurt interoperability outside Jupyter? Is there any existing interoperability to be aware of for regression? I assume outside Jupyter the only expected use would be
Deck.to_html.
To Do List
- Add label and assign to milestone
- Coding
- Doc update
- What’s new update
- Test
cc @ajduberstein
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with pydeck/widget/widget.py, especially DeckGLWidget, and review how ViewState is currently handled. Clarify the widget boundary and interoperability impact before implementing a standalone ViewState widget. Done means the agreed behavior is implemented with tests, documentation, and a What's New update.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter, python
- Domain
- data-visualization
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100