widget_button.js
75 lines
| 2.4 KiB
| application/javascript
|
JavascriptLexer
Jonathan Frederic
|
r17198 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
Jonathan Frederic
|
r14366 | |||
Jonathan Frederic
|
r17198 | define([ | ||
"widgets/js/widget", | ||||
Jonathan Frederic
|
r17216 | "jquery", | ||
MinRK
|
r17312 | "bootstrap", | ||
Jonathan Frederic
|
r17216 | ], function(widget, $){ | ||
Jonathan Frederic
|
r14366 | |||
Jonathan Frederic
|
r17198 | var ButtonView = widget.DOMWidgetView.extend({ | ||
Jonathan Frederic
|
r14270 | render : function(){ | ||
Jonathan Frederic
|
r19176 | /** | ||
* Called when view is rendered. | ||||
*/ | ||||
Jonathan Frederic
|
r14397 | this.setElement($("<button />") | ||
Jonathan Frederic
|
r16913 | .addClass('btn btn-default')); | ||
Sylvain Corlay
|
r18115 | this.$el.attr("data-toggle", "tooltip"); | ||
Jonathan Frederic
|
r17728 | this.model.on('change:button_style', function(model, value) { | ||
this.update_button_style(); | ||||
}, this); | ||||
this.update_button_style(''); | ||||
Jonathan Frederic
|
r14270 | this.update(); // Set defaults. | ||
}, | ||||
update : function(){ | ||||
Jonathan Frederic
|
r19176 | /** | ||
* Update the contents of this view | ||||
* | ||||
Sylvain Corlay
|
r20606 | * Called when the model is changed. The model may have been | ||
Jonathan Frederic
|
r19176 | * changed by another view or by a state update from the back-end. | ||
*/ | ||||
Sylvain Corlay
|
r20606 | this.$el.prop("disabled", this.model.get("disabled")); | ||
Sylvain Corlay
|
r18115 | this.$el.attr("title", this.model.get("tooltip")); | ||
Sylvain Corlay
|
r20606 | |||
var description = this.model.get("description"); | ||||
Sylvain Corlay
|
r20397 | var icon = this.model.get("icon"); | ||
if (description.trim().length === 0 && icon.trim().length ===0) { | ||||
MinRK
|
r15329 | this.$el.html(" "); // Preserve button height | ||
Jonathan Frederic
|
r14430 | } else { | ||
Sylvain Corlay
|
r20606 | this.$el.text(description); | ||
$('<i class="fa"></i>').prependTo(this.$el).addClass(icon); | ||||
Jonathan Frederic
|
r14430 | } | ||
Jonathan Frederic
|
r14583 | return ButtonView.__super__.update.apply(this); | ||
Jonathan Frederic
|
r14270 | }, | ||
Jonathan Frederic
|
r14400 | |||
Jonathan Frederic
|
r17728 | update_button_style: function(previous_trait_value) { | ||
var class_map = { | ||||
primary: ['btn-primary'], | ||||
success: ['btn-success'], | ||||
info: ['btn-info'], | ||||
warning: ['btn-warning'], | ||||
danger: ['btn-danger'] | ||||
}; | ||||
this.update_mapped_classes(class_map, 'button_style', previous_trait_value); | ||||
}, | ||||
Jonathan Frederic
|
r14400 | events: { | ||
Jonathan Frederic
|
r14609 | // Dictionary of events and their handlers. | ||
Jonathan Frederic
|
r14400 | 'click': '_handle_click', | ||
}, | ||||
Jonathan Frederic
|
r14270 | |||
Jonathan Frederic
|
r14400 | _handle_click: function(){ | ||
Jonathan Frederic
|
r19176 | /** | ||
* Handles when the button is clicked. | ||||
*/ | ||||
Jonathan Frederic
|
r14403 | this.send({event: 'click'}); | ||
Jonathan Frederic
|
r14400 | }, | ||
Jonathan Frederic
|
r14270 | }); | ||
Jonathan Frederic
|
r17198 | |||
return { | ||||
'ButtonView': ButtonView, | ||||
}; | ||||
Jonathan Frederic
|
r14270 | }); | ||