From 521e2891f5d536e52193e0b007b70fce0247b332 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 7 Jul 2011 15:31:04 +0530 Subject: [ADD] add base_export module. bzr revid: ysa@tinyerp.com-20110707100104-3trko5x1njl1huhp --- addons/base/static/src/js/views.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 23cd43c0efd..8a04e73f6a6 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -161,6 +161,16 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ self.on_controller_inited(view_type, controller); }); this.views[view_type].controller = controller; + if(this.flags && this.flags.sidebar) { + if(this.active_view == 'list' || this.active_view == 'form') { + this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) + this.$element.find('#exportview').click(function(ev) { + var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); + export_view.start(); + ev.preventDefault(); + }); + } + } } @@ -191,7 +201,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ }, /** * Event launched when a controller has been inited. - * + * * @param {String} view_type type of view * @param {String} view the inited controller */ @@ -482,7 +492,7 @@ openerp.base.View = openerp.base.Controller.extend({ * Directly set a view to use instead of calling fields_view_get. This method must * be called before start(). When an embedded view is set, underlying implementations * of openerp.base.View must use the provided view instead of any other one. - * + * * @param embedded_view A view. */ set_embedded_view: function(embedded_view) { -- cgit v1.2.3 From 13e6ddd9849898f965493453bf9d2a2665a42310 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 13 Jul 2011 11:36:46 +0530 Subject: [IMP] bind click event of remove field and remove all field button, also remove field on selection box. bzr revid: ysa@tinyerp.com-20110713060646-d21a13gb90ii9ihl --- addons/base/static/src/js/chrome.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index ebaf457daa2..20f952798e4 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -269,7 +269,7 @@ openerp.base.BasicController = Class.extend( /** @lends openerp.base.BasicContro /** * Generates an inherited class that replaces all the methods by null methods (methods * that does nothing and always return undefined). - * + * * @param {Class} claz * @param {dict} add Additional functions to override. * @return {Class} @@ -579,7 +579,7 @@ openerp.base.Controller = openerp.base.BasicController.extend( /** @lends opener element_post_prefix: false }, /** - * Controller registry, + * Controller registry, */ controller_registry: { }, @@ -676,14 +676,14 @@ openerp.base.BaseWidget = openerp.base.Controller.extend({ /** * The name of the QWeb template that will be used for rendering. Must be * redefined in subclasses or the render() method can not be used. - * + * * @type string */ template: null, /** * The prefix used to generate an id automatically. Should be redefined in * subclasses. If it is not defined, a default identifier will be used. - * + * * @type string */ identifier_prefix: 'generic-identifier', @@ -741,7 +741,7 @@ openerp.base.BaseWidget = openerp.base.Controller.extend({ /** * Set the parent of this component, also un-register the previous parent * if there was one. - * + * * @param {openerp.base.BaseWidget} parent The new parent. */ set_parent: function(parent) { @@ -756,7 +756,7 @@ openerp.base.BaseWidget = openerp.base.Controller.extend({ /** * Render the widget. This.template must be defined. * The content of the current object is passed as context to the template. - * + * * @param {object} additional Additional context arguments to pass to the template. */ render: function (additional) { @@ -1135,7 +1135,7 @@ openerp.base.WebClient = openerp.base.Controller.extend({ on_logged: function() { this.action_manager = new openerp.base.ActionManager(this.session, "oe_app"); this.action_manager.start(); - + // if using saved actions, load the action and give it to action manager var parameters = jQuery.deparam(jQuery.param.querystring()); if(parameters["s_action"] != undefined) { -- cgit v1.2.3 From 8b5f33ad159e4652185a56b1aebfb5344985be3e Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Wed, 13 Jul 2011 14:32:18 +0530 Subject: [IMP] improve code and extend openerp.base.Dialog class and used this class for export dialog. bzr revid: ysa@tinyerp.com-20110713090218-aw9akqd48aey4w2h --- addons/base/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index da50e62c713..7f80046e645 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -169,7 +169,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); - export_view.start(); + export_view.start(false); ev.preventDefault(); }); } -- cgit v1.2.3 From 5a09e97754228fa8c2f9ed337c6f7951a962d7d5 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 18 Jul 2011 11:54:59 +0530 Subject: [IMP] imporve display export button in list and form view. bzr revid: ysa@tinyerp.com-20110718062459-2kf2z0zmgoes4ied --- addons/base/static/src/js/views.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 5efe27c7e21..07f1ce406f1 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -157,16 +157,6 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ self.on_controller_inited(view_type, controller); }); this.views[view_type].controller = controller; - if(this.flags && this.flags.sidebar) { - if(this.active_view == 'list' || this.active_view == 'form') { - this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) - this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); - export_view.start(false); - ev.preventDefault(); - }); - } - } } @@ -193,6 +183,20 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ } } } + if(this.flags && this.flags.sidebar) { + if(this.$element.find('#exportview')){ + this.$element.find('#exportview').remove() + } + if(this.active_view == 'list' || this.active_view == 'form') { + console.log("this.views[this.active_view].controller.$element::",this.views[this.active_view].controller.$element) + this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) + this.$element.find('#exportview').click(function(ev) { + var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); + export_view.start(false); + ev.preventDefault(); + }); + } + } return view_promise; }, /** -- cgit v1.2.3 From 530f4361863e01162f60a0549cbcf5cc568d694d Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 18 Jul 2011 12:05:25 +0530 Subject: Remove console log. bzr revid: ysa@tinyerp.com-20110718063525-0gsycc588oqmefzi --- addons/base/static/src/js/views.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 07f1ce406f1..3c566d64145 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -188,7 +188,6 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ this.$element.find('#exportview').remove() } if(this.active_view == 'list' || this.active_view == 'form') { - console.log("this.views[this.active_view].controller.$element::",this.views[this.active_view].controller.$element) this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); -- cgit v1.2.3 From 001b539ee8c856b1052a23f73c3ba76c9b0bd7cb Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 19 Jul 2011 12:00:41 +0530 Subject: [FIX] fix problem. bzr revid: ysa@tinyerp.com-20110719063041-rwfcflad0vb91s12 --- addons/base/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index fa00607a68a..ce53db4c7b3 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -187,7 +187,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ if(this.active_view == 'list' || this.active_view == 'form') { this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base_export.Export(self.session, self.dataset, self.views); + var export_view = new openerp.base_export.Export(self, self.dataset); export_view.start(false); ev.preventDefault(); }); -- cgit v1.2.3 From dd8e7dd165f82798cbfe7ef4fe7878694829db05 Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Tue, 19 Jul 2011 18:02:09 +0530 Subject: [IMP] implement onchange method of exoprt type field and change the tree structure of export fields. bzr revid: ysa@tinyerp.com-20110719123209-kvuqo2s4y57zx3br --- addons/base/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index ce53db4c7b3..03056709043 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -187,7 +187,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ if(this.active_view == 'list' || this.active_view == 'form') { this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base_export.Export(self, self.dataset); + var export_view = new openerp.base_export.Export(self, self.dataset, self.views); export_view.start(false); ev.preventDefault(); }); -- cgit v1.2.3 From 7ff6fafdaf7e665fd29ba6ba55bb76c3088e45ea Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Fri, 22 Jul 2011 18:22:14 +0530 Subject: [MOVE] move export related functionality base_export to base module. bzr revid: ysa@tinyerp.com-20110722125214-3lrqho65skbzokcy --- addons/base/static/src/js/base.js | 3 + addons/base/static/src/js/export.js | 409 ++++++++++++++++++++++++++++++++++++ addons/base/static/src/js/views.js | 5 +- 3 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 addons/base/static/src/js/export.js (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/base.js b/addons/base/static/src/js/base.js index 28022f8b764..8e593de5949 100644 --- a/addons/base/static/src/js/base.js +++ b/addons/base/static/src/js/base.js @@ -87,6 +87,9 @@ openerp.base = function(instance) { if (openerp.base.view_tree) { openerp.base.view_tree(instance); } + if (openerp.base.export) { + openerp.base.export(instance); + } }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js new file mode 100644 index 00000000000..e12ba0e613c --- /dev/null +++ b/addons/base/static/src/js/export.js @@ -0,0 +1,409 @@ +openerp.base.export = function(openerp) { +openerp.base.Export = openerp.base.Dialog.extend({ + + init: function(parent, dataset, views){ + this._super(parent); + this.dataset = dataset + this.views = views + this.views_id = {}; + for (var key in this.views) { + this.views_id[key] = this.views[key].view_id + } + }, + + start: function() { + var self = this + self._super(false); + self.template = 'ExportTreeView'; + self.dialog_title = "Export Data " + self.open({ + modal: true, + width: '55%', + height: 'auto', + position: 'top', + buttons : { + "Close" : function() { + self.close(); + }, + "Export To File" : function() { + self.on_click_export_data(); + } + }, + close: function(event, ui){ self.close();} + }); + this.on_show_exists_export_list(); + jQuery(this.$dialog).removeClass('ui-dialog-content ui-widget-content'); + $('#add_field').click(function(){ + if($("#field-tree-structure tr.ui-selected")){ + var fld = $("#field-tree-structure tr.ui-selected").find('a'); + for (var i=0;i 0){ + $("#saved_export_list").append( new Option(value, exp_id)); + } + else{ + self.on_show_exists_export_list(); + } + if($("#saved_export_list").is(":hidden")){ + self.on_show_exists_export_list(); + } + } + }); + self.on_show_save_list() + $("#fields_list option").remove(); + } + }, + + on_click: function(id, result) { + var self = this + self.field_id = id.split("-")[1]; + var model = '' + var prefix = '' + var name = '' + var is_loaded = 0; + _.each(result, function(record) { + if(record['id'] == self.field_id && (record['children']).length >= 1){ + model = record['params']['model'] + prefix = record['params']['prefix'] + name = record['params']['name'] + $(record['children']).each (function(e, childid) { + if ($("tr[id='treerow-" + childid +"']").length > 0) { + if ($("tr[id='treerow-" + childid +"']").is(':hidden')) { + is_loaded = -1; + } else { + is_loaded++; + } + } + }); + if (is_loaded == 0) { + if ($("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { + if (model){ + import_comp = $("#import_compat option:selected").val() + var params = {"import_compat":parseInt(import_comp), "views_id": this.views_id, "parent_field_type" : record['field_type']} + self.rpc("/base/export/get_fields", {"model": model, "prefix": prefix, "name": name, "field_parent" : self.field_id, "params":params}, function (results) { + self.on_show_data(results); + }); + } + } + } else if (is_loaded > 0) { + self.showcontent(self.field_id, true); + } else { + self.showcontent(self.field_id, false); + } + } + + }); + }, + + on_show_data: function(result) { + var self = this; + var current_tr = $("tr[id='treerow-" + self.field_id + "']"); + if (current_tr.length >= 1){ + current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); + current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); + } + else{ + $('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); + } + _.each(result, function(record) { + if(record.field_type == "one2many"){ + var o2m_fld = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + o2m_fld.addClass("readonlyfield"); + } + if ((record.required == true) || record.required == "True"){ + var required_fld = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + required_fld.addClass("requiredfield"); + } + $("img[id ^='parentimg-" + record.id +"']").click(function(){ + self.on_click(this.id, result); + }); + + $("tr[id^='treerow-" + record.id + "']").click(function(e){ + if (e.shiftKey == true){ + var frst_click,scnd_click = ''; + if (self.row_index == 0){ + self.row_index = this.rowIndex; + frst_click = $("tr[id^='treerow-']")[self.row_index-1]; + $(frst_click).addClass("ui-selected"); + }else{ + if (this.rowIndex >=self.row_index){ + for (i = (self.row_index-1); i < this.rowIndex; i++) { + scnd_click = $("tr[id^='treerow-']")[i]; + if(!$(scnd_click).find('#tree-column').hasClass("readonlyfield")){ + $(scnd_click).addClass("ui-selected"); + } + } + }else{ + for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { + scnd_click = $("tr[id^='treerow-']")[i]; + if(!$(scnd_click).find('#tree-column').hasClass("readonlyfield")){ + $(scnd_click).addClass("ui-selected"); + } + } + } + } + } + self.row_index = this.rowIndex; + + $("tr[id^='treerow-" + record.id + "']").keyup(function (e) { + self.row_index = 0; + }); + var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + if ($(o2m_selection).hasClass("readonlyfield")){ + return false; + } + var selected = $("tr.ui-selected"); + if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + $(this).find('a').blur(); + $(this).removeClass("ui-selected"); + }else if($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + selected.find('a').blur(); + selected.removeClass("ui-selected"); + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + selected.find('a').blur(); + selected.removeClass("ui-selected"); + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + } + return false; + }); + + $("tr[id^='treerow-" + record.id + "']").keydown(function (e) { + var keyCode = e.keyCode || e.which; + arrow = {left: 37, up: 38, right: 39, down: 40 }; + switch (keyCode) { + case arrow.left: + if( jQuery(this).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ + self.on_click(this.id, result); + } + break; + case arrow.up: + var elem = this; + $(elem).removeClass("ui-selected"); + while($(elem).prev().is(":visible") == false){ + elem = $(elem).prev(); + } + if(!$(elem).prev().find('#tree-column').hasClass("readonlyfield")){ + $(elem).prev().addClass("ui-selected"); + } + $(elem).prev().find('a').focus(); + break; + case arrow.right: + if( jQuery(this).find('img').attr('src') == '/base/static/src/img/expand.gif'){ + self.on_click(this.id, result); + } + break; + case arrow.down: + var elem = this; + $(elem).removeClass("ui-selected"); + while($(elem).next().is(":visible") == false){ + elem = $(elem).next(); + } + if(!$(elem).next().find('#tree-column').hasClass("readonlyfield")){ + $(elem).next().addClass("ui-selected"); + } + $(elem).next().find('a').focus(); + break; + } + }); + $("tr[id^='treerow-" + record.id + "']").dblclick(function (e) { + var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + if (! $(o2m_selection).hasClass("readonlyfield")){ + var field_id = $(this).find("a").attr("id"); + if(field_id){ + self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")) + } + } + }); + }); + $('#fields_list').mouseover(function(event){ + if(event.relatedTarget){ + if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ + field_id = event.relatedTarget.attributes["id"]["value"] + if (field_id && field_id.split("-")[0] == 'export'){ + if(!$("tr[id^='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("readonlyfield")){ + self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); + } + } + } + } + }); + }, + + // show & hide the contents + showcontent: function (id, flag) { + var first_child = $("tr[id='treerow-" + id + "']").find('img') + if (flag) { + first_child.attr('src', '/base/static/src/img/expand.gif'); + } + else { + first_child.attr('src', '/base/static/src/img/collapse.gif'); + } + var child_field = $("tr[id^='treerow-" + id +"/']") + var child_len = (id.split("/")).length + 1 + for (var i = 0; i < child_field.length; i++) { + if (flag) { + $(child_field[i]).hide(); + } + else { + if(child_len == (child_field[i].id.split("/")).length){ + if( jQuery(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ + jQuery(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif') + } + $(child_field[i]).show(); + } + } + } + }, + + add_field: function(field_id, string) { + var field_list = $('#fields_list') + if ( $("#fields_list option[value='" + field_id + "']") && !$("#fields_list option[value='" + field_id + "']").length){ + field_list.append( new Option(string, field_id)); + } + }, + + get_fields: function (){ + var export_field = []; + $("#fields_list option").each(function(){ + export_field.push(jQuery(this).val()); + }); + if (! export_field.length){ + alert('Please select fields to save export list...'); + } + return export_field; + }, + on_click_export_data: function(){ + var self = this; + var export_field = {}; + var flag = true; + $("#fields_list option").each(function(){ + export_field[jQuery(this).val()] = jQuery(this).text(); + flag = false; + }); + if (flag){ + alert('Please select fields to export...'); + return; + } + + import_comp = $("#import_compat option:selected").val() + export_format = $("#export_format").val() + + self.rpc("/base/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp), "export_format" :export_format}, function(data){ + window.location="data:text/csv/excel;charset=utf8," + data + self.close(); + }); + }, + + close: function() { + jQuery(this.$dialog).remove(); + this._super(); + }, + +}); + +}; diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 0f520cab13d..0d8539d6292 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -200,7 +200,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ if(this.active_view == 'list' || this.active_view == 'form') { this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base_export.Export(self, self.dataset, self.views); + var export_view = new openerp.base.Export(self, self.dataset, self.views); export_view.start(false); ev.preventDefault(); }); @@ -417,6 +417,7 @@ openerp.base.Sidebar = openerp.base.BaseWidget.extend({ openerp.base.NullSidebar = openerp.base.generate_null_object_class(openerp.base.Sidebar); +/* openerp.base.Export = openerp.base.Dialog.extend({ dialog_title: "Export", template: 'ExportDialog', @@ -435,7 +436,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ this.$element.dialog("close"); } }); - +*/ openerp.base.View = openerp.base.Controller.extend({ /** * Fetches and executes the action identified by ``action_data``. -- cgit v1.2.3 From 509aaab131b6f0485bac50aaf18dbf8eb8bdcd7e Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Mon, 25 Jul 2011 11:08:04 +0530 Subject: [FIX] fix some selector problem. bzr revid: ysa@tinyerp.com-20110725053804-naq7vcrzg8kjrzl3 --- addons/base/static/src/js/export.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js index e12ba0e613c..0f7db81f6d4 100644 --- a/addons/base/static/src/js/export.js +++ b/addons/base/static/src/js/export.js @@ -1,6 +1,5 @@ openerp.base.export = function(openerp) { openerp.base.Export = openerp.base.Dialog.extend({ - init: function(parent, dataset, views){ this._super(parent); this.dataset = dataset @@ -206,18 +205,18 @@ openerp.base.Export = openerp.base.Dialog.extend({ } _.each(result, function(record) { if(record.field_type == "one2many"){ - var o2m_fld = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + var o2m_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); o2m_fld.addClass("readonlyfield"); } if ((record.required == true) || record.required == "True"){ - var required_fld = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + var required_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); required_fld.addClass("requiredfield"); } - $("img[id ^='parentimg-" + record.id +"']").click(function(){ + $("img[id='parentimg-" + record.id +"']").click(function(){ self.on_click(this.id, result); }); - $("tr[id^='treerow-" + record.id + "']").click(function(e){ + $("tr[id='treerow-" + record.id + "']").click(function(e){ if (e.shiftKey == true){ var frst_click,scnd_click = ''; if (self.row_index == 0){ @@ -244,10 +243,10 @@ openerp.base.Export = openerp.base.Dialog.extend({ } self.row_index = this.rowIndex; - $("tr[id^='treerow-" + record.id + "']").keyup(function (e) { + $("tr[id='treerow-" + record.id + "']").keyup(function (e) { self.row_index = 0; }); - var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + var o2m_selection = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); if ($(o2m_selection).hasClass("readonlyfield")){ return false; } @@ -272,7 +271,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ return false; }); - $("tr[id^='treerow-" + record.id + "']").keydown(function (e) { + $("tr[id='treerow-" + record.id + "']").keydown(function (e) { var keyCode = e.keyCode || e.which; arrow = {left: 37, up: 38, right: 39, down: 40 }; switch (keyCode) { @@ -310,7 +309,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ break; } }); - $("tr[id^='treerow-" + record.id + "']").dblclick(function (e) { + $("tr[id='treerow-" + record.id + "']").dblclick(function (e) { var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); if (! $(o2m_selection).hasClass("readonlyfield")){ var field_id = $(this).find("a").attr("id"); @@ -325,7 +324,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ field_id = event.relatedTarget.attributes["id"]["value"] if (field_id && field_id.split("-")[0] == 'export'){ - if(!$("tr[id^='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("readonlyfield")){ + if(!$("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("readonlyfield")){ self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); } } -- cgit v1.2.3 From 883380866e8917594525a7a0877f56729df8f238 Mon Sep 17 00:00:00 2001 From: "Kunal Chavda (OpenERP)" Date: Mon, 25 Jul 2011 11:36:32 +0530 Subject: [FIX]Fix code for o2m field should readonly if import compatible option select. bzr revid: kch@tinyerp.com-20110725060632-uj2bkmg31k3gby70 --- addons/base/static/src/js/export.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js index 0f7db81f6d4..ff8e8604348 100644 --- a/addons/base/static/src/js/export.js +++ b/addons/base/static/src/js/export.js @@ -195,6 +195,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ on_show_data: function(result) { var self = this; + var imp_cmpt = parseInt($("#import_compat option:selected").val()); var current_tr = $("tr[id='treerow-" + self.field_id + "']"); if (current_tr.length >= 1){ current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); @@ -204,7 +205,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ $('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); } _.each(result, function(record) { - if(record.field_type == "one2many"){ + if((record.field_type == "one2many") && imp_cmpt){ var o2m_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); o2m_fld.addClass("readonlyfield"); } -- cgit v1.2.3 From e766d1892f3c3aaacebef4c180794c2757bffffc Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 28 Jul 2011 10:49:53 +0530 Subject: In css the convention is to prepend all css declarations with .openerp. bzr revid: ysa@tinyerp.com-20110728051953-cpjaae65bgrfr8cf --- addons/base/static/src/js/export.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js index ff8e8604348..8fe42f900d1 100644 --- a/addons/base/static/src/js/export.js +++ b/addons/base/static/src/js/export.js @@ -207,11 +207,11 @@ openerp.base.Export = openerp.base.Dialog.extend({ _.each(result, function(record) { if((record.field_type == "one2many") && imp_cmpt){ var o2m_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); - o2m_fld.addClass("readonlyfield"); + o2m_fld.addClass("oe_export_readonlyfield"); } if ((record.required == true) || record.required == "True"){ var required_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); - required_fld.addClass("requiredfield"); + required_fld.addClass("oe_export_requiredfield"); } $("img[id='parentimg-" + record.id +"']").click(function(){ self.on_click(this.id, result); @@ -228,14 +228,14 @@ openerp.base.Export = openerp.base.Dialog.extend({ if (this.rowIndex >=self.row_index){ for (i = (self.row_index-1); i < this.rowIndex; i++) { scnd_click = $("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("readonlyfield")){ + if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ $(scnd_click).addClass("ui-selected"); } } }else{ for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { scnd_click = $("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("readonlyfield")){ + if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ $(scnd_click).addClass("ui-selected"); } } @@ -248,7 +248,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ self.row_index = 0; }); var o2m_selection = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); - if ($(o2m_selection).hasClass("readonlyfield")){ + if ($(o2m_selection).hasClass("oe_export_readonlyfield")){ return false; } var selected = $("tr.ui-selected"); @@ -287,7 +287,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ while($(elem).prev().is(":visible") == false){ elem = $(elem).prev(); } - if(!$(elem).prev().find('#tree-column').hasClass("readonlyfield")){ + if(!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")){ $(elem).prev().addClass("ui-selected"); } $(elem).prev().find('a').focus(); @@ -303,7 +303,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ while($(elem).next().is(":visible") == false){ elem = $(elem).next(); } - if(!$(elem).next().find('#tree-column').hasClass("readonlyfield")){ + if(!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")){ $(elem).next().addClass("ui-selected"); } $(elem).next().find('a').focus(); @@ -312,7 +312,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ }); $("tr[id='treerow-" + record.id + "']").dblclick(function (e) { var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); - if (! $(o2m_selection).hasClass("readonlyfield")){ + if (! $(o2m_selection).hasClass("oe_export_readonlyfield")){ var field_id = $(this).find("a").attr("id"); if(field_id){ self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")) @@ -325,7 +325,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ field_id = event.relatedTarget.attributes["id"]["value"] if (field_id && field_id.split("-")[0] == 'export'){ - if(!$("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("readonlyfield")){ + if(!$("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); } } -- cgit v1.2.3 From 4a321d51d83ff85d81c987eca16e0c01da7bbbea Mon Sep 17 00:00:00 2001 From: "Yogesh (OpenERP)" Date: Thu, 28 Jul 2011 12:11:54 +0530 Subject: [IMP] Improve jquery selector use this. instead of directly $. bzr revid: ysa@tinyerp.com-20110728064154-t3k2fcfss4e1g6kk --- addons/base/static/src/js/export.js | 130 ++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 65 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js index 8fe42f900d1..cec141aefcd 100644 --- a/addons/base/static/src/js/export.js +++ b/addons/base/static/src/js/export.js @@ -30,38 +30,38 @@ openerp.base.Export = openerp.base.Dialog.extend({ }, close: function(event, ui){ self.close();} }); - this.on_show_exists_export_list(); - jQuery(this.$dialog).removeClass('ui-dialog-content ui-widget-content'); - $('#add_field').click(function(){ + self.on_show_exists_export_list(); + jQuery(self.$dialog).removeClass('ui-dialog-content ui-widget-content'); + self.$element.find('#add_field').click(function(){ if($("#field-tree-structure tr.ui-selected")){ - var fld = $("#field-tree-structure tr.ui-selected").find('a'); + var fld = self.$element.find("#field-tree-structure tr.ui-selected").find('a'); for (var i=0;i 0){ - $("#saved_export_list").append( new Option(value, exp_id)); + if(self.$element.find("#saved_export_list").length > 0){ + self.$element.find("#saved_export_list").append( new Option(value, exp_id)); } else{ self.on_show_exists_export_list(); } - if($("#saved_export_list").is(":hidden")){ + if(self.$element.find("#saved_export_list").is(":hidden")){ self.on_show_exists_export_list(); } } }); self.on_show_save_list() - $("#fields_list option").remove(); + self.$element.find("#fields_list option").remove(); } }, @@ -165,8 +166,8 @@ openerp.base.Export = openerp.base.Dialog.extend({ prefix = record['params']['prefix'] name = record['params']['name'] $(record['children']).each (function(e, childid) { - if ($("tr[id='treerow-" + childid +"']").length > 0) { - if ($("tr[id='treerow-" + childid +"']").is(':hidden')) { + if (self.$element.find("tr[id='treerow-" + childid +"']").length > 0) { + if (self.$element.find("tr[id='treerow-" + childid +"']").is(':hidden')) { is_loaded = -1; } else { is_loaded++; @@ -174,9 +175,9 @@ openerp.base.Export = openerp.base.Dialog.extend({ } }); if (is_loaded == 0) { - if ($("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { + if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { if (model){ - import_comp = $("#import_compat option:selected").val() + import_comp = self.$element.find("#import_compat option:selected").val() var params = {"import_compat":parseInt(import_comp), "views_id": this.views_id, "parent_field_type" : record['field_type']} self.rpc("/base/export/get_fields", {"model": model, "prefix": prefix, "name": name, "field_parent" : self.field_id, "params":params}, function (results) { self.on_show_data(results); @@ -189,52 +190,51 @@ openerp.base.Export = openerp.base.Dialog.extend({ self.showcontent(self.field_id, false); } } - }); }, on_show_data: function(result) { var self = this; - var imp_cmpt = parseInt($("#import_compat option:selected").val()); - var current_tr = $("tr[id='treerow-" + self.field_id + "']"); + var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); + var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); if (current_tr.length >= 1){ current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); } else{ - $('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); + self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); } _.each(result, function(record) { if((record.field_type == "one2many") && imp_cmpt){ - var o2m_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); + var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); o2m_fld.addClass("oe_export_readonlyfield"); } if ((record.required == true) || record.required == "True"){ - var required_fld = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); + var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); required_fld.addClass("oe_export_requiredfield"); } - $("img[id='parentimg-" + record.id +"']").click(function(){ + self.$element.find("img[id='parentimg-" + record.id +"']").click(function(){ self.on_click(this.id, result); }); - $("tr[id='treerow-" + record.id + "']").click(function(e){ + self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e){ if (e.shiftKey == true){ var frst_click,scnd_click = ''; if (self.row_index == 0){ self.row_index = this.rowIndex; - frst_click = $("tr[id^='treerow-']")[self.row_index-1]; + frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; $(frst_click).addClass("ui-selected"); }else{ if (this.rowIndex >=self.row_index){ for (i = (self.row_index-1); i < this.rowIndex; i++) { - scnd_click = $("tr[id^='treerow-']")[i]; + scnd_click = self.$element.find("tr[id^='treerow-']")[i]; if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ $(scnd_click).addClass("ui-selected"); } } }else{ for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { - scnd_click = $("tr[id^='treerow-']")[i]; + scnd_click = self.$element.find("tr[id^='treerow-']")[i]; if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ $(scnd_click).addClass("ui-selected"); } @@ -244,14 +244,14 @@ openerp.base.Export = openerp.base.Dialog.extend({ } self.row_index = this.rowIndex; - $("tr[id='treerow-" + record.id + "']").keyup(function (e) { + self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function (e) { self.row_index = 0; }); - var o2m_selection = $("tr[id='treerow-" + record.id + "']").find('#tree-column'); + var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); if ($(o2m_selection).hasClass("oe_export_readonlyfield")){ return false; } - var selected = $("tr.ui-selected"); + var selected = self.$element.find("tr.ui-selected"); if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)){ $(this).find('a').blur(); $(this).removeClass("ui-selected"); @@ -272,7 +272,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ return false; }); - $("tr[id='treerow-" + record.id + "']").keydown(function (e) { + self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function (e) { var keyCode = e.keyCode || e.which; arrow = {left: 37, up: 38, right: 39, down: 40 }; switch (keyCode) { @@ -310,8 +310,8 @@ openerp.base.Export = openerp.base.Dialog.extend({ break; } }); - $("tr[id='treerow-" + record.id + "']").dblclick(function (e) { - var o2m_selection = $("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function (e) { + var o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); if (! $(o2m_selection).hasClass("oe_export_readonlyfield")){ var field_id = $(this).find("a").attr("id"); if(field_id){ @@ -320,12 +320,12 @@ openerp.base.Export = openerp.base.Dialog.extend({ } }); }); - $('#fields_list').mouseover(function(event){ + self.$element.find('#fields_list').mouseover(function(event){ if(event.relatedTarget){ if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ field_id = event.relatedTarget.attributes["id"]["value"] if (field_id && field_id.split("-")[0] == 'export'){ - if(!$("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ + if(!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); } } @@ -336,14 +336,14 @@ openerp.base.Export = openerp.base.Dialog.extend({ // show & hide the contents showcontent: function (id, flag) { - var first_child = $("tr[id='treerow-" + id + "']").find('img') + var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img') if (flag) { first_child.attr('src', '/base/static/src/img/expand.gif'); } else { first_child.attr('src', '/base/static/src/img/collapse.gif'); } - var child_field = $("tr[id^='treerow-" + id +"/']") + var child_field = this.$element.find("tr[id^='treerow-" + id +"/']") var child_len = (id.split("/")).length + 1 for (var i = 0; i < child_field.length; i++) { if (flag) { @@ -361,15 +361,15 @@ openerp.base.Export = openerp.base.Dialog.extend({ }, add_field: function(field_id, string) { - var field_list = $('#fields_list') - if ( $("#fields_list option[value='" + field_id + "']") && !$("#fields_list option[value='" + field_id + "']").length){ + var field_list = this.$element.find('#fields_list') + if ( this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length){ field_list.append( new Option(string, field_id)); } }, get_fields: function (){ var export_field = []; - $("#fields_list option").each(function(){ + this.$element.find("#fields_list option").each(function(){ export_field.push(jQuery(this).val()); }); if (! export_field.length){ @@ -381,7 +381,7 @@ openerp.base.Export = openerp.base.Dialog.extend({ var self = this; var export_field = {}; var flag = true; - $("#fields_list option").each(function(){ + self.$element.find("#fields_list option").each(function(){ export_field[jQuery(this).val()] = jQuery(this).text(); flag = false; }); @@ -390,8 +390,8 @@ openerp.base.Export = openerp.base.Dialog.extend({ return; } - import_comp = $("#import_compat option:selected").val() - export_format = $("#export_format").val() + import_comp = self.$element.find("#import_compat option:selected").val() + export_format = self.$element.find("#export_format").val() self.rpc("/base/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp), "export_format" :export_format}, function(data){ window.location="data:text/csv/excel;charset=utf8," + data -- cgit v1.2.3 From 0b04e6fa34b278689e9f22a4446a12161ea05a06 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 28 Jul 2011 13:20:13 +0200 Subject: [FIX] Renamed export module to data_export. export is a javascript reserved word thus causing problems with safari bzr revid: fme@openerp.com-20110728112013-lmo06h75r0xqipbo --- addons/base/static/src/js/boot.js | 4 +- addons/base/static/src/js/data_export.js | 409 +++++++++++++++++++++++++++++++ addons/base/static/src/js/export.js | 409 ------------------------------- addons/base/static/src/js/views.js | 2 +- 4 files changed, 412 insertions(+), 412 deletions(-) create mode 100644 addons/base/static/src/js/data_export.js delete mode 100644 addons/base/static/src/js/export.js (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/boot.js b/addons/base/static/src/js/boot.js index 25ab0bda632..5f86a73ed5e 100644 --- a/addons/base/static/src/js/boot.js +++ b/addons/base/static/src/js/boot.js @@ -86,8 +86,8 @@ openerp.base = function(instance) { if (openerp.base.view_tree) { openerp.base.view_tree(instance); } - if (openerp.base.export) { - openerp.base.export(instance); + if (openerp.base.data_export) { + openerp.base.data_export(instance); } }; diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js new file mode 100644 index 00000000000..9a04dbf4c4e --- /dev/null +++ b/addons/base/static/src/js/data_export.js @@ -0,0 +1,409 @@ +openerp.base.data_export = function(openerp) { +openerp.base.DataExport = openerp.base.Dialog.extend({ + init: function(parent, dataset, views){ + this._super(parent); + this.dataset = dataset + this.views = views + this.views_id = {}; + for (var key in this.views) { + this.views_id[key] = this.views[key].view_id + } + }, + + start: function() { + var self = this + self._super(false); + self.template = 'ExportTreeView'; + self.dialog_title = "Export Data " + self.open({ + modal: true, + width: '55%', + height: 'auto', + position: 'top', + buttons : { + "Close" : function() { + self.close(); + }, + "Export To File" : function() { + self.on_click_export_data(); + } + }, + close: function(event, ui){ self.close();} + }); + self.on_show_exists_export_list(); + jQuery(self.$dialog).removeClass('ui-dialog-content ui-widget-content'); + self.$element.find('#add_field').click(function(){ + if($("#field-tree-structure tr.ui-selected")){ + var fld = self.$element.find("#field-tree-structure tr.ui-selected").find('a'); + for (var i=0;i 0){ + self.$element.find("#saved_export_list").append( new Option(value, exp_id)); + } + else{ + self.on_show_exists_export_list(); + } + if(self.$element.find("#saved_export_list").is(":hidden")){ + self.on_show_exists_export_list(); + } + } + }); + self.on_show_save_list() + self.$element.find("#fields_list option").remove(); + } + }, + + on_click: function(id, result) { + var self = this + self.field_id = id.split("-")[1]; + var model = '' + var prefix = '' + var name = '' + var is_loaded = 0; + _.each(result, function(record) { + if(record['id'] == self.field_id && (record['children']).length >= 1){ + model = record['params']['model'] + prefix = record['params']['prefix'] + name = record['params']['name'] + $(record['children']).each (function(e, childid) { + if (self.$element.find("tr[id='treerow-" + childid +"']").length > 0) { + if (self.$element.find("tr[id='treerow-" + childid +"']").is(':hidden')) { + is_loaded = -1; + } else { + is_loaded++; + } + } + }); + if (is_loaded == 0) { + if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { + if (model){ + import_comp = self.$element.find("#import_compat option:selected").val() + var params = {"import_compat":parseInt(import_comp), "views_id": this.views_id, "parent_field_type" : record['field_type']} + self.rpc("/base/export/get_fields", {"model": model, "prefix": prefix, "name": name, "field_parent" : self.field_id, "params":params}, function (results) { + self.on_show_data(results); + }); + } + } + } else if (is_loaded > 0) { + self.showcontent(self.field_id, true); + } else { + self.showcontent(self.field_id, false); + } + } + }); + }, + + on_show_data: function(result) { + var self = this; + var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); + var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); + if (current_tr.length >= 1){ + current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); + current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); + } + else{ + self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); + } + _.each(result, function(record) { + if((record.field_type == "one2many") && imp_cmpt){ + var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); + o2m_fld.addClass("oe_export_readonlyfield"); + } + if ((record.required == true) || record.required == "True"){ + var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); + required_fld.addClass("oe_export_requiredfield"); + } + self.$element.find("img[id='parentimg-" + record.id +"']").click(function(){ + self.on_click(this.id, result); + }); + + self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e){ + if (e.shiftKey == true){ + var frst_click,scnd_click = ''; + if (self.row_index == 0){ + self.row_index = this.rowIndex; + frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; + $(frst_click).addClass("ui-selected"); + }else{ + if (this.rowIndex >=self.row_index){ + for (i = (self.row_index-1); i < this.rowIndex; i++) { + scnd_click = self.$element.find("tr[id^='treerow-']")[i]; + if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ + $(scnd_click).addClass("ui-selected"); + } + } + }else{ + for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { + scnd_click = self.$element.find("tr[id^='treerow-']")[i]; + if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ + $(scnd_click).addClass("ui-selected"); + } + } + } + } + } + self.row_index = this.rowIndex; + + self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function (e) { + self.row_index = 0; + }); + var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); + if ($(o2m_selection).hasClass("oe_export_readonlyfield")){ + return false; + } + var selected = self.$element.find("tr.ui-selected"); + if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + $(this).find('a').blur(); + $(this).removeClass("ui-selected"); + }else if($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + selected.find('a').blur(); + selected.removeClass("ui-selected"); + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + selected.find('a').blur(); + selected.removeClass("ui-selected"); + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + $(this).find('a').focus(); + $(this).addClass("ui-selected"); + } + return false; + }); + + self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function (e) { + var keyCode = e.keyCode || e.which; + arrow = {left: 37, up: 38, right: 39, down: 40 }; + switch (keyCode) { + case arrow.left: + if( jQuery(this).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ + self.on_click(this.id, result); + } + break; + case arrow.up: + var elem = this; + $(elem).removeClass("ui-selected"); + while($(elem).prev().is(":visible") == false){ + elem = $(elem).prev(); + } + if(!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")){ + $(elem).prev().addClass("ui-selected"); + } + $(elem).prev().find('a').focus(); + break; + case arrow.right: + if( jQuery(this).find('img').attr('src') == '/base/static/src/img/expand.gif'){ + self.on_click(this.id, result); + } + break; + case arrow.down: + var elem = this; + $(elem).removeClass("ui-selected"); + while($(elem).next().is(":visible") == false){ + elem = $(elem).next(); + } + if(!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")){ + $(elem).next().addClass("ui-selected"); + } + $(elem).next().find('a').focus(); + break; + } + }); + self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function (e) { + var o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + if (! $(o2m_selection).hasClass("oe_export_readonlyfield")){ + var field_id = $(this).find("a").attr("id"); + if(field_id){ + self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")) + } + } + }); + }); + self.$element.find('#fields_list').mouseover(function(event){ + if(event.relatedTarget){ + if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ + field_id = event.relatedTarget.attributes["id"]["value"] + if (field_id && field_id.split("-")[0] == 'export'){ + if(!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ + self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); + } + } + } + } + }); + }, + + // show & hide the contents + showcontent: function (id, flag) { + var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img') + if (flag) { + first_child.attr('src', '/base/static/src/img/expand.gif'); + } + else { + first_child.attr('src', '/base/static/src/img/collapse.gif'); + } + var child_field = this.$element.find("tr[id^='treerow-" + id +"/']") + var child_len = (id.split("/")).length + 1 + for (var i = 0; i < child_field.length; i++) { + if (flag) { + $(child_field[i]).hide(); + } + else { + if(child_len == (child_field[i].id.split("/")).length){ + if( jQuery(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ + jQuery(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif') + } + $(child_field[i]).show(); + } + } + } + }, + + add_field: function(field_id, string) { + var field_list = this.$element.find('#fields_list') + if ( this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length){ + field_list.append( new Option(string, field_id)); + } + }, + + get_fields: function (){ + var export_field = []; + this.$element.find("#fields_list option").each(function(){ + export_field.push(jQuery(this).val()); + }); + if (! export_field.length){ + alert('Please select fields to save export list...'); + } + return export_field; + }, + on_click_export_data: function(){ + var self = this; + var export_field = {}; + var flag = true; + self.$element.find("#fields_list option").each(function(){ + export_field[jQuery(this).val()] = jQuery(this).text(); + flag = false; + }); + if (flag){ + alert('Please select fields to export...'); + return; + } + + import_comp = self.$element.find("#import_compat option:selected").val() + export_format = self.$element.find("#export_format").val() + + self.rpc("/base/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp), "export_format" :export_format}, function(data){ + window.location="data:text/csv/excel;charset=utf8," + data + self.close(); + }); + }, + + close: function() { + jQuery(this.$dialog).remove(); + this._super(); + }, + +}); + +}; diff --git a/addons/base/static/src/js/export.js b/addons/base/static/src/js/export.js deleted file mode 100644 index cec141aefcd..00000000000 --- a/addons/base/static/src/js/export.js +++ /dev/null @@ -1,409 +0,0 @@ -openerp.base.export = function(openerp) { -openerp.base.Export = openerp.base.Dialog.extend({ - init: function(parent, dataset, views){ - this._super(parent); - this.dataset = dataset - this.views = views - this.views_id = {}; - for (var key in this.views) { - this.views_id[key] = this.views[key].view_id - } - }, - - start: function() { - var self = this - self._super(false); - self.template = 'ExportTreeView'; - self.dialog_title = "Export Data " - self.open({ - modal: true, - width: '55%', - height: 'auto', - position: 'top', - buttons : { - "Close" : function() { - self.close(); - }, - "Export To File" : function() { - self.on_click_export_data(); - } - }, - close: function(event, ui){ self.close();} - }); - self.on_show_exists_export_list(); - jQuery(self.$dialog).removeClass('ui-dialog-content ui-widget-content'); - self.$element.find('#add_field').click(function(){ - if($("#field-tree-structure tr.ui-selected")){ - var fld = self.$element.find("#field-tree-structure tr.ui-selected").find('a'); - for (var i=0;i 0){ - self.$element.find("#saved_export_list").append( new Option(value, exp_id)); - } - else{ - self.on_show_exists_export_list(); - } - if(self.$element.find("#saved_export_list").is(":hidden")){ - self.on_show_exists_export_list(); - } - } - }); - self.on_show_save_list() - self.$element.find("#fields_list option").remove(); - } - }, - - on_click: function(id, result) { - var self = this - self.field_id = id.split("-")[1]; - var model = '' - var prefix = '' - var name = '' - var is_loaded = 0; - _.each(result, function(record) { - if(record['id'] == self.field_id && (record['children']).length >= 1){ - model = record['params']['model'] - prefix = record['params']['prefix'] - name = record['params']['name'] - $(record['children']).each (function(e, childid) { - if (self.$element.find("tr[id='treerow-" + childid +"']").length > 0) { - if (self.$element.find("tr[id='treerow-" + childid +"']").is(':hidden')) { - is_loaded = -1; - } else { - is_loaded++; - } - } - }); - if (is_loaded == 0) { - if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { - if (model){ - import_comp = self.$element.find("#import_compat option:selected").val() - var params = {"import_compat":parseInt(import_comp), "views_id": this.views_id, "parent_field_type" : record['field_type']} - self.rpc("/base/export/get_fields", {"model": model, "prefix": prefix, "name": name, "field_parent" : self.field_id, "params":params}, function (results) { - self.on_show_data(results); - }); - } - } - } else if (is_loaded > 0) { - self.showcontent(self.field_id, true); - } else { - self.showcontent(self.field_id, false); - } - } - }); - }, - - on_show_data: function(result) { - var self = this; - var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); - var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); - if (current_tr.length >= 1){ - current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); - current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); - } - else{ - self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); - } - _.each(result, function(record) { - if((record.field_type == "one2many") && imp_cmpt){ - var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - o2m_fld.addClass("oe_export_readonlyfield"); - } - if ((record.required == true) || record.required == "True"){ - var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - required_fld.addClass("oe_export_requiredfield"); - } - self.$element.find("img[id='parentimg-" + record.id +"']").click(function(){ - self.on_click(this.id, result); - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e){ - if (e.shiftKey == true){ - var frst_click,scnd_click = ''; - if (self.row_index == 0){ - self.row_index = this.rowIndex; - frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; - $(frst_click).addClass("ui-selected"); - }else{ - if (this.rowIndex >=self.row_index){ - for (i = (self.row_index-1); i < this.rowIndex; i++) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ - $(scnd_click).addClass("ui-selected"); - } - } - }else{ - for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ - $(scnd_click).addClass("ui-selected"); - } - } - } - } - } - self.row_index = this.rowIndex; - - self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function (e) { - self.row_index = 0; - }); - var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - if ($(o2m_selection).hasClass("oe_export_readonlyfield")){ - return false; - } - var selected = self.$element.find("tr.ui-selected"); - if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)){ - $(this).find('a').blur(); - $(this).removeClass("ui-selected"); - }else if($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == true)){ - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } - return false; - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function (e) { - var keyCode = e.keyCode || e.which; - arrow = {left: 37, up: 38, right: 39, down: 40 }; - switch (keyCode) { - case arrow.left: - if( jQuery(this).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ - self.on_click(this.id, result); - } - break; - case arrow.up: - var elem = this; - $(elem).removeClass("ui-selected"); - while($(elem).prev().is(":visible") == false){ - elem = $(elem).prev(); - } - if(!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")){ - $(elem).prev().addClass("ui-selected"); - } - $(elem).prev().find('a').focus(); - break; - case arrow.right: - if( jQuery(this).find('img').attr('src') == '/base/static/src/img/expand.gif'){ - self.on_click(this.id, result); - } - break; - case arrow.down: - var elem = this; - $(elem).removeClass("ui-selected"); - while($(elem).next().is(":visible") == false){ - elem = $(elem).next(); - } - if(!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")){ - $(elem).next().addClass("ui-selected"); - } - $(elem).next().find('a').focus(); - break; - } - }); - self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function (e) { - var o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); - if (! $(o2m_selection).hasClass("oe_export_readonlyfield")){ - var field_id = $(this).find("a").attr("id"); - if(field_id){ - self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")) - } - } - }); - }); - self.$element.find('#fields_list').mouseover(function(event){ - if(event.relatedTarget){ - if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ - field_id = event.relatedTarget.attributes["id"]["value"] - if (field_id && field_id.split("-")[0] == 'export'){ - if(!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ - self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); - } - } - } - } - }); - }, - - // show & hide the contents - showcontent: function (id, flag) { - var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img') - if (flag) { - first_child.attr('src', '/base/static/src/img/expand.gif'); - } - else { - first_child.attr('src', '/base/static/src/img/collapse.gif'); - } - var child_field = this.$element.find("tr[id^='treerow-" + id +"/']") - var child_len = (id.split("/")).length + 1 - for (var i = 0; i < child_field.length; i++) { - if (flag) { - $(child_field[i]).hide(); - } - else { - if(child_len == (child_field[i].id.split("/")).length){ - if( jQuery(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ - jQuery(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif') - } - $(child_field[i]).show(); - } - } - } - }, - - add_field: function(field_id, string) { - var field_list = this.$element.find('#fields_list') - if ( this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length){ - field_list.append( new Option(string, field_id)); - } - }, - - get_fields: function (){ - var export_field = []; - this.$element.find("#fields_list option").each(function(){ - export_field.push(jQuery(this).val()); - }); - if (! export_field.length){ - alert('Please select fields to save export list...'); - } - return export_field; - }, - on_click_export_data: function(){ - var self = this; - var export_field = {}; - var flag = true; - self.$element.find("#fields_list option").each(function(){ - export_field[jQuery(this).val()] = jQuery(this).text(); - flag = false; - }); - if (flag){ - alert('Please select fields to export...'); - return; - } - - import_comp = self.$element.find("#import_compat option:selected").val() - export_format = self.$element.find("#export_format").val() - - self.rpc("/base/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp), "export_format" :export_format}, function(data){ - window.location="data:text/csv/excel;charset=utf8," + data - self.close(); - }); - }, - - close: function() { - jQuery(this.$dialog).remove(); - this._super(); - }, - -}); - -}; diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index d25e34a26f4..36fce76d40c 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -222,7 +222,7 @@ openerp.base.ViewManager = openerp.base.Controller.extend({ if(this.active_view == 'list' || this.active_view == 'form') { this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base.Export(self, self.dataset, self.views); + var export_view = new openerp.base.DataExport(self, self.dataset, self.views); export_view.start(false); ev.preventDefault(); }); -- cgit v1.2.3 From 8b095a3b1ea0a740388a31d5f3f89701ff7130d3 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 28 Jul 2011 14:26:50 +0200 Subject: [IMP] Cleaned a bit, fixed some global variables bzr revid: fme@openerp.com-20110728122650-8305oh329y5y8a66 --- addons/base/static/src/js/data_export.js | 375 ++++++++++++++++--------------- 1 file changed, 188 insertions(+), 187 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 9a04dbf4c4e..50a08bc4f12 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -1,95 +1,98 @@ openerp.base.data_export = function(openerp) { openerp.base.DataExport = openerp.base.Dialog.extend({ - init: function(parent, dataset, views){ + init: function(parent, dataset, views) { this._super(parent); - this.dataset = dataset - this.views = views + this.dataset = dataset; + this.views = views; this.views_id = {}; for (var key in this.views) { - this.views_id[key] = this.views[key].view_id + this.views_id[key] = this.views[key].view_id; } }, - start: function() { - var self = this + var self = this; self._super(false); self.template = 'ExportTreeView'; - self.dialog_title = "Export Data " + self.dialog_title = "Export Data"; self.open({ - modal: true, - width: '55%', - height: 'auto', - position: 'top', - buttons : { - "Close" : function() { - self.close(); - }, - "Export To File" : function() { - self.on_click_export_data(); - } - }, - close: function(event, ui){ self.close();} - }); + modal: true, + width: '55%', + height: 'auto', + position: 'top', + buttons : { + "Close" : function() { + self.close(); + }, + "Export To File" : function() { + self.on_click_export_data(); + } + }, + close: function(event, ui){ self.close();} + }); self.on_show_exists_export_list(); - jQuery(self.$dialog).removeClass('ui-dialog-content ui-widget-content'); - self.$element.find('#add_field').click(function(){ - if($("#field-tree-structure tr.ui-selected")){ - var fld = self.$element.find("#field-tree-structure tr.ui-selected").find('a'); - for (var i=0;i 0){ - self.$element.find("#saved_export_list").append( new Option(value, exp_id)); - } - else{ + var export_field = self.get_fields(); + if (export_field.length) { + self.rpc("/base/export/save_export_lists", {"model": self.dataset.model, "name":value, "field_list":export_field}, function(exp_id) { + if (exp_id) { + if (self.$element.find("#saved_export_list").length > 0) { + self.$element.find("#saved_export_list").append(new Option(value, exp_id)); + } else { self.on_show_exists_export_list(); } - if(self.$element.find("#saved_export_list").is(":hidden")){ + if (self.$element.find("#saved_export_list").is(":hidden")) { self.on_show_exists_export_list(); } } }); - self.on_show_save_list() + self.on_show_save_list(); self.$element.find("#fields_list option").remove(); } }, - on_click: function(id, result) { - var self = this + var self = this; self.field_id = id.split("-")[1]; - var model = '' - var prefix = '' - var name = '' var is_loaded = 0; _.each(result, function(record) { - if(record['id'] == self.field_id && (record['children']).length >= 1){ - model = record['params']['model'] - prefix = record['params']['prefix'] - name = record['params']['name'] - $(record['children']).each (function(e, childid) { - if (self.$element.find("tr[id='treerow-" + childid +"']").length > 0) { - if (self.$element.find("tr[id='treerow-" + childid +"']").is(':hidden')) { + if (record['id'] == self.field_id && (record['children']).length >= 1) { + var model = record['params']['model'], + prefix = record['params']['prefix'], + name = record['params']['name']; + $(record['children']).each(function(e, childid) { + if (self.$element.find("tr[id='treerow-" + childid + "']").length > 0) { + if (self.$element.find("tr[id='treerow-" + childid + "']").is(':hidden')) { is_loaded = -1; } else { is_loaded++; @@ -175,11 +167,21 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ } }); if (is_loaded == 0) { - if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') == '/base/static/src/img/expand.gif') { - if (model){ - import_comp = self.$element.find("#import_compat option:selected").val() - var params = {"import_compat":parseInt(import_comp), "views_id": this.views_id, "parent_field_type" : record['field_type']} - self.rpc("/base/export/get_fields", {"model": model, "prefix": prefix, "name": name, "field_parent" : self.field_id, "params":params}, function (results) { + if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') === '/base/static/src/img/expand.gif') { + if (model) { + var import_comp = self.$element.find("#import_compat option:selected").val(); + var params = { + import_compat: parseInt(import_comp), + views_id: self.views_id, + parent_field_type : record['field_type'] + } + self.rpc("/base/export/get_fields", { + model: model, + prefix: prefix, + name: name, + field_parent : self.field_id, + params: params + }, function(results) { self.on_show_data(results); }); } @@ -192,50 +194,48 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ } }); }, - on_show_data: function(result) { var self = this; var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); - if (current_tr.length >= 1){ + if (current_tr.length >= 1) { current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); - } - else{ - self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); + } else { + self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); } _.each(result, function(record) { - if((record.field_type == "one2many") && imp_cmpt){ + if ((record.field_type == "one2many") && imp_cmpt) { var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); o2m_fld.addClass("oe_export_readonlyfield"); } - if ((record.required == true) || record.required == "True"){ + if ((record.required == true) || record.required == "True") { var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); required_fld.addClass("oe_export_requiredfield"); } - self.$element.find("img[id='parentimg-" + record.id +"']").click(function(){ + self.$element.find("img[id='parentimg-" + record.id +"']").click(function() { self.on_click(this.id, result); }); - self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e){ - if (e.shiftKey == true){ - var frst_click,scnd_click = ''; - if (self.row_index == 0){ + self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e) { + if (e.shiftKey == true) { + var frst_click, scnd_click = ''; + if (self.row_index == 0) { self.row_index = this.rowIndex; frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; $(frst_click).addClass("ui-selected"); - }else{ - if (this.rowIndex >=self.row_index){ + } else { + if (this.rowIndex >=self.row_index) { for (i = (self.row_index-1); i < this.rowIndex; i++) { scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ + if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); } } - }else{ + } else { for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if(!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")){ + if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { $(scnd_click).addClass("ui-selected"); } } @@ -244,88 +244,88 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ } self.row_index = this.rowIndex; - self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function (e) { - self.row_index = 0; + self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function(e) { + self.row_index = 0; }); var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - if ($(o2m_selection).hasClass("oe_export_readonlyfield")){ + if ($(o2m_selection).hasClass("oe_export_readonlyfield")) { return false; } var selected = self.$element.find("tr.ui-selected"); - if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)) { $(this).find('a').blur(); $(this).removeClass("ui-selected"); - }else if($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + } else if ($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { selected.find('a').blur(); selected.removeClass("ui-selected"); $(this).find('a').focus(); $(this).addClass("ui-selected"); - }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)){ + } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { selected.find('a').blur(); selected.removeClass("ui-selected"); $(this).find('a').focus(); $(this).addClass("ui-selected"); - }else if(!$(this).hasClass("ui-selected") && (e.ctrlKey == true)){ + } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == true)) { $(this).find('a').focus(); $(this).addClass("ui-selected"); } return false; }); - self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function (e) { + self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function(e) { var keyCode = e.keyCode || e.which; arrow = {left: 37, up: 38, right: 39, down: 40 }; switch (keyCode) { case arrow.left: - if( jQuery(this).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ + if ($(this).find('img').attr('src') === '/base/static/src/img/collapse.gif') { self.on_click(this.id, result); } - break; + break; case arrow.up: var elem = this; $(elem).removeClass("ui-selected"); - while($(elem).prev().is(":visible") == false){ + while ($(elem).prev().is(":visible") == false) { elem = $(elem).prev(); } - if(!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")){ + if (!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")) { $(elem).prev().addClass("ui-selected"); } $(elem).prev().find('a').focus(); - break; + break; case arrow.right: - if( jQuery(this).find('img').attr('src') == '/base/static/src/img/expand.gif'){ + if ($(this).find('img').attr('src') == '/base/static/src/img/expand.gif') { self.on_click(this.id, result); } - break; + break; case arrow.down: var elem = this; $(elem).removeClass("ui-selected"); - while($(elem).next().is(":visible") == false){ + while($(elem).next().is(":visible") == false) { elem = $(elem).next(); } - if(!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")){ + if (!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")) { $(elem).next().addClass("ui-selected"); } $(elem).next().find('a').focus(); - break; + break; } }); - self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function (e) { - var o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); - if (! $(o2m_selection).hasClass("oe_export_readonlyfield")){ - var field_id = $(this).find("a").attr("id"); - if(field_id){ - self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")) + self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function(e) { + var $o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); + if (!$o2m_selection.hasClass("oe_export_readonlyfield")) { + var field_id = $(this).find("a").attr("id"); + if (field_id) { + self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")); } } }); }); - self.$element.find('#fields_list').mouseover(function(event){ - if(event.relatedTarget){ - if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']){ - field_id = event.relatedTarget.attributes["id"]["value"] - if (field_id && field_id.split("-")[0] == 'export'){ - if(!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")){ + self.$element.find('#fields_list').mouseover(function(event) { + if (event.relatedTarget) { + if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']) { + var field_id = event.relatedTarget.attributes["id"]["value"]; + if (field_id && field_id.split("-")[0] === 'export') { + if (!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")) { self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); } } @@ -333,77 +333,78 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ } }); }, - - // show & hide the contents - showcontent: function (id, flag) { - var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img') + showcontent: function(id, flag) { + // show & hide the contents + var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img'); if (flag) { first_child.attr('src', '/base/static/src/img/expand.gif'); } else { first_child.attr('src', '/base/static/src/img/collapse.gif'); } - var child_field = this.$element.find("tr[id^='treerow-" + id +"/']") - var child_len = (id.split("/")).length + 1 + var child_field = this.$element.find("tr[id^='treerow-" + id +"/']"); + var child_len = (id.split("/")).length + 1; for (var i = 0; i < child_field.length; i++) { if (flag) { $(child_field[i]).hide(); - } - else { - if(child_len == (child_field[i].id.split("/")).length){ - if( jQuery(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif'){ - jQuery(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif') + } else { + if (child_len == (child_field[i].id.split("/")).length) { + if ($(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif') { + $(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif'); } $(child_field[i]).show(); } } } }, - add_field: function(field_id, string) { - var field_list = this.$element.find('#fields_list') - if ( this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length){ - field_list.append( new Option(string, field_id)); + var field_list = this.$element.find('#fields_list'); + if (this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length) { + field_list.append(new Option(string, field_id)); } }, - - get_fields: function (){ + get_fields: function() { var export_field = []; - this.$element.find("#fields_list option").each(function(){ - export_field.push(jQuery(this).val()); + this.$element.find("#fields_list option").each(function() { + export_field.push($(this).val()); }); - if (! export_field.length){ + if (!export_field.length) { alert('Please select fields to save export list...'); } return export_field; }, - on_click_export_data: function(){ + on_click_export_data: function() { var self = this; var export_field = {}; var flag = true; - self.$element.find("#fields_list option").each(function(){ - export_field[jQuery(this).val()] = jQuery(this).text(); + self.$element.find("#fields_list option").each(function() { + export_field[$(this).val()] = $(this).text(); flag = false; }); - if (flag){ + if (flag) { alert('Please select fields to export...'); return; } - import_comp = self.$element.find("#import_compat option:selected").val() - export_format = self.$element.find("#export_format").val() + var import_comp = self.$element.find("#import_compat option:selected").val(), + export_format = self.$element.find("#export_format").val(); - self.rpc("/base/export/export_data", {"model": self.dataset.model, "fields":export_field, 'ids': self.dataset.ids, 'domain': self.dataset.domain, "import_compat":parseInt(import_comp), "export_format" :export_format}, function(data){ - window.location="data:text/csv/excel;charset=utf8," + data + self.rpc("/base/export/export_data", { + model: self.dataset.model, + fields: export_field, + ids: self.dataset.ids, + domain: self.dataset.domain, + import_compat: parseInt(import_comp), + export_format: export_format + }, function(data) { + window.location = "data:text/csv/excel;charset=utf8," + data; self.close(); }); }, - close: function() { - jQuery(this.$dialog).remove(); + $(this.$dialog).remove(); this._super(); - }, - + } }); }; -- cgit v1.2.3 From 64922add3a525df525b1b8258e5f9f3a7919118a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 28 Jul 2011 17:15:45 +0200 Subject: [IMP] Improve sidebar bzr revid: fme@openerp.com-20110728151545-2fsy941wjznod4q8 --- addons/base/static/src/js/form.js | 5 +++-- addons/base/static/src/js/list.js | 1 + addons/base/static/src/js/views.js | 40 ++++++++++++++++++++++++++++++++++---- 3 files changed, 40 insertions(+), 6 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index d47182a22da..f8e2e91667d 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -88,9 +88,10 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormVi if (this.options.sidebar && this.options.sidebar_id) { this.sidebar = new openerp.base.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); - this.sidebar.attachments = new openerp.base.form.SidebarAttachments(this.sidebar, this.sidebar.add_section("Attachments"), this); - this.sidebar.add_toolbar(data.fields_view.toolbar); this.sidebar.do_unfold(); + this.sidebar.attachments = new openerp.base.form.SidebarAttachments(this.sidebar, this.sidebar.add_section('attachments', "Attachments"), this); + this.sidebar.add_toolbar(data.fields_view.toolbar); + this.set_common_sidebar_sections(this.sidebar); } this.has_been_loaded.resolve(); }, diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 0c595bed22d..d64d83329c0 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -271,6 +271,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi this.sidebar = new openerp.base.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); this.sidebar.add_toolbar(data.fields_view.toolbar); + this.set_common_sidebar_sections(this.sidebar); } }, /** diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index a062d813851..ad580383c6d 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -364,6 +364,7 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ init: function(parent, element_id) { this._super(parent, element_id); this.items = {}; + this.sections = {}; }, start: function() { var self = this; @@ -385,11 +386,11 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ classname: 'oe_sidebar_' + type[0] } } - self.add_section(type[1], items); + self.add_section(type[0], type[1], items); } }); }, - add_section: function(name, items) { + add_section: function(code, name, items) { // For each section, we pass a name/label and optionally an array of items. // If no items are passed, then the section will be created as a custom section // returning back an element_id to be used by a custom controller. @@ -398,11 +399,12 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ // label: label to be displayed for the link, // action: action to be launch when the link is clicked, // callback: a function to be executed when the link is clicked, - // classname: optionnal dom class name for the line, + // classname: optional dom class name for the line, + // title: optional title for the link // } // Note: The item should have one action or/and a callback var self = this, - section_id = _.uniqueId(this.element_id + '_section_'); + section_id = _.uniqueId(this.element_id + '_section_' + code + '_'); if (items) { for (var i = 0; i < items.length; i++) { items[i].element_id = _.uniqueId(section_id + '_item_'); @@ -412,6 +414,7 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ var $section = $(QWeb.render("Sidebar.section", { section_id: section_id, name: name, + classname: 'oe_sidebar_' + code, items: items })); if (items) { @@ -429,6 +432,7 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ }); } $section.appendTo(this.$element.find('div.sidebar-actions')); + this.sections[code] = $section; return section_id; }, do_fold: function() { @@ -530,6 +534,34 @@ openerp.base.View = openerp.base.Widget.extend({ */ set_embedded_view: function(embedded_view) { this.embedded_view = embedded_view; + }, + set_common_sidebar_sections: function(sidebar) { + var items = []; + sidebar.add_section('customize', "Customize", [ + { + label: "Manage Views", + callback: this.on_sidebar_manage_view, + title: "Manage views of the current object" + }, { + label: "Edit Workflow", + callback: this.on_sidebar_edit_workflow, + title: "Manage views of the current object", + classname: 'oe_hide oe_sidebar_edit_workflow' + }, { + label: "Customize Object", + callback: this.on_sidebar_customize_object, + title: "Manage views of the current object" + } + ]); + }, + on_sidebar_manage_view: function() { + console.log('Todo'); + }, + on_sidebar_edit_workflow: function() { + console.log('Todo'); + }, + on_sidebar_customize_object: function() { + console.log('Todo'); } }); -- cgit v1.2.3 From 506e483974c164e5e682a572f8c69afa734e800c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 28 Jul 2011 18:18:53 +0200 Subject: [IMP] Integrate import into sidebar. Use fields_get instead of parsing views. bzr revid: fme@openerp.com-20110728161853-21ml7wc7kgtfha45 --- addons/base/static/src/js/data_export.js | 14 +++-------- addons/base/static/src/js/views.js | 41 +++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 25 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js index 50a08bc4f12..ad440302c69 100644 --- a/addons/base/static/src/js/data_export.js +++ b/addons/base/static/src/js/data_export.js @@ -1,13 +1,8 @@ openerp.base.data_export = function(openerp) { openerp.base.DataExport = openerp.base.Dialog.extend({ - init: function(parent, dataset, views) { + init: function(parent, dataset) { this._super(parent); this.dataset = dataset; - this.views = views; - this.views_id = {}; - for (var key in this.views) { - this.views_id[key] = this.views[key].view_id; - } }, start: function() { var self = this; @@ -53,8 +48,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ }); var import_comp = self.$element.find('#import_compat option:selected').val(), params = { - import_compat: parseInt(import_comp), - views_id: self.views_id + import_compat: parseInt(import_comp) }; self.rpc('/base/export/get_fields', { model: self.dataset.model, params: params }, self.on_show_data); @@ -64,8 +58,7 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ var import_comp = self.$element.find("#import_compat option:selected").val(); if (import_comp) { var params = { - import_compat: parseInt(import_comp), - views_id: self.views_id + import_compat: parseInt(import_comp) } self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data); } @@ -172,7 +165,6 @@ openerp.base.DataExport = openerp.base.Dialog.extend({ var import_comp = self.$element.find("#import_compat option:selected").val(); var params = { import_compat: parseInt(import_comp), - views_id: self.views_id, parent_field_type : record['field_type'] } self.rpc("/base/export/get_fields", { diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 00182874c8c..687a9b25b18 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -215,19 +215,6 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ } } } - if(this.flags && this.flags.sidebar) { - if(this.$element.find('#exportview')){ - this.$element.find('#exportview').remove() - } - if(this.active_view == 'list' || this.active_view == 'form') { - this.views[this.active_view].controller.$element.after(QWeb.render('ExportView')) - this.$element.find('#exportview').click(function(ev) { - var export_view = new openerp.base.DataExport(self, self.dataset, self.views); - export_view.start(false); - ev.preventDefault(); - }); - } - } return view_promise; }, /** @@ -530,7 +517,6 @@ openerp.base.View = openerp.base.Widget.extend({ this.embedded_view = embedded_view; }, set_common_sidebar_sections: function(sidebar) { - var items = []; sidebar.add_section('customize', "Customize", [ { label: "Manage Views", @@ -547,6 +533,23 @@ openerp.base.View = openerp.base.Widget.extend({ title: "Manage views of the current object" } ]); + sidebar.add_section('other', "Other Options", [ + { + label: "Import", + callback: this.on_sidebar_import + }, { + label: "Export", + callback: this.on_sidebar_export + }, { + label: "Translate", + callback: this.on_sidebar_translate, + classname: 'oe_hide oe_sidebar_translate' + }, { + label: "View Log", + callback: this.on_sidebar_view_log, + classname: 'oe_hide oe_sidebar_view_log' + } + ]); }, on_sidebar_manage_view: function() { console.log('Todo'); @@ -556,6 +559,16 @@ openerp.base.View = openerp.base.Widget.extend({ }, on_sidebar_customize_object: function() { console.log('Todo'); + }, + on_sidebar_import: function() { + }, + on_sidebar_export: function() { + var export_view = new openerp.base.DataExport(this, this.dataset); + export_view.start(false); + }, + on_sidebar_translate: function() { + }, + on_sidebar_view_log: function() { } }); -- cgit v1.2.3