The HoloViews team is interested in implementing some complex, custom user interactions for their Bokeh backend, in order to support things like dragging glyphs or hovering over elements to drive output in an adjacent plot.
The current issues they face include:
The current Bokeh callback system is based on emitting events on model property changes and supports both client side and bokeh server-mediated callbacks. Tools drive callback in this system by either changing the “selected” attribute of a ColumnDataSource (select tools) or by changing the range bounds of a plot (the zoom and pan tools)
Note: There are a couple of counter examples of this property change-driven pattern, including the callbacks emitted on SelectTool events (which don’t support bokeh server callbacks) and some of the input widgets (unclear to me why, but perhaps because they’re wrapped jquery elements). I would argue that the current select tool callbacks are ill-implemented, but perhaps evidence of user desire to customize such tool events.
Proposed is a system of UI events or tool events that can be configured to execute either client-side or bokeh server callbacks. Ideally, the coordinates of the the tool or UI event would be exposed (both in screen and data space coordinates?)
The result of this experiment is:
closed by #5941
Most helpful comment
The result of this experiment is: