summaryrefslogtreecommitdiff
path: root/public/js/mv/load.js
diff options
context:
space:
mode:
authorFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-25 16:56:23 +1200
committerFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-25 16:56:23 +1200
commit9d5f56cff3e8f6b7f4a425414815b4de49244d00 (patch)
treecbff3a4372d0fdef41c609865163da9ba192fe6f /public/js/mv/load.js
parentad1610280117aaeba51b71fa8e66e15c0bbadac2 (diff)
downloadmanavis-9d5f56cff3e8f6b7f4a425414815b4de49244d00.tar.gz
manavis-9d5f56cff3e8f6b7f4a425414815b4de49244d00.tar.bz2
manavis-9d5f56cff3e8f6b7f4a425414815b4de49244d00.tar.xz
manavis-9d5f56cff3e8f6b7f4a425414815b4de49244d00.zip
Allow loading of zip files
.zip must be at the end of the file name. Progress bars are not fully descriptive in this mode yet This also alters the mv.loader interface. The onprogress callback now takes current and total. The each callback is now passed an after parameter, to be called when it's done.
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);