Fixed events

This commit is contained in:
Jonathan Frederic 2014-06-12 16:23:24 -07:00
parent 8d511b2ff5
commit e6b7cc9ff9
6 changed files with 63 additions and 55 deletions

View File

@ -14,7 +14,6 @@ define(['base/js/namespace'], function(IPython) {
// Backwards compatability.
IPython.Events = Events;
// TODO: Fix events.
return Events;
});

View File

@ -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;
});

View File

@ -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');
};

View File

@ -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;
});

View File

@ -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 () {

View File

@ -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.