##// END OF EJS Templates
Changed the display order of rich output in the live notebook to match that of nbconvert. This makes more sense than the other way around due to the need for notebooks already shared on the web to remain consistant. Conversely local notebooks can simply be edited to match the new order.
Changed the display order of rich output in the live notebook to match that of nbconvert. This makes more sense than the other way around due to the need for notebooks already shared on the web to remain consistant. Conversely local notebooks can simply be edited to match the new order.

File last commit:

r19176:f48e011c
r19205:14207ccf
Show More
notebooklist.js
508 lines | 18.5 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
define([
'base/js/namespace',
Jonathan Frederic
MWE,...
r17200 'jquery',
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 'base/js/utils',
'base/js/dialog',
Scott Sanderson
DEV: Add various events.
r19031 'base/js/events',
], function(IPython, $, utils, dialog, events) {
MinRK
add utils.url_path_join...
r13063 "use strict";
jon
In person review with @ellisonbg
r17210 var NotebookList = function (selector, options) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Constructor
*
* Parameters:
* selector: string
* options: dictionary
* Dictionary of keyword arguments.
* session_list: SessionList instance
* element_name: string
* base_url: string
* notebook_path: string
* contents: Contents instance
*/
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 var that = this;
jon
In person review with @ellisonbg
r17210 this.session_list = options.session_list;
Paul Ivanov
ok, Running tab is working now
r15454 // allow code re-use by just changing element_name in kernellist.js
jon
In person review with @ellisonbg
r17210 this.element_name = options.element_name || 'notebook';
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
this.style();
this.bind_events();
}
MinRK
add utils.url_path_join...
r13063 this.notebooks_list = [];
this.sessions = {};
Jonathan Frederic
Almost done!...
r17198 this.base_url = options.base_url || utils.get_body_data("baseUrl");
this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath");
Jeff Hemmelgarn
Move contentmanager to contents
r18643 this.contents = options.contents;
Jonathan Frederic
Fixed events
r17195 if (this.session_list && this.session_list.events) {
this.session_list.events.on('sessions_loaded.Dashboard',
function(e, d) { that.sessions_loaded(d); });
}
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
NotebookList.prototype.style = function () {
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 var prefix = '#' + this.element_name;
Paul Ivanov
small whitespace cleanup, renamed drag_info...
r15518 $(prefix + '_toolbar').addClass('list_toolbar');
$(prefix + '_list_info').addClass('toolbar_info');
$(prefix + '_buttons').addClass('toolbar_buttons');
$(prefix + '_list_header').addClass('list_header');
MinRK
use row-fluid for cluster list
r10920 this.element.addClass("list_container");
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
NotebookList.prototype.bind_events = function () {
Brian E. Granger
File upload/import working from notebook browser.
r4491 var that = this;
Paul Ivanov
refresh of Notebook list should reload sessions
r15456 $('#refresh_' + this.element_name + '_list').click(function () {
that.load_sessions();
Brian Granger
Draft of the cluster list UI....
r6195 });
Brian E. Granger
File upload/import working from notebook browser.
r4491 this.element.bind('dragover', function () {
return false;
});
Matthias BUSSONNIER
alternate notebook upload methods...
r6838 this.element.bind('drop', function(event){
Paul Ivanov
fix typo in method name
r15455 that.handleFilesUpload(event,'drop');
Brian E. Granger
File upload/import working from notebook browser.
r4491 return false;
});
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
Paul Ivanov
fix typo in method name
r15455 NotebookList.prototype.handleFilesUpload = function(event, dropOrForm) {
Matthias BUSSONNIER
alternate notebook upload methods...
r6838 var that = this;
var files;
if(dropOrForm =='drop'){
files = event.originalEvent.dataTransfer.files;
} else
{
MinRK
add utils.url_path_join...
r13063 files = event.originalEvent.target.files;
Matthias BUSSONNIER
alternate notebook upload methods...
r6838 }
MinRK
add utils.url_path_join...
r13063 for (var i = 0; i < files.length; i++) {
var f = files[i];
Jonathan Frederic
Almost done!...
r17198 var name_and_ext = utils.splitext(f.name);
Matthias BUSSONNIER
fix notebook upload...
r13322 var file_ext = name_and_ext[1];
MinRK
various upload fixes...
r17536
var reader = new FileReader();
MinRK
use splitext in notebook_list...
r13121 if (file_ext === '.ipynb') {
MinRK
various upload fixes...
r17536 reader.readAsText(f);
Brian E. Granger
Fully removing .py file upload....
r13115 } else {
MinRK
various upload fixes...
r17536 // read non-notebook files as binary
reader.readAsArrayBuffer(f);
MinRK
add utils.url_path_join...
r13063 }
MinRK
various upload fixes...
r17536 var item = that.new_item(0);
item.addClass('new-file');
Jeffrey Bush
Minor improvements to file upload....
r17643 that.add_name_input(f.name, item, file_ext == '.ipynb' ? 'notebook' : 'file');
MinRK
various upload fixes...
r17536 // Store the list 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 item = $(event.target).data('item');
that.add_file_data(event.target.result, item);
that.add_upload_button(item);
};
Jeffrey Bush
Fixed many edge cases in file uploads....
r17650 reader.onerror = function (event) {
var item = $(event.target).data('item');
Min RK
update frontend with path/name changes...
r18752 var name = item.data('name');
Jeffrey Bush
Fixed many edge cases in file uploads....
r17650 item.remove();
dialog.modal({
title : 'Failed to read file',
body : "Failed to read file '" + name + "'",
buttons : {'OK' : { 'class' : 'btn-primary' }}
});
};
Matthias BUSSONNIER
alternate notebook upload methods...
r6838 }
Brian E. Granger
Reset file upload form after an upload.
r14926 // Replace the file input form wth a clone of itself. This is required to
// reset the form. Otherwise, if you upload a file, delete it and try to
// upload it again, the changed event won't fire.
var form = $('input.fileinput');
form.replaceWith(form.clone(true));
Matthias BUSSONNIER
alternate notebook upload methods...
r6838 return false;
MinRK
add utils.url_path_join...
r13063 };
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488
Jonathan Frederic
Don't remove upload items unless explicitly requested.
r16213 NotebookList.prototype.clear_list = function (remove_uploads) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Clears the navigation tree.
*
* Parameters
* remove_uploads: bool=False
* Should upload prompts also be removed from the tree.
*/
Jonathan Frederic
Don't remove upload items unless explicitly requested.
r16213 if (remove_uploads) {
this.element.children('.list_item').remove();
} else {
this.element.children('.list_item:not(.new-file)').remove();
}
Matthias BUSSONNIER
pep8
r7941 };
Brian Granger
Draft of the cluster list UI....
r6195
Zachary Sailer
manual rebase static/tree/
r12988 NotebookList.prototype.load_sessions = function(){
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 this.session_list.load_sessions();
Zachary Sailer
manual rebase static/tree/
r12988 };
NotebookList.prototype.sessions_loaded = function(data){
Paul Ivanov
added IPython.session_list...
r15479 this.sessions = data;
Zachary Sailer
manual rebase static/tree/
r12988 this.load_list();
};
Brian Granger
Draft of the cluster list UI....
r6195
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 NotebookList.prototype.load_list = function () {
Min RK
update frontend with path/name changes...
r18752 var that = this;
Thomas Kluyver
Use promises for GET requests
r18827 this.contents.list_contents(that.notebook_path).then(
$.proxy(this.draw_notebook_list, this),
function(error) {
Thomas Kluyver
Fix passing empty list to draw_notebook_list()
r18678 that.draw_notebook_list({content: []}, "Server error: " + error.message);
Thomas Kluyver
Make contents JS API consistent
r18653 }
Thomas Kluyver
Use promises for GET requests
r18827 );
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
KesterTong
Moves list_notebooks to ContentManager
r18636 /**
* Draw the list of notebooks
* @method draw_notebook_list
* @param {Array} list An array of dictionaries representing files or
Thomas Kluyver
Fix spelling
r18660 * directories.
KesterTong
Moves list_notebooks to ContentManager
r18636 * @param {String} error_msg An error message
*/
NotebookList.prototype.draw_notebook_list = function (list, error_msg) {
var message = error_msg || 'Notebook list empty.';
Brian E. Granger
Cleaning up the dashboard CSS and fixing small visual problems.
r15078 var item = null;
Jeff Hemmelgarn
Fix a few problems with cherry-picked commits...
r18640 var model = null;
var len = list.content.length;
Matthias BUSSONNIER
proof of concept
r6842 this.clear_list();
Jeffrey Bush
File list refreshes no longer move the upload filename boxes....
r17651 var n_uploads = this.element.children('.list_item').length;
MinRK
add utils.url_path_join...
r13063 if (len === 0) {
MinRK
teach tree view about non-notebook files
r17526 item = this.new_item(0);
Brian E. Granger
Cleaning up the dashboard CSS and fixing small visual problems.
r15078 var span12 = item.children().first();
span12.empty();
MinRK
don't strip '.ipynb' from notebook names in nblist...
r15094 span12.append($('<div style="margin:auto;text-align:center;color:grey"/>').text(message));
Matthias BUSSONNIER
Drag target bigger for empty notebook dashboard...
r6857 }
MinRK
various unicode fixes...
r15234 var path = this.notebook_path;
Jeffrey Bush
File list refreshes no longer move the upload filename boxes....
r17651 var offset = n_uploads;
Brian E. Granger
Add directory browsing to the dashboard.
r15071 if (path !== '') {
Jeffrey Bush
File list refreshes no longer move the upload filename boxes....
r17651 item = this.new_item(offset);
MinRK
teach tree view about non-notebook files
r17526 model = {
type: 'directory',
name: '..',
Min RK
update frontend with path/name changes...
r18752 path: utils.url_path_split(path)[0],
MinRK
teach tree view about non-notebook files
r17526 };
this.add_link(model, item);
Jeffrey Bush
File list refreshes no longer move the upload filename boxes....
r17651 offset += 1;
Brian E. Granger
Add directory browsing to the dashboard.
r15071 }
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 for (var i=0; i<len; i++) {
Jeff Hemmelgarn
Fix a few problems with cherry-picked commits...
r18640 model = list.content[i];
item = this.new_item(i+offset);
this.add_link(model, item);
MinRK
add utils.url_path_join...
r13063 }
Scott Sanderson
DEV: Add various events.
r19031 // Trigger an event when we've finished drawing the notebook list.
events.trigger('draw_notebook_list.NotebookList');
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
MinRK
teach tree view about non-notebook files
r17526 NotebookList.prototype.new_item = function (index) {
Jonathan Frederic
Ran jdfreder/bootstrap2to3
r16913 var item = $('<div/>').addClass("list_item").addClass("row");
MinRK
bootstrap tree
r10891 // item.addClass('list_item ui-widget ui-widget-content ui-helper-clearfix');
// item.css('border-top-style','none');
Jonathan Frederic
Change the nav bar to nav-pills
r16923 item.append($("<div/>").addClass("col-md-12").append(
Brian E. Granger
Add directory browsing to the dashboard.
r15071 $('<i/>').addClass('item_icon')
).append(
MinRK
use row-fluid for tree_list
r10919 $("<a/>").addClass("item_link").append(
MinRK
bootstrap tree
r10891 $("<span/>").addClass("item_name")
)
MinRK
use row-fluid for tree_list
r10919 ).append(
$('<div/>').addClass("item_buttons btn-group pull-right")
));
MinRK
bootstrap tree
r10891
Brian E. Granger
File upload/import working from notebook browser.
r4491 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;
};
MinRK
teach tree view about non-notebook files
r17526 NotebookList.icons = {
directory: 'folder_icon',
notebook: 'notebook_icon',
file: 'file_icon',
};
NotebookList.uri_prefixes = {
directory: 'tree',
notebook: 'notebooks',
file: 'files',
};
NotebookList.prototype.add_link = function (model, item) {
var path = model.path,
name = model.name;
Brian E. Granger
Add directory browsing to the dashboard.
r15071 item.data('name', name);
item.data('path', path);
item.find(".item_name").text(name);
MinRK
teach tree view about non-notebook files
r17526 var icon = NotebookList.icons[model.type];
var uri_prefix = NotebookList.uri_prefixes[model.type];
item.find(".item_icon").addClass(icon).addClass('icon-fixed-width');
MinRK
updates per review...
r17535 var link = item.find("a.item_link")
Brian E. Granger
Add directory browsing to the dashboard.
r15071 .attr('href',
Jonathan Frederic
Almost done!...
r17198 utils.url_join_encode(
MinRK
s/base_project_url/base_url/...
r15238 this.base_url,
MinRK
teach tree view about non-notebook files
r17526 uri_prefix,
Min RK
update frontend with path/name changes...
r18752 path
Brian E. Granger
Add directory browsing to the dashboard.
r15071 )
);
MinRK
updates per review...
r17535 // directory nav doesn't open new tabs
// files, notebooks do
if (model.type !== "directory") {
link.attr('target','_blank');
}
Min RK
update add_duplicate_button with API changes...
r18928 if (model.type !== 'directory') {
this.add_duplicate_button(item);
}
MinRK
teach tree view about non-notebook files
r17526 if (model.type == 'file') {
this.add_delete_button(item);
} else if (model.type == 'notebook') {
Min RK
update add_duplicate_button with API changes...
r18928 if (this.sessions[path] === undefined){
MinRK
teach tree view about non-notebook files
r17526 this.add_delete_button(item);
} else {
Min RK
update add_duplicate_button with API changes...
r18928 this.add_shutdown_button(item, this.sessions[path]);
MinRK
teach tree view about non-notebook files
r17526 }
}
Brian E. Granger
Add directory browsing to the dashboard.
r15071 };
Jeffrey Bush
Minor improvements to file upload....
r17643 NotebookList.prototype.add_name_input = function (name, item, icon_type) {
MinRK
teach tree view about non-notebook files
r17526 item.data('name', name);
Jeffrey Bush
Minor improvements to file upload....
r17643 item.find(".item_icon").addClass(NotebookList.icons[icon_type]).addClass('icon-fixed-width');
MinRK
use row-fluid for tree_list
r10919 item.find(".item_name").empty().append(
MinRK
tree style tweaks
r10896 $('<input/>')
MinRK
various upload fixes...
r17536 .addClass("filename_input")
.attr('value', name)
MinRK
tree style tweaks
r10896 .attr('size', '30')
.attr('type', 'text')
Jeffrey Bush
Added ESC keep to upload textbox to cancel.
r17646 .keyup(function(event){
if(event.keyCode == 13){item.find('.upload_button').click();}
else if(event.keyCode == 27){item.remove();}
})
Brian E. Granger
File upload/import working from notebook browser.
r4491 );
};
MinRK
various upload fixes...
r17536 NotebookList.prototype.add_file_data = function (data, item) {
item.data('filedata', data);
Brian E. Granger
File upload/import working from notebook browser.
r4491 };
Zachary Sailer
manual rebase static/tree/
r12988 NotebookList.prototype.add_shutdown_button = function (item, session) {
Matthias BUSSONNIER
proof of concept
r6842 var that = this;
Jonathan Frederic
Fix automation errors.
r16914 var shutdown_button = $("<button/>").text("Shutdown").addClass("btn btn-xs btn-danger").
Matthias BUSSONNIER
proof of concept
r6842 click(function (e) {
var settings = {
processData : false,
cache : false,
type : "DELETE",
dataType : "json",
Zachary Sailer
fixed shutdown button refresh on dashboard
r12996 success : function () {
Zachary Sailer
manual rebase static/tree/
r12988 that.load_sessions();
MinRK
log all failed ajax API requests
r16445 },
Jonathan Frederic
Almost done!...
r17198 error : utils.log_ajax_error,
Matthias BUSSONNIER
proof of concept
r6842 };
Jonathan Frederic
Almost done!...
r17198 var url = utils.url_join_encode(
MinRK
s/base_project_url/base_url/...
r15238 that.base_url,
MinRK
add utils.url_path_join...
r13063 'api/sessions',
session
);
Matthias BUSSONNIER
proof of concept
r6842 $.ajax(url, settings);
MinRK
bootstrap tree
r10891 return false;
Matthias BUSSONNIER
proof of concept
r6842 });
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 item.find(".item_buttons").append(shutdown_button);
};
NotebookList.prototype.add_duplicate_button = function (item) {
var notebooklist = this;
Min RK
update add_duplicate_button with API changes...
r18928 var duplicate_button = $("<button/>").text("Duplicate").addClass("btn btn-default btn-xs").
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 click(function (e) {
// $(this) is the button that was clicked.
var that = $(this);
Min RK
simplify NotebookList.duplicate with recent changes...
r18930 var name = item.data('name');
var path = item.data('path');
Min RK
update add_duplicate_button with API changes...
r18928 var message = 'Are you sure you want to duplicate ' + name + '?';
var copy_from = {copy_from : path};
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 IPython.dialog.modal({
Min RK
update add_duplicate_button with API changes...
r18928 title : "Duplicate " + name,
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 body : message,
buttons : {
Duplicate : {
class: "btn-primary",
click: function() {
Min RK
simplify NotebookList.duplicate with recent changes...
r18930 notebooklist.contents.copy(path, notebooklist.notebook_path).then(function () {
notebooklist.load_list();
});
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 }
},
Cancel : {}
}
});
return false;
});
item.find(".item_buttons").append(duplicate_button);
Matthias BUSSONNIER
proof of concept
r6842 };
Brian E. Granger
File upload/import working from notebook browser.
r4491 NotebookList.prototype.add_delete_button = function (item) {
Matthias BUSSONNIER
fix notebook deletion....
r9787 var notebooklist = this;
Jonathan Frederic
Ran jdfreder/bootstrap2to3
r16913 var delete_button = $("<button/>").text("Delete").addClass("btn btn-default btn-xs").
Brian E. Granger
File upload/import working from notebook browser.
r4491 click(function (e) {
// $(this) is the button that was clicked.
var that = $(this);
MinRK
various upload fixes...
r17536 // We use the filename from the parent list_item element's
// data because the outer scope's values change as we iterate through the loop.
Brian Granger
Draft of the cluster list UI....
r6195 var parent_item = that.parents('div.list_item');
Thomas Kluyver
Fix some bugs in deleting notebooks from the dashboard
r18772 var name = parent_item.data('name');
Jeff Hemmelgarn
Move deleting a notebook to contentmanager.js...
r18625 var path = parent_item.data('path');
Min RK
update frontend with path/name changes...
r18752 var message = 'Are you sure you want to permanently delete the file: ' + name + '?';
Jonathan Frederic
Fix imports of "modules",...
r17202 dialog.modal({
MinRK
teach tree view about non-notebook files
r17526 title : "Delete file",
MinRK
bootstrapify delete dialog
r10921 body : message,
Brian E. Granger
File upload/import working from notebook browser.
r4491 buttons : {
MinRK
bootstrapify delete dialog
r10921 Delete : {
class: "btn-danger",
click: function() {
Thomas Kluyver
All aboard the promise train
r18829 notebooklist.contents.delete(path).then(
function() {
Min RK
update frontend with path/name changes...
r18752 notebooklist.notebook_deleted(path);
Thomas Kluyver
Miscellaneous JS fixes
r18656 }
Thomas Kluyver
All aboard the promise train
r18829 );
MinRK
bootstrapify delete dialog
r10921 }
Brian E. Granger
File upload/import working from notebook browser.
r4491 },
MinRK
bootstrapify delete dialog
r10921 Cancel : {}
Brian E. Granger
File upload/import working from notebook browser.
r4491 }
});
MinRK
bootstrap tree
r10891 return false;
Brian E. Granger
File upload/import working from notebook browser.
r4491 });
David Neto
Add the "Duplicate" button in the main dashboard...
r18927 item.find(".item_buttons").append(delete_button);
Brian E. Granger
File upload/import working from notebook browser.
r4491 };
Min RK
update frontend with path/name changes...
r18752 NotebookList.prototype.notebook_deleted = function(path) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Remove the deleted notebook.
*/
Thomas Kluyver
Fix some bugs in deleting notebooks from the dashboard
r18772 $( ":data(path)" ).each(function() {
Min RK
update frontend with path/name changes...
r18752 var element = $(this);
if (element.data("path") == path) {
Thomas Kluyver
Some more event cleanup
r18655 element.remove();
Scott Sanderson
DEV: Add various events.
r19031 events.trigger('notebook_deleted.NotebookList');
Thomas Kluyver
Some more event cleanup
r18655 }
});
Min RK
update frontend with path/name changes...
r18752 };
Thomas Kluyver
Some more event cleanup
r18655
Brian E. Granger
File upload/import working from notebook browser.
r4491
Min RK
update frontend with path/name changes...
r18752 NotebookList.prototype.add_upload_button = function (item) {
Brian E. Granger
File upload/import working from notebook browser.
r4491 var that = this;
MinRK
tree style tweaks
r10896 var upload_button = $('<button/>').text("Upload")
Jonathan Frederic
Fix automation errors.
r16914 .addClass('btn btn-primary btn-xs upload_button')
MinRK
tree style tweaks
r10896 .click(function (e) {
MinRK
various upload fixes...
r17536 var filename = item.find('.item_name > input').val();
Min RK
update frontend with path/name changes...
r18752 var path = utils.url_path_join(that.notebook_path, filename);
MinRK
various upload fixes...
r17536 var filedata = item.data('filedata');
var format = 'text';
Jeffrey Bush
Fixed many edge cases in file uploads....
r17650 if (filename.length === 0 || filename[0] === '.') {
dialog.modal({
title : 'Invalid file name',
body : "File names must be at least one character and not start with a dot",
buttons : {'OK' : { 'class' : 'btn-primary' }}
});
return false;
}
MinRK
various upload fixes...
r17536 if (filedata instanceof ArrayBuffer) {
// base64-encode binary file data
var bytes = '';
var buf = new Uint8Array(filedata);
var nbytes = buf.byteLength;
for (var i=0; i<nbytes; i++) {
bytes += String.fromCharCode(buf[i]);
}
filedata = btoa(bytes);
format = 'base64';
}
Min RK
update frontend with path/name changes...
r18752 var model = {};
MinRK
various upload fixes...
r17536
var name_and_ext = utils.splitext(filename);
var file_ext = name_and_ext[1];
var content_type;
if (file_ext === '.ipynb') {
model.type = 'notebook';
model.format = 'json';
MinRK
update contents per further review...
r17537 try {
model.content = JSON.parse(filedata);
} catch (e) {
dialog.modal({
title : 'Cannot upload invalid Notebook',
body : "The error was: " + e,
buttons : {'OK' : {
'class' : 'btn-primary',
click: function () {
item.remove();
}
}}
});
Jeffrey Bush
Fixed many edge cases in file uploads....
r17650 return false;
MinRK
update contents per further review...
r17537 }
MinRK
various upload fixes...
r17536 content_type = 'application/json';
} else {
model.type = 'file';
model.format = format;
model.content = filedata;
content_type = 'application/octet-stream';
}
Min RK
update frontend with path/name changes...
r18752 filedata = item.data('filedata');
MinRK
various upload fixes...
r17536
Thomas Kluyver
All aboard the promise train
r18829 var on_success = function () {
item.removeClass('new-file');
that.add_link(model, item);
that.add_delete_button(item);
that.session_list.load_sessions();
Brian E. Granger
File upload/import working from notebook browser.
r4491 };
Jeffrey Bush
Uploading a file with a name that already exists asks the user if they want to overwrite....
r17648
var exists = false;
$.each(that.element.find('.list_item:not(.new-file)'), function(k,v){
if ($(v).data('name') === filename) { exists = true; return false; }
});
Min RK
update frontend with path/name changes...
r18752
Jeffrey Bush
Uploading a file with a name that already exists asks the user if they want to overwrite....
r17648 if (exists) {
dialog.modal({
title : "Replace file",
body : 'There is already a file named ' + filename + ', do you want to replace it?',
buttons : {
Overwrite : {
class: "btn-danger",
Min RK
update frontend with path/name changes...
r18752 click: function () {
Thomas Kluyver
All aboard the promise train
r18829 that.contents.save(path, model).then(on_success);
}
Jeffrey Bush
Uploading a file with a name that already exists asks the user if they want to overwrite....
r17648 },
Cancel : {
click: function() { item.remove(); }
}
}
});
} else {
Thomas Kluyver
All aboard the promise train
r18829 that.contents.save(path, model).then(on_success);
Jeffrey Bush
Uploading a file with a name that already exists asks the user if they want to overwrite....
r17648 }
MinRK
bootstrap tree
r10891 return false;
Brian E. Granger
File upload/import working from notebook browser.
r4491 });
MinRK
tree style tweaks
r10896 var cancel_button = $('<button/>').text("Cancel")
Jonathan Frederic
Ran jdfreder/bootstrap2to3
r16913 .addClass("btn btn-default btn-xs")
MinRK
tree style tweaks
r10896 .click(function (e) {
Brian E. Granger
File upload/import working from notebook browser.
r4491 item.remove();
MinRK
bootstrap tree
r10891 return false;
Brian E. Granger
File upload/import working from notebook browser.
r4491 });
MinRK
tree style tweaks
r10896 item.find(".item_buttons").empty()
MinRK
bootstrap tree
r10891 .append(upload_button)
.append(cancel_button);
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 };
Min RK
update frontend with path/name changes...
r18752 // Backwards compatability.
Brian E. Granger
Implemented basic notebook browser and fixed numerous bugs.
r4488 IPython.NotebookList = NotebookList;
Jonathan Frederic
Return dicts instead of classes,...
r17201 return {'NotebookList': NotebookList};
Jonathan Frederic
Started work to make tree requirejs friendly.
r17189 });