diff --git a/IPython/html/static/notebook/js/cell.js b/IPython/html/static/notebook/js/cell.js index 05562a1..13bd925 100644 --- a/IPython/html/static/notebook/js/cell.js +++ b/IPython/html/static/notebook/js/cell.js @@ -38,23 +38,24 @@ define([ * @param {object|undefined} [options] * @param [options.cm_config] {object} config to pass to CodeMirror, will extend default parameters */ - var Cell = function (options, keyboard_manager, events) { - this.keyboard_manager = keyboard_manager; - this.events = events; - options = this.mergeopt(Cell, options); + var Cell = function (options) { + options = options || {}; + this.keyboard_manager = options.keyboard_manager; + this.events = options.events; + var config = this.mergeopt(Cell, options.config); // superclass default overwrite our default - this.placeholder = options.placeholder || ''; - this.read_only = options.cm_config.readOnly; + this.placeholder = config.placeholder || ''; + this.read_only = config.cm_config.readOnly; this.selected = false; this.rendered = false; this.mode = 'command'; this.metadata = {}; // load this from metadata later ? this.user_highlight = 'auto'; - this.cm_config = options.cm_config; + this.cm_config = config.cm_config; this.cell_id = utils.uuid(); - this._options = options; + this._options = config; // For JS VM engines optimization, attributes should be all set (even // to null) in the constructor, and if possible, if different subclass diff --git a/IPython/html/static/notebook/js/codecell.js b/IPython/html/static/notebook/js/codecell.js index b5a63ef..3869d7a 100644 --- a/IPython/html/static/notebook/js/codecell.js +++ b/IPython/html/static/notebook/js/codecell.js @@ -54,13 +54,14 @@ define([ * @param {object|undefined} [options] * @param [options.cm_config] {object} config to pass to CodeMirror */ - var CodeCell = function (kernel, options, events, config, keyboard_manager, notebook) { + var CodeCell = function (kernel, options) { + options = options || {}; this.kernel = kernel || null; - this.notebook = notebook; + this.notebook = options.notebook; this.collapsed = false; - this.tooltip = new tooltip.Tooltip(events); - this.events = events; - this.config = config; + this.events = options.events; + this.tooltip = new tooltip.Tooltip(this.events); + this.config = options.config; // create all attributed in constructor function // even if null for V8 VM optimisation @@ -75,9 +76,11 @@ define([ onKeyEvent: $.proxy(this.handle_keyevent,this) }; - options = this.mergeopt(CodeCell, options, {cm_config:cm_overwrite_options}); - - Cell.apply(this,[options, keyboard_manager, events]); + var config = this.mergeopt(CodeCell, this.config, {cm_config: cm_overwrite_options}); + Cell.apply(this,[{ + config: config, + keyboard_manager: options.keyboard_manager, + events: this.events}]); // Attributes we want to override in this subclass. this.cell_type = "code"; diff --git a/IPython/html/static/notebook/js/keyboardmanager.js b/IPython/html/static/notebook/js/keyboardmanager.js index 519a41f..dad667d 100644 --- a/IPython/html/static/notebook/js/keyboardmanager.js +++ b/IPython/html/static/notebook/js/keyboardmanager.js @@ -15,17 +15,17 @@ define([ // Main keyboard manager for the notebook var keycodes = keyboard.keycodes; - var KeyboardManager = function (pager, events) { + var KeyboardManager = function (options) { this.mode = 'command'; this.enabled = true; - this.pager = pager; + this.pager = options.pager; this.quick_help = undefined; this.notebook = undefined; this.bind_events(); - this.command_shortcuts = new keyboard.ShortcutManager(undefined, events); + this.command_shortcuts = new keyboard.ShortcutManager(undefined, options.events); this.command_shortcuts.add_shortcuts(this.get_default_common_shortcuts()); this.command_shortcuts.add_shortcuts(this.get_default_command_shortcuts()); - this.edit_shortcuts = new keyboard.ShortcutManager(undefined, events); + this.edit_shortcuts = new keyboard.ShortcutManager(undefined, options.events); this.edit_shortcuts.add_shortcuts(this.get_default_common_shortcuts()); this.edit_shortcuts.add_shortcuts(this.get_default_edit_shortcuts()); }; diff --git a/IPython/html/static/notebook/js/main.js b/IPython/html/static/notebook/js/main.js index 53e1d93..6f7a2b8 100644 --- a/IPython/html/static/notebook/js/main.js +++ b/IPython/html/static/notebook/js/main.js @@ -42,7 +42,7 @@ require([ $('#ipython-main-app').addClass('border-box-sizing'); $('div#notebook_panel').addClass('border-box-sizing'); - var options = { + var common_options = { base_url : utils.get_body_data("baseUrl"), notebook_path : utils.get_body_data("notebookPath"), notebook_name : utils.get_body_data('notebookName') @@ -52,15 +52,38 @@ require([ var page = new page.Page(); var layout_manager = new layoutmanager.LayoutManager(); var events = $([new events.Events()]); - var pager = new pager.Pager('div#pager', 'div#pager_splitter', layout_manager, events); - var keyboard_manager = new keyboardmanager.KeyboardManager(pager, events); + var pager = new pager.Pager('div#pager', 'div#pager_splitter', { + layout_manager: layout_manager, + events: events}); + var keyboard_manager = new keyboardmanager.KeyboardManager({ + pager: pager, + events: events}); var save_widget = new savewidget.SaveWidget('span#save_widget', events); - var notebook = new notebook.Notebook('div#notebook', options, events, keyboard_manager, save_widget, user_config); - var login_widget = new loginwidget.LoginWidget('span#login_widget', options); - var toolbar = new maintoolbar.MainToolBar('#maintoolbar-container', layout_manager, notebook, events); - var quick_help = new quickhelp.QuickHelp(undefined, keyboard_manager, events); - var menubar = new menubar.MenuBar('#menubar', options, notebook, layout_manager, events, save_widget, quick_help); - var notification_area = new notificationarea.NotificationArea('#notification_area', events, save_widget, notebook); + var notebook = new notebook.Notebook('div#notebook', $.extend({ + events: events, + keyboard_manager: keyboard_manager, + save_widget: save_widget, + config: user_config}, + common_options)); + var login_widget = new loginwidget.LoginWidget('span#login_widget', common_options); + var toolbar = new maintoolbar.MainToolBar('#maintoolbar-container', { + notebook: notebook, + events: events}); + var quick_help = new quickhelp.QuickHelp({ + keyboard_manager: keyboard_manager, + events: events}); + var menubar = new menubar.MenuBar('#menubar', $.extend({ + notebook: notebook, + layout_manager: layout_manager, + events: events, + save_widget: save_widget, + quick_help: quick_help}, + common_options)); + var notification_area = new notificationarea.NotificationArea( + '#notification_area', { + events: events, + save_widget: save_widget, + notebook: notebook}); notification_area.init_notification_widgets(); $('body').append('
x'+
@@ -91,7 +114,7 @@ require([
events.on('notebook_loaded.Notebook', first_load);
events.trigger('app_initialized.NotebookApp');
- notebook.load_notebook(options.notebook_name, options.notebook_path);
+ notebook.load_notebook(common_options.notebook_name, common_options.notebook_path);
ipython.page = page;
ipython.layout_manager = layout_manager;
diff --git a/IPython/html/static/notebook/js/maintoolbar.js b/IPython/html/static/notebook/js/maintoolbar.js
index f899f7d..e14e93f 100644
--- a/IPython/html/static/notebook/js/maintoolbar.js
+++ b/IPython/html/static/notebook/js/maintoolbar.js
@@ -9,10 +9,10 @@ define([
], function(IPython, $, toolbar, celltoolbar) {
"use strict";
- var MainToolBar = function (selector, layout_manager, notebook, events) {
+ var MainToolBar = function (selector, options) {
toolbar.ToolBar.apply(this, arguments);
- this.events = events;
- this.notebook = notebook;
+ this.events = options.events;
+ this.notebook = options.notebook;
this.construct();
this.add_celltype_list();
this.add_celltoolbar_list();
diff --git a/IPython/html/static/notebook/js/menubar.js b/IPython/html/static/notebook/js/menubar.js
index c0d79dd..9698d58 100644
--- a/IPython/html/static/notebook/js/menubar.js
+++ b/IPython/html/static/notebook/js/menubar.js
@@ -24,18 +24,18 @@ define([
* $('body').data('baseUrl');
* does not support change for now is set through this option
*/
- var MenuBar = function (selector, options, notebook, layout_manager, events, save_widget, quick_help) {
+ var MenuBar = function (selector, options) {
options = options || {};
this.base_url = options.base_url || utils.get_body_data("baseUrl");
this.selector = selector;
- this.notebook = notebook;
- this.layout_manager = layout_manager;
- this.events = events;
- this.save_widget = save_widget;
- this.quick_help = quick_help;
+ this.notebook = options.notebook;
+ this.layout_manager = options.layout_manager;
+ this.events = options.events;
+ this.save_widget = options.save_widget;
+ this.quick_help = options.quick_help;
try {
- this.tour = new tour.Tour(notebook, events);
+ this.tour = new tour.Tour(this.notebook, this.events);
} catch (e) {
this.tour = undefined;
console.log("Failed to instantiate Notebook Tour", e);
diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js
index 0a190b3..6389862 100644
--- a/IPython/html/static/notebook/js/notebook.js
+++ b/IPython/html/static/notebook/js/notebook.js
@@ -38,15 +38,18 @@ define([
* @param {Object} [options] A config object
* @param {Object} [events] An events object
*/
- var Notebook = function (selector, options, events, keyboard_manager, save_widget, config) {
- this.config = config;
- this.events = events;
- this.keyboard_manager = keyboard_manager;
+ var Notebook = function (selector, options) {
+ this.config = options.config || {};
+ this.base_url = options.base_url;
+ this.notebook_path = options.notebook_path;
+ this.notebook_name = options.notebook_name;
+ this.events = options.events;
+ this.keyboard_manager = options.keyboard_manager;
+ this.save_widget = options.save_widget;
// TODO: This code smells (and the other `= this` line a couple lines down)
// We need a better way to deal with circular instance references.
- keyboard_manager.notebook = this;
- this.save_widget = save_widget;
- save_widget.notebook = this;
+ this.keyboard_manager.notebook = this;
+ this.save_widget.notebook = this;
mathjaxutils.init();
@@ -76,10 +79,6 @@ define([
IPython.save_widget = this.save_widget;
IPython.keyboard = this.keyboard;
- this.options = options = options || {};
- this.base_url = options.base_url;
- this.notebook_path = options.notebook_path;
- this.notebook_name = options.notebook_name;
this.element = $(selector);
this.element.scroll();
this.element.data("notebook", this);
@@ -806,15 +805,24 @@ define([
type = type || this.get_selected_cell().cell_type;
if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
+ var cell_options = {
+ base_url: base_url,
+ notebook_path: notebook_path,
+ notebook_name: notebook_name,
+ events: this.events,
+ config: this.config,
+ keyboard_manager: this.keyboard_manager,
+ notebook: this
+ };
if (type === 'code') {
- cell = new codecell.CodeCell(this.kernel, this.options, this.events, this.config, this.keyboard_manager, this);
+ cell = new codecell.CodeCell(this.kernel, cell_options);
cell.set_input_prompt();
} else if (type === 'markdown') {
- cell = new cells.MarkdownCell(this.options, this.events, this.config, this.keyboard_manager, this);
+ cell = new cells.MarkdownCell(cell_options);
} else if (type === 'raw') {
- cell = new cells.RawCell(this.options, this.events, this.config, this.keyboard_manager, this);
+ cell = new cells.RawCell(cell_options);
} else if (type === 'heading') {
- cell = new cells.HeadingCell(this.options, this.events, this.config, this.keyboard_manager, this);
+ cell = new cells.HeadingCell(cell_options);
}
if(this._insert_element_at_index(cell.element,index)) {
@@ -1465,7 +1473,11 @@ define([
* @method start_session
*/
Notebook.prototype.start_session = function () {
- this.session = new session.Session(this, this.options);
+ this.session = new session.Session(this, {
+ base_url: base_url,
+ notebook_path: notebook_path,
+ notebook_name: notebook_name,
+ notebook: this});
this.session.start($.proxy(this._session_started, this));
};
diff --git a/IPython/html/static/notebook/js/notificationarea.js b/IPython/html/static/notebook/js/notificationarea.js
index 563615f..59d3a8c 100644
--- a/IPython/html/static/notebook/js/notificationarea.js
+++ b/IPython/html/static/notebook/js/notificationarea.js
@@ -10,11 +10,11 @@ define([
], function(IPython, $, utils, dialog, notificationwidget) {
"use strict";
- var NotificationArea = function (selector, events, save_widget, notebook) {
+ var NotificationArea = function (selector, options) {
this.selector = selector;
- this.events = events;
- this.save_widget = save_widget;
- this.notebook = notebook;
+ this.events = options.events;
+ this.save_widget = options.save_widget;
+ this.notebook = options.notebook;
if (this.selector !== undefined) {
this.element = $(selector);
}
diff --git a/IPython/html/static/notebook/js/pager.js b/IPython/html/static/notebook/js/pager.js
index 034e2b3..744f339 100644
--- a/IPython/html/static/notebook/js/pager.js
+++ b/IPython/html/static/notebook/js/pager.js
@@ -8,13 +8,13 @@ define([
], function(IPython, $, utils) {
"use strict";
- var Pager = function (pager_selector, pager_splitter_selector, layout_manager, events) {
- this.events = events;
+ var Pager = function (pager_selector, pager_splitter_selector, options) {
+ this.events = options.events;
this.pager_element = $(pager_selector);
this.pager_button_area = $('#pager_button_area');
var that = this;
this.percentage_height = 0.40;
- layout_manager.pager = this;
+ options.layout_manager.pager = this;
this.pager_splitter_element = $(pager_splitter_selector)
.draggable({
containment: 'window',
@@ -23,7 +23,7 @@ define([
drag: function(event, ui) {
// recalculate the amount of space the pager should take
var pheight = ($(document.body).height()-event.clientY-4);
- var downprct = pheight/layout_manager.app_height();
+ var downprct = pheight/options.layout_manager.app_height();
downprct = Math.min(0.9, downprct);
if (downprct < 0.1) {
that.percentage_height = 0.1;
@@ -32,7 +32,7 @@ define([
that.percentage_height = downprct;
that.expand({'duration':0});
}
- layout_manager.do_resize();
+ options.layout_manager.do_resize();
}
});
this.expanded = false;
diff --git a/IPython/html/static/notebook/js/quickhelp.js b/IPython/html/static/notebook/js/quickhelp.js
index 316208d..aecf961 100644
--- a/IPython/html/static/notebook/js/quickhelp.js
+++ b/IPython/html/static/notebook/js/quickhelp.js
@@ -10,10 +10,10 @@ define([
"use strict";
var platform = utils.platform;
- var QuickHelp = function (selector, keyboard_manager, events) {
- this.keyboard_manager = keyboard_manager;
- keyboard_manager.quick_help = this;
- this.events = events;
+ var QuickHelp = function (options) {
+ this.keyboard_manager = options.keyboard_manager;
+ this.keyboard_manager.quick_help = this;
+ this.events = options.events;
};
var cmd_ctrl = 'Ctrl-';
diff --git a/IPython/html/static/notebook/js/textcell.js b/IPython/html/static/notebook/js/textcell.js
index f1db79a..1eb3f57 100644
--- a/IPython/html/static/notebook/js/textcell.js
+++ b/IPython/html/static/notebook/js/textcell.js
@@ -24,27 +24,28 @@ define([
* @param [options.cm_config] {object} config to pass to CodeMirror, will extend/overwrite default config
* @param [options.placeholder] {string} default string to use when souce in empty for rendering (only use in some TextCell subclass)
*/
- var TextCell = function (options, events, config, keyboard_manager, notebook) {
+ var TextCell = function (options) {
+ options = options || {};
// in all TextCell/Cell subclasses
// do not assign most of members here, just pass it down
// in the options dict potentially overwriting what you wish.
// they will be assigned in the base class.
- this.notebook = notebook;
- this.events = events;
- this.config = config;
+ this.notebook = options.notebook;
+ this.events = options.events;
+ this.config = options.config;
// we cannot put this as a class key as it has handle to "this".
var cm_overwrite_options = {
onKeyEvent: $.proxy(this.handle_keyevent,this)
};
-
- options = this.mergeopt(TextCell,options,{cm_config:cm_overwrite_options});
+ var config = this.mergeopt(TextCell, this.config, {cm_config:cm_overwrite_options});
+ Cell.apply(this, [{
+ config: config,
+ keyboard_manager: options.keyboard_manager,
+ events: events}]);
this.cell_type = this.cell_type || 'text';
mathjaxutils = mathjaxutils;
-
- Cell.apply(this, [options, keyboard_manager, events]);
-
this.rendered = false;
};
@@ -218,11 +219,12 @@ define([
* @constructor MarkdownCell
* @extends IPython.HTMLCell
*/
- var MarkdownCell = function (options, events, config, keyboard_manager) {
- options = this.mergeopt(MarkdownCell, options);
+ var MarkdownCell = function (options) {
+ options = options || {};
+ var config = this.mergeopt(MarkdownCell, options.config);
+ TextCell.apply(this, [$.extend({}, options, {config: config})]);
this.cell_type = 'markdown';
- TextCell.apply(this, [options, events, config, keyboard_manager]);
};
MarkdownCell.options_default = {
@@ -268,13 +270,14 @@ define([
* @constructor RawCell
* @extends TextCell
*/
- var RawCell = function (options, events, config, keyboard_manager) {
+ var RawCell = function (options) {
+ options = options || {};
+ var config = this.mergeopt(RawCell, options.config);
+ TextCell.apply(this, [$.extend({}, options, {config: config})]);
- options = this.mergeopt(RawCell,options);
- TextCell.apply(this, [options, events, config, keyboard_manager]);
- this.cell_type = 'raw';
// RawCell should always hide its rendered div
this.element.find('div.text_cell_render').hide();
+ this.cell_type = 'raw';
};
RawCell.options_default = {
@@ -327,17 +330,13 @@ define([
* @constructor HeadingCell
* @extends TextCell
*/
- var HeadingCell = function (options, events, config, keyboard_manager) {
- options = this.mergeopt(HeadingCell, options);
+ var HeadingCell = function (options) {
+ options = options || {};
+ var config = this.mergeopt(HeadingCell, options.config);
+ TextCell.apply(this, [$.extend({}, options, {config: config})]);
this.level = 1;
this.cell_type = 'heading';
- TextCell.apply(this, [options, events, config, keyboard_manager]);
-
- /**
- * heading level of the cell, use getter and setter to access
- * @property level
- */
};
HeadingCell.options_default = {
diff --git a/IPython/html/static/services/sessions/js/session.js b/IPython/html/static/services/sessions/js/session.js
index 6e791e0..9d53d00 100644
--- a/IPython/html/static/services/sessions/js/session.js
+++ b/IPython/html/static/services/sessions/js/session.js
@@ -9,10 +9,10 @@ define([
], function(IPython, $, utils, kernel) {
"use strict";
- var Session = function(notebook, options){
+ var Session = function(options){
this.kernel = null;
this.id = null;
- this.notebook = notebook;
+ this.notebook = options.notebook;
this.name = notebook.notebook_name;
this.path = notebook.notebook_path;
this.base_url = notebook.base_url;
diff --git a/IPython/html/static/tree/js/kernellist.js b/IPython/html/static/tree/js/kernellist.js
index b2e4e70..62305b7 100644
--- a/IPython/html/static/tree/js/kernellist.js
+++ b/IPython/html/static/tree/js/kernellist.js
@@ -8,8 +8,10 @@ define([
], function(IPython, $, notebooklist) {
"use strict";
- var KernelList = function (selector, options, session_list) {
- notebooklist.NotebookList.call(this, selector, options, 'running', session_list);
+ var KernelList = function (selector, options) {
+ notebooklist.NotebookList.call(this, selector, $.extend({
+ element_name: 'running'},
+ options));
};
KernelList.prototype = Object.create(notebooklist.NotebookList.prototype);
diff --git a/IPython/html/static/tree/js/main.js b/IPython/html/static/tree/js/main.js
index c93bb1d..88ea1ff 100644
--- a/IPython/html/static/tree/js/main.js
+++ b/IPython/html/static/tree/js/main.js
@@ -1,7 +1,6 @@
// Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
-var ipython = ipython || {};
require([
'base/js/namespace',
'jquery',
@@ -29,16 +28,22 @@ require([
page = new page.Page();
- var opts = {
+ var common_options = {
base_url: utils.get_body_data("baseUrl"),
notebook_path: utils.get_body_data("notebookPath"),
};
events = $([new events.Events()]);
- session_list = new sesssionlist.SesssionList(opts, events);
- notebook_list = new notebooklist.NotebookList('#notebook_list', opts, undefined, session_list);
- cluster_list = new clusterlist.ClusterList('#cluster_list', opts);
- kernel_list = new kernellist.KernelList('#running_list', opts, session_list);
- login_widget = new loginwidget.LoginWidget('#login_widget', opts);
+ session_list = new sesssionlist.SesssionList($.extend({
+ events: events},
+ common_options));
+ notebook_list = new notebooklist.NotebookList('#notebook_list', $.extend({
+ session_list: session_list},
+ common_options));
+ cluster_list = new clusterlist.ClusterList('#cluster_list', common_options);
+ kernel_list = new kernellist.KernelList('#running_list', $.extend({
+ session_list: session_list},
+ common_options));
+ login_widget = new loginwidget.LoginWidget('#login_widget', common_options);
$('#new_notebook').button().click(function (e) {
notebook_list.new_notebook();
@@ -104,11 +109,11 @@ require([
}
// For backwards compatability.
- ipython.page = page;
- ipython.notebook_list = notebook_list;
- ipython.cluster_list = cluster_list;
- ipython.session_list = session_list;
- ipython.kernel_list = kernel_list;
- ipython.login_widget = login_widget;
- ipython.events = events;
+ IPython.page = page;
+ IPython.notebook_list = notebook_list;
+ IPython.cluster_list = cluster_list;
+ IPython.session_list = session_list;
+ IPython.kernel_list = kernel_list;
+ IPython.login_widget = login_widget;
+ IPython.events = events;
});
diff --git a/IPython/html/static/tree/js/notebooklist.js b/IPython/html/static/tree/js/notebooklist.js
index e5e3765..8fe2ba3 100644
--- a/IPython/html/static/tree/js/notebooklist.js
+++ b/IPython/html/static/tree/js/notebooklist.js
@@ -9,11 +9,11 @@ define([
], function(IPython, $, utils, dialog) {
"use strict";
- var NotebookList = function (selector, options, element_name, session_list) {
+ var NotebookList = function (selector, options) {
var that = this;
- this.session_list = session_list;
+ this.session_list = options.session_list;
// allow code re-use by just changing element_name in kernellist.js
- this.element_name = element_name || 'notebook';
+ this.element_name = options.element_name || 'notebook';
this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
diff --git a/IPython/html/static/tree/js/sessionlist.js b/IPython/html/static/tree/js/sessionlist.js
index 93822d0..206b59e 100644
--- a/IPython/html/static/tree/js/sessionlist.js
+++ b/IPython/html/static/tree/js/sessionlist.js
@@ -9,7 +9,7 @@ define([
"use strict";
var SesssionList = function (options, events) {
- this.events = events;
+ this.events = options.events;
this.sessions = {};
this.base_url = options.base_url || utils.get_body_data("baseUrl");
};