##// END OF EJS Templates
Avoid justifying of 'in' prompt...
Avoid justifying of 'in' prompt This little diff is to avoid rjustify of the 'in' prompt, because in configurations with variable prompt size (e.g. my pysh prompt showing \w), going to a smaller prompt cause only-reversed-by-restart blank spaces addition in beggining of 'in' prompt. Right justify is ok to 'in2' and 'out' prompts, but very ugly and weird in 'in' prompt.

File last commit:

r5705:3c008c07
r5804:21ba8f53
Show More
notebooklist.js
251 lines | 9.1 KiB | application/javascript | JavascriptLexer
Brian E. Granger
More review changes....
r4609 //----------------------------------------------------------------------------
// Copyright (C) 2008-2011 The IPython Development Team
//
// Distributed under the terms of the BSD License. The full license is in
// the file COPYING, distributed as part of this software.
//----------------------------------------------------------------------------
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488
//============================================================================
Brian E. Granger
More review changes....
r4609 // NotebookList
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 //============================================================================
var IPython = (function (IPython) {
var NotebookList = function (selector) {
this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
this.style();
this.bind_events();
}
};
NotebookList.prototype.style = function () {
this.element.addClass('ui-widget ui-widget-content');
$('div#project_name').addClass('ui-widget ui-widget-header');
};
NotebookList.prototype.bind_events = function () {
MinRK
move drag_info show/hide to page.ready, to avoid flouc
r5705 if (IPython.read_only){
return;
}
Brian E. Granger
File upload/import working from notebook browser.
r4491 var that = this;
this.element.bind('dragover', function () {
return false;
});
this.element.bind('drop', function (event) {
var files = event.originalEvent.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.readAsText(f);
var fname = f.name.split('.');
Brian E. Granger
Notebook upload handles filenames with periods.
r4636 var nbname = fname.slice(0,-1).join('.');
var nbformat = fname.slice(-1)[0];
Brian E. Granger
Making JSON the default .ipynb format.
r4633 if (nbformat === 'ipynb') {nbformat = 'json';};
if (nbformat === 'py' || nbformat === 'json') {
Brian E. Granger
File upload/import working from notebook browser.
r4491 var item = that.new_notebook_item(0);
that.add_name_input(nbname, item);
item.data('nbformat', nbformat);
// Store the notebook item in the reader so we can use it later
// to know which item it belongs to.
$(reader).data('item', item);
reader.onload = function (event) {
var nbitem = $(event.target).data('item');
that.add_notebook_data(event.target.result, nbitem);
that.add_upload_button(nbitem);
};
};
}
return false;
});
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
NotebookList.prototype.load_list = function () {
var settings = {
processData : false,
cache : false,
type : "GET",
dataType : "json",
Brian E. Granger
File upload/import working from notebook browser.
r4491 success : $.proxy(this.list_loaded, this)
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 var url = $('body').data('baseProjectUrl') + 'notebooks';
Brian E. Granger
Updating JS URL scheme to use embedded data....
r5106 $.ajax(url, settings);
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
NotebookList.prototype.list_loaded = function (data, status, xhr) {
var len = data.length;
Brian E. Granger
File upload/import working from notebook browser.
r4491 // Todo: remove old children
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 for (var i=0; i<len; i++) {
Brian E. Granger
Implemented delete functionality in nb browser....
r4490 var notebook_id = data[i].notebook_id;
var nbname = data[i].name;
Brian E. Granger
File upload/import working from notebook browser.
r4491 var item = this.new_notebook_item(i);
this.add_link(notebook_id, nbname, item);
MinRK
move read_only flag to page-level...
r5213 if (!IPython.read_only){
MinRK
add read-only view for notebooks...
r5200 // hide delete buttons when readonly
this.add_delete_button(item);
}
Brian E. Granger
File upload/import working from notebook browser.
r4491 };
};
Brian E. Granger
Implemented delete functionality in nb browser....
r4490
Brian E. Granger
File upload/import working from notebook browser.
r4491
NotebookList.prototype.new_notebook_item = function (index) {
var item = $('<div/>');
item.addClass('notebook_item ui-widget ui-widget-content ui-helper-clearfix');
var item_name = $('<span/>').addClass('item_name');
item.append(item_name);
if (index === -1) {
Brian E. Granger
Implemented delete functionality in nb browser....
r4490 this.element.append(item);
Brian E. Granger
File upload/import working from notebook browser.
r4491 } else {
this.element.children().eq(index).after(item);
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 }
Brian E. Granger
File upload/import working from notebook browser.
r4491 return item;
};
NotebookList.prototype.add_link = function (notebook_id, nbname, item) {
item.data('nbname', nbname);
item.data('notebook_id', notebook_id);
var new_item_name = $('<span/>').addClass('item_name');
new_item_name.append(
$('<a/>').
Brian E. Granger
Updating notebook list to use data-base-project-url.
r5107 attr('href', $('body').data('baseProjectURL')+notebook_id).
Brian E. Granger
File upload/import working from notebook browser.
r4491 attr('target','_blank').
text(nbname)
);
var e = item.find('.item_name');
if (e.length === 0) {
item.append(new_item_name);
} else {
e.replaceWith(new_item_name);
};
};
NotebookList.prototype.add_name_input = function (nbname, item) {
item.data('nbname', nbname);
var new_item_name = $('<span/>').addClass('item_name');
new_item_name.append(
$('<input/>').addClass('ui-widget ui-widget-content').
attr('value', nbname).
attr('size', '30').
attr('type', 'text')
);
var e = item.find('.item_name');
if (e.length === 0) {
item.append(new_item_name);
} else {
e.replaceWith(new_item_name);
};
};
NotebookList.prototype.add_notebook_data = function (data, item) {
item.data('nbdata',data);
};
NotebookList.prototype.add_delete_button = function (item) {
var new_buttons = $('<span/>').addClass('item_buttons');
var delete_button = $('<button>Delete</button>').button().
click(function (e) {
// $(this) is the button that was clicked.
var that = $(this);
// We use the nbname and notebook_id from the parent notebook_item element's
// data because the outer scopes values change as we iterate through the loop.
var parent_item = that.parents('div.notebook_item');
var nbname = parent_item.data('nbname');
var notebook_id = parent_item.data('notebook_id');
var dialog = $('<div/>');
dialog.html('Are you sure you want to permanently delete the notebook: ' + nbname + '?');
parent_item.append(dialog);
dialog.dialog({
resizable: false,
modal: true,
title: "Delete notebook",
buttons : {
"Delete": function () {
var settings = {
processData : false,
cache : false,
type : "DELETE",
dataType : "json",
success : function (data, status, xhr) {
parent_item.remove();
}
};
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 var url = $('body').data('baseProjectUrl') + 'notebooks/' + notebook_id;
Brian E. Granger
Updating JS URL scheme to use embedded data....
r5106 $.ajax(url, settings);
Brian E. Granger
File upload/import working from notebook browser.
r4491 $(this).dialog('close');
},
"Cancel": function () {
$(this).dialog('close');
}
}
});
});
new_buttons.append(delete_button);
var e = item.find('.item_buttons');
if (e.length === 0) {
item.append(new_buttons);
} else {
e.replaceWith(new_buttons);
};
};
NotebookList.prototype.add_upload_button = function (item) {
var that = this;
var new_buttons = $('<span/>').addClass('item_buttons');
var upload_button = $('<button>Upload</button>').button().
click(function (e) {
var nbname = item.find('.item_name > input').attr('value');
var nbformat = item.data('nbformat');
var nbdata = item.data('nbdata');
Brian E. Granger
Improvements to file uploaded, mime types and .py reader....
r4493 var content_type = 'text/plain';
Brian E. Granger
Making JSON the default .ipynb format.
r4633 if (nbformat === 'json') {
Brian E. Granger
Improvements to file uploaded, mime types and .py reader....
r4493 content_type = 'application/json';
} else if (nbformat === 'py') {
content_type = 'application/x-python';
};
Brian E. Granger
File upload/import working from notebook browser.
r4491 var settings = {
processData : false,
cache : false,
Brian E. Granger
Improvements to file uploaded, mime types and .py reader....
r4493 type : 'POST',
dataType : 'json',
Brian E. Granger
File upload/import working from notebook browser.
r4491 data : nbdata,
Brian E. Granger
Improvements to file uploaded, mime types and .py reader....
r4493 headers : {'Content-Type': content_type},
Brian E. Granger
File upload/import working from notebook browser.
r4491 success : function (data, status, xhr) {
that.add_link(data, nbname, item);
that.add_delete_button(item);
}
};
var qs = $.param({name:nbname, format:nbformat});
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 var url = $('body').data('baseProjectUrl') + 'notebooks?' + qs;
Brian E. Granger
Updating JS URL scheme to use embedded data....
r5106 $.ajax(url, settings);
Brian E. Granger
File upload/import working from notebook browser.
r4491 });
var cancel_button = $('<button>Cancel</button>').button().
click(function (e) {
item.remove();
});
upload_button.addClass('upload_button');
new_buttons.append(upload_button).append(cancel_button);
var e = item.find('.item_buttons');
if (e.length === 0) {
item.append(new_buttons);
} else {
e.replaceWith(new_buttons);
};
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
IPython.NotebookList = NotebookList;
return IPython;
}(IPython));