From 54163055a1fe0c6ba96c90af4aaa3ad16953767e 2015-03-31 00:37:05 From: Jason Grout Date: 2015-03-31 00:37:05 Subject: [PATCH] Register widget models and views that have the right inheritance, rather than the right name. Thanks to @jdfreder for this suggestion. --- diff --git a/IPython/html/static/widgets/js/init.js b/IPython/html/static/widgets/js/init.js index 0ea0a25..da09f54 100644 --- a/IPython/html/static/widgets/js/init.js +++ b/IPython/html/static/widgets/js/init.js @@ -3,6 +3,7 @@ define([ "widgets/js/manager", + "widgets/js/widget", "widgets/js/widget_link", "widgets/js/widget_bool", "widgets/js/widget_button", @@ -14,36 +15,20 @@ define([ "widgets/js/widget_selection", "widgets/js/widget_selectioncontainer", "widgets/js/widget_string", -], 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; - }; - +], function(widgetmanager, widget) { // Register all of the loaded models and views with the widget manager. - for (var i = 1; i < arguments.length; i++) { + for (var i = 2; 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]); + var target = module[target_name]; + if (target.prototype instanceof widget.WidgetModel) { + widgetmanager.WidgetManager.register_widget_model(target_name, target); + } else if (target.prototype instanceof widget.WidgetView) { + widgetmanager.WidgetManager.register_widget_view(target_name, target); } } } } - return {'WidgetManager': widgetmanager.WidgetManager}; });