summaryrefslogtreecommitdiff
path: root/www/js/importer.js
diff options
context:
space:
mode:
authorPeter Grassberger <petertheone@gmail.com>2016-02-10 21:10:38 (GMT)
committerPeter Grassberger <petertheone@gmail.com>2016-02-10 21:10:38 (GMT)
commit6132cd4f057add2c2d1c1fd360a895baa088f2f0 (patch)
treea8626cf4c49e14c69b87d8a13154c86581b780e2 /www/js/importer.js
parentb1821ae253555aea1e840d4809b1c144a7f5fc15 (diff)
refactor importer: cancel import, shows import, etc.
Diffstat (limited to 'www/js/importer.js')
-rw-r--r--www/js/importer.js213
1 files changed, 118 insertions, 95 deletions
diff --git a/www/js/importer.js b/www/js/importer.js
index ab702e5..fbf4955 100644
--- a/www/js/importer.js
+++ b/www/js/importer.js
@@ -32,24 +32,18 @@ Rivendell.Importer = function() {
Rivendell.Importer.prototype.resetModal = function() {
$('div.modal-header h4', this.$el).text("Datei auswählen...");
- $('.modal-body', this.$el).css("background-image", "url('/img/dz-backdrop.png')");
+ $('.modal-body', this.$el).empty().css("background-image", "url('/img/dz-backdrop.png')");
$('#uploadModal-confirm', this.$el).attr('disabled','disabled').off('click');
};
-Rivendell.Importer.prototype.openModal = function(group, groupView, createCart, useMetadata) {
- this.resetModal();
-
- if (createCart === undefined) {
- createCart = false;
- }
+Rivendell.Importer.prototype.openModal = function(group, groupView, createCart, newCartNumber, useMetadata) {
+ createCart = typeof createCart === 'undefined' ? false : createCart;
+ useMetadata = typeof useMetadata === 'undefined' ? false : useMetadata;
- if (useMetadata === undefined) {
- useMetadata = false;
- }
+ this.resetModal();
+ $('.modal-body', this.$el).append($('<form>'));
- var $form = $('<form>');
- var self = this;
- var dropzone = $form.dropzone({
+ var dropzone = new Dropzone('#uploadModal form', {
url: '/rd-bin/rdxport.cgi',
parallelUploads: 1,
maxFilesize: 2048,
@@ -58,98 +52,133 @@ Rivendell.Importer.prototype.openModal = function(group, groupView, createCart,
clickable: true,
createImageThumbnails: false,
acceptedFiles: '.flac,.wav,.ogg,.mp3',
- autoProcessQueue: false,
- init: function() {
- this.on('addedfile', function(file) {
- self.importFileAdded(this, file, group, groupView, createCart, useMetadata);
- });
- }
+ autoProcessQueue: false
});
- this.uploads.push(dropzone);
+ var self = this;
+ dropzone.on('addedfile', function(file) {
+ $('div.modal-header h4', self.$el).text(file.name);
+ $('div.modal-body', self.$el).css("background-image", "url('/img/audio_file.png')");
+
+ $('#uploadModal-confirm', self.$el).off('click').on('click', function() {
+ var upload = new Rivendell.Upload(group, groupView, createCart, newCartNumber, useMetadata, dropzone);
+ self.uploads.push(upload);
- $('.modal-body', this.$el).empty().append($form);
+ self.$el.modal('hide');
+ })
+ .removeAttr('disabled');
+ });
this.$el.modal({keyboard: true});
};
-Rivendell.Importer.prototype.importFileAdded = function(dropzone, file, group, groupView, createCart, useMetadata) {
- // wtf? remove accepted files?
- /*$(dropzone.getAcceptedFiles()).each(function(index, elem) {
- dropzone.removeFile(elem);
- });*/
-
- $('div.modal-body', this.$el).css("background-image", "url('/img/audio_file.png')");
- $('div.modal-header h4', this.$el).text(file.name);
+Rivendell.Importer.prototype.cancelAllUploads = function() {
+ var self = this;
+ $.each(this.uploads, function(index, upload){
+ upload.cancel();
+ });
+};
+Rivendell.Importer.prototype.removeUpload = function(upload) {
var self = this;
- $('#uploadModal-confirm', this.$el).off('click').on('click', function() {
- self.importCartConfirm(dropzone, group, groupView, createCart, useMetadata);
- }).removeAttr('disabled');
+ $.each(this.uploads, function(index, currentUpload){
+ if(currentUpload === upload) {
+ self.uploads.splice(index, 1);
+ }
+ });
};
-Rivendell.Importer.prototype.importCartConfirm = function(dropzone, group, groupView, createCart, useMetadata) {
- this.$el.modal('hide');
+Rivendell.Upload = function(group, groupView, createCart, newCartNumber, useMetadata, dropzone) {
+ this.group = group;
+ this.groupView = groupView;
+ this.createCart = createCart;
+ this.newCartNumber = newCartNumber;
+ this.useMetadata = useMetadata;
+ this.dropzone = dropzone;
+
+ this.cart = null;
+ this.cut = null;
+
+ this.import();
+};
+
+Rivendell.Upload.prototype.cancel = function() {
+ this.dropzone.removeAllFiles();
+ this.dropzone.disable();
+
+ var self = this;
+ if (this.createCart && this.cart !== null) {
+ rdxport.removeCart(this.cart.number, function() {
+ self.group.fetchCarts();
+ });
+ this.cart = null;
+ } else if (this.cart !== null && this.cut !== null) {
+ rdxport.removeCut(this.cart.number, this.cut.number, function() {
+ self.group.fetchCarts();
+ });
+ this.cut = null;
+ }
- //var cart_row = $('#show-cart-' + cart);
- //cart_row.find('.btn').attr('disabled','disabled');
- //var importing_row = jingles_newImportingEntry(cart);
- //importing_row.find('button').unbind('click').click(function() { jingles_importCartCancel(cart, dropzone); });
- //cart_row.replaceWith(importing_row);
+ importer.removeUpload(this);
+};
- var files = dropzone.getAcceptedFiles();
- //importing_row.find('.file-name').text(files[0].name);
- //jingles_importUpdateProgress(files[0], importing_row);
+Rivendell.Upload.prototype.import = function() {
var self = this;
- dropzone.on('uploadprogress', function(file) {
- groupView.uploadProgress(file);
+
+ this.dropzone.off('uploadprogress').on('uploadprogress', function(file) {
+ self.groupView.uploadProgress(self, file);
});
- dropzone.on('success', function(file) {
- self.importFileUploadSuccess(dropzone, file, group);
+ this.dropzone.off('success').on('success', function(file) {
+ self.importFileUploadSuccess();
});
- dropzone.off('error').on('error', function(file, msg, xhr) {
- self.importFileUploadError(this, file, msg, xhr);
+ this.dropzone.off('error').on('error', function(file, msg, xhr) {
+ self.importFileUploadError(file, msg, xhr);
});
- /*$(files).each(function(index, file) {
- self.importAddCut(dropzone, group, file);
- });*/
-
- if (createCart) {
- rdxport.addCart(group.groupName, 'audio', null, function(cartXML) {
- var cart = new Rivendell.Cart(cartXML, group);
- self.importAddCut(dropzone, group, files[0], createCart, cart, useMetadata);
+ // debug
+ //self.importFileUploadError({cartNumber: 100000}, '<?xml version="1.0" encoding="UTF-8"?><woot><ResponseCode>123</ResponseCode><ErrorString>Fake error</ErrorString></woot>', null);
+
+ this.addCart(function(file) {
+ self.addCut(file);
+ });
+};
+
+Rivendell.Upload.prototype.addCart = function(success) {
+ var files = this.dropzone.getAcceptedFiles();
+
+ var self = this;
+ if (this.createCart) {
+ rdxport.addCart(this.group.groupName, 'audio', this.newCartNumber, function(cartXML) {
+ self.cart = new Rivendell.Cart(cartXML, self.group);
+ success(files[0]);
+ }).fail(function() {
+ //self.importFileUploadError(files[0], 'Failed to add Cart.');
});
} else {
- var cart = group.mainCart;
- self.importAddCut(dropzone, group, files[0], createCart, cart, useMetadata);
+ this.cart = this.group.carts[0];
+ success(files[0]);
}
};
-Rivendell.Importer.prototype.importFileUploadSuccess = function(dropzone, file, group) {
- dropzone.disable();
- this.uploads = $.grep(this.uploads, function(element) {
- return element !== dropzone;
- });
- group.fetchCarts();
+Rivendell.Upload.prototype.importFileUploadSuccess = function() {
+ this.dropzone.removeAllFiles();
+ this.dropzone.disable();
+
+ this.group.fetchCarts();
+
+ importer.removeUpload(this);
};
-Rivendell.Importer.prototype.importFileUploadError = function(dropzone, file, msg, xhr) {
- //var error_row = jingles_newImportErrorEntry(cart, msg);
- //error_row.find('button').unbind('click').click(function() {
- //jingles_deleteCart(cart);
- //});
- //$('#show-cart-' + cart).replaceWith(error_row);
- //error_row.find('.file-name').text(file.name);
- dropzone.removeFile(file);
- dropzone.disable();
- this.uploads = $.grep(this.uploads, function(element) {
- return element !== dropzone;
- });
+Rivendell.Upload.prototype.importFileUploadError = function(file, msg, xhr) {
+ this.groupView.uploadError(self, file, msg);
+ this.cancel();
};
-Rivendell.Importer.prototype.importAddCut = function(dropzone, group, file, createCart, cart, useMetadata) {
- rdxport.addAndEditCut(cart.number, {DESCRIPTION: file.name}, function(cutXml) {
- group.fetchCarts();
- dropzone.on('sending', function(file, xhr, formData) {
+Rivendell.Upload.prototype.addCut = function(file) {
+ var self = this;
+
+ rdxport.addAndEditCut(this.cart.number, {DESCRIPTION: file.name}, function(cutXml) {
+ self.cut = new Rivendell.Cut(cutXml, self.cart);
+
+ self.dropzone.on('sending', function(file, xhr, formData) {
var cutNumber = $('cutNumber', cutXml).text();
var cutNumberLeading = cutNumber;
switch (cutNumber.toString().length) {
@@ -158,28 +187,22 @@ Rivendell.Importer.prototype.importAddCut = function(dropzone, group, file, crea
case 2: cutNumberLeading = '0' + cutNumber; break;
case 3: default: cutNumberLeading = cutNumber; break;
}
- file.cartNumber = cart.number;
+ file.cartNumber = self.cart.number;
file.cutNumber = cutNumberLeading;
formData.append('COMMAND', 2);
formData.append('LOGIN_NAME', auth_username);
formData.append('PASSWORD', auth_token);
- formData.append('CART_NUMBER', cart.number);
+ formData.append('CART_NUMBER', self.cart.number);
formData.append('CUT_NUMBER', cutNumber);
formData.append('CHANNELS', 2);
- formData.append('NORMALIZATION_LEVEL', cart.normlevel);
- formData.append('AUTOTRIM_LEVEL', cart.trimlevel);
- if (useMetadata) {
- formData.append('USE_METADATA', 1);
- } else {
- formData.append('USE_METADATA', 0);
- }
+ formData.append('NORMALIZATION_LEVEL', self.cart.normlevel);
+ formData.append('AUTOTRIM_LEVEL', self.cart.trimlevel);
+ formData.append('USE_METADATA', (self.useMetadata ? 1 : 0));
});
- dropzone.processQueue();
- }).fail(function(xhr, status, err) {
- self.importFileUploadError(dropzone, file, err, xhr);
- if (createCart) {
- rdxport.removeCart(cart.number);
- }
+
+ self.dropzone.processQueue();
+ self.group.fetchCarts();
+
});
};