define(["widgets/js/widget"], function(WidgetManager){
var CheckboxView = IPython.DOMWidgetView.extend({
render : function(){
this.$el
.addClass('widget-hbox-single');
this.$label = $('<div />')
.addClass('widget-hlabel')
.appendTo(this.$el)
.hide();
this.$checkbox = $('<input />')
.attr('type', 'checkbox')
.appendTo(this.$el)
.click($.proxy(this.handle_click, this));
this.$el_to_style = this.$checkbox;
this.update();
},
handle_click: function() {
var value = this.model.get('value');
this.model.set('value', ! value, {updated_view: this});
this.touch();
},
update : function(options){
this.$checkbox.prop('checked', this.model.get('value'));
if (options === undefined || options.updated_view != this) {
var disabled = this.model.get('disabled');
this.$checkbox.prop('disabled', disabled);
var description = this.model.get('description');
if (description.trim().length === 0) {
this.$label.hide();
} else {
this.$label.text(description);
this.$label.show();
}
}
return CheckboxView.__super__.update.apply(this);
},
});
WidgetManager.register_widget_view('CheckboxView', CheckboxView);
var ToggleButtonView = IPython.DOMWidgetView.extend({
render : function() {
var that = this;
this.setElement($('<button />')
.addClass('btn')
.attr('type', 'button')
.on('click', function (e) {
e.preventDefault();
that.handle_click();
}));
this.update();
},
update : function(options){
if (this.model.get('value')) {
this.$el.addClass('active');
} else {
this.$el.removeClass('active');
}
if (options === undefined || options.updated_view != this) {
var disabled = this.model.get('disabled');
this.$el.prop('disabled', disabled);
var description = this.model.get('description');
if (description.trim().length === 0) {
this.$el.html(" ");
} else {
this.$el.text(description);
}
}
return ToggleButtonView.__super__.update.apply(this);
},
handle_click: function(e) {
var value = this.model.get('value');
this.model.set('value', ! value, {updated_view: this});
this.touch();
},
});
WidgetManager.register_widget_view('ToggleButtonView', ToggleButtonView);
});