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.js154
1 files changed, 82 insertions, 72 deletions
diff --git a/public/js/mv/load.js b/public/js/mv/load.js
index 0805214..56edf76 100644
--- a/public/js/mv/load.js
+++ b/public/js/mv/load.js
@@ -1,80 +1,90 @@
"use strict";
var mv = function(mv) {
- mv.loader = function() {
- /* Set up handlers for file selector */
- var numfiles = 0;
- var filenames = [];
- var curfile = 0;
- var loader = {};
- loader.onbulkstart = function(fevt) {};
- loader.onloadstart = function(evt) {};
- loader.onprogress = function(evt) {};
- loader.onabort = function(evt) {
- alert('File load aborted!');
+ mv.loader = {
+ /* Callbacks */
+ onbulkstart: onbulkstart,
+ onloadstart: onloadstart,
+ onprogress: onprogress,
+ onabort: onabort,
+ onerror: onerror,
+ /* File state accessors */
+ numfiles: function() { return numfiles; },
+ filenames: function() { return filenames; },
+ curfile: function() { return curfile; },
+ /* Callback */
+ setname: function(n) {},
+ /* Initialise the loader module */
+ init: init,
+ }
+ /* Set up handlers for file selector */
+ var numfiles = 0;
+ var filenames = [];
+ var curfile = 0;
+ var files;
+ function onbulkstart(fevt) {}
+ function onloadstart(evt) {}
+ function onprogress(evt) {}
+ function onabort(evt) {
+ alert('File load aborted!');
+ }
+ function onerror(evt) {
+ switch(evt.target.error.code) {
+ case evt.target.error.NOT_FOUND_ERR:
+ alert('File Not Found!');
+ break;
+ case evt.target.error.NOT_READABLE_ERR:
+ alert('File is not readable');
+ break;
+ case evt.target.error.ABORT_ERR:
+ break; // noop
+ default:
+ alert('An error occurred reading this file.');
};
- loader.onerror = function(evt) {
- switch(evt.target.error.code) {
- case evt.target.error.NOT_FOUND_ERR:
- alert('File Not Found!');
- break;
- case evt.target.error.NOT_READABLE_ERR:
- alert('File is not readable');
- break;
- case evt.target.error.ABORT_ERR:
- break; // noop
- default:
- alert('An error occurred reading this file.');
- };
- };
- 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;
- filenames = Array.prototype.map.call(fevt.target.files, function(d) { return d.name; });
- curfile = 0;
- var reader = new FileReader();
- loader.onbulkstart(fevt);
- reader.onerror = function() { loader.onerror.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, filenames[curfile], function() {
- ++curfile;
- if (curfile == numfiles) {
- after();
- } else {
- nextFile();
- }
- });
- };
- function nextFile() {
- 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);
+ }
+ function init(input, each, after) {
+ input.on('change', function() {
+ files = d3.event.target.files;
+ numfiles = files.length;
+ filenames = Array.prototype.map.call(files, function(d) { return d.name; });
+ curfile = 0;
+ var reader = new FileReader();
+ mv.loader.onbulkstart();
+ reader.onerror = function() { mv.loader.onerror.apply(null, arguments) };
+ reader.onprogress = function(evt) { if (evt.lengthComputable) { mv.loader.onprogress(evt.loaded, evt.total) } };
+ reader.onabort = function() { mv.loader.onabort.apply(null, arguments) };
+ reader.onloadstart = function() { mv.loader.onloadstart.apply(null, arguments) };
+ reader.onload = function(evt) {
+ each(reader.result, filenames[curfile], function() {
+ ++curfile;
+ if (curfile == numfiles) {
+ after();
} else {
- loader.setname(file);
- reader.readAsBinaryString(file);
+ nextFile();
}
+ });
+ };
+ function nextFile() {
+ var file = files[curfile];
+ mv.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) {
+ mv.loader.setname(file.name + "'; unzipping '" + d.filename + " (" + (i + 1) + "/" + entries.length + ")");
+ d.getData(new zip.BlobWriter(), function(blob) {
+ mv.loader.setname(d.filename);
+ reader.readAsBinaryString(blob);
+ }, mv.loader.onprogress);
+ });
+ }, mv.loader.onerror);
+ }, mv.loader.onerror);
+ } else {
+ mv.loader.setname(file);
+ reader.readAsBinaryString(file);
}
- nextFile();
- }, false);
- };
- return loader;
- }();
+ }
+ nextFile();
+ }, false);
+ };
return mv;
}(mv || {});