summaryrefslogtreecommitdiff
path: root/public/js/mv/load.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/mv/load.js')
-rw-r--r--public/js/mv/load.js37
1 files changed, 28 insertions, 9 deletions
diff --git a/public/js/mv/load.js b/public/js/mv/load.js
index 8e6ff49..0805214 100644
--- a/public/js/mv/load.js
+++ b/public/js/mv/load.js
@@ -29,6 +29,7 @@ var mv = function(mv) {
loader.numfiles = function() { return numfiles; };
loader.filenames = function() { return filenames; };
loader.curfile = function() { return curfile; };
+ loader.setname = function(n) {};
loader.init = function(each, after) {
document.getElementById('input').addEventListener('change', function(fevt) {
numfiles = fevt.target.files.length;
@@ -37,20 +38,38 @@ var mv = function(mv) {
var reader = new FileReader();
loader.onbulkstart(fevt);
reader.onerror = function() { loader.onerror.apply(null, arguments) };
- reader.onprogress = function() { loader.onprogress.apply(null, arguments) };
+ reader.onprogress = function(evt) { if (evt.lengthComputable) { loader.onprogress(evt.loaded, evt.total) } };
reader.onabort = function() { loader.onabort.apply(null, arguments) };
reader.onloadstart = function() { loader.onloadstart.apply(null, arguments) };
reader.onload = function(evt) {
- each(reader.result, curfile, numfiles);
- ++curfile;
- if (curfile == numfiles) {
- after();
- } else {
- nextFile();
- }
+ each(reader.result, filenames[curfile], function() {
+ ++curfile;
+ if (curfile == numfiles) {
+ after();
+ } else {
+ nextFile();
+ }
+ });
};
function nextFile() {
- reader.readAsBinaryString(fevt.target.files[curfile]);
+ var file = fevt.target.files[curfile];
+ loader.onloadstart();
+ if (file.name.indexOf(".zip", name.length - 4) != -1) {
+ zip.createReader(new zip.BlobReader(file), function(zipReader) {
+ zipReader.getEntries(function(entries) {
+ entries.forEach(function(d, i) {
+ loader.setname(file.name + "'; unzipping '" + d.filename + " (" + (i + 1) + "/" + entries.length + ")");
+ d.getData(new zip.BlobWriter(), function(blob) {
+ loader.setname(d.filename);
+ reader.readAsBinaryString(blob);
+ }, loader.onprogress);
+ });
+ }, loader.onerror);
+ }, loader.onerror);
+ } else {
+ loader.setname(file);
+ reader.readAsBinaryString(file);
+ }
}
nextFile();
}, false);