deck.gl icon indicating copy to clipboard operation
deck.gl copied to clipboard

Tracker: Widgets

Open ibgreen opened this issue 8 months ago • 0 comments

Goal: Leverage the new widget support in deck.gl. Increase the catalog of pre-built widgets, improve the usability of the widget system. Support both the geospatial and info vis domains

v9.3+

  • [ ] GimbalWidget - handle more viewport types
  • [ ] CompassWidget - handle more viewport types
  • [ ] TimelineWidget - more features, better styling
  • [ ] InfoWidget - Decide on if and how to align with getTooltip()

v9.2 Punch List

  • [ ] Graduate _ResetViewWidget -
  • [ ] Graduate _ScreenshotWidget -
  • [ ] Graduate _ThemeWidget -
  • [ ] Graduate _ScaleWidget -
  • [ ] Graduate _TimelineWidget - Address feedback in https://github.com/visgl/deck.gl/pull/9587
  • [ ] Graduate _SplitterWidget - Address issues in https://github.com/visgl/deck.gl/pull/9565
  • [ ] Graduate _GeolocateWidget
    • [ ] Add option where the geocoder is just a small button and clicking on it opens the text field. Right now it permanently occupies a lot of space, not really fitting in to a column of widgets on the side.
  • [ ] Graduate _InfoWidget -
    • [ ] support onHover
    • [ ] Define semantics of popups when using multiple viewports. @chrisgervang
  • [ ] Custom widget developers guide @chrisgervang #9304
  • [ ] use CSS variables and add theming for these. --popup-background and --popup-padding @chrisgervang
  • [x] Add React Wrappers + Doc updates for new widgets https://github.com/visgl/deck.gl/pull/9589
  • [x] Add new widgets to the python sub-module
  • [x] Interactive examples or at least screenshots on each widget page
  • [x] Add InfoWidget @felixpalmer
  • [x] Modify widget example to include InfoWidget @felixpalmer
  • [x] Auto reposition the popup so it is not covered when at the edges of the canvas @ibgreen
  • [x] Add minOffset prop to keep the popup from "touching" the edge. @ibgreen
  • [x] Add a small "arrow" / "tip" extrusion to point to the selected point @ibgreen
  • [x] Ensure the improved positioning is recalculated when panning the view @ibgreen

Simple Widget Library Wish List

  • [x] ZoomWidget
  • [x] FullScreenWidget
  • [x] ScreenshotWidget https://github.com/visgl/deck.gl/pull/9454
  • [x] CompassWidget (geospatial)
  • [x] ResetViewWidget (infovis: plotly style reset view ) https://github.com/visgl/deck.gl/pull/9478
  • [x] ThemeWidget https://github.com/visgl/deck.gl/pull/9471 - experimental version landed
  • [x] LoadingWidget https://github.com/visgl/deck.gl/pull/9485 - experimental version landed
  • [x] ScaleWidget (geospatial) https://github.com/visgl/deck.gl/pull/9491 - experimental _ScaleWidget landed
  • [x] GeocoderWidget (geospatial) https://github.com/visgl/deck.gl/pull/9488 - experimental GeolocateWidget landed
  • [x] GimbalWidget

"Advanced" Widgets Wish List

  • [x] "SplitterWidget" - Landed but address issues in https://github.com/visgl/deck.gl/pull/9565
  • [ ] PopupWidget https://github.com/visgl/deck.gl/pull/8958 - experimental _InfoWidget landed @felixpalmer
  • [ ] TooltipWidget - (exists internally, expose?, deduplicate?)
  • [ ] TimelineWidget** - even the most simple playback would be very valuable @chrisgervang
  • [ ] "SelectRectToZoomWidget" (infovis: Rectangular selection to zoom - plotly style zoom )
  • [ ] "SelectRectToSelectRowsWidget" - (infovis: Rectangular selection, lasso selection - plotly style selection widget)
  • [ ] AI Assistant Widget https://github.com/visgl/deck.gl/pull/9428
  • [ ] EditModeWidgets - editable-layer controls as widgets
  • [ ] Data Widgets (CARTO proposal) https://github.com/visgl/deck.gl/issues/8057

Components Wish List

  • [ ] IconMenu
  • [ ] IconToggle

Widget System Features

  • [ ] position: 'top-center'| 'bottom-center' | 'center'? (E.g.often a permanent geocoder text field would be placed at top-center of the map.)
  • [x] Widgets module RFC, core plumbing https://github.com/visgl/deck.gl/issues/7946
  • [x] JSON support for widgets https://github.com/visgl/deck.gl/pull/9314
  • [x] Pydeck support for widgets https://github.com/visgl/deck.gl/pull/9342
  • [x] React wrappers widgets

Widget System Docs

General deck improvements that would benefit Widgets

The following improvements to deck.gl could benefit the widget system or enable useful widgets

  • [ ] Add a declarative template system for creating tooltip / popup HTML. RFC in #9551
  • [ ] Allow views to set background color - Without it, ScreenshotWidget images are not as expected.
  • [ ] Selection extension module? - Needed for "plotly style" selection widget?

PopupWidget tracker

A PoC was landed as _InfoWidget as a placeholder until we have a better solution, it attracted a lot of feedback: Given the amount of feedback, we may want to align on requirements / assumptions:

  • Click?
  • Hover?
  • Programmatic creations (multiple popups?)?

Misc Feedback

@Pessimistress A "real" popup does the following

  • [x] control placement relative to the anchor, or automatically positioned to fit in the map container; @ibgreen
  • [x] have a tip that points to the anchor, like that from Google Maps or Maplibre; @ibgreen
  • [ ] have a close button and/or
  • [x] closes when clicked outside; @felixpalmer
  • [ ] can render multiple instances on map with the correct z order;

Tooltip tip/arrow

image

ibgreen avatar Mar 04 '25 11:03 ibgreen