diff --git a/IPython/html/static/notebook/js/notificationarea.js b/IPython/html/static/notebook/js/notificationarea.js index cc43d23d3..e3b1e9e96 100644 --- a/IPython/html/static/notebook/js/notificationarea.js +++ b/IPython/html/static/notebook/js/notificationarea.js @@ -108,12 +108,12 @@ define([ var $modal_ind_icon = $("#modal_indicator_icon"); // Command/Edit mode - this.events.on('edit_mode.Notebook',function () { + this.events.on('edit_mode.Notebook', function () { that.save_widget.update_document_title(); $modal_ind_icon.attr('class','edit_mode_icon').attr('title','Edit Mode'); }); - this.events.on('command_mode.Notebook',function () { + this.events.on('command_mode.Notebook', function () { that.save_widget.update_document_title(); $modal_ind_icon.attr('class','command_mode_icon').attr('title','Command Mode'); }); @@ -123,9 +123,9 @@ define([ // Kernel events - // this can be either kernel_started.Kernel or kernel_started.Session - this.events.on('kernel_started.Kernel kernel_started.Session', function () { - knw.info("Kernel Started", 500); + // this can be either kernel_created.Kernel or kernel_created.Session + this.events.on('kernel_created.Kernel kernel_created.Session', function () { + knw.info("Kernel Created", 500); }); this.events.on('status_reconnecting.Kernel', function () { @@ -136,7 +136,7 @@ define([ knw.info("Connected", 500); }); - this.events.on('status_restarting.Kernel status_autorestarting.Kernel',function () { + this.events.on('status_restarting.Kernel', function () { that.save_widget.update_document_title(); knw.set_message("Restarting kernel", 2000); }); @@ -153,9 +153,13 @@ define([ } } }); + + that.save_widget.update_document_title(); + knw.danger("Dead kernel"); + $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead'); }); - this.events.on('status_interrupting.Kernel',function () { + this.events.on('status_interrupting.Kernel', function () { knw.set_message("Interrupting kernel", 2000); }); @@ -261,12 +265,24 @@ define([ knw.danger(short, undefined, showMsg); }); - this.events.on('status_idle.Kernel',function () { + this.events.on('status_starting.Kernel', function () { + window.document.title='(Starting) '+window.document.title; + $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy'); + knw.set_message("Kernel starting, please wait..."); + }); + + this.events.on('status_ready.Kernel', function () { + that.save_widget.update_document_title(); + $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle'); + knw.info("Kernel ready", 500); + }); + + this.events.on('status_idle.Kernel', function () { that.save_widget.update_document_title(); $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle'); }); - this.events.on('status_busy.Kernel',function () { + this.events.on('status_busy.Kernel', function () { window.document.title='(Busy) '+window.document.title; $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy'); }); diff --git a/IPython/html/static/services/kernels/js/kernel.js b/IPython/html/static/services/kernels/js/kernel.js index 7ce4f3331..7aaadf043 100644 --- a/IPython/html/static/services/kernels/js/kernel.js +++ b/IPython/html/static/services/kernels/js/kernel.js @@ -95,7 +95,7 @@ define([ console.log('Kernel: ' + evt.type + ' (' + that.id + ')'); }; - this.events.on('kernel_started.Kernel', record_status); + this.events.on('kernel_created.Kernel', record_status); this.events.on('status_reconnecting.Kernel', record_status); this.events.on('status_connected.Kernel', record_status); this.events.on('status_starting.Kernel', record_status); @@ -107,6 +107,7 @@ define([ // be uncommented for debugging purposes //this.events.on('status_idle.Kernel', record_status); //this.events.on('status_busy.Kernel', record_status); + this.events.on('status_ready.Kernel', record_status); this.events.on('status_killed.Kernel', record_status); this.events.on('kernel_dead.Kernel', record_status); }; @@ -171,8 +172,8 @@ define([ var that = this; var on_success = function (data, status, xhr) { - that.events.trigger('kernel_started.Kernel', {kernel: that}); - that._kernel_started(data); + that.events.trigger('kernel_created.Kernel', {kernel: that}); + that._kernel_created(data); if (success) { success(data, status, xhr); } @@ -251,11 +252,8 @@ define([ var that = this; var on_success = function (data, status, xhr) { - that.events.trigger('status_busy.Kernel', {kernel: this}); // get kernel info so we know what state the kernel is in - that.kernel_info(function () { - that.events.trigger('status_idle.Kernel', {kernel: this}); - }); + that.kernel_info(); if (success) { success(data, status, xhr); } @@ -287,8 +285,8 @@ define([ var that = this; var on_success = function (data, status, xhr) { - that.events.trigger('kernel_started.Kernel', {kernel: that}); - that._kernel_started(data); + that.events.trigger('kernel_created.Kernel', {kernel: that}); + that._kernel_created(data); if (success) { success(data, status, xhr); } @@ -367,13 +365,12 @@ define([ * Perform necessary tasks once the kernel has been started, * including actually connecting to the kernel. * - * @function _kernel_started + * @function _kernel_created * @param {Object} data - information about the kernel including id */ - Kernel.prototype._kernel_started = function (data) { + Kernel.prototype._kernel_created = function (data) { this.id = data.id; this.kernel_url = utils.url_join_encode(this.kernel_service_url, this.id); - this.start_channels(); }; @@ -386,11 +383,11 @@ define([ */ Kernel.prototype._kernel_connected = function () { this.events.trigger('status_connected.Kernel', {kernel: this}); - this.events.trigger('status_busy.Kernel', {kernel: this}); + this.events.trigger('status_starting.Kernel', {kernel: this}); // get kernel info so we know what state the kernel is in var that = this; this.kernel_info(function () { - that.events.trigger('status_idle.Kernel', {kernel: this}); + that.events.trigger('status_ready.Kernel', {kernel: this}); }); }; @@ -915,6 +912,10 @@ define([ } else if (execution_state === 'starting') { this.events.trigger('status_starting.Kernel', {kernel: this}); + var that = this; + this.kernel_info(function () { + that.events.trigger('status_ready.Kernel', {kernel: this}); + }); } else if (execution_state === 'restarting') { // autorestarting is distinct from restarting, diff --git a/IPython/html/static/services/sessions/js/session.js b/IPython/html/static/services/sessions/js/session.js index 132207d8c..cef8cfb80 100644 --- a/IPython/html/static/services/sessions/js/session.js +++ b/IPython/html/static/services/sessions/js/session.js @@ -54,7 +54,7 @@ define([ console.log('Session: ' + evt.type + ' (' + that.id + ')'); }; - this.events.on('kernel_started.Session', record_status); + this.events.on('kernel_created.Session', record_status); this.events.on('kernel_dead.Session', record_status); this.events.on('status_killed.Session', record_status); }; @@ -98,8 +98,8 @@ define([ var kernel_service_url = utils.url_path_join(that.base_url, "api/kernels"); that.kernel = new kernel.Kernel(kernel_service_url, that.ws_url, that.notebook, that.kernel_model.name); } - that.events.trigger('kernel_started.Session', {session: that, kernel: that.kernel}); - that.kernel._kernel_started(data.kernel); + that.events.trigger('kernel_created.Session', {session: that, kernel: that.kernel}); + that.kernel._kernel_created(data.kernel); if (success) { success(data, status, xhr); } diff --git a/IPython/html/tests/services/kernel.js b/IPython/html/tests/services/kernel.js index f11296a4a..b5916f94a 100644 --- a/IPython/html/tests/services/kernel.js +++ b/IPython/html/tests/services/kernel.js @@ -195,15 +195,10 @@ casper.notebook_test(function () { 'kill/start', [ 'status_killed.Kernel', - 'kernel_started.Kernel', + 'kernel_created.Kernel', 'status_connected.Kernel', - // technically we should get this message, but sometimes the kernel - // finishes starting before we connect to it so then we don't receive - // this message - // - //'status_starting.Kernel', - 'status_busy.Kernel', - 'status_idle.Kernel' + 'status_starting.Kernel', + 'status_ready.Kernel' ], function () { this.thenEvaluate(function () { @@ -242,15 +237,10 @@ casper.notebook_test(function () { 'restart', [ 'status_restarting.Kernel', - 'kernel_started.Kernel', + 'kernel_created.Kernel', 'status_connected.Kernel', - // technically we should get this message, but sometimes the kernel - // finishes starting before we connect to it so then we don't receive - // this message - // - //'status_starting.Kernel', - 'status_busy.Kernel', - 'status_idle.Kernel' + 'status_starting.Kernel', + 'status_ready.Kernel' ], function () { this.thenEvaluate(function () { diff --git a/IPython/html/tests/services/session.js b/IPython/html/tests/services/session.js index 269c60689..24bcfd633 100644 --- a/IPython/html/tests/services/session.js +++ b/IPython/html/tests/services/session.js @@ -102,15 +102,10 @@ casper.notebook_test(function () { this.event_test( 'start_session', [ - 'kernel_started.Session', + 'kernel_created.Session', 'status_connected.Kernel', - // technically we should get this message, but sometimes the kernel - // finishes starting before we connect to it so then we don't receive - // this message - // - //'status_starting.Kernel', - 'status_busy.Kernel', - 'status_idle.Kernel' + 'status_starting.Kernel', + 'status_ready.Kernel' ], function () { this.thenEvaluate(function () { @@ -137,15 +132,10 @@ casper.notebook_test(function () { 'restart_session', [ 'status_killed.Session', - 'kernel_started.Session', + 'kernel_created.Session', 'status_connected.Kernel', - // technically we should get this message, but sometimes the kernel - // finishes starting before we connect to it so then we don't receive - // this message - // - //'status_starting.Kernel', - 'status_busy.Kernel', - 'status_idle.Kernel' + 'status_starting.Kernel', + 'status_ready.Kernel' ], function () { this.thenEvaluate(function () {