//---------------------------------------------------------------------------- // 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. //---------------------------------------------------------------------------- //============================================================================ // NotebookList //============================================================================ var IPython = (function (IPython) { var NotebookList = function (selector) { this.selector = selector; if (this.selector !== undefined) { this.element = $(selector); this.style(); this.bind_events(); } this.notebooks_list = new Array(); this.sessions = new Object(); }; NotebookList.prototype.baseProjectUrl = function () { return $('body').data('baseProjectUrl'); }; NotebookList.prototype.notebookPath = function() { var path = $('body').data('notebookPath'); path = decodeURIComponent(path); return path; }; NotebookList.prototype.url_name = function(name){ return encodeURIComponent(name); }; NotebookList.prototype.style = function () { $('#notebook_toolbar').addClass('list_toolbar'); $('#drag_info').addClass('toolbar_info'); $('#notebook_buttons').addClass('toolbar_buttons'); $('#notebook_list_header').addClass('list_header'); this.element.addClass("list_container"); }; NotebookList.prototype.bind_events = function () { var that = this; $('#refresh_notebook_list').click(function () { that.load_list(); }); this.element.bind('dragover', function () { return false; }); 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(); }; NotebookList.prototype.load_sessions = function(){ var that = this; var settings = { processData : false, cache : false, type : "GET", dataType : "json", success : $.proxy(that.sessions_loaded, this) }; var url = this.baseProjectUrl() + 'api/sessions'; $.ajax(url,settings); }; NotebookList.prototype.sessions_loaded = function(data){ this.sessions = new Object(); var len = data.length; if (len != 0) { for (var i=0; i') .text(message) ) } for (var i=0; i').addClass("list_item").addClass("row-fluid"); // item.addClass('list_item ui-widget ui-widget-content ui-helper-clearfix'); // item.css('border-top-style','none'); item.append($("
").addClass("span12").append( $("").addClass("item_link").append( $("").addClass("item_name") ) ).append( $('
').addClass("item_buttons btn-group pull-right") )); if (index === -1) { this.element.append(item); } else { this.element.children().eq(index).after(item); } return item; }; NotebookList.prototype.add_link = function (path, nbname, item) { item.data('nbname', nbname); item.data('path', path); item.find(".item_name").text(nbname); item.find("a.item_link") .attr('href', this.baseProjectUrl() + "notebooks" + this.notebookPath() + nbname + ".ipynb") .attr('target','_blank'); }; NotebookList.prototype.add_name_input = function (nbname, item) { item.data('nbname', nbname); item.find(".item_name").empty().append( $('') .addClass("nbname_input") .attr('value', nbname) .attr('size', '30') .attr('type', 'text') ); }; NotebookList.prototype.add_notebook_data = function (data, item) { item.data('nbdata',data); }; NotebookList.prototype.add_shutdown_button = function (item, session) { var that = this; var shutdown_button = $("