diff --git a/IPython/html/static/tree/js/kernellist.js b/IPython/html/static/tree/js/kernellist.js
index 838d804..6cbdfdc 100644
--- a/IPython/html/static/tree/js/kernellist.js
+++ b/IPython/html/static/tree/js/kernellist.js
@@ -51,6 +51,23 @@ define([
}
$('#running_list_header').toggle($.isEmptyObject(d));
};
+
+ KernelList.prototype.add_link = function (model, item) {
+ notebooklist.NotebookList.prototype.add_link.apply(this, [model, item])
+
+ var running_indicator = item.find(".item_buttons")
+ .text('');
+
+ var that = this;
+ var shutdown_button = $('')
+ .addClass('btn btn-warning btn-xs')
+ .text('Shutdown')
+ .click(function() {
+ var path = $(this).parent().parent().parent().data('path');
+ that.shutdown_notebook(path);
+ })
+ .appendTo(running_indicator);
+ };
// Backwards compatability.
IPython.KernelList = KernelList;
diff --git a/IPython/html/static/tree/js/notebooklist.js b/IPython/html/static/tree/js/notebooklist.js
index 172806e..93d2e1f 100644
--- a/IPython/html/static/tree/js/notebooklist.js
+++ b/IPython/html/static/tree/js/notebooklist.js
@@ -431,6 +431,15 @@ define([
NotebookList.prototype.shutdown_selected = function() {
var that = this;
+ this.selected.forEach(function(item) {
+ if (item.type == 'notebook') {
+ that.shutdown_notebook(item.path);
+ }
+ });
+ };
+
+ NotebookList.prototype.shutdown_notebook = function(path) {
+ var that = this;
var settings = {
processData : false,
cache : false,
@@ -442,20 +451,16 @@ define([
error : utils.log_ajax_error,
};
- this.selected.forEach(function(item) {
- if (item.type == 'notebook') {
- var session = that.sessions[item.path];
- if (session) {
- var url = utils.url_join_encode(
- that.base_url,
- 'api/sessions',
- session
- );
- $.ajax(url, settings);
- }
- }
- });
- };
+ var session = this.sessions[path];
+ if (session) {
+ var url = utils.url_join_encode(
+ this.base_url,
+ 'api/sessions',
+ session
+ );
+ $.ajax(url, settings);
+ }
+ }
NotebookList.prototype.rename_selected = function() {
if (this.selected.length != 1) return;