##// END OF EJS Templates
Update celltoolbar.js...
Update celltoolbar.js I want to write an extension with multiple select bar. They are supposed to be displayed inline, not in block mode. The better way is to use span instead of div.

File last commit:

r17216:08b8fbc9
r17265:950b016a
Show More
widget_container.js
315 lines | 12.2 KiB | application/javascript | JavascriptLexer
/ IPython / html / static / widgets / js / widget_container.js
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 "jqueryui",
"components/bootstrap/js/bootstrap.min",
Jonathan Frederic
More requirejs fixes
r17215 ], function(widget, $){
Jonathan Frederic
Added standard IPY JS header to widget JS files.
r14366
Jonathan Frederic
Almost done!...
r17198 var ContainerView = widget.DOMWidgetView.extend({
Jonathan Frederic
Added flexible box model align properties.
r14333 render: function(){
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when view is rendered.
Jonathan Frederic
Container classes should default with 'vbox' css
r15015 this.$el.addClass('widget-container')
.addClass('vbox');
Jonathan Frederic
Fixed buggy behavior
r17173 this.update_children([], this.model.get('children'));
this.model.on('change:children', function(model, value, options) {
this.update_children(model.previous('children'), value);
Jason Grout
Live updates for children automatically change container views....
r14503 }, this);
MinRK
quick review pass on javascript
r14792 this.update();
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660
// Trigger model displayed events for any models that are child to
// this model when this model is displayed.
var that = this;
Jonathan Frederic
Move displayed event to view.
r17179 this.on('displayed', function(){
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 that.is_displayed = true;
for (var property in that.child_views) {
if (that.child_views.hasOwnProperty(property)) {
Jonathan Frederic
Move displayed event to view.
r17179 that.child_views[property].trigger('displayed');
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 }
}
});
Jason Grout
Live updates for children automatically change container views....
r14503 },
update_children: function(old_list, new_list) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when the children list changes.
MinRK
quick review pass on javascript
r14792 this.do_diff(old_list,
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 new_list,
$.proxy(this.remove_child_model, this),
$.proxy(this.add_child_model, this));
},
remove_child_model: function(model) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when a model is removed from the children list.
Jonathan Frederic
Review comments
r17178 this.pop_child_view(model).remove();
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 },
add_child_model: function(model) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when a model is added to the children list.
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 var view = this.create_child_view(model);
this.$el.append(view.$el);
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660
// Trigger the displayed event if this model is displayed.
if (this.is_displayed) {
Jonathan Frederic
Move displayed event to view.
r17179 view.trigger('displayed');
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 }
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 },
Jonathan Frederic
Added flexible box model align properties.
r14333 update: function(){
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 return ContainerView.__super__.update.apply(this);
Jonathan Frederic
Attempt 1, HBox and VBox implementation.
r14268 },
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 });
MinRK
quick review pass on javascript
r14792
Jonathan Frederic
Almost done!...
r17198
var PopupView = widget.DOMWidgetView.extend({
Jonathan Frederic
Added ModalView
r14409 render: function(){
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when view is rendered.
Jonathan Frederic
Added ModalView
r14409 var that = this;
Jonathan Frederic
Added `update_children` pattern to remaining parent widgets
r14507
MinRK
quick review pass on javascript
r14792 this.$el.on("remove", function(){
Jonathan Frederic
Modal fixes for BS3
r16955 that.$backdrop.remove();
Jonathan Frederic
Added ModalView
r14409 });
Jonathan Frederic
Modal fixes for BS3
r16955 this.$backdrop = $('<div />')
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .appendTo($('#notebook-container'))
Jonathan Frederic
Modal fixes for BS3
r16955 .addClass('modal-dialog')
.css('position', 'absolute')
.css('left', '0px')
.css('top', '0px');
this.$window = $('<div />')
.appendTo(this.$backdrop)
.addClass('modal-content widget-modal')
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .mousedown(function(){
that.bring_to_front();
});
Jonathan Frederic
Fix command mode & popup view bug...
r15022
// Set the elements array since the this.$window element is not child
// of this.$el and the parent widget manager or other widgets may
// need to know about all of the top-level widgets. The IPython
// widget manager uses this to register the elements with the
// keyboard manager.
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 this.additional_elements = [this.$window];
Jonathan Frederic
Fix command mode & popup view bug...
r15022
Jonathan Frederic
Fixed body container height not stretching to fill remainer of height
r14410 this.$title_bar = $('<div />')
Jonathan Frederic
Added ModalView
r14409 .addClass('popover-title')
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .appendTo(this.$window)
.mousedown(function(){
that.bring_to_front();
Jonathan Frederic
jslint /widgets
r14466 });
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 this.$close = $('<button />')
.addClass('close icon-remove')
.css('margin-left', '5px')
Jonathan Frederic
Fixed body container height not stretching to fill remainer of height
r14410 .appendTo(this.$title_bar)
Jonathan Frederic
Added ModalView
r14409 .click(function(){
that.hide();
event.stopPropagation();
});
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 this.$minimize = $('<button />')
.addClass('close icon-arrow-down')
.appendTo(this.$title_bar)
.click(function(){
that.popped_out = !that.popped_out;
if (!that.popped_out) {
that.$minimize
.removeClass('icon-arrow-down')
.addClass('icon-arrow-up');
that.$window
.draggable('destroy')
.resizable('destroy')
Jonathan Frederic
Modal fixes for BS3
r16955 .removeClass('widget-modal modal-content')
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .addClass('docked-widget-modal')
.detach()
.insertBefore(that.$show_button);
that.$show_button.hide();
that.$close.hide();
} else {
that.$minimize
.addClass('icon-arrow-down')
.removeClass('icon-arrow-up');
that.$window
.removeClass('docked-widget-modal')
Jonathan Frederic
Modal fixes for BS3
r16955 .addClass('widget-modal modal-content')
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .detach()
Jonathan Frederic
Modal fixes for BS3
r16955 .appendTo(that.$backdrop)
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 .draggable({handle: '.popover-title', snap: '#notebook, .modal', snapMode: 'both'})
.resizable()
.children('.ui-resizable-handle').show();
that.show();
that.$show_button.show();
that.$close.show();
}
event.stopPropagation();
});
Jonathan Frederic
Added ModalView
r14409 this.$title = $('<div />')
.addClass('widget-modal-title')
MinRK
use non-breaking space for button with no description...
r15329 .html("&nbsp;")
Jonathan Frederic
Fixed body container height not stretching to fill remainer of height
r14410 .appendTo(this.$title_bar);
Jonathan Frederic
Added ModalView
r14409 this.$body = $('<div />')
.addClass('modal-body')
Jonathan Frederic
Removed max height from widget modal body
r14411 .addClass('widget-modal-body')
Jonathan Frederic
Added ModalView
r14409 .addClass('widget-container')
Jonathan Frederic
Container classes should default with 'vbox' css
r15015 .addClass('vbox')
Jonathan Frederic
Added ModalView
r14409 .appendTo(this.$window);
this.$show_button = $('<button />')
MinRK
use non-breaking space for button with no description...
r15329 .html("&nbsp;")
Jonathan Frederic
Fix automation errors.
r16914 .addClass('btn btn-info widget-modal-show')
Jonathan Frederic
Added ModalView
r14409 .appendTo(this.$el)
.click(function(){
that.show();
});
this.$window.draggable({handle: '.popover-title', snap: '#notebook, .modal', snapMode: 'both'});
this.$window.resizable();
Jonathan Frederic
Fixed body container height not stretching to fill remainer of height
r14410 this.$window.on('resize', function(){
that.$body.outerHeight(that.$window.innerHeight() - that.$title_bar.outerHeight());
Jonathan Frederic
jslint /widgets
r14466 });
Jonathan Frederic
Fixed body container height not stretching to fill remainer of height
r14410
Jonathan Frederic
Added custom selector logic to modal view
r14419 this.$el_to_style = this.$body;
Jonathan Frederic
Added ModalView
r14409 this._shown_once = false;
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 this.popped_out = true;
Jonathan Frederic
Fixed bug that prevented popup widget from displaying
r14754
Jonathan Frederic
Fixed buggy behavior
r17173 this.update_children([], this.model.get('children'));
this.model.on('change:children', function(model, value, options) {
this.update_children(model.previous('children'), value);
Jonathan Frederic
Fixed bug that prevented popup widget from displaying
r14754 }, this);
this.update();
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660
// Trigger model displayed events for any models that are child to
// this model when this model is displayed.
Jonathan Frederic
Move displayed event to view.
r17179 this.on('displayed', function(){
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 that.is_displayed = true;
for (var property in that.child_views) {
if (that.child_views.hasOwnProperty(property)) {
Jonathan Frederic
Move displayed event to view.
r17179 that.child_views[property].trigger('displayed');
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 }
}
});
Jonathan Frederic
Added ModalView
r14409 },
hide: function() {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when the modal hide button is clicked.
Jonathan Frederic
Added ModalView
r14409 this.$window.hide();
this.$show_button.removeClass('btn-info');
},
show: function() {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when the modal show button is clicked.
Jonathan Frederic
Added ModalView
r14409 this.$show_button.addClass('btn-info');
Jonathan Frederic
Fixed modal centering code
r14425 this.$window.show();
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 if (this.popped_out) {
Jonathan Frederic
jslint /widgets
r14466 this.$window.css("positon", "absolute");
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 this.$window.css("top", "0px");
this.$window.css("left", Math.max(0, (($('body').outerWidth() - this.$window.outerWidth()) / 2) +
$(window).scrollLeft()) + "px");
this.bring_to_front();
}
},
bring_to_front: function() {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Make the modal top-most, z-ordered about the other modals.
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 var $widget_modals = $(".widget-modal");
var max_zindex = 0;
$widget_modals.each(function (index, el){
Jonathan Frederic
Modal fixes for BS3
r16955 var zindex = parseInt($(el).css('z-index'));
if (!isNaN(zindex)) {
max_zindex = Math.max(max_zindex, zindex);
}
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 });
// Start z-index of widget modals at 2000
max_zindex = Math.max(max_zindex, 2000);
Jonathan Frederic
Modal fixes for BS3
r16955
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 $widget_modals.each(function (index, el){
Jonathan Frederic
jslint /widgets
r14466 $el = $(el);
Jonathan Frederic
- ModalView can now be docked and undocked...
r14443 if (max_zindex == parseInt($el.css('z-index'))) {
$el.css('z-index', max_zindex - 1);
}
});
this.$window.css('z-index', max_zindex);
Jonathan Frederic
Added ModalView
r14409 },
Jonathan Frederic
Added `update_children` pattern to remaining parent widgets
r14507 update_children: function(old_list, new_list) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when the children list is modified.
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 this.do_diff(old_list,
new_list,
$.proxy(this.remove_child_model, this),
$.proxy(this.add_child_model, this));
},
remove_child_model: function(model) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when a child is removed from children list.
Jonathan Frederic
Review comments
r17178 this.pop_child_view(model).remove();
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 },
add_child_model: function(model) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Called when a child is added to children list.
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 var view = this.create_child_view(model);
this.$body.append(view.$el);
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660
// Trigger the displayed event if this model is displayed.
if (this.is_displayed) {
Jonathan Frederic
Move displayed event to view.
r17179 view.trigger('displayed');
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660 }
Jonathan Frederic
Added `update_children` pattern to remaining parent widgets
r14507 },
Jonathan Frederic
Added ModalView
r14409 update: function(){
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
Added ModalView
r14409 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.$title.html("&nbsp;"); // Preserve title height
Jonathan Frederic
Added ModalView
r14409 } else {
Jonathan Frederic
Replace .html with .text everywhere possible
r14663 this.$title.text(description);
Jonathan Frederic
Add latex support in widget labels,...
r16817 MathJax.Hub.Queue(["Typeset",MathJax.Hub,this.$title.get(0)]);
Jonathan Frederic
Added ModalView
r14409 }
var button_text = this.model.get('button_text');
MinRK
handle space-only strings, not just zero-length
r15330 if (button_text.trim().length === 0) {
MinRK
use non-breaking space for button with no description...
r15329 this.$show_button.html("&nbsp;"); // Preserve button height
Jonathan Frederic
Added ModalView
r14409 } else {
Jonathan Frederic
Replace .html with .text everywhere possible
r14663 this.$show_button.text(button_text);
Jonathan Frederic
Added ModalView
r14409 }
if (!this._shown_once) {
this._shown_once = true;
this.show();
}
Jonathan Frederic
s/ModalView/PopupView
r14676 return PopupView.__super__.update.apply(this);
Jonathan Frederic
Added ModalView
r14409 },
Jonathan Frederic
Added custom selector logic to modal view
r14419 _get_selector_element: function(selector) {
Jonathan Frederic
Added PEP8 style comments to all of the JS code.
r14609 // Get an element view a 'special' jquery selector. (see widget.js)
//
Jonathan Frederic
Added custom selector logic to modal view
r14419 // Since the modal actually isn't within the $el in the DOM, we need to extend
// the selector logic to allow the user to set css on the modal if need be.
// The convention used is:
// "modal" - select the modal div
// "modal [selector]" - select element(s) within the modal div.
// "[selector]" - select elements within $el
// "" - select the $el_to_style
if (selector.substring(0, 5) == 'modal') {
if (selector == 'modal') {
return this.$window;
} else {
return this.$window.find(selector.substring(6));
}
} else {
Jonathan Frederic
s/ModalView/PopupView
r14676 return PopupView.__super__._get_selector_element.apply(this, [selector]);
Jonathan Frederic
Added custom selector logic to modal view
r14419 }
},
Jonathan Frederic
Added ModalView
r14409 });
Jonathan Frederic
Almost done!...
r17198
return {
'ContainerView': ContainerView,
'PopupView': PopupView,
};
Jonathan Frederic
Added ModalView
r14409 });