##// END OF EJS Templates
Merge pull request #6250 from minrk/double-free-widget...
Merge pull request #6250 from minrk/double-free-widget avoid unregistering widget model twice

File last commit:

r17312:cf65bf72
r17556:2ae68666 merge
Show More
widget_bool.js
120 lines | 4.1 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Almost done!...
r17198 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
Jonathan Frederic
Added standard IPY JS header to widget JS files.
r14366
Jonathan Frederic
Almost done!...
r17198 define([
"widgets/js/widget",
Jonathan Frederic
Fix all the tests
r17216 "jquery",
MinRK
add bootstrap shim for require...
r17312 "bootstrap",
Jonathan Frederic
Fix all the tests
r17216 ], function(widget, $){
Jonathan Frederic
Added standard IPY JS header to widget JS files.
r14366
Jonathan Frederic
Almost done!...
r17198 var CheckboxView = widget.DOMWidgetView.extend({
Jonathan Frederic
Added boolean widget
r14259 render : function(){
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when view is rendered.
Jonathan Frederic
Make sure backbone events fire....
r14395 this.$el
Jonathan Frederic
MAJOR CSS FIXES...
r14295 .addClass('widget-hbox-single');
this.$label = $('<div />')
Jonathan Frederic
Fixed vertical widget labels
r14297 .addClass('widget-hlabel')
Jonathan Frederic
MAJOR CSS FIXES...
r14295 .appendTo(this.$el)
Jonathan Frederic
Added labels to basic widgets
r14292 .hide();
Jonathan Frederic
Added boolean widget
r14259 this.$checkbox = $('<input />')
.attr('type', 'checkbox')
Jonathan Frederic
More fixes
r14595 .appendTo(this.$el)
.click($.proxy(this.handle_click, this));
Jonathan Frederic
Added boolean widget
r14259
Jonathan Frederic
Set default element to be styled in built-in views
r14314 this.$el_to_style = this.$checkbox; // Set default element to style
Jonathan Frederic
Added boolean widget
r14259 this.update(); // Set defaults.
},
Jonathan Frederic
More fixes
r14595
handle_click: function() {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Handles when the checkbox is clicked.
Jonathan Frederic
More fixes
r14595 // Calling model.set will trigger all of the other views of the
// model to update.
var value = this.model.get('value');
this.model.set('value', ! value, {updated_view: this});
this.touch();
},
Jonathan Frederic
Added boolean widget
r14259
Jonathan Frederic
add locks to update everywhere by using options to pass this...
r14570 update : function(options){
Jonathan Frederic
make JS update comment more descriptive (english)
r14568 // Update the contents of this view
//
// Called when the model is changed. The model may have been
// changed by another view or by a state update from the back-end.
Jonathan Frederic
More fixes
r14595 this.$checkbox.prop('checked', this.model.get('value'));
Jonathan Frederic
Added labels to basic widgets
r14292
Jonathan Frederic
More fixes
r14595 if (options === undefined || options.updated_view != this) {
Jonathan Frederic
Made checkbox and togglebutton compatable with disabled property
r14304 var disabled = this.model.get('disabled');
this.$checkbox.prop('disabled', disabled);
Jonathan Frederic
Added labels to basic widgets
r14292 var description = this.model.get('description');
MinRK
handle space-only strings, not just zero-length
r15330 if (description.trim().length === 0) {
Jonathan Frederic
MAJOR CSS FIXES...
r14295 this.$label.hide();
Jonathan Frederic
Added labels to basic widgets
r14292 } else {
Jonathan Frederic
Replace .html with .text everywhere possible
r14663 this.$label.text(description);
Jonathan Frederic
Add latex support in widget labels,...
r16817 MathJax.Hub.Queue(["Typeset",MathJax.Hub,this.$label.get(0)]);
Jonathan Frederic
MAJOR CSS FIXES...
r14295 this.$label.show();
Jonathan Frederic
Added labels to basic widgets
r14292 }
Jonathan Frederic
Added boolean widget
r14259 }
Jonathan Frederic
Renamed widgets......
r14834 return CheckboxView.__super__.update.apply(this);
Jonathan Frederic
Added boolean widget
r14259 },
});
Jonathan Frederic
Added toggle button view
r14262
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609
Jonathan Frederic
Almost done!...
r17198 var ToggleButtonView = widget.DOMWidgetView.extend({
Jonathan Frederic
More fixes
r14595 render : function() {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when view is rendered.
Jonathan Frederic
More fixes
r14595 var that = this;
Jonathan Frederic
toggle button, set $el to button (removing extra div)
r14571 this.setElement($('<button />')
Jonathan Frederic
Ran jdfreder/bootstrap2to3
r16913 .addClass('btn btn-default')
Jonathan Frederic
Added toggle button view
r14262 .attr('type', 'button')
Jonathan Frederic
More fixes
r14595 .on('click', function (e) {
e.preventDefault();
that.handle_click();
}));
Jonathan Frederic
Added toggle button view
r14262
this.update(); // Set defaults.
},
Jonathan Frederic
add locks to update everywhere by using options to pass this...
r14570 update : function(options){
Jonathan Frederic
make JS update comment more descriptive (english)
r14568 // Update the contents of this view
//
// Called when the model is changed. The model may have been
// changed by another view or by a state update from the back-end.
Jonathan Frederic
Many checks off the todo list, test fixes
r14583 if (this.model.get('value')) {
this.$el.addClass('active');
} else {
this.$el.removeClass('active');
}
Jonathan Frederic
Added labels to basic widgets
r14292
Jonathan Frederic
Many checks off the todo list, test fixes
r14583 if (options === undefined || options.updated_view != this) {
Jonathan Frederic
More fixes
r14595
Jonathan Frederic
Made checkbox and togglebutton compatable with disabled property
r14304 var disabled = this.model.get('disabled');
Jonathan Frederic
toggle button, set $el to button (removing extra div)
r14571 this.$el.prop('disabled', disabled);
Jonathan Frederic
Made checkbox and togglebutton compatable with disabled property
r14304
Jonathan Frederic
Added labels to basic widgets
r14292 var description = this.model.get('description');
MinRK
handle space-only strings, not just zero-length
r15330 if (description.trim().length === 0) {
MinRK
use non-breaking space for button with no description...
r15329 this.$el.html("&nbsp;"); // Preserve button height
Jonathan Frederic
Added labels to basic widgets
r14292 } else {
Jonathan Frederic
Replace .html with .text everywhere possible
r14663 this.$el.text(description);
Jonathan Frederic
Added labels to basic widgets
r14292 }
Jonathan Frederic
Added toggle button view
r14262 }
Jonathan Frederic
Many checks off the todo list, test fixes
r14583 return ToggleButtonView.__super__.update.apply(this);
Jonathan Frederic
Added toggle button view
r14262 },
Jonathan Frederic
More fixes
r14595 handle_click: function(e) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Handles and validates user input.
Jonathan Frederic
add locks to update everywhere by using options to pass this...
r14570
Jonathan Frederic
comment model.set, so we know that it triggers update on other views
r14569 // Calling model.set will trigger all of the other views of the
// model to update.
Jonathan Frederic
More fixes
r14595 var value = this.model.get('value');
this.model.set('value', ! value, {updated_view: this});
Jonathan Frederic
Moved touch logic out of model into view....
r14482 this.touch();
Jonathan Frederic
Added toggle button view
r14262 },
});
Jonathan Frederic
Almost done!...
r17198
return {
'CheckboxView': CheckboxView,
'ToggleButtonView': ToggleButtonView,
};
Jonathan Frederic
Added boolean widget
r14259 });