$(document).on("ready", function() {
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
notify("Your Browser Sucks.");
}
function draw(files) {
var output = [];
files.forEach(function(f, i) {
output.push(
'
'+
''+
''+
''+
''+util.htmlEntities(f.name)+''+
''
);
});
$("#uploader-list").html(output.join(""));
}
var files = [];
$("#uploader-input").on("change", function(evt) {
console.log(evt);
//Enable upload button
$("#uploader-upload").removeAttr("disabled");
var inputFiles = evt.target.files;
for (var i = 0; i < inputFiles.length; ++i) (function() {
var f = inputFiles[i];
f.thumbnail = "";
var reader = new FileReader();
reader.readAsDataURL(f);
reader.onload = function(evt) {
f.thumbnail = reader.result;
draw(files);
}
files.push(inputFiles[i]);
})();
draw(files);
});
window.uploaderDelete = function(elem) {
var index = elem.getAttribute("data-index");
delete files[index];
draw(files);
}
//Upload things when the upload button is clicked
$("#uploader-upload").on("click", function(evt) {
//First, disable all buttons
$("#uploader button.btn").prop("disabled", true);
var elems = [];
$("#uploader-list .file").each(function() {
var elem = $(this);
elems[elem.data("index")] = elem;
});
//First, create a collection
util.api("collection_create", {
name: ($("#uploader-collection-name").val() || "Collection")
}, function(err, res) {
if (err)
return util.error(err);
var collectionId = res.id;
//Go to collection once files are uploaded, or
//delete the collection if it failed
var a = util.async(files.length, function(res) {
if (res.error) {
util.api("collection_delete", {
id: collectionId
}, function(err, res) {
if (err)
return util.error(err);
util.redirect("/", 5000);
});
} else {
util.redirect("/view?"+collectionId);
}
});
//Loop through files, uploading them
files.forEach(function(f, i) {
var progressBar = elems[i].children(".progress-bar");
//Handle progress bars
function getXhr(xhr) {
xhr.upload.addEventListener("progress", function(evt) {
if (!evt.lengthComputable)
return;
var percent = (evt.loaded / evt.total) * 100;
progressBar.css({width: percent+"%"});
}, false);
}
//Get file extension
var ext = f.name.split(".");
ext = ext[ext.length - 1];
util.api("image_create", {
name: f.name,
description: "An image.",
extension: ext,
collectionId: collectionId,
file: f
}, function(err, res) {
if (err) {
a("error", true);
return util.error(err);
}
a();
}, getXhr);
});
});
});
});