##// END OF EJS Templates
generate `ipython console` config file...
generate `ipython console` config file when populating a profile

File last commit:

r18817:9aff5767 merge
r18845:f3cedfd8
Show More
contents.js
258 lines | 8.4 KiB | application/javascript | JavascriptLexer
jhemmelg
Initial interface for javascript contentmanagers...
r18618 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
define([
'base/js/namespace',
'jquery',
KesterTong
Style and bug fixes
r18620 'base/js/utils',
Thomas Kluyver
JS Contents API doesn't need dialog module
r18717 ], function(IPython, $, utils) {
Jeff Hemmelgarn
Move contentmanager to contents
r18643 var Contents = function(options) {
jhemmelg
Initial interface for javascript contentmanagers...
r18618 // Constructor
//
Jeff Hemmelgarn
Move contentmanager to contents
r18643 // A contents handles passing file operations
jhemmelg
Initial interface for javascript contentmanagers...
r18618 // to the back-end. This includes checkpointing
// with the normal file operations.
//
// Parameters:
KesterTong
Use IPython style constructor
r18621 // options: dictionary
// Dictionary of keyword arguments.
// base_url: string
this.base_url = options.base_url;
KesterTong
Style and bug fixes
r18620 };
Thomas Kluyver
Add Contents.api_url convenience function
r18650
Kester Tong
Modifies Contents API to return Error objects...
r18661 /** Error type */
Contents.DIRECTORY_NOT_EMPTY_ERROR = 'DirectoryNotEmptyError';
Contents.DirectoryNotEmptyError = function() {
// Constructor
//
// An error representing the result of attempting to delete a non-empty
// directory.
this.message = 'A directory must be empty before being deleted.';
Min RK
update frontend with path/name changes...
r18752 };
Contents.DirectoryNotEmptyError.prototype = Object.create(Error.prototype);
Kester Tong
Modifies Contents API to return Error objects...
r18661 Contents.DirectoryNotEmptyError.prototype.name =
Kester Tong
typo fix
r18662 Contents.DIRECTORY_NOT_EMPTY_ERROR;
Kester Tong
Modifies Contents API to return Error objects...
r18661
Thomas Kluyver
Add Contents.api_url convenience function
r18650 Contents.prototype.api_url = function() {
var url_parts = [this.base_url, 'api/contents'].concat(
Array.prototype.slice.apply(arguments));
return utils.url_join_encode.apply(null, url_parts);
};
KesterTong
Make ContentManager stateless...
r18622 /**
Kester Tong
Modifies Contents API to return Error objects...
r18661 * Creates a basic error handler that wraps a jqXHR error as an Error.
*
* Takes a callback that accepts an Error, and returns a callback that can
* be passed directly to $.ajax, which will wrap the error from jQuery
* as an Error, and pass that to the original callback.
*
* @method create_basic_error_handler
* @param{Function} callback
* @return{Function}
*/
Contents.prototype.create_basic_error_handler = function(callback) {
if (!callback) {
Min RK
update frontend with path/name changes...
r18752 return utils.log_ajax_error;
Kester Tong
Modifies Contents API to return Error objects...
r18661 }
return function(xhr, status, error) {
callback(utils.wrap_ajax_error(xhr, status, error));
};
Min RK
update frontend with path/name changes...
r18752 };
Kester Tong
Modifies Contents API to return Error objects...
r18661
/**
Thomas Kluyver
Make contents JS API consistent
r18653 * File Functions (including notebook operations)
KesterTong
Moves list_notebooks to ContentManager
r18636 */
/**
Min RK
update frontend with path/name changes...
r18752 * Get a file.
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 *
Thomas Kluyver
Rename callback parameters to success/error
r18658 * Calls success with file JSON model, or error with error.
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 *
Min RK
update frontend with path/name changes...
r18752 * @method get
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 * @param {String} path
Thomas Kluyver
Rename callback parameters to success/error
r18658 * @param {Function} success
* @param {Function} error
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 */
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.get = function (path, options) {
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 // We do the call with settings so we can set cache to false.
var settings = {
processData : false,
cache : false,
type : "GET",
dataType : "json",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success : options.success,
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 };
Min RK
update frontend with path/name changes...
r18752 var url = this.api_url(path);
Thomas Kluyver
Fix various review comments
r18790 params = {};
if (options.type) { params.type = options.type; }
if (options.format) { params.format = options.format; }
$.ajax(url + '?' + $.param(params), settings);
KesterTong
Moves load_notebook to ContentManager and adds new_notebook to Google Drive version
r18638 };
/**
Min RK
contents.new_untitled to match Python API
r18760 * Creates a new untitled file or directory in the specified directory path.
KesterTong
Make ContentManager stateless...
r18622 *
Min RK
update frontend with path/name changes...
r18752 * @method new
Min RK
contents.new_untitled to match Python API
r18760 * @param {String} path: the directory in which to create the new file/directory
Thomas Kluyver
Make Contents.new more generic
r18676 * @param {Object} options:
Min RK
update frontend with path/name changes...
r18752 * ext: file extension to use
Min RK
address review in contents service...
r18758 * type: model type to create ('notebook', 'file', or 'directory')
KesterTong
Make ContentManager stateless...
r18622 */
Min RK
contents.new_untitled to match Python API
r18760 Contents.prototype.new_untitled = function(path, options) {
Min RK
address review in contents service...
r18758 var data = JSON.stringify({
ext: options.ext,
type: options.type
});
Thomas Kluyver
Make Contents.new more generic
r18676
jhemmelg
ContentManager function signatures updated
r18619 var settings = {
processData : false,
Min RK
update frontend with path/name changes...
r18752 type : "POST",
Thomas Kluyver
Make Contents.new more generic
r18676 data: data,
jhemmelg
ContentManager function signatures updated
r18619 dataType : "json",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success : options.success || function() {},
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
jhemmelg
ContentManager function signatures updated
r18619 };
Thomas Kluyver
Add Contents.api_url convenience function
r18650 $.ajax(this.api_url(path), settings);
KesterTong
Style and bug fixes
r18620 };
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.delete = function(path, options) {
Thomas Kluyver
Fix error callback when deleting file
r18663 var error_callback = options.error || function() {};
jhemmelg
ContentManager function signatures updated
r18619 var settings = {
processData : false,
type : "DELETE",
KesterTong
Removes unnecessary parameter from ContentManager.delete_notebook
r18629 dataType : "json",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success : options.success || function() {},
Thomas Kluyver
Make contents JS API consistent
r18653 error : function(xhr, status, error) {
Kester Tong
Modifies Contents API to return Error objects...
r18661 // TODO: update IPEP27 to specify errors more precisely, so
// that error types can be detected here with certainty.
if (xhr.status === 400) {
Thomas Kluyver
Fix error callback when deleting file
r18663 error_callback(new Contents.DirectoryNotEmptyError());
Kester Tong
Modifies Contents API to return Error objects...
r18661 }
Thomas Kluyver
Fix error callback when deleting file
r18663 error_callback(utils.wrap_ajax_error(xhr, status, error));
Thomas Kluyver
Make contents JS API consistent
r18653 }
jhemmelg
ContentManager function signatures updated
r18619 };
Min RK
update frontend with path/name changes...
r18752 var url = this.api_url(path);
jhemmelg
ContentManager function signatures updated
r18619 $.ajax(url, settings);
KesterTong
Style and bug fixes
r18620 };
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.rename = function(path, new_path, options) {
var data = {path: new_path};
jhemmelg
ContentManager function signatures updated
r18619 var settings = {
processData : false,
type : "PATCH",
data : JSON.stringify(data),
dataType: "json",
Jeff Hemmelgarn
Move notebook.rename to contentmanager...
r18627 contentType: 'application/json',
Kester Tong
Modifies Contents API to return Error objects...
r18661 success : options.success || function() {},
error : this.create_basic_error_handler(options.error)
jhemmelg
ContentManager function signatures updated
r18619 };
Min RK
update frontend with path/name changes...
r18752 var url = this.api_url(path);
jhemmelg
ContentManager function signatures updated
r18619 $.ajax(url, settings);
KesterTong
Style and bug fixes
r18620 };
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.save = function(path, model, options) {
jhemmelg
ContentManager function signatures updated
r18619 // We do the call with settings so we can set cache to false.
var settings = {
processData : false,
type : "PUT",
data : JSON.stringify(model),
Jeff Hemmelgarn
Move notebook.rename to contentmanager...
r18627 contentType: 'application/json',
Thomas Kluyver
Rename callback parameters to success/error
r18658 success : options.success || function() {},
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
jhemmelg
ContentManager function signatures updated
r18619 };
Min RK
update frontend with path/name changes...
r18752 var url = this.api_url(path);
jhemmelg
ContentManager function signatures updated
r18619 $.ajax(url, settings);
};
Thomas Kluyver
Add copy_file to contents JS API
r18665
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.copy = function(from_file, to_dir, options) {
// Copy a file into a given directory via POST
// The server will select the name of the copied file
var url = this.api_url(to_dir);
Thomas Kluyver
Add copy_file to contents JS API
r18665
var settings = {
processData : false,
Min RK
update frontend with path/name changes...
r18752 type: "POST",
data: JSON.stringify({copy_from: from_file}),
Thomas Kluyver
Add copy_file to contents JS API
r18665 dataType : "json",
success: options.success || function() {},
error: this.create_basic_error_handler(options.error)
};
$.ajax(url, settings);
};
jhemmelg
Initial interface for javascript contentmanagers...
r18618
KesterTong
Moves list_notebooks to ContentManager
r18636 /**
* Checkpointing Functions
*/
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.create_checkpoint = function(path, options) {
var url = this.api_url(path, 'checkpoints');
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 var settings = {
type : "POST",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success: options.success || function() {},
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 };
$.ajax(url, settings);
KesterTong
Style and bug fixes
r18620 };
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.list_checkpoints = function(path, options) {
var url = this.api_url(path, 'checkpoints');
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 var settings = {
type : "GET",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success: options.success,
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 };
$.ajax(url, settings);
KesterTong
Style and bug fixes
r18620 };
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.restore_checkpoint = function(path, checkpoint_id, options) {
var url = this.api_url(path, 'checkpoints', checkpoint_id);
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 var settings = {
type : "POST",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success: options.success || function() {},
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 };
$.ajax(url, settings);
};
Min RK
update frontend with path/name changes...
r18752 Contents.prototype.delete_checkpoint = function(path, checkpoint_id, options) {
var url = this.api_url(path, 'checkpoints', checkpoint_id);
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 var settings = {
type : "DELETE",
Thomas Kluyver
Rename callback parameters to success/error
r18658 success: options.success || function() {},
Kester Tong
Modifies Contents API to return Error objects...
r18661 error : this.create_basic_error_handler(options.error)
Thomas Kluyver
Standardise JS checkpointing API, use it for notebooks
r18652 };
$.ajax(url, settings);
KesterTong
Style and bug fixes
r18620 };
KesterTong
Moves list_notebooks to ContentManager
r18636 /**
* File management functions
*/
/**
* List notebooks and directories at a given path
*
* On success, load_callback is called with an array of dictionaries
* representing individual files or directories. Each dictionary has
* the keys:
* type: "notebook" or "directory"
* created: created date
* last_modified: last modified dat
* @method list_notebooks
* @param {String} path The path to list notebooks in
Thomas Kluyver
Expose and use get requests specifying type in the JS
r18782 * @param {Object} options including success and error callbacks
KesterTong
Moves list_notebooks to ContentManager
r18636 */
Thomas Kluyver
Make contents JS API consistent
r18653 Contents.prototype.list_contents = function(path, options) {
Thomas Kluyver
Expose and use get requests specifying type in the JS
r18782 options.type = 'directory';
this.get(path, options);
Thomas Kluyver
Add missing semicolon
r18647 };
KesterTong
Moves list_notebooks to ContentManager
r18636
Jeff Hemmelgarn
Move contentmanager to contents
r18643 IPython.Contents = Contents;
jhemmelg
Initial interface for javascript contentmanagers...
r18618
Jeff Hemmelgarn
Move contentmanager to contents
r18643 return {'Contents': Contents};
Kester Tong
Modifies Contents API to return Error objects...
r18661 });