From c3a0d98e1353c382df0e30a8afa2ba5ef15a641a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 22 Sep 2011 14:08:10 +0200 Subject: [PATCH] [FIX] don't declare the file is importable when there are duplicate columns selected bzr revid: xmo@openerp.com-20110922120810-2fcmntd4w6yh9zvy --- addons/web/static/src/js/data_import.js | 30 ++++++++++++------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/addons/web/static/src/js/data_import.js b/addons/web/static/src/js/data_import.js index 1032af66d03..b2675079ddd 100644 --- a/addons/web/static/src/js/data_import.js +++ b/addons/web/static/src/js/data_import.js @@ -106,9 +106,11 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ on_check_field_values: function (required_fields) { this.$element.find("#message, #msg").remove(); + var required_valid = this.check_required(required_fields); + // Maps values to DOM nodes, in order to discover duplicates var values = {}, duplicates = {}; - this.$element.find(".sel_fields").each(function (index, element) { + this.$element.find(".sel_fields").each(function(index, element) { var value = element.value; var $element = $(element).removeClass('duplicate_fld'); if (!value) { return; } @@ -126,27 +128,24 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ } }); - if (!_.isEmpty(duplicates)) { - var $err = $('
Destination fields should only be selected once, some fields are selected more than once:
') - .insertBefore(this.$element.find('#result')); + if (_.isEmpty(duplicates)) { + this.toggle_import_button(required_valid); + } else { + var $err = $('
Destination fields should only be selected once, some fields are selected more than once:
').insertBefore(this.$element.find('#result')); var $dupes = $('
').appendTo($err); - _(duplicates).each(function (elements, value) { + _(duplicates).each(function(elements, value) { $('
').text(value).appendTo($dupes); - _(elements).each(function (element) { + _(elements).each(function(element) { var cell = $(element).closest('td'); - $('
').text(cell.parent().children().index(cell)) - .appendTo($dupes); + $('
').text(cell.parent().children().index(cell)).appendTo($dupes); }); }); this.toggle_import_button(false); - } else { - this.toggle_import_button(true); } - this.do_check_required(required_fields); }, - do_check_required: function(required_fields) { - if (!required_fields.length) { return; } + check_required: function(required_fields) { + if (!required_fields.length) { return true; } var selected_fields = _(this.$element.find('.sel_fields').get()).chain() .pluck('value') @@ -156,10 +155,9 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ var missing_fields = _.difference(required_fields, selected_fields); if (missing_fields.length) { this.$element.find("#result").before('
*Required Fields are not selected : ' + missing_fields + '.
'); - this.toggle_import_button(false); - } else { - this.toggle_import_button(true); + return false; } + return true; }, stop: function() { $(this.$dialog).remove();