def test_js_on_change_executes(self, bokeh_model_page): dp = DatePicker(title='Select date', value=datetime(2019, 9, 20), min_date=datetime(2019, 9, 1), max_date=datetime.utcnow(), css_classes=["foo"]) dp.js_on_change('value', CustomJS(code=RECORD("value", "cb_obj.value"))) page = bokeh_model_page(dp) el = page.driver.find_element_by_css_selector('.foo input') el.click() el = page.driver.find_element_by_css_selector( 'button[data-pika-day="16"]') el.click() results = page.results assert results['value'] == 'Mon Sep 16 2019' el = page.driver.find_element_by_css_selector('.bk-input') assert el.get_attribute('value') == 'Mon Sep 16 2019' assert page.has_no_console_errors()
def test_js_on_change_executes(self, bokeh_model_page) -> None: dp = DatePicker(title='Select date', value=date(2019, 9, 20), min_date=date(2019, 9, 1), max_date="2019-09-30", css_classes=["foo"]) dp.js_on_change('value', CustomJS(code=RECORD("value", "cb_obj.value"))) page = bokeh_model_page(dp) el = page.driver.find_element_by_css_selector('.foo input') el.click() el.click() el = page.driver.find_element_by_css_selector( 'span[aria-label="September 16, 2019"]') assert el.is_displayed() el.click() results = page.results assert results['value'] == '2019-09-16' el = page.driver.find_element_by_css_selector('.bk-input') assert el.get_attribute('value') == '2019-09-16' assert page.has_no_console_errors()
from bokeh.io import show from bokeh.models import CustomJS, DatePicker date_picker = DatePicker(title='Select date', value="2019-09-20", min_date="2019-08-01", max_date="2019-10-30") date_picker.js_on_change("value", CustomJS(code=""" console.log('date_picker: value=' + this.value, this.toString()) """)) show(date_picker)
date_picker.js_on_change( 'value', CustomJS(args=dict(s1=s1, s2=s2, s3=s3, s4=s4), code=""" var d1 = s1.data; var d2 = s2.data; var f = cb_obj.value; d2['x'] = []; d2['y'] = []; d2['names'] = []; d2['confirmed_cases'] = []; d2['deaths'] = []; for (var i = 0; i < d1['x'].length; i ++){ if (d1['z'][i] == f){ d2['x'].push(d1['x'][i]); d2['y'].push(d1['y'][i]); d2['names'].push(d1['y'][i] + ' new cases on ' + f); d2['confirmed_cases'].push(d1['p'][i] + ' confirmed cases'); d2['deaths'].push(d1['q'][i] + ' deaths'); break; } } s2.change.emit() var d3 = s3.data; var d4 = s4.data; d3['cases'] = Array(d3['x'].length).fill(0); d3['deaths'] = Array(d3['x'].length).fill(0); d3['cases_text'] = Array(d3['x'].length).fill('0%'); d3['deaths_text'] = Array(d3['x'].length).fill('0%'); d3['num_cases'] = Array(d3['x'].length).fill(0); d3['num_deaths'] = Array(d3['x'].length).fill(0); for (var i = 0; i < d4['x'].length; i ++){ if (d4['date'][i] == f){ for (var j = 0; j < d3['x'].length; j ++){ if (d4['x'][i] == d3['x'][j]){ d3['cases'][j] = Number((d4['cases'][i]).toFixed(4)); d3['deaths'][j] = Number((d4['deaths'][i]).toFixed(4)); d3['cases_text'][j] = Number((d4['cases'][i]*100).toFixed(4)) + '%'; d3['deaths_text'][j] = Number((d4['deaths'][i]*100).toFixed(4)) + '%'; d3['num_cases'][j] = d4['num_cases'][i]; d3['num_deaths'][j] = d4['num_deaths'][i]; } } } } s3.change.emit() """))