From d87d629e5cca0675a024062259a182de9b14f615 Mon Sep 17 00:00:00 2001 From: Rodney Vargas Date: Wed, 20 Apr 2016 12:05:08 -0600 Subject: [PATCH] [FIX]-web_export_view: change the js content, create a new item section --- web_export_view/__openerp__.py | 3 - .../static/src/js/web_export_view.js | 192 ++++++++++-------- .../src/xml/web_export_view_template.xml | 12 -- 3 files changed, 105 insertions(+), 102 deletions(-) delete mode 100644 web_export_view/static/src/xml/web_export_view_template.xml diff --git a/web_export_view/__openerp__.py b/web_export_view/__openerp__.py index 1d950046..a1f9efcc 100644 --- a/web_export_view/__openerp__.py +++ b/web_export_view/__openerp__.py @@ -16,9 +16,6 @@ 'data': [ 'view/web_export_view.xml', ], - 'qweb': [ - 'static/src/xml/web_export_view_template.xml', - ], 'installable': True, 'auto_install': False, } diff --git a/web_export_view/static/src/js/web_export_view.js b/web_export_view/static/src/js/web_export_view.js index 627c1a97..1b477205 100644 --- a/web_export_view/static/src/js/web_export_view.js +++ b/web_export_view/static/src/js/web_export_view.js @@ -3,100 +3,118 @@ //# © 2012 Therp BV //# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -openerp.web_export_view = function (instance) { +odoo.define('web_export_view.Sidebar', function (require) { +"use strict"; - var _t = instance.web._t, QWeb = instance.web.qweb; +var core = require('web.core'); +var Sidebar = require('web.Sidebar'); - instance.web.Sidebar.include({ - redraw: function () { - var self = this; - this._super.apply(this, arguments); - if (self.getParent().ViewManager.active_view.type == 'list') { - self.$el.find('.oe_sidebar').append(QWeb.render('AddExportViewMain', {widget: self})); - self.$el.find('.oe_sidebar_export_view_xls').on('click', self.on_sidebar_export_view_xls); - } - }, +var _t = core._t; - on_sidebar_export_view_xls: function () { - // Select the first list of the current (form) view - // or assume the main view is a list view and use that - var self = this, - view = this.getParent(), - children = view.getChildren(); - if (children) { - children.every(function (child) { - if (child.field && child.field.type == 'one2many') { - view = child.viewmanager.views.list.controller; - return false; // break out of the loop - } - if (child.field && child.field.type == 'many2many') { - view = child.list_view; - return false; // break out of the loop - } - return true; - }); - } - export_columns_keys = []; - export_columns_names = []; - $.each(view.visible_columns, function () { - if (this.tag == 'field') { - // non-fields like `_group` or buttons - export_columns_keys.push(this.id); - export_columns_names.push(this.string); +Sidebar.include({ + init: function () { + var self = this; + this._super.apply(this, arguments); + self.sections.push({ + name: 'export_current_view', + label: _t('Export Current View') + }); + self.items['export_current_view'] = []; + var view = self.getParent(); + if (view.fields_view && view.fields_view.type === "tree") { + self.web_export_add_items(); + } + }, + + web_export_add_items: function () { + var self = this; + self.add_items('export_current_view', [{ + label: 'Excel', + callback: self.on_sidebar_export_view_xls, + },]); + }, + + on_sidebar_export_view_xls: function () { + // Select the first list of the current (form) view + // or assume the main view is a list view and use that + var self = this, + view = this.getParent(), + children = view.getChildren(); + if (children) { + children.every(function (child) { + if (child.field && child.field.type == 'one2many') { + view = child.viewmanager.views.list.controller; + return false; // break out of the loop + } + if (child.field && child.field.type == 'many2many') { + view = child.list_view; + return false; // break out of the loop } + return true; }); - rows = view.$el.find('.oe_list_content > tbody > tr'); - export_rows = []; - $.each(rows, function () { - $row = $(this); - // find only rows with data - if ($row.attr('data-id')) { - export_row = []; - checked = $row.find('th input[type=checkbox]').is(':checked'); - if (children && checked === true) { - $.each(export_columns_keys, function () { - cell = $row.find('td[data-field="' + this + '"]').get(0); - text = cell.text || cell.textContent || cell.innerHTML || ""; - if (cell.classList.contains("oe_list_field_float")) { - export_row.push(instance.web.parse_value(text, {'type': "float"})); - } - else if (cell.classList.contains("oe_list_field_boolean")) { - var data_id = $('
' + cell.innerHTML + '
'); - if (data_id.find('input').get(0).checked) { - export_row.push(_t("True")); - } - else { - export_row.push(_t("False")); - } - } - else if (cell.classList.contains("oe_list_field_integer")) { - var tmp2 = text; - do { - tmp = tmp2; - tmp2 = tmp.replace(instance.web._t.database.parameters.thousands_sep, ""); - } while (tmp !== tmp2); - - export_row.push(parseInt(tmp2)); + } + var export_columns_keys = []; + var export_columns_names = []; + $.each(view.visible_columns, function () { + if (this.tag == 'field') { + // non-fields like `_group` or buttons + export_columns_keys.push(this.id); + export_columns_names.push(this.string); + } + }); + var rows = view.$el.find('.oe_list_content > tbody > tr'); + var export_rows = []; + $.each(rows, function () { + var $row = $(this); + // find only rows with data + if ($row.attr('data-id')) { + var export_row = []; + var checked = $row.find('th input[type=checkbox]').is(':checked'); + if (children && checked === true) { + $.each(export_columns_keys, function () { + var cell = $row.find('td[data-field="' + this + '"]').get(0); + var text = cell.text || cell.textContent || cell.innerHTML || ""; + if (cell.classList.contains("oe_list_field_float")) { + export_row.push(instance.web.parse_value(text, {'type': "float"})); + } + else if (cell.classList.contains("oe_list_field_boolean")) { + var data_id = $('
' + cell.innerHTML + '
'); + if (data_id.find('input').get(0).checked) { + export_row.push(_t("True")); } else { - export_row.push(text.trim()); + export_row.push(_t("False")); } - }); - export_rows.push(export_row); - } + } + else if (cell.classList.contains("oe_list_field_integer")) { + var tmp2 = text; + do { + tmp = tmp2; + tmp2 = tmp.replace(instance.web._t.database.parameters.thousands_sep, ""); + } while (tmp !== tmp2); + + export_row.push(parseInt(tmp2)); + } + else { + export_row.push(text.trim()); + } + }); + export_rows.push(export_row); } - }); - $.blockUI(); - view.session.get_file({ - url: '/web/export/xls_view', - data: {data: JSON.stringify({ - model: view.model, - headers: export_columns_names, - rows: export_rows - })}, - complete: $.unblockUI - }); - } - }); + } + }); + $.blockUI(); + view.session.get_file({ + url: '/web/export/xls_view', + data: {data: JSON.stringify({ + model: view.model, + headers: export_columns_names, + rows: export_rows + })}, + complete: $.unblockUI + }); + }, + +}); +}); -}; diff --git a/web_export_view/static/src/xml/web_export_view_template.xml b/web_export_view/static/src/xml/web_export_view_template.xml deleted file mode 100644 index 26e75414..00000000 --- a/web_export_view/static/src/xml/web_export_view_template.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
- - -
-
-
\ No newline at end of file