session.js
120 lines
| 3.4 KiB
| application/javascript
|
JavascriptLexer
Jonathan Frederic
|
r17198 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
Zachary Sailer
|
r12987 | |||
Jonathan Frederic
|
r17198 | define([ | ||
'base/js/namespace', | ||||
Jonathan Frederic
|
r17200 | 'jquery', | ||
Jonathan Frederic
|
r17198 | 'base/js/utils', | ||
'services/kernels/js/kernel', | ||||
Jonathan Frederic
|
r17202 | ], function(IPython, $, utils, kernel) { | ||
MinRK
|
r13103 | "use strict"; | ||
Jonathan Frederic
|
r17198 | |||
jon
|
r17210 | var Session = function(options){ | ||
Zachary Sailer
|
r12987 | this.kernel = null; | ||
Zachary Sailer
|
r13060 | this.id = null; | ||
jon
|
r17210 | this.notebook = options.notebook; | ||
Jonathan Frederic
|
r17212 | this.name = options.notebook_name; | ||
this.path = options.notebook_path; | ||||
Thomas Kluyver
|
r17223 | this.kernel_name = options.kernel_name; | ||
Jonathan Frederic
|
r17212 | this.base_url = options.base_url; | ||
Zachary Sailer
|
r12987 | }; | ||
MinRK
|
r13133 | Session.prototype.start = function(callback) { | ||
MinRK
|
r13103 | var that = this; | ||
var model = { | ||||
notebook : { | ||||
name : this.name, | ||||
path : this.path | ||||
Thomas Kluyver
|
r17223 | }, | ||
kernel : { | ||||
name : this.kernel_name | ||||
MinRK
|
r13103 | } | ||
}; | ||||
Zachary Sailer
|
r13057 | var settings = { | ||
processData : false, | ||||
cache : false, | ||||
type : "POST", | ||||
MinRK
|
r13103 | data: JSON.stringify(model), | ||
Zachary Sailer
|
r13057 | dataType : "json", | ||
MinRK
|
r13133 | success : function (data, status, xhr) { | ||
that._handle_start_success(data); | ||||
if (callback) { | ||||
callback(data, status, xhr); | ||||
} | ||||
}, | ||||
MinRK
|
r16445 | error : utils.log_ajax_error, | ||
Zachary Sailer
|
r13057 | }; | ||
MinRK
|
r15238 | var url = utils.url_join_encode(this.base_url, 'api/sessions'); | ||
Zachary Sailer
|
r13057 | $.ajax(url, settings); | ||
Zachary Sailer
|
r12987 | }; | ||
MinRK
|
r13133 | Session.prototype.rename_notebook = function (name, path) { | ||
Zachary Sailer
|
r13060 | this.name = name; | ||
this.path = path; | ||||
MinRK
|
r13103 | var model = { | ||
notebook : { | ||||
name : this.name, | ||||
path : this.path | ||||
} | ||||
}; | ||||
Zachary Sailer
|
r12997 | var settings = { | ||
processData : false, | ||||
cache : false, | ||||
type : "PATCH", | ||||
MinRK
|
r13103 | data: JSON.stringify(model), | ||
Zachary Sailer
|
r12997 | dataType : "json", | ||
MinRK
|
r16445 | error : utils.log_ajax_error, | ||
Zachary Sailer
|
r12997 | }; | ||
MinRK
|
r15238 | var url = utils.url_join_encode(this.base_url, 'api/sessions', this.id); | ||
Zachary Sailer
|
r12997 | $.ajax(url, settings); | ||
MinRK
|
r13103 | }; | ||
Zachary Sailer
|
r12997 | |||
MinRK
|
r13133 | Session.prototype.delete = function() { | ||
Zachary Sailer
|
r12997 | var settings = { | ||
processData : false, | ||||
cache : false, | ||||
type : "DELETE", | ||||
dataType : "json", | ||||
MinRK
|
r16445 | error : utils.log_ajax_error, | ||
Zachary Sailer
|
r12997 | }; | ||
Paul Ivanov
|
r13308 | this.kernel.running = false; | ||
MinRK
|
r15238 | var url = utils.url_join_encode(this.base_url, 'api/sessions', this.id); | ||
Zachary Sailer
|
r12997 | $.ajax(url, settings); | ||
}; | ||||
Zachary Sailer
|
r12987 | // Kernel related things | ||
/** | ||||
MinRK
|
r13133 | * Create the Kernel object associated with this Session. | ||
Zachary Sailer
|
r12987 | * | ||
MinRK
|
r13133 | * @method _handle_start_success | ||
Zachary Sailer
|
r12987 | */ | ||
MinRK
|
r13133 | Session.prototype._handle_start_success = function (data, status, xhr) { | ||
this.id = data.id; | ||||
MinRK
|
r15310 | var kernel_service_url = utils.url_path_join(this.base_url, "api/kernels"); | ||
Thomas Kluyver
|
r17223 | this.kernel = new kernel.Kernel(kernel_service_url, this.notebook, this.kernel_name); | ||
MinRK
|
r13133 | this.kernel._kernel_started(data.kernel); | ||
Zachary Sailer
|
r12987 | }; | ||
/** | ||||
* Prompt the user to restart the IPython kernel. | ||||
* | ||||
* @method restart_kernel | ||||
*/ | ||||
Session.prototype.restart_kernel = function () { | ||||
Zachary Sailer
|
r12994 | this.kernel.restart(); | ||
Zachary Sailer
|
r12987 | }; | ||
Zachary Sailer
|
r12994 | Session.prototype.interrupt_kernel = function() { | ||
this.kernel.interrupt(); | ||||
Zachary Sailer
|
r12995 | }; | ||
Session.prototype.kill_kernel = function() { | ||||
MinRK
|
r13103 | this.kernel.kill(); | ||
Zachary Sailer
|
r12995 | }; | ||
Zachary Sailer
|
r12994 | |||
Jonathan Frederic
|
r17198 | // For backwards compatability. | ||
Zachary Sailer
|
r12987 | IPython.Session = Session; | ||
Jonathan Frederic
|
r17201 | return {'Session': Session}; | ||
Jonathan Frederic
|
r17198 | }); | ||