summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-09-22 14:08:10 +0200
committerXavier Morel <xmo@openerp.com>2011-09-22 14:08:10 +0200
commitc3a0d98e1353c382df0e30a8afa2ba5ef15a641a (patch)
treed40600177838b8bb7f64efe87368663beb2dee98 /addons/web/static/src
parenta250e39ad337aa3c02b6a2166237c04c125fd7f5 (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')
-rw-r--r--addons/web/static/src/js/data_import.js30
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();