mirror of
https://github.com/jupyter/notebook.git
synced 2025-04-24 14:20:54 +08:00
Fixed events
This commit is contained in:
parent
8d511b2ff5
commit
e6b7cc9ff9
@ -14,7 +14,6 @@ define(['base/js/namespace'], function(IPython) {
|
||||
|
||||
// Backwards compatability.
|
||||
IPython.Events = Events;
|
||||
|
||||
// TODO: Fix events.
|
||||
|
||||
return Events;
|
||||
});
|
||||
|
@ -43,7 +43,8 @@ require([
|
||||
page = new Page();
|
||||
pager = new Pager('div#pager', 'div#pager_splitter');
|
||||
layout_manager = new LayoutManager(pager);
|
||||
notebook = new Notebook('div#notebook', opts);
|
||||
events = new Events();
|
||||
notebook = new Notebook('div#notebook', opts, events);
|
||||
login_widget = new LoginWidget('span#login_widget', opts);
|
||||
toolbar = new MainToolBar('#maintoolbar-container');
|
||||
quick_help = new QuickHelp();
|
||||
@ -77,11 +78,11 @@ require([
|
||||
}
|
||||
notebook.set_autosave_interval(notebook.minimum_autosave_interval);
|
||||
// only do this once
|
||||
$([Events]).off('notebook_loaded.Notebook', first_load);
|
||||
events.off('notebook_loaded.Notebook', first_load);
|
||||
};
|
||||
|
||||
$([Events]).on('notebook_loaded.Notebook', first_load);
|
||||
$([Events]).trigger('app_initialized.NotebookApp');
|
||||
events.on('notebook_loaded.Notebook', first_load);
|
||||
events.trigger('app_initialized.NotebookApp');
|
||||
notebook.load_notebook(opts.notebook_name, opts.notebook_path);
|
||||
|
||||
ipython.page = page;
|
||||
@ -93,4 +94,5 @@ require([
|
||||
ipython.menubar = menubar;
|
||||
ipython.toolbar = toolbar;
|
||||
ipython.notification_area = notification_area;
|
||||
ipython.events = events;
|
||||
});
|
||||
|
@ -43,8 +43,10 @@ define([
|
||||
* @constructor
|
||||
* @param {String} selector A jQuery selector for the notebook's DOM element
|
||||
* @param {Object} [options] A config object
|
||||
* @param {Object} [events] An events object
|
||||
*/
|
||||
var Notebook = function (selector, options) {
|
||||
var Notebook = function (selector, options, events) {
|
||||
this.events = events || new Events();
|
||||
this.keyboard_manager = new KeyboardManager();
|
||||
this.keyboard = new Keyboard();
|
||||
this.save_widget = new SaveWidget('span#save_widget');
|
||||
@ -159,35 +161,35 @@ define([
|
||||
Notebook.prototype.bind_events = function () {
|
||||
var that = this;
|
||||
|
||||
$([Events]).on('set_next_input.Notebook', function (event, data) {
|
||||
this.events.on('set_next_input.Notebook', function (event, data) {
|
||||
var index = that.find_cell_index(data.cell);
|
||||
var new_cell = that.insert_cell_below('code',index);
|
||||
new_cell.set_text(data.text);
|
||||
that.dirty = true;
|
||||
});
|
||||
|
||||
$([Events]).on('set_dirty.Notebook', function (event, data) {
|
||||
this.events.on('set_dirty.Notebook', function (event, data) {
|
||||
that.dirty = data.value;
|
||||
});
|
||||
|
||||
$([Events]).on('trust_changed.Notebook', function (event, data) {
|
||||
this.events.on('trust_changed.Notebook', function (event, data) {
|
||||
that.trusted = data.value;
|
||||
});
|
||||
|
||||
$([Events]).on('select.Cell', function (event, data) {
|
||||
this.events.on('select.Cell', function (event, data) {
|
||||
var index = that.find_cell_index(data.cell);
|
||||
that.select(index);
|
||||
});
|
||||
|
||||
$([Events]).on('edit_mode.Cell', function (event, data) {
|
||||
this.events.on('edit_mode.Cell', function (event, data) {
|
||||
that.handle_edit_mode(data.cell);
|
||||
});
|
||||
|
||||
$([Events]).on('command_mode.Cell', function (event, data) {
|
||||
this.events.on('command_mode.Cell', function (event, data) {
|
||||
that.handle_command_mode(data.cell);
|
||||
});
|
||||
|
||||
$([Events]).on('status_autorestarting.Kernel', function () {
|
||||
this.events.on('status_autorestarting.Kernel', function () {
|
||||
Dialog.modal({
|
||||
title: "Kernel Restarting",
|
||||
body: "The kernel appears to have died. It will restart automatically.",
|
||||
@ -268,7 +270,7 @@ define([
|
||||
if (this.dirty == value) {
|
||||
return;
|
||||
}
|
||||
$([Events]).trigger('set_dirty.Notebook', {value: value});
|
||||
this.events.trigger('set_dirty.Notebook', {value: value});
|
||||
};
|
||||
|
||||
/**
|
||||
@ -531,11 +533,11 @@ define([
|
||||
var cell = this.get_cell(index);
|
||||
cell.select();
|
||||
if (cell.cell_type === 'heading') {
|
||||
$([Events]).trigger('selected_cell_type_changed.Notebook',
|
||||
this.events.trigger('selected_cell_type_changed.Notebook',
|
||||
{'cell_type':cell.cell_type,level:cell.level}
|
||||
);
|
||||
} else {
|
||||
$([Events]).trigger('selected_cell_type_changed.Notebook',
|
||||
this.events.trigger('selected_cell_type_changed.Notebook',
|
||||
{'cell_type':cell.cell_type}
|
||||
);
|
||||
}
|
||||
@ -597,7 +599,7 @@ define([
|
||||
if (this.mode !== 'command') {
|
||||
cell.command_mode();
|
||||
this.mode = 'command';
|
||||
$([Events]).trigger('command_mode.Notebook');
|
||||
this.events.trigger('command_mode.Notebook');
|
||||
this.keyboard_manager.command_mode();
|
||||
}
|
||||
};
|
||||
@ -627,7 +629,7 @@ define([
|
||||
if (cell && this.mode !== 'edit') {
|
||||
cell.edit_mode();
|
||||
this.mode = 'edit';
|
||||
$([Events]).trigger('edit_mode.Notebook');
|
||||
this.events.trigger('edit_mode.Notebook');
|
||||
this.keyboard_manager.edit_mode();
|
||||
}
|
||||
};
|
||||
@ -743,7 +745,7 @@ define([
|
||||
this.undelete_index = i;
|
||||
this.undelete_below = false;
|
||||
}
|
||||
$([Events]).trigger('delete.Cell', {'cell': cell, 'index': i});
|
||||
this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
|
||||
this.set_dirty(true);
|
||||
}
|
||||
return this;
|
||||
@ -823,7 +825,7 @@ define([
|
||||
|
||||
if(this._insert_element_at_index(cell.element,index)) {
|
||||
cell.render();
|
||||
$([Events]).trigger('create.Cell', {'cell': cell, 'index': index});
|
||||
this.events.trigger('create.Cell', {'cell': cell, 'index': index});
|
||||
cell.refresh();
|
||||
// We used to select the cell after we refresh it, but there
|
||||
// are now cases were this method is called where select is
|
||||
@ -1058,7 +1060,7 @@ define([
|
||||
}
|
||||
}
|
||||
this.set_dirty(true);
|
||||
$([Events]).trigger('selected_cell_type_changed.Notebook',
|
||||
this.events.trigger('selected_cell_type_changed.Notebook',
|
||||
{'cell_type':'heading',level:level}
|
||||
);
|
||||
}
|
||||
@ -1717,7 +1719,7 @@ define([
|
||||
}
|
||||
if (trusted != this.trusted) {
|
||||
this.trusted = trusted;
|
||||
$([Events]).trigger("trust_changed.Notebook", trusted);
|
||||
this.events.trigger("trust_changed.Notebook", trusted);
|
||||
}
|
||||
if (content.worksheets.length > 1) {
|
||||
Dialog.modal({
|
||||
@ -1762,7 +1764,7 @@ define([
|
||||
};
|
||||
if (trusted != this.trusted) {
|
||||
this.trusted = trusted;
|
||||
$([Events]).trigger("trust_changed.Notebook", trusted);
|
||||
this.events.trigger("trust_changed.Notebook", trusted);
|
||||
}
|
||||
return data;
|
||||
};
|
||||
@ -1787,10 +1789,10 @@ define([
|
||||
that.save_notebook();
|
||||
}
|
||||
}, interval);
|
||||
$([Events]).trigger("autosave_enabled.Notebook", interval);
|
||||
this.events.trigger("autosave_enabled.Notebook", interval);
|
||||
} else {
|
||||
this.autosave_timer = null;
|
||||
$([Events]).trigger("autosave_disabled.Notebook");
|
||||
this.events.trigger("autosave_disabled.Notebook");
|
||||
}
|
||||
};
|
||||
|
||||
@ -1825,7 +1827,7 @@ define([
|
||||
settings[key] = extra_settings[key];
|
||||
}
|
||||
}
|
||||
$([Events]).trigger('notebook_saving.Notebook');
|
||||
this.events.trigger('notebook_saving.Notebook');
|
||||
var url = utils.url_join_encode(
|
||||
this.base_url,
|
||||
'api/notebooks',
|
||||
@ -1846,7 +1848,7 @@ define([
|
||||
*/
|
||||
Notebook.prototype.save_notebook_success = function (start, data, status, xhr) {
|
||||
this.set_dirty(false);
|
||||
$([Events]).trigger('notebook_saved.Notebook');
|
||||
this.events.trigger('notebook_saved.Notebook');
|
||||
this._update_autosave_interval(start);
|
||||
if (this._checkpoint_after_save) {
|
||||
this.create_checkpoint();
|
||||
@ -1883,7 +1885,7 @@ define([
|
||||
* @param {String} error HTTP error message
|
||||
*/
|
||||
Notebook.prototype.save_notebook_error = function (xhr, status, error) {
|
||||
$([Events]).trigger('notebook_save_failed.Notebook', [xhr, status, error]);
|
||||
this.events.trigger('notebook_save_failed.Notebook', [xhr, status, error]);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -1924,7 +1926,7 @@ define([
|
||||
cell.output_area.trusted = true;
|
||||
}
|
||||
}
|
||||
$([Events]).on('notebook_saved.Notebook', function () {
|
||||
this.events.on('notebook_saved.Notebook', function () {
|
||||
window.location.reload();
|
||||
});
|
||||
nb.save_notebook();
|
||||
@ -2010,7 +2012,7 @@ define([
|
||||
success : $.proxy(that.rename_success, this),
|
||||
error : $.proxy(that.rename_error, this)
|
||||
};
|
||||
$([Events]).trigger('rename_notebook.Notebook', data);
|
||||
this.events.trigger('rename_notebook.Notebook', data);
|
||||
var url = utils.url_join_encode(
|
||||
this.base_url,
|
||||
'api/notebooks',
|
||||
@ -2043,7 +2045,7 @@ define([
|
||||
var name = this.notebook_name = json.name;
|
||||
var path = json.path;
|
||||
this.session.rename_notebook(name, path);
|
||||
$([Events]).trigger('notebook_renamed.Notebook', json);
|
||||
this.events.trigger('notebook_renamed.Notebook', json);
|
||||
};
|
||||
|
||||
Notebook.prototype.rename_error = function (xhr, status, error) {
|
||||
@ -2052,7 +2054,7 @@ define([
|
||||
$("<p/>").addClass("rename-message")
|
||||
.text('This notebook name already exists.')
|
||||
);
|
||||
$([Events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
|
||||
this.events.trigger('notebook_rename_failed.Notebook', [xhr, status, error]);
|
||||
Dialog.modal({
|
||||
title: "Notebook Rename Error!",
|
||||
body: dialog,
|
||||
@ -2096,7 +2098,7 @@ define([
|
||||
success : $.proxy(this.load_notebook_success,this),
|
||||
error : $.proxy(this.load_notebook_error,this),
|
||||
};
|
||||
$([Events]).trigger('notebook_loading.Notebook');
|
||||
this.events.trigger('notebook_loading.Notebook');
|
||||
var url = utils.url_join_encode(
|
||||
this.base_url,
|
||||
'api/notebooks',
|
||||
@ -2181,7 +2183,7 @@ define([
|
||||
|
||||
// now that we're fully loaded, it is safe to restore save functionality
|
||||
delete(this.save_notebook);
|
||||
$([Events]).trigger('notebook_loaded.Notebook');
|
||||
this.events.trigger('notebook_loaded.Notebook');
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2193,7 +2195,7 @@ define([
|
||||
* @param {String} error HTTP error message
|
||||
*/
|
||||
Notebook.prototype.load_notebook_error = function (xhr, status, error) {
|
||||
$([Events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]);
|
||||
this.events.trigger('notebook_load_failed.Notebook', [xhr, status, error]);
|
||||
var msg;
|
||||
if (xhr.status === 400) {
|
||||
msg = error;
|
||||
@ -2281,7 +2283,7 @@ define([
|
||||
} else {
|
||||
this.last_checkpoint = null;
|
||||
}
|
||||
$([Events]).trigger('checkpoints_listed.Notebook', [data]);
|
||||
this.events.trigger('checkpoints_listed.Notebook', [data]);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2293,7 +2295,7 @@ define([
|
||||
* @param {String} error_msg HTTP error message
|
||||
*/
|
||||
Notebook.prototype.list_checkpoints_error = function (xhr, status, error_msg) {
|
||||
$([Events]).trigger('list_checkpoints_failed.Notebook');
|
||||
this.events.trigger('list_checkpoints_failed.Notebook');
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2327,7 +2329,7 @@ define([
|
||||
Notebook.prototype.create_checkpoint_success = function (data, status, xhr) {
|
||||
data = $.parseJSON(data);
|
||||
this.add_checkpoint(data);
|
||||
$([Events]).trigger('checkpoint_created.Notebook', data);
|
||||
this.events.trigger('checkpoint_created.Notebook', data);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2339,7 +2341,7 @@ define([
|
||||
* @param {String} error_msg HTTP error message
|
||||
*/
|
||||
Notebook.prototype.create_checkpoint_error = function (xhr, status, error_msg) {
|
||||
$([Events]).trigger('checkpoint_failed.Notebook');
|
||||
this.events.trigger('checkpoint_failed.Notebook');
|
||||
};
|
||||
|
||||
Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
|
||||
@ -2388,7 +2390,7 @@ define([
|
||||
* @param {String} checkpoint ID
|
||||
*/
|
||||
Notebook.prototype.restore_checkpoint = function (checkpoint) {
|
||||
$([Events]).trigger('notebook_restoring.Notebook', checkpoint);
|
||||
this.events.trigger('notebook_restoring.Notebook', checkpoint);
|
||||
var url = utils.url_join_encode(
|
||||
this.base_url,
|
||||
'api/notebooks',
|
||||
@ -2413,7 +2415,7 @@ define([
|
||||
* @param {jqXHR} xhr jQuery Ajax object
|
||||
*/
|
||||
Notebook.prototype.restore_checkpoint_success = function (data, status, xhr) {
|
||||
$([Events]).trigger('checkpoint_restored.Notebook');
|
||||
this.events.trigger('checkpoint_restored.Notebook');
|
||||
this.load_notebook(this.notebook_name, this.notebook_path);
|
||||
};
|
||||
|
||||
@ -2426,7 +2428,7 @@ define([
|
||||
* @param {String} error_msg HTTP error message
|
||||
*/
|
||||
Notebook.prototype.restore_checkpoint_error = function (xhr, status, error_msg) {
|
||||
$([Events]).trigger('checkpoint_restore_failed.Notebook');
|
||||
this.events.trigger('checkpoint_restore_failed.Notebook');
|
||||
};
|
||||
|
||||
/**
|
||||
@ -2436,7 +2438,7 @@ define([
|
||||
* @param {String} checkpoint ID
|
||||
*/
|
||||
Notebook.prototype.delete_checkpoint = function (checkpoint) {
|
||||
$([Events]).trigger('notebook_restoring.Notebook', checkpoint);
|
||||
this.events.trigger('notebook_restoring.Notebook', checkpoint);
|
||||
var url = utils.url_join_encode(
|
||||
this.base_url,
|
||||
'api/notebooks',
|
||||
@ -2461,7 +2463,7 @@ define([
|
||||
* @param {jqXHR} xhr jQuery Ajax object
|
||||
*/
|
||||
Notebook.prototype.delete_checkpoint_success = function (data, status, xhr) {
|
||||
$([Events]).trigger('checkpoint_deleted.Notebook', data);
|
||||
this.events.trigger('checkpoint_deleted.Notebook', data);
|
||||
this.load_notebook(this.notebook_name, this.notebook_path);
|
||||
};
|
||||
|
||||
@ -2474,7 +2476,7 @@ define([
|
||||
* @param {String} error_msg HTTP error message
|
||||
*/
|
||||
Notebook.prototype.delete_checkpoint_error = function (xhr, status, error_msg) {
|
||||
$([Events]).trigger('checkpoint_delete_failed.Notebook');
|
||||
this.events.trigger('checkpoint_delete_failed.Notebook');
|
||||
};
|
||||
|
||||
|
||||
|
@ -5,6 +5,7 @@ var ipython = ipython || {};
|
||||
require([
|
||||
'base/js/namespace',
|
||||
'components/jquery/jquery.min',
|
||||
'base/js/events',
|
||||
'base/js/page',
|
||||
'base/js/utils',
|
||||
'tree/js/notebooklist',
|
||||
@ -17,6 +18,7 @@ require([
|
||||
], function(
|
||||
IPython,
|
||||
$,
|
||||
Events,
|
||||
Page,
|
||||
Utils,
|
||||
NotebookList,
|
||||
@ -31,7 +33,8 @@ require([
|
||||
base_url: Utils.get_body_data("baseUrl"),
|
||||
notebook_path: Utils.get_body_data("notebookPath"),
|
||||
};
|
||||
session_list = new SesssionList(opts);
|
||||
events = new Events();
|
||||
session_list = new SesssionList(opts, events);
|
||||
notebook_list = new NotebookList('#notebook_list', opts, undefined, session_list);
|
||||
cluster_list = new ClusterList('#cluster_list', opts);
|
||||
kernel_list = new KernelList('#running_list', opts, session_list);
|
||||
@ -107,4 +110,5 @@ require([
|
||||
ipython.session_list = session_list;
|
||||
ipython.kernel_list = kernel_list;
|
||||
ipython.login_widget = login_widget;
|
||||
ipython.events = events;
|
||||
});
|
||||
|
@ -5,9 +5,8 @@ define([
|
||||
'base/js/namespace',
|
||||
'components/jquery/jquery.min',
|
||||
'base/js/utils',
|
||||
'base/js/events',
|
||||
'base/js/dialog',
|
||||
], function(IPython, $, Utils, Events, Dialog) {
|
||||
], function(IPython, $, Utils, Dialog) {
|
||||
"use strict";
|
||||
|
||||
var NotebookList = function (selector, options, element_name, session_list) {
|
||||
@ -25,8 +24,10 @@ define([
|
||||
this.sessions = {};
|
||||
this.base_url = options.base_url || Utils.get_body_data("baseUrl");
|
||||
this.notebook_path = options.notebook_path || Utils.get_body_data("notebookPath");
|
||||
$([Events]).on('sessions_loaded.Dashboard',
|
||||
function(e, d) { that.sessions_loaded(d); });
|
||||
if (this.session_list && this.session_list.events) {
|
||||
this.session_list.events.on('sessions_loaded.Dashboard',
|
||||
function(e, d) { that.sessions_loaded(d); });
|
||||
}
|
||||
};
|
||||
|
||||
NotebookList.prototype.style = function () {
|
||||
|
@ -5,11 +5,11 @@ define([
|
||||
'base/js/namespace',
|
||||
'components/jquery/jquery.min',
|
||||
'base/js/utils',
|
||||
'base/js/events',
|
||||
], function(IPython, $, Utils, Events) {
|
||||
], function(IPython, $, Utils) {
|
||||
"use strict";
|
||||
|
||||
var SesssionList = function (options) {
|
||||
var SesssionList = function (options, events) {
|
||||
this.events = events;
|
||||
this.sessions = {};
|
||||
this.base_url = options.base_url || Utils.get_body_data("baseUrl");
|
||||
};
|
||||
@ -39,7 +39,7 @@ define([
|
||||
);
|
||||
this.sessions[nb_path] = data[i].id;
|
||||
}
|
||||
Events.trigger('sessions_loaded.Dashboard', this.sessions);
|
||||
this.events.trigger('sessions_loaded.Dashboard', this.sessions);
|
||||
};
|
||||
|
||||
// Backwards compatability.
|
||||
|
Loading…
x
Reference in New Issue
Block a user