summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-26 13:21:41 +1200
committerFreeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace>2013-05-26 18:09:17 +1200
commita006af6ccacee6f893194058db56482f3a4aa7ae (patch)
treebea223922953a84894e967cd835f65f59d3685d3
parent4d70d5bfe2c3a38e34713aafa22d54401e91e905 (diff)
downloadmanavis-a006af6ccacee6f893194058db56482f3a4aa7ae.tar.gz
manavis-a006af6ccacee6f893194058db56482f3a4aa7ae.tar.bz2
manavis-a006af6ccacee6f893194058db56482f3a4aa7ae.tar.xz
manavis-a006af6ccacee6f893194058db56482f3a4aa7ae.zip
Flatten loader closure, adjust event callback
The inner loader closure was redundant. Apparently I really like closures during late night coding. main.js should no longer have to deal with raw loading events; only UI specific callbacks.
-rw-r--r--public/js/mv/load.js154
-rw-r--r--public/js/mv/main.js6
2 files changed, 85 insertions, 75 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 || {});
diff --git a/public/js/mv/main.js b/public/js/mv/main.js
index 28857aa..b5a2b3a 100644
--- a/public/js/mv/main.js
+++ b/public/js/mv/main.js
@@ -16,18 +16,18 @@ var mv = function(mv) {
mv.init = function() {
/* Loader module */
/* Callbacks for loading files from the filesystem */
- mv.loader.onbulkstart = function(fevt) {
+ mv.loader.onbulkstart = function() {
loadbar.show();
filesbar.show();
};
- mv.loader.onloadstart = function(evt) {
+ mv.loader.onloadstart = function() {
filesbar.update(mv.loader.curfile(), mv.loader.numfiles());
loadbar.reset();
};
mv.loader.onprogress = function(current, total) {
loadbar.update(current, total);
};
- mv.loader.init(handleFile, postLoading);
+ mv.loader.init(d3.select("#input"), handleFile, postLoading);
mv.loader.setname = function(n) { name = n; };
/* Set zip.js worker path */
zip.workerScriptsPath = "/js/zip/WebContent/";