diff options
| author | Xavier Morel <xmo@openerp.com> | 2011-09-22 14:08:10 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2011-09-22 14:08:10 +0200 |
| commit | c3a0d98e1353c382df0e30a8afa2ba5ef15a641a (patch) | |
| tree | d40600177838b8bb7f64efe87368663beb2dee98 /addons/web/static/src/js | |
| parent | a250e39ad337aa3c02b6a2166237c04c125fd7f5 (diff) | |
[FIX] don't declare the file is importable when there are duplicate columns selected
bzr revid: xmo@openerp.com-20110922120810-2fcmntd4w6yh9zvy
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/data_import.js | 30 |
1 files 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 = $('<div id="msg" style="color: red;">Destination fields should only be selected once, some fields are selected more than once:</div>') - .insertBefore(this.$element.find('#result')); + if (_.isEmpty(duplicates)) { + this.toggle_import_button(required_valid); + } else { + var $err = $('<div id="msg" style="color: red;">Destination fields should only be selected once, some fields are selected more than once:</div>').insertBefore(this.$element.find('#result')); var $dupes = $('<dl>').appendTo($err); - _(duplicates).each(function (elements, value) { + _(duplicates).each(function(elements, value) { $('<dt>').text(value).appendTo($dupes); - _(elements).each(function (element) { + _(elements).each(function(element) { var cell = $(element).closest('td'); - $('<dd>').text(cell.parent().children().index(cell)) - .appendTo($dupes); + $('<dd>').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('<div id="message" style="color:red">*Required Fields are not selected : ' + missing_fields + '.</div>'); - this.toggle_import_button(false); - } else { - this.toggle_import_button(true); + return false; } + return true; }, stop: function() { $(this.$dialog).remove(); |
