Я использую CustomJS для фильтрации своей таблицы, как показано ниже. работает нормально
combined_callback_code = """
var data = source.data;
var original_data = original_source.data;
var account = account_select_obj.value;
console.log("account: " + account);
for (var key in original_data) {
data[key] = [];
for (var i = 0; i < original_data['D01_03_ZF_TRANSACTIONS_TRANS_NUM_ST'].length; ++i) {
if ((account === "ALL" || original_data['D01_03_ZF_TRANSACTIONS_TRANS_NUM_ST'][i] === account))
{
data[key].push(original_data[key][i]);
}
}
}
target_obj.change.emit();;
source.change.emit();
"""
df = collection("D01_04_RT_PHARMA_TRANS")
df1= collection("MAPPING_TABLE")
# Put dataframe to bokeh data source defined
data = dict(
D01_03_ZF_TRANSACTIONS_TRANS_NUM_ST= df["D01_03_ZF_TRANSACTIONS_TRANS_NUM_ST"]
)
source = ColumnDataSource(data)
original_source = ColumnDataSource(data)
account_list = ['ALL'] + df1["ZF_TRANSACTIONS_TRANS_NUM_ST"].unique().tolist()
account_select = Select(title="Account:", value=account_list[0], options=account_list)
def make_table_1():
# Generate table
columns = [
TableColumn(field="D01_03_ZF_TRANSACTIONS_TRANS_NUM_ST", title="CMI Pharma Account" ),
]
data_table = DataTable(source=source, columns=columns, width=1000, height=300)
# now define the callback objects now that the filter widgets exist
generic_callback = CustomJS(
args=dict(source=source,
original_source=original_source,
account_select_obj=account_select,
target_obj=data_table),
code=combined_callback_code
)
# finally, connect the callbacks to the filter widgets
account_select.js_on_change('value', generic_callback)
p = column(data_table, account_select)
return p
Но я хочу отделить account_select
от data_table
, чтобы я мог использовать его для другого графика (1 фильтр для мультиплота).
Есть ли способ сделать это? Я пытался каким-то образом, но ничего не получалось, потому что я получил ошибку:
Модель должна принадлежать только одному документу