Я хочу отфильтровать свои данные на основе значений из 2 виджетов Select, где source['level'] == level
и source['country'] == country
.
Используя CustomJS, я смог заставить работать фильтр level
, используя cb_obj
.
Но cb_obj
ссылается только на виджет, который его активировал. Как получить значение другого виджета выбора в функции обратного вызова?
Мне также нужно придерживаться CustomJS, спасибо!
Пример кода:
# Level
level = Select(title="Level:", value='All Levels', options=['All Levels', '1', '2', '3'], callback=callback)
# Country
country = Select(title="Country:", value='All Countries', options=['All Countries', 'US', 'UK', 'CAN'], callback=callback)
callback = CustomJS(args=dict(source=source, ts=true_source), code="""
var df = source.data;
var data = ts.data;
var data_level = data['Level'];
var l=cb_obj.value;
var data_x = data['x'];
var data_y = data['y'];
var x=[];
var y=[];
for (var i=0;i<data_level.length; i++){
// Here: I want to add (Level) and (Country) filters
// But I'm not sure how to reference Country widget value
if(l=='All Levels' || data_level[i]==l){
x.push(data_x[i]);
y.push(data_y[i]);}}
df['x'] = [];
df['y'] = [];
df['x'] = x;
df['y'] = y;
source.change.emit();
"""