Actually use tus :D

This commit is contained in:
Kevin van Zonneveld 2015-12-21 14:03:02 +01:00
parent e578feba47
commit bb28fa487e
7 changed files with 63 additions and 35 deletions

View file

@ -44,8 +44,9 @@ export default class {
// Runs a waterfall of runType plugin packs, like so:
// All preseters(data) --> All selecters(data) --> All uploaders(data) --> done
run() {
console.dir({
method: 'Core.run'
console.log({
class : 'Core',
method : 'run'
});
// First we select only plugins of current type,

View file

@ -17,8 +17,6 @@ export default class DragDrop extends Plugin {
this.opts = defaultOptions;
Object.assign(this.opts, opts);
console.log(this.opts);
// get the element where Drag & Drop event will occur
this.dropzone = document.querySelectorAll(this.opts.selector)[0];
this.dropzoneInput = document.querySelectorAll('.UppyDragDrop-input')[0];
@ -125,14 +123,12 @@ export default class DragDrop extends Plugin {
}
run(results) {
console.log('DragDrop running!');
// console.log(results);
console.log({
class : 'DragDrop',
method : 'run',
results: results
});
return this.listenForEvents();
// this.core.setProgress(this, 0);
// var selected = [ {name: 'lolcat.jpeg'} ];
// this.core.setProgress(this, 100);
// return selected;
// done(null, 'done with DragDrop');
// return Promise.resolve(files);
}
}

View file

@ -82,7 +82,7 @@ export default class Dropbox extends Plugin {
if (type === 'file') {
element.addEventListener('click', () => {
this.files.push(element.getAttribute('data-name'));
console.dir(`files: ${this.files}`);
console.log(`files: ${this.files}`);
});
} else {
element.addEventListener('dblclick', () => {

View file

@ -7,8 +7,11 @@ export default class Formtag extends Plugin {
}
run(results) {
console.log(results);
console.log(this.opts);
console.log({
class : 'Formtag',
method : 'run',
results: results
});
this.core.setProgress(this, 0);

View file

@ -10,6 +10,12 @@ export default class Plugin {
}
extractFiles(results) {
console.log({
class : 'Plugin',
method : 'extractFiles',
results: results
});
const files = [];
for (let i in results) {
for (let j in results[i].files) {
@ -17,12 +23,6 @@ export default class Plugin {
}
}
console.log({
method : 'extractFiles',
results: results,
files : files
});
return files;
}

View file

@ -1,5 +1,5 @@
import Plugin from './Plugin';
import Tus from 'tus-js-client';
import tus from 'tus-js-client';
export default class Tus10 extends Plugin {
constructor(core, opts) {
@ -8,23 +8,51 @@ export default class Tus10 extends Plugin {
}
run(results) {
console.log({tusRunReceived: results});
console.log({
class : 'Tus10',
method : 'run',
results: results
});
const files = this.extractFiles(results);
this.core.setProgress(this, 0);
var uploaded = [];
var uploaded = [];
var uploaders = [];
for (var i in files) {
var file = files[i];
this.core.setProgress(this, (i * 1) + 1);
console.log(file);
uploaded[i] = file;
uploaded[i].url = this.opts.endpoint + '/uploaded/' + file.name;
uploaders.push(this.upload(file, i, files.length));
}
this.core.setProgress(this, 100);
console.log('done with Tus');
return Promise.resolve(uploaded);
return Promise.all(uploaders);
}
upload(file, current, total) {
// Create a new tus upload
var upload = new tus.Upload(file, {
endpoint: this.opts.endpoint,
onError: function (error) {
return Promise.reject('Failed because: ' + error);
},
onProgress: function (bytesUploaded, bytesTotal) {
var percentage = (bytesUploaded / bytesTotal * 100).toFixed(2);
var percentageOfTotal = (percentage / total);
var progressedAlready = percentageOfTotal;
if (current > 0) {
progressedAlready = progressedAlready + (100/total*current);
} else {
progressedAlready = (current * percentage);
}
this.core.setProgress(this, progressedAlready);
},
onSuccess: function () {
console.log('Download %s from %s', upload.file.name, upload.url);
return Promise.resolve(upload);
}
});
// Start the upload
upload.start();
}
}

View file

@ -5,9 +5,9 @@
# Uppy versions, auto updated by update.js
uppy_version: 0.0.1
uppy_dev_size: "77.69"
uppy_min_size: "77.69"
uppy_gz_size: "77.69"
uppy_dev_size: "78.46"
uppy_min_size: "78.46"
uppy_gz_size: "78.46"
# Theme
google_analytics: UA-63083-12