From 243d524978bf2a4aaab508984c87bbf9af9d1810 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 7 Feb 2012 14:01:25 +0100 Subject: [PATCH] [imp] polish render and render_element usage bzr revid: nicolas.vanhoren@openerp.com-20120207130125-xexqks24jb7mguy8 --- addons/web/static/src/js/view_form.js | 42 +++++++++---------- addons/web/static/src/xml/base.xml | 2 - .../web_dashboard/static/src/js/dashboard.js | 11 ++--- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d7d8076c0b8..3dcda5e5c08 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -91,19 +91,19 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# on_loaded: function(data) { var self = this; if (!data) { - throw "No data provided." + throw "No data provided."; + } + if (this.root_frame) { + throw "Form view does not support multiple calls to on_loaded"; } this.fields_order = []; this.fields_view = data; - var frame = instanciate_widget(this.registry.get_object('frame'), this, this.fields_view.arch); - this.root_frame = frame; this.rendered = QWeb.render(this.form_template, {'widget': this}); - this.$element.html(this.rendered); - this.root_frame.$element = $(".oe_form_root_frame_placeholder", this.$element); - this.root_frame.render_element(); - this.root_frame.start(); + + this.root_frame = instanciate_widget(this.registry.get_object('frame'), this, this.fields_view.arch); + this.root_frame.appendTo($(".oe_form_header", this.$element)); this.$form_header = this.$element.find('.oe_form_header:first'); this.$form_header.find('div.oe_form_pager button[data-pager-action]').click(function() { @@ -799,11 +799,8 @@ openerp.web.form.Widget = openerp.web.OldWidget.extend(/** @lends openerp.web.fo update_dom: function() { this.$element.toggle(!this.invisible); }, - render: function() { - return QWeb.render(this.form_template, { "widget": this }); - }, render_element: function() { - this.$element.html(this.render()); + this.$element.html(QWeb.render(this.form_template, { "widget": this })); }, do_attach_tooltip: function(widget, trigger, options) { widget = widget || this; @@ -1194,12 +1191,15 @@ openerp.web.form.WidgetLabel = openerp.web.form.Widget.extend({ this.nowrap = true; } }, - render: function () { + render_element: function() { + var rendered; if (this['for'] && this.type !== 'label') { - return QWeb.render(this.form_template, {widget: this['for']}); + rendered = QWeb.render(this.form_template, {widget: this['for']}); + } else { + // Actual label widgets should not have a false and have type label + rendered = QWeb.render(this.form_template, {widget: this}); } - // Actual label widgets should not have a false and have type label - return QWeb.render(this.form_template, {widget: this}); + this.$element.html(rendered); }, start: function() { this._super(); @@ -3233,10 +3233,11 @@ openerp.web.form.FieldStatus = openerp.web.form.Field.extend({ }); openerp.web.form.WidgetHtml = openerp.web.form.Widget.extend({ - render: function () { + render_element: function () { var $root = $('
'); this.render_children(this, $root); - return $root.html(); + var rendered = $root.html(); + this.$element.html(rendered); }, render_children: function (object, $into) { var self = this, @@ -3245,10 +3246,9 @@ openerp.web.form.WidgetHtml = openerp.web.form.Widget.extend({ if (typeof child === 'string') { $into.text(child); } else if (child.tag === 'field') { - $into.append( - instanciate_widget(self.view.registry.get_object('frame'), - self.view, {tag: 'ueule', attrs: {}, children: [child] }) - .render()); + var widget = instanciate_widget(self.view.registry.get_object('frame'), + self.view, {tag: 'ueule', attrs: {}, children: [child] }); + widget.appendTo($into); } else { var $child = $(document.createElement(child.tag)) .attr(child.attrs) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 76e2d5f15d9..2871552e590 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -743,8 +743,6 @@
-
-
diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index ec2975d48d4..23a62cb18e7 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -10,7 +10,7 @@ if (!openerp.web_dashboard) { openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ init: function(view, node) { this._super(view, node); - this.template = 'DashBoard'; + this.form_template = 'DashBoard'; this.actions_attrs = {}; this.action_managers = []; }, @@ -225,7 +225,7 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ }); } }, - render: function() { + render_element: function() { // We should start with three columns available for (var i = this.node.children.length; i < 3; i++) { this.node.children.push({ @@ -234,7 +234,8 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ children: [] }); } - return QWeb.render(this.template, this); + var rendered = QWeb.render(this.form_template, this); + this.$element.html(rendered); }, do_reload: function() { var view_manager = this.view.widget_parent, @@ -244,7 +245,7 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ } }); openerp.web.form.DashBoardLegacy = openerp.web.form.DashBoard.extend({ - render: function() { + render_element: function() { if (this.node.tag == 'hpaned') { this.node.attrs.style = '2-1'; } else if (this.node.tag == 'vpaned') { @@ -263,7 +264,7 @@ openerp.web.form.DashBoardLegacy = openerp.web.form.DashBoard.extend({ } } }); - return this._super(this, arguments); + this._super(this); } });