var DDFileUploaderBase;
(function(){
-// nombre maximun d'image chargées en local
-var MAX_PREVIEW = 2;
-var isThumbnail = /.*\/getThumbnail$/;
DDFileUploaderBase = function(dropbox, uploadUrl) {
this.dropbox = dropbox;
- this.existingSlides = this.indexExistingSlides();
this.uploadUrl = uploadUrl;
- this.slideSize = 222;
- this.progressBarMaxSize = 200; // pixels
- this.thumbnailSize = 180;
- this.previewQueue = [];
- this._previewQueueRunning = false;
- this.previewsLoaded = 0;
this.uploadQueue = [];
this._uploadQueueRunning = false;
var self = this;
addListener(dropbox, 'drop', function(evt){self.drop(evt);});
};
-DDFileUploaderBase.prototype.indexExistingSlides = function() {
- var images = this.dropbox.getElementsByTagName('img');
- var i;
- var index = [];
- for (i=0 ; i < images.length ; i++) {
- if (isThumbnail.test(images[i].src)) {
- index[images[i].src] = images[i];
- }
- }
- return index;
-};
-
// Drag and drop
DDFileUploaderBase.prototype.dragenter = function(evt) {
disableDefault(evt);
// Methods about upload
DDFileUploaderBase.prototype.handleFiles = function(files) {
- var file, i, slide;
- for (i = 0; i < files.length; i++) {
- file = files[i];
- slide = this.createSlide(file);
- this.previewQueuePush(slide);
- this.uploadQueuePush(slide);
- }
+ // To be implemented by descendant.
};
DDFileUploaderBase.prototype.upload = function(slide) {
}
};
-// Method about queues
-
-DDFileUploaderBase.prototype.previewQueuePush = function(slide) {
- this.previewQueue.push(slide);
- if (!this._previewQueueRunning) {
- this.startPreviewQueue();
- }
-};
-
-DDFileUploaderBase.prototype.startPreviewQueue = function() {
- this._previewQueueRunning = true;
- this.previewQueueLoadNext();
-};
-
-DDFileUploaderBase.prototype.previewQueueLoadNext = function() {
- if (this.previewQueue.length && this.previewsLoaded < MAX_PREVIEW) {
- var slide = this.previewQueue.shift();
- this.previewUploadedImage(slide);
- this.previewsLoaded++;
- }
- else {
- this._previewQueueRunning = false;
- }
-};
-
+// Methods about queue
DDFileUploaderBase.prototype.uploadQueuePush = function(slide) {
this.uploadQueue.push(slide);
if (!this._uploadQueueRunning) {