-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
93 lines (67 loc) · 2.19 KB
/
script.js
File metadata and controls
93 lines (67 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Global is ugly, but it's just a proof of concept/benchmark
var state = {
fileIndexMap: null,
files: null
}
// Ref: https://www.html5rocks.com/en/tutorials/file/dndfiles/
function handleFiles() {
if (window.FileReader) {
// var f = document.getElementById("infile").files[0];
// var reader = new FileReader();
// reader.readAsText(f);
// reader.onload = readhandler;
// reader.onerror = errorhandler;
state.files = document.getElementById("infile").files;
state.fileIndexMap = makeFileIndexMap(state.files);
makeButtons(state.files);
} else {
alert("File reading is not supported on your current browser!");
}
}
function makeFileIndexMap(files) {
var map = {};
for (var i = 0; i < files.length; i++) {
map[files.item(i).name.replace(" ", "_")] = i;
}
return map;
}
// Takes FileList
function makeButtons(fl) {
$("#button-div").empty(); // Clear any previous buttons
// Generate button for each file (crude, just proof of concept)
for (var i = 0; i < Math.min(20, fl.length); i++) {
// This file name cleaning would need to be improved
var f = fl.item(i)
var name = f.name.replace(" ", "_");
var newID = "file-button-" + name;
var buttonString = '<button id="';
buttonString += newID + '">' + name + '</button>';
$("#button-div").append(buttonString);
var btn = $(document.getElementById(newID));
btn.attr("fname", name);
btn.on("click", function(event) { showFile($(document.getElementById(event.target.id)).attr("fname")); });
$("#button-div").append("<br />");
}
}
function showFile(name) {
console.log(name);
if (state.fileIndexMap && (name in state.fileIndexMap)) {
var index = state.fileIndexMap[name];
var f = state.files.item(index);
var reader = new FileReader();
reader.readAsText(f);
reader.onload = readHandler;
reader.onerror = errorHandler;
} else {
alert("ERROR: Files not loaded or initialized correctly");
}
}
function readHandler(event) {
// I don't know if it's necessary to replace here
var text = event.target.result.replace(/\r\n/, "\n");
$("#file-div").empty();
$("#file-div").append('<text class="file-text">' + text + '</text>');
}
function errorHandler(event) {
alert("ERROR: " + event.target.error.name);
}