diff --git a/IPython/html/static/widgets/js/init.js b/IPython/html/static/widgets/js/init.js index 9dde6b0..0ea0a25 100644 --- a/IPython/html/static/widgets/js/init.js +++ b/IPython/html/static/widgets/js/init.js @@ -14,18 +14,33 @@ define([ "widgets/js/widget_selection", "widgets/js/widget_selectioncontainer", "widgets/js/widget_string", -], function(widgetmanager, linkModels) { - for (var target_name in linkModels) { - if (linkModels.hasOwnProperty(target_name)) { - widgetmanager.WidgetManager.register_widget_model(target_name, linkModels[target_name]); +], function(widgetmanager) { + + + /** + * From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + * Can be removed with the string endsWith function is implemented in major browsers + */ + var endsWith = function(target, searchString, position) { + var subjectString = target.toString(); + if (position === undefined || position > subjectString.length) { + position = subjectString.length; } - } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; - // Register all of the loaded views with the widget manager. - for (var i = 2; i < arguments.length; i++) { - for (var target_name in arguments[i]) { - if (arguments[i].hasOwnProperty(target_name)) { - widgetmanager.WidgetManager.register_widget_view(target_name, arguments[i][target_name]); + // Register all of the loaded models and views with the widget manager. + for (var i = 1; i < arguments.length; i++) { + var module = arguments[i]; + for (var target_name in module) { + if (module.hasOwnProperty(target_name)) { + if (endsWith(target_name, "View")) { + widgetmanager.WidgetManager.register_widget_view(target_name, module[target_name]); + } else if (endsWith(target_name, "Model")) { + widgetmanager.WidgetManager.register_widget_model(target_name, module[target_name]); + } } } } diff --git a/IPython/html/static/widgets/js/types.js b/IPython/html/static/widgets/js/types.js deleted file mode 100644 index f5d8c76..0000000 --- a/IPython/html/static/widgets/js/types.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) IPython Development Team. -// Distributed under the terms of the Modified BSD License. - -define([ - "base/js/utils" -], function(utils){ - return { - models: { - deserialize: function deserialize_models(value, model) { - /** - * Replace model ids with models recursively. - */ - var unpacked; - if ($.isArray(value)) { - unpacked = []; - _.each(value, function(sub_value, key) { - unpacked.push(deserialize_models(sub_value, model)); - }); - return Promise.all(unpacked); - } else if (value instanceof Object) { - unpacked = {}; - _.each(value, function(sub_value, key) { - unpacked[key] = deserialize_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); - } - }, - /* We don't need a serializer since models automatically serialize to their UUIDs */ - /* courtesy of the model toJSON */ - }, - } -}); diff --git a/IPython/html/static/widgets/js/widget.js b/IPython/html/static/widgets/js/widget.js index c59d25f..a643ea0 100644 --- a/IPython/html/static/widgets/js/widget.js +++ b/IPython/html/static/widgets/js/widget.js @@ -32,7 +32,6 @@ define(["widgets/js/manager", this.state_lock = null; this.id = model_id; this.views = {}; - this.serializers = {}; this._resolve_received_state = {}; if (comm !== undefined) { @@ -146,23 +145,17 @@ define(["widgets/js/manager", var state = msg.content.data.state || {}; var buffer_keys = msg.content.data.buffers || []; var buffers = msg.buffers || []; - var metadata = msg.content.data.metadata || {}; - var i,k; for (var i=0; i