связывание виджета боке JS

У меня есть два простых виджета bokeh: Select и Slider - я могу заставить два виджета работать отдельно, но я не могу найти способ связать два виджета вместе - чтобы действие js_on_change на одном из них обновляло статус другого.

Моя попытка ниже не удалась на этапе связывания:


from bokeh.models.widgets import Select, Slider
from bokeh.io import output_notebook, show
from bokeh.resources import INLINE
from bokeh.models import ColumnDataSource, CustomJS, Select
from bokeh.layouts import column

output_notebook(INLINE) 

options = ['a', 'b', 'c']
indexes = [0, 1, 2]

s1 = ColumnDataSource(data=dict(options=options))
s2 = ColumnDataSource(data=dict(indexes=indexes))


select = Select(title="Option:", options=options)
slider = Slider(title="Index", value=0, start=0, end=len(indexes) -1, step=1)

select_callback = CustomJS(args=dict(options=s1, indexes=s2), code="""
var opt = options.data;
console.log(cb_obj.value, 
            Object.values(options.data)[0].indexOf(cb_obj.value));""")

slider_callback = CustomJS(args=dict(options=s1, indexes=s2, select=select), code="""
var opt = options.data;
console.log(Object.values(opt)[0][cb_obj.value], 
            cb_obj.value);""")

select.js_on_change('value', select_callback)
slider.js_on_change('value', slider_callback)

# the following will not work as I am not using it properly
# slider.js_link('value', select, 'value')

show(column(select, slider))

Мне нужно, чтобы это поведение выполнялось в коде JS, что касается моего варианта использования, мне нужно встроить полученные виджеты в статическую HTML-страницу (без боке-сервера).

Спасибо за любой совет!


person epifanio    schedule 27.05.2020    source источник