##// END OF EJS Templates
Merge pull request #8247 from minrk/localinterfaces...
Merge pull request #8247 from minrk/localinterfaces move utils.localinterfaces to jupyter_client

File last commit:

r21029:7a6f5bc0
r21136:ad8172ef merge
Show More
widget_box.js
187 lines | 6.5 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 "jqueryui",
Jason Grout
Change custom serialization to use custom models, rather than transmitting the serializer name across the wire...
r20935 "underscore",
Jonathan Frederic
Add a WrappedError class
r18895 "base/js/utils",
MinRK
add bootstrap shim for require...
r17312 "bootstrap",
Jason Grout
Change custom serialization to use custom models, rather than transmitting the serializer name across the wire...
r20935 ], function(widget, $, _, utils){
Matthias Bussonnier
Some code cleanup in javascript and python...
r19739 "use strict";
Jason Grout
Change custom serialization to use custom models, rather than transmitting the serializer name across the wire...
r20935 var unpack_models = function unpack_models(value, model) {
/**
* Replace model ids with models recursively.
*/
var unpacked;
if ($.isArray(value)) {
unpacked = [];
_.each(value, function(sub_value, key) {
unpacked.push(unpack_models(sub_value, model));
});
return Promise.all(unpacked);
} else if (value instanceof Object) {
unpacked = {};
_.each(value, function(sub_value, key) {
unpacked[key] = unpack_models(sub_value, model);
});
return utils.resolve_promises_dict(unpacked);
} else if (typeof value === 'string' && value.slice(0,10) === "IPY_MODEL_") {
// get_model returns a promise already
return model.widget_manager.get_model(value.slice(10, value.length));
} else {
return Promise.resolve(value);
}
};
var BoxModel = widget.WidgetModel.extend({}, {
serializers: _.extend({
children: {deserialize: unpack_models}
}, widget.WidgetModel.serializers)
});
Jonathan Frederic
Added standard IPY JS header to widget JS files.
r14366
Jonathan Frederic
s/Container/Box
r17637 var BoxView = widget.DOMWidgetView.extend({
sylvain.corlay
widget simplification continued
r17349 initialize: function(){
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Public constructor
*/
Jonathan Frederic
s/Container/Box
r17637 BoxView.__super__.initialize.apply(this, arguments);
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.children_views = new widget.ViewList(this.add_child_model, null, this);
this.listenTo(this.model, 'change:children', function(model, value) {
this.children_views.update(value);
Jason Grout
Live updates for children automatically change container views....
r14503 }, this);
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.listenTo(this.model, 'change:overflow_x', function(model, value) {
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 this.update_overflow_x();
}, this);
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.listenTo(this.model, 'change:overflow_y', function(model, value) {
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 this.update_overflow_y();
}, this);
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.listenTo(this.model, 'change:box_style', function(model, value) {
Jonathan Frederic
Added Bootstrap specific classes,...
r17728 this.update_box_style();
}, this);
Jason Grout
Live updates for children automatically change container views....
r14503 },
sylvain.corlay
widget simplification continued
r17349
Jonathan Frederic
Initial crack at using specific traits for styling.
r17722 update_attr: function(name, value) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Set a css attr of the widget view.
*/
Jonathan Frederic
Initial crack at using specific traits for styling.
r17722 this.$box.css(name, value);
},
sylvain.corlay
widget simplification continued
r17349 render: function(){
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Called when view is rendered.
*/
Jonathan Frederic
Fixed typo
r17663 this.$box = this.$el;
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.addClass('widget-box');
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.children_views.update(this.model.get('children'));
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 this.update_overflow_x();
this.update_overflow_y();
Jonathan Frederic
Added Bootstrap specific classes,...
r17728 this.update_box_style('');
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 },
update_overflow_x: function() {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Called when the x-axis overflow setting is changed.
*/
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 this.$box.css('overflow-x', this.model.get('overflow_x'));
},
update_overflow_y: function() {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Called when the y-axis overflow setting is changed.
*/
Jonathan Frederic
Fix some bugs found by the widget examples,...
r17727 this.$box.css('overflow-y', this.model.get('overflow_y'));
Jason Grout
Live updates for children automatically change container views....
r14503 },
Jonathan Frederic
Added Bootstrap specific classes,...
r17728
update_box_style: function(previous_trait_value) {
var class_map = {
success: ['alert', 'alert-success'],
info: ['alert', 'alert-info'],
warning: ['alert', 'alert-warning'],
danger: ['alert', 'alert-danger']
};
this.update_mapped_classes(class_map, 'box_style', previous_trait_value, this.$box);
},
Jason Grout
Live updates for children automatically change container views....
r14503
Jonathan Frederic
Got containers and mutlicontainers working! Yay
r14598 add_child_model: function(model) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Called when a model is added to the children list.
*/
Thomas Kluyver
Allow widget views to be loaded from require modules...
r18142 var that = this;
Jonathan Frederic
Fix view rendering order.
r18883 var dummy = $('<div/>');
that.$box.append(dummy);
Jonathan Frederic
Finished adding error handling.
r18896 return this.create_child_view(model).then(function(view) {
Jason Grout
More simplifications due to promises
r18888 dummy.replaceWith(view.el);
Jonathan Frederic
Fixed bugs in displayed event triggering for containers
r16660
Thomas Kluyver
Allow widget views to be loaded from require modules...
r18142 // Trigger the displayed event of the child view.
that.after_displayed(function() {
view.trigger('displayed');
});
Jonathan Frederic
Finished adding error handling.
r18896 return view;
Jason Grout
Catch errors after our then()s, instead of in parallel with them (this missing exceptions)...
r19080 }).catch(utils.reject("Couldn't add child view to box", true));
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 },
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996
remove: function() {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* We remove this widget before removing the children as an optimization
* we want to remove the entire container from the DOM first before
* removing each individual child separately.
*/
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 BoxView.__super__.remove.apply(this, arguments);
this.children_views.remove();
},
Jonathan Frederic
Lots of updates to widget(s) js...
r14263 });
Jonathan Frederic
Embrace flexible box model
r17596
Jonathan Frederic
s/Container/Box
r17637 var FlexBoxView = BoxView.extend({
Jonathan Frederic
Embrace flexible box model
r17596 render: function(){
Jonathan Frederic
s/Container/Box
r17637 FlexBoxView.__super__.render.apply(this);
Jason Grout
Refactor the do_diff and manual child view lists into a separate ViewList object
r18996 this.listenTo(this.model, 'change:orientation', this.update_orientation, this);
this.listenTo(this.model, 'change:flex', this._flex_changed, this);
this.listenTo(this.model, 'change:pack', this._pack_changed, this);
this.listenTo(this.model, 'change:align', this._align_changed, this);
Jonathan Frederic
Embrace flexible box model
r17596 this._flex_changed();
this._pack_changed();
this._align_changed();
Jonathan Frederic
s/that/this bug
r17688 this.update_orientation();
Sylvain Corlay
adding hbox and vbox...
r17600 },
update_orientation: function(){
var orientation = this.model.get("orientation");
if (orientation == "vertical") {
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.removeClass("hbox").addClass("vbox");
Sylvain Corlay
adding hbox and vbox...
r17600 } else {
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.removeClass("vbox").addClass("hbox");
Sylvain Corlay
adding hbox and vbox...
r17600 }
Jonathan Frederic
Embrace flexible box model
r17596 },
_flex_changed: function(){
if (this.model.previous('flex')) {
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.removeClass('box-flex' + this.model.previous('flex'));
Jonathan Frederic
Embrace flexible box model
r17596 }
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.addClass('box-flex' + this.model.get('flex'));
Jonathan Frederic
Embrace flexible box model
r17596 },
_pack_changed: function(){
if (this.model.previous('pack')) {
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.removeClass(this.model.previous('pack'));
Jonathan Frederic
Embrace flexible box model
r17596 }
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.addClass(this.model.get('pack'));
Jonathan Frederic
Embrace flexible box model
r17596 },
_align_changed: function(){
if (this.model.previous('align')) {
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.removeClass('align-' + this.model.previous('align'));
Jonathan Frederic
Embrace flexible box model
r17596 }
Jonathan Frederic
Fix logic, use box where applicable
r17661 this.$box.addClass('align-' + this.model.get('align'));
Jonathan Frederic
Embrace flexible box model
r17596 },
});
Jonathan Frederic
Almost done!...
r17198 return {
Jason Grout
Export the widget unpack_models function for other custom classes to use...
r21029 'unpack_models': unpack_models,
Jason Grout
Change custom serialization to use custom models, rather than transmitting the serializer name across the wire...
r20935 'BoxModel': BoxModel,
Jonathan Frederic
s/Container/Box
r17637 'BoxView': BoxView,
'FlexBoxView': FlexBoxView,
Jonathan Frederic
Almost done!...
r17198 };
Jonathan Frederic
Added ModalView
r14409 });