@ -43,33 +43,44 @@ var IPython = (function (IPython) {
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 ( '.' ) ;
var nbname = fname . slice ( 0 , - 1 ) . join ( '.' ) ;
var nbformat = fname . slice ( - 1 ) [ 0 ] ;
if ( nbformat === 'ipynb' ) { nbformat = 'json' ; } ;
if ( nbformat === 'py' || nbformat === 'json' ) {
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 ) ;
} ;
} ;
}
this . element . bind ( 'drop' , function ( event ) {
that . handelFilesUpload ( event , 'drop' ) ;
return false ;
} ) ;
} ;
NotebookList . prototype . handelFilesUpload = function ( event , dropOrForm ) {
var that = this ;
var files ;
if ( dropOrForm == 'drop' ) {
files = event . originalEvent . dataTransfer . files ;
} else
{
files = event . originalEvent . target . files
}
for ( var i = 0 , f ; f = files [ i ] ; i ++ ) {
var reader = new FileReader ( ) ;
reader . readAsText ( f ) ;
var fname = f . name . split ( '.' ) ;
var nbname = fname . slice ( 0 , - 1 ) . join ( '.' ) ;
var nbformat = fname . slice ( - 1 ) [ 0 ] ;
if ( nbformat === 'ipynb' ) { nbformat = 'json' ; } ;
if ( nbformat === 'py' || nbformat === 'json' ) {
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 ;
} ;
NotebookList . prototype . clear _list = function ( ) {
this . element . children ( '.list_item' ) . remove ( ) ;
@ -77,7 +88,6 @@ var IPython = (function (IPython) {
NotebookList . prototype . load _list = function ( ) {
this . clear _list ( ) ;
var settings = {
processData : false ,
cache : false ,
@ -92,15 +102,30 @@ var IPython = (function (IPython) {
NotebookList . prototype . list _loaded = function ( data , status , xhr ) {
var len = data . length ;
// Todo: remove old children
this . clear _list ( ) ;
if ( len == 0 )
{
$ ( this . new _notebook _item ( 0 ) )
. append (
$ ( '<div style="margin:auto;text-align:center;color:grey"/>' )
. text ( 'Notebook list empty.' )
)
}
for ( var i = 0 ; i < len ; i ++ ) {
var notebook _id = data [ i ] . notebook _id ;
var nbname = data [ i ] . name ;
var kernel = data [ i ] . kernel _id ;
var item = this . new _notebook _item ( i ) ;
this . add _link ( notebook _id , nbname , item ) ;
if ( ! IPython . read _only ) {
// hide delete buttons when readonly
this . add _delete _button ( item ) ;
if ( kernel == null ) {
this . add _delete _button ( item ) ;
} else {
this . add _shutdown _button ( item , kernel ) ;
}
}
} ;
} ;
@ -164,6 +189,32 @@ var IPython = (function (IPython) {
} ;
NotebookList . prototype . add _shutdown _button = function ( item , kernel ) {
var new _buttons = $ ( '<span/>' ) . addClass ( 'item_buttons' ) ;
var that = this ;
var shutdown _button = $ ( '<button>Shutdown</button>' ) . button ( ) .
click ( function ( e ) {
var settings = {
processData : false ,
cache : false ,
type : "DELETE" ,
dataType : "json" ,
success : function ( data , status , xhr ) {
that . load _list ( ) ;
}
} ;
var url = $ ( 'body' ) . data ( 'baseProjectUrl' ) + 'kernels/' + kernel ;
$ . ajax ( url , settings ) ;
} ) ;
new _buttons . append ( shutdown _button ) ;
var e = item . find ( '.item_buttons' ) ;
if ( e . length === 0 ) {
item . append ( new _buttons ) ;
} else {
e . replaceWith ( new _buttons ) ;
} ;
} ;
NotebookList . prototype . add _delete _button = function ( item ) {
var new _buttons = $ ( '<span/>' ) . addClass ( 'item_buttons' ) ;
var delete _button = $ ( '<button>Delete</button>' ) . button ( ) .
@ -217,6 +268,7 @@ var IPython = (function (IPython) {
var that = this ;
var new _buttons = $ ( '<span/>' ) . addClass ( 'item_buttons' ) ;
var upload _button = $ ( '<button>Upload</button>' ) . button ( ) .
addClass ( 'upload-button' ) .
click ( function ( e ) {
var nbname = item . find ( '.item_name > input' ) . attr ( 'value' ) ;
var nbformat = item . data ( 'nbformat' ) ;