##// END OF EJS Templates
Added require.js shims for underscore and backbone...
Added require.js shims for underscore and backbone This is necessary since underscore and backbone are no longer AMD modules.

File last commit:

r14483:6e353ea6
r14483:6e353ea6
Show More
widgetmanager.js
128 lines | 4.7 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Added widjet.js...
r14224 //----------------------------------------------------------------------------
// Copyright (C) 2013 The IPython Development Team
//
// Distributed under the terms of the BSD License. The full license is in
// the file COPYING, distributed as part of this software.
//----------------------------------------------------------------------------
//============================================================================
// WidgetModel, WidgetView, and WidgetManager
//============================================================================
/**
* Base Widget classes
* @module IPython
* @namespace IPython
* @submodule widget
*/
Jonathan Frederic
jshint widget.js
r14457 (function () {
"use strict";
// Use require.js 'define' method so that require.js is intelligent enough to
// syncronously load everything within this file when it is being 'required'
// elsewhere.
Jonathan Frederic
Added require.js shims for underscore and backbone...
r14483 define(["underscore",
"backbone",
Jonathan Frederic
Fixed some spacing in widget.js
r14468 ], function (underscore, backbone) {
Jonathan Frederic
jshint widget.js
r14457
//--------------------------------------------------------------------
// WidgetManager class
//--------------------------------------------------------------------
Jonathan Frederic
Fixed some spacing in widget.js
r14468 var WidgetManager = function () {
Jonathan Frederic
jshint widget.js
r14457 this.comm_manager = null;
this.widget_model_types = {};
this.widget_view_types = {};
Jonathan Frederic
Removed comm dependency of widget model and view
r14469 this._model_instances = {};
Jonathan Frederic
jshint widget.js
r14457
Jonathan Frederic
Fixed some spacing in widget.js
r14468 Backbone.sync = function (method, model, options, error) {
Jonathan Frederic
jshint widget.js
r14457 var result = model._handle_sync(method, options);
if (options.success) {
options.success(result);
}
};
};
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype.attach_comm_manager = function (comm_manager) {
this.comm_manager = comm_manager;
// Register already register widget model types with the comm manager.
for (var widget_model_name in this.widget_model_types) {
this.comm_manager.register_target(widget_model_name, $.proxy(this._handle_com_open, this));
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342 }
Jonathan Frederic
jshint widget.js
r14457 };
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype.register_widget_model = function (widget_model_name, widget_model_type) {
// Register the widget with the comm manager. Make sure to pass this object's context
// in so `this` works in the call back.
if (this.comm_manager !== null) {
this.comm_manager.register_target(widget_model_name, $.proxy(this._handle_com_open, this));
}
this.widget_model_types[widget_model_name] = widget_model_type;
};
Jonathan Frederic
Remove init_widget_js, use require.js for everything...
r14342
Jonathan Frederic
Handle widget hide/show logic...
r14237
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype.register_widget_view = function (widget_view_name, widget_view_type) {
this.widget_view_types[widget_view_name] = widget_view_type;
};
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278
Jonathan Frederic
Lots of updates to widget(s) js...
r14263
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype.get_msg_cell = function (msg_id) {
if (IPython.notebook !== undefined && IPython.notebook !== null) {
return IPython.notebook.get_msg_cell(msg_id);
}
};
Jonathan Frederic
Removed comm dependency of widget model and view
r14469
WidgetManager.prototype.get_model = function (widget_id) {
var model = this._model_instances[widget_id];
Jonathan Frederic
Fixed nonregistered model bug in wiget manager
r14475 if (model !== undefined && model.id == widget_id) {
Jonathan Frederic
Removed comm dependency of widget model and view
r14469 return model;
}
return null;
};
WidgetManager.prototype.get_kernel = function () {
if (this.comm_manager === null) {
return null;
} else {
return this.comm_manager.kernel;
}
};
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype.on_create_widget = function (callback) {
this._create_widget_callback = callback;
};
Jonathan Frederic
Lots of updates to widget(s) js...
r14263
Jonathan Frederic
LOTS OF WIDGET CHANGES...
r14278
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype._handle_create_widget = function (widget_model) {
if (this._create_widget_callback) {
try {
this._create_widget_callback(widget_model);
} catch (e) {
console.log("Exception in WidgetManager callback", e, widget_model);
}
Jonathan Frederic
Added on_create_widget callback to WidgetManager
r14381 }
Jonathan Frederic
jshint widget.js
r14457 };
Jonathan Frederic
Use require.js where possible.
r14255
Jonathan Frederic
Added widjet.js...
r14224
Jonathan Frederic
jshint widget.js
r14457 WidgetManager.prototype._handle_com_open = function (comm, msg) {
var widget_type_name = msg.content.target_name;
Jonathan Frederic
Removed comm dependency of widget model and view
r14469 var widget_model = new this.widget_model_types[widget_type_name](this, comm.comm_id, comm);
this._model_instances[comm.comm_id] = widget_model;
Jonathan Frederic
jshint widget.js
r14457 this._handle_create_widget(widget_model);
};
//--------------------------------------------------------------------
// Init code
//--------------------------------------------------------------------
IPython.WidgetManager = WidgetManager;
if (IPython.widget_manager === undefined || IPython.widget_manager === null) {
IPython.widget_manager = new WidgetManager();
}
Jonathan Frederic
Remove some empty space
r14390
Jonathan Frederic
jshint widget.js
r14457 return IPython.widget_manager;
});
}());