[FIX]Fix header problem in preview table and selection of column if duplicate it...
[odoo/odoo.git] / addons / base / static / src / js / data_import.js
1 openerp.base.data_import = function(openerp) {
2 openerp.base.DataImport = openerp.base.Dialog.extend({
3     init: function(parent, dataset){
4         this._super(parent);
5         this.dataset = dataset;
6     },
7     start: function() {
8         var self = this
9         self._super(false);
10         self.template = 'ImportDataView';
11         self.dialog_title = "Import Data"
12         self.open({
13                     modal: true,
14                     width: '70%',
15                     height: 'auto',
16                     position: 'top',
17                     buttons : {
18                         "Close" : function() {
19                             self.stop();
20                           },
21                         "Import File" : function() {
22                                 self.do_import();
23                           }
24                        },
25                     close: function(event, ui){ self.stop();}
26                    });
27         this.$element.find('#csvfile').change(this.on_autodetect_data);
28         this.$element.find('fieldset').change(this.on_autodetect_data);
29         this.$element.find('fieldset legend').click(function () {
30                 $(this).next().toggle();
31         });
32     },
33     do_import: function() {
34             var self = this;
35             if(!this.$element.find('#csvfile').val()) { return; }
36             this.$element.find('#import_data').attr({
37                 'action': '/base/import/import_data'
38             }).ajaxSubmit({
39                 success: this.import_results
40             });
41     },
42     on_autodetect_data: function() {
43             var self = this;
44             if(this.$element.find("#res td")){
45                 this.$element.find("#res td").remove();
46                 this.$element.find("#imported_success").css('display','none');
47             }
48             if(!this.$element.find('#csvfile').val()) { return; }
49             this.$element.find('#import_data').attr({
50                 'action': '/base/import/detect_data'
51             }).ajaxSubmit({
52                 success: this.import_results
53             });
54     },
55     import_results:function(res){
56         $('#result, #success').empty();
57
58         var results = $.parseJSON(res);
59         var result_node = $("#result");
60         if (results['records']){
61             records = {'header':results['header'],'sel':results['all_fields'],'row':results['records']};
62             result_node.append(QWeb.render('ImportView-result',{'records':records}));
63         }else if(results['error']){
64             result_node.append(QWeb.render('ImportView-result',{'error': results['error']}));
65         }else if(results['success']){
66             var success_node = $("#success");
67             success_node.append(QWeb.render('ImportView-result',{'success': results['success']}));
68         }
69         var mm = [];
70         $("td #sel_field").click(function(){
71             mm = [];
72             $("td #sel_field option:selected").each(function(){
73                 mm.push($(this).index());
74             });
75         });
76         $("td #sel_field").change(function(){
77             $(this).css('background-color','');
78             var kk = this.selectedIndex;
79             if ($.inArray(kk,mm) > -1){
80                 $(this).css('background-color','#FF6666');
81             }else{
82                 $(this).css('background-color','');
83             }
84         });
85     },
86     stop: function() {
87         $(this.$dialog).remove();
88         this._super();
89     }
90 });
91 };