@quartic/bokehjs
Version:
Interactive, novel data visualization
53 lines (40 loc) • 1.24 kB
text/coffeescript
import * as $ from "jquery"
import "bootstrap/dropdown"
import * as p from "core/properties"
import {AbstractButton, AbstractButtonView} from "./abstract_button"
import template from "./dropdown_template"
export class DropdownView extends AbstractButtonView
template: template
render: () ->
super()
items = []
for item in @model.menu
$item = if item?
[label, value] = item
$a = $("<a data-value='#{value}'>#{label}</a>")
that = this
$a.click((e) -> that.set_value($(this).data('value')))
$('<li></li>').append($a)
else
$('<li class="bk-bs-divider"></li>')
items.push($item)
@$el.find('.bk-bs-dropdown-menu').append(items)
@$el.find('button').val(@model.default_value)
@$el.find('button').dropdown()
return @
set_value: (value) ->
# Set the bokeh model to value
@model.value = value
# Set the html button value to value
@$el.find('button').val(value)
export class Dropdown extends AbstractButton
type: "Dropdown"
default_view: DropdownView
@define {
value: [ p.String ]
default_value: [ p.String ]
menu: [ p.Array, [] ]
}
@override {
label: "Dropdown"
}