Show More
@@ -0,0 +1,23 b'' | |||
|
1 | /* We need an invisible input field on top of the sentense*/ | |
|
2 | /* "Drag file onto the list ..." */ | |
|
3 | ||
|
4 | .alternate_upload | |
|
5 | { | |
|
6 | background-color:none; | |
|
7 | display: inline; | |
|
8 | } | |
|
9 | ||
|
10 | .alternate_upload.form | |
|
11 | { | |
|
12 | padding: 0; | |
|
13 | margin:0; | |
|
14 | } | |
|
15 | ||
|
16 | .alternate_upload input.fileinput | |
|
17 | { | |
|
18 | background-color:red; | |
|
19 | position:relative; | |
|
20 | opacity: 0; | |
|
21 | z-index: 2; | |
|
22 | width: 356px; | |
|
23 | } |
@@ -43,33 +43,45 b' var IPython = (function (IPython) {' | |||
|
43 | 43 | this.element.bind('dragover', function () { |
|
44 | 44 | return false; |
|
45 | 45 | }); |
|
46 |
this.element.bind('drop', function |
|
|
47 | var files = event.originalEvent.dataTransfer.files; | |
|
48 | for (var i = 0, f; f = files[i]; i++) { | |
|
49 | var reader = new FileReader(); | |
|
50 | reader.readAsText(f); | |
|
51 | var fname = f.name.split('.'); | |
|
52 | var nbname = fname.slice(0,-1).join('.'); | |
|
53 | var nbformat = fname.slice(-1)[0]; | |
|
54 | if (nbformat === 'ipynb') {nbformat = 'json';}; | |
|
55 | if (nbformat === 'py' || nbformat === 'json') { | |
|
56 | var item = that.new_notebook_item(0); | |
|
57 | that.add_name_input(nbname, item); | |
|
58 | item.data('nbformat', nbformat); | |
|
59 | // Store the notebook item in the reader so we can use it later | |
|
60 | // to know which item it belongs to. | |
|
61 | $(reader).data('item', item); | |
|
62 | reader.onload = function (event) { | |
|
63 | var nbitem = $(event.target).data('item'); | |
|
64 | that.add_notebook_data(event.target.result, nbitem); | |
|
65 | that.add_upload_button(nbitem); | |
|
66 | }; | |
|
67 | }; | |
|
68 | } | |
|
46 | this.element.bind('drop', function(event){ | |
|
47 | console.log('bound to drop'); | |
|
48 | that.handelFilesUpload(event,'drop'); | |
|
69 | 49 | return false; |
|
70 | 50 | }); |
|
71 | 51 | }; |
|
72 | 52 | |
|
53 | NotebookList.prototype.handelFilesUpload = function(event, dropOrForm) { | |
|
54 | var that = this; | |
|
55 | var files; | |
|
56 | if(dropOrForm =='drop'){ | |
|
57 | files = event.originalEvent.dataTransfer.files; | |
|
58 | } else | |
|
59 | { | |
|
60 | files = event.originalEvent.target.files | |
|
61 | } | |
|
62 | for (var i = 0, f; f = files[i]; i++) { | |
|
63 | var reader = new FileReader(); | |
|
64 | reader.readAsText(f); | |
|
65 | var fname = f.name.split('.'); | |
|
66 | var nbname = fname.slice(0,-1).join('.'); | |
|
67 | var nbformat = fname.slice(-1)[0]; | |
|
68 | if (nbformat === 'ipynb') {nbformat = 'json';}; | |
|
69 | if (nbformat === 'py' || nbformat === 'json') { | |
|
70 | var item = that.new_notebook_item(0); | |
|
71 | that.add_name_input(nbname, item); | |
|
72 | item.data('nbformat', nbformat); | |
|
73 | // Store the notebook item in the reader so we can use it later | |
|
74 | // to know which item it belongs to. | |
|
75 | $(reader).data('item', item); | |
|
76 | reader.onload = function (event) { | |
|
77 | var nbitem = $(event.target).data('item'); | |
|
78 | that.add_notebook_data(event.target.result, nbitem); | |
|
79 | that.add_upload_button(nbitem); | |
|
80 | }; | |
|
81 | }; | |
|
82 | } | |
|
83 | return false; | |
|
84 | }; | |
|
73 | 85 | |
|
74 | 86 | NotebookList.prototype.clear_list = function () { |
|
75 | 87 | this.element.children('.list_item').remove(); |
@@ -32,8 +32,11 b' $(document).ready(function () {' | |||
|
32 | 32 | |
|
33 | 33 | IPython.notebook_list.load_list(); |
|
34 | 34 | IPython.cluster_list.load_list(); |
|
35 | ||
|
36 | 35 | IPython.page.show(); |
|
37 | ||
|
36 | ||
|
37 | // bound the upload method to the on change of the file select list | |
|
38 | $("#alternate_upload").change(function (event){ | |
|
39 | IPython.notebook_list.handelFilesUpload(event,'form'); | |
|
40 | }); | |
|
38 | 41 | }); |
|
39 | 42 |
@@ -4,6 +4,7 b'' | |||
|
4 | 4 | |
|
5 | 5 | {% block stylesheet %} |
|
6 | 6 | <link rel="stylesheet" href="{{static_url("css/projectdashboard.css") }}" type="text/css" /> |
|
7 | <link rel="stylesheet" href="{{static_url("css/alternate_uploadform.css") }}" type="text/css" /> | |
|
7 | 8 | {% end %} |
|
8 | 9 | |
|
9 | 10 | |
@@ -30,8 +31,14 b' data-read-only={{read_only}}' | |||
|
30 | 31 | <div id="tab1"> |
|
31 | 32 | {% if logged_in or not read_only %} |
|
32 | 33 | <div id="notebook_toolbar"> |
|
33 | <span id="drag_info">Drag files onto the list to import | |
|
34 | notebooks.</span> | |
|
34 | ||
|
35 | <form id='alternate_upload' action="notebooks" enctype="multipart/form-data" method="post" class='alternate_upload'> | |
|
36 | <span id="drag_info" style="position:absolute" >Drag files | |
|
37 | onto the list, or click here, to import | |
|
38 | notebooks.</span> | |
|
39 | <input type="file" name="datafile" class="fileinput"> | |
|
40 | </form> | |
|
41 | ||
|
35 | 42 | |
|
36 | 43 | <span id="notebook_buttons"> |
|
37 | 44 | <button id="refresh_notebook_list" title="Refresh notebook list">Refresh</button> |
General Comments 0
You need to be logged in to leave comments.
Login now