##// END OF EJS Templates
Clean up session class
Clean up session class

File last commit:

r18198:e5a457f6
r18198:e5a457f6
Show More
session.js
186 lines | 5.2 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Almost done!...
r17198 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
Zachary Sailer
manual rebase static/services (add session.js)
r12987
Jonathan Frederic
Almost done!...
r17198 define([
'base/js/namespace',
Jonathan Frederic
MWE,...
r17200 'jquery',
Jonathan Frederic
Almost done!...
r17198 'base/js/utils',
'services/kernels/js/kernel',
Jonathan Frederic
Fix imports of "modules",...
r17202 ], function(IPython, $, utils, kernel) {
MinRK
review pass on multidir js
r13103 "use strict";
Jonathan Frederic
Almost done!...
r17198
Jessica B. Hamrick
Clean up session class
r18198 var Session = function (options) {
Zachary Sailer
Fixed session js ajax request....
r13060 this.id = null;
Jessica B. Hamrick
Clean up session class
r18198 this.notebook = {
name: options.notebook_name,
path: options.notebook_path
};
this.kernel = {
name: options.kernel_name
};
Jonathan Frederic
Some JS test fixes
r17212 this.base_url = options.base_url;
MinRK
pass ws_url to kernel constructor...
r17308 this.ws_url = options.ws_url;
Jessica B. Hamrick
Clean up session class
r18198 this.sessions_url = utils.url_join_encode(this.base_url, 'api/sessions');
this.notebook_obj = options.notebook;
this.events = options.events;
Zachary Sailer
manual rebase static/services (add session.js)
r12987 };
Jessica B. Hamrick
Clean up session class
r18198
/**
* GET /api/sessions
*/
Session.prototype.list = function (success, error) {
$.ajax(this.sessions_url, {
processData: false,
cache: false,
type: "GET",
dataType: "json",
success: success,
error: this._on_error(error)
});
};
/**
* POST /api/sessions
*/
MinRK
avoid race condition when deleting/starting sessions...
r17649 Session.prototype.start = function (success, error) {
MinRK
review pass on multidir js
r13103 var that = this;
Jessica B. Hamrick
Clean up session class
r18198 var on_success = function (data, status, xhr) {
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_obj, that.kernel_name);
that.kernel._kernel_started(data.kernel);
if (success) {
success(data, status, xhr);
MinRK
review pass on multidir js
r13103 }
};
Jessica B. Hamrick
Clean up session class
r18198 var on_error = function (xhr, status, err) {
that.events.trigger('status_dead.Kernel');
if (error) {
error(xhr, status, err);
MinRK
improve indicators and handling of dead kernels and broken websocket connections...
r17676 }
Zachary Sailer
changes after session manager code review
r13057 };
Jessica B. Hamrick
Clean up session class
r18198
$.ajax(this.sessions_url, {
processData: false,
cache: false,
type: "POST",
data: JSON.stringify(this._get_model()),
dataType: "json",
success: this._on_success(on_success),
error: this._on_error(on_error)
});
Zachary Sailer
manual rebase static/services (add session.js)
r12987 };
Jessica B. Hamrick
Clean up session class
r18198
/**
* GET /api/sessions/[:session_id]
*/
Session.prototype.get_info = function (success, error) {
var url = utils.url_join_encode(this.sessions_url, this.id);
$.ajax(url, {
processData: false,
cache: false,
type: "GET",
dataType: "json",
success: this._on_success(success),
error: this._on_error(error)
});
MinRK
review pass on multidir js
r13103 };
Jessica B. Hamrick
Clean up session class
r18198
/**
* PATCH /api/sessions/[:session_id]
*/
Session.prototype.change = function (notebook_name, notebook_path, kernel_name, success, error) {
this.notebook.name = notebook_name;
this.notebook.path = notebook_path;
this.kernel.name = kernel_name;
var url = utils.url_join_encode(this.sessions_url, this.id);
$.ajax(url, {
processData: false,
cache: false,
type: "PATCH",
data: JSON.stringify(this._get_model()),
Zachary Sailer
Add 'patch' to session & notebook, rename working
r12997 dataType : "json",
Jessica B. Hamrick
Clean up session class
r18198 success: this._on_success(success),
error: this._on_error(error)
});
};
Session.prototype.rename_notebook = function (name, path, success, error) {
this.change(name, path, this.kernel.name, success, error);
};
/**
* DELETE /api/sessions/[:session_id]
*/
Session.prototype.kill = function (success, error) {
MinRK
improve indicators and handling of dead kernels and broken websocket connections...
r17676 if (this.kernel) {
this.kernel.running = false;
this.kernel.stop_channels();
}
Jessica B. Hamrick
Clean up session class
r18198
var url = utils.url_join_encode(this.sessions_url, this.id);
$.ajax(url, {
processData: false,
cache: false,
type: "DELETE",
dataType: "json",
success: this._on_success(success),
error: this._on_error(error)
});
Zachary Sailer
Add 'patch' to session & notebook, rename working
r12997 };
Jessica B. Hamrick
Clean up session class
r18198 Session.prototype._get_model = function () {
return {
notebook: this.notebook,
kernel: this.kernel
};
Zachary Sailer
manual rebase static/services (add session.js)
r12987 };
MinRK
improve indicators and handling of dead kernels and broken websocket connections...
r17676
Jessica B. Hamrick
Clean up session class
r18198 Session.prototype._update_model = function (data) {
this.id = data.id;
if (data.notebook) {
this.notebook.name = data.notebook.name;
this.notebook.path = data.notebook.path;
}
if (data.kernel) {
this.kernel.name = data.kernel.name;
}
Zachary Sailer
manual rebase static/services (add session.js)
r12987 };
Jessica B. Hamrick
Clean up session class
r18198
Session.prototype._on_success = function (success) {
var that = this;
return function (data, status, xhr) {
that._update_model(data);
if (success) {
success(data, status, xhr);
}
};
Zachary Sailer
fix kill_and_exit button in notebook
r12995 };
Jessica B. Hamrick
Clean up session class
r18198 Session.prototype._on_error = function (error) {
return function (xhr, status, err) {
utils.log_ajax_error(xhr, status, err);
if (error) {
error(xhr, status, err);
}
};
Zachary Sailer
fix kill_and_exit button in notebook
r12995 };
Jessica B. Hamrick
Clean up session class
r18198
MinRK
avoid race condition when deleting/starting sessions...
r17649 var SessionAlreadyStarting = function (message) {
this.name = "SessionAlreadyStarting";
this.message = (message || "");
};
SessionAlreadyStarting.prototype = Error.prototype;
Jonathan Frederic
Almost done!...
r17198 // For backwards compatability.
Zachary Sailer
manual rebase static/services (add session.js)
r12987 IPython.Session = Session;
MinRK
avoid race condition when deleting/starting sessions...
r17649 return {
Session: Session,
Jessica B. Hamrick
Clean up session class
r18198 SessionAlreadyStarting: SessionAlreadyStarting
MinRK
avoid race condition when deleting/starting sessions...
r17649 };
Jonathan Frederic
Almost done!...
r17198 });