diff --git a/addons/web/static/src/css/data_import.css b/addons/web/static/src/css/data_import.css index 65f2e0b258b..7ae13fcf5ee 100644 --- a/addons/web/static/src/css/data_import.css +++ b/addons/web/static/src/css/data_import.css @@ -16,4 +16,10 @@ border-bottom-width: 1px; margin: 6px 4px 6px 1px; height: 20px; +} +.openerp .duplicate_fld{ + background-color:#FF6666; +} +.openerp .select_fld{ + background: none repeat scroll 0 0 white; } \ No newline at end of file diff --git a/addons/web/static/src/js/data_import.js b/addons/web/static/src/js/data_import.js index 11e62983c47..a9daca20373 100644 --- a/addons/web/static/src/js/data_import.js +++ b/addons/web/static/src/js/data_import.js @@ -75,8 +75,7 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ }, on_import_results:function(results){ var self = this; - this.$element.find('#result, #success , #message').empty(); - + this.$element.find('#result, #success').empty(); var result_node = $("#result"); var records = {}; @@ -92,44 +91,63 @@ openerp.web.DataImport = openerp.web.Dialog.extend({ } } this.do_check_req_field(results['req_field']); - var selected_fields = []; + var selected_fields; this.$element.find("td #sel_field").click(function(){ - selected_fields = []; - self.$element.find("td #sel_field option:selected").each(function(){ - selected_fields.push($(this).index()); + selected_fields = _.map(self.$element.find("td #sel_field"), function(field){ + return field.selectedIndex }); }); + this.on_change_check(selected_fields,results['req_field']); this.$element.find("td #sel_field").change(function(){ - self.$element.find("#message").empty(); - self.$element.find("td #sel_field").css('background-color',''); - self.$element.find(".ui-button-text:contains('Import File')").parent().attr("disabled",false); - self.do_check_req_field(results['req_field']); - var curr_selected = this.selectedIndex; - if ((curr_selected != 0) && _.contains(selected_fields, curr_selected)){ - $(this).css('background-color','#FF6666'); - $("#message").append("*Selected column should not be same."); + self.on_change_check(selected_fields,results['req_field']); + }); + }, + on_change_check:function(selected_fields,req_field){ + var self = this; + self.$element.find("#message, #msg").remove(); + var duplicate_flds = self.$element.find("td #sel_field option:selected"); + _.each(duplicate_flds,function(fld){ + if (fld.index != 0){ + var res = self.$element.find("td #sel_field option:selected[value='"+ fld.value +"']"); + if (res.length == 1){ + res.parent().removeClass("duplicate_fld"); + res.parent().addClass("select_fld"); + }else if(res.length > 1){ + res.parent().removeClass("select_fld"); + res.parent().addClass("duplicate_fld"); + res.parent().focus(); + } + }else{ + var elem = self.$element.find("td #sel_field option:selected[value='"+ fld.value +"']"); + elem.parent().removeClass("duplicate_fld"); + elem.parent().addClass("select_fld"); + } + }); + if(self.$element.find(".duplicate_fld").length){ + $("#result").before('
*Selected column should not be same.
'); $(".ui-button-text:contains('Import File')").parent().attr("disabled",true); }else{ - $(this).css('background-color',''); + self.$element.find("#msg").remove(); $(".ui-button-text:contains('Import File')").parent().attr("disabled",false); } - }); + self.do_check_req_field(req_field); + }, do_check_req_field: function(req_fld){ var self = this; if (req_fld.length){ + self.$element.find("#message").remove(); var sel_fields = _.map(this.$element.find("td #sel_field option:selected"), function(fld){ return fld['text'] }); - var required_fields = _.filter(req_fld, function(fld){ return !_.contains(sel_fields, fld) }); - if (required_fields.length){ - $("#message").append("*Required Fields are not selected which is "+required_fields+". "); + $("#result").before('
*Required Fields are not selected which is '+required_fields+'.
'); $(".ui-button-text:contains('Import File')").parent().attr("disabled",true); }else{ + self.$element.find("#message").remove(); $(".ui-button-text:contains('Import File')").parent().attr("disabled",false); } } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index e103ea0dd43..238edbedb62 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1399,7 +1399,6 @@ -
@@ -1447,7 +1446,7 @@ -