From 6ad2ea0202360fefa68fa36740379cec0926a266 Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Fri, 20 Dec 2013 17:40:19 +0530 Subject: [PATCH] [IMP] legend widget bzr revid: rgaopenerp-20131220121019-h1o0lllprbo02uqa --- addons/web/static/src/js/view_form.js | 53 +++++++++++++++-------- addons/web/static/src/xml/base.xml | 8 ++-- addons/web_kanban/static/src/js/kanban.js | 23 +++------- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d31f8ff2145..a967a9c9d66 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2330,34 +2330,53 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we }); } }); -instance.web.form.Legend = instance.web.form.FieldChar.extend({ - init: function (field_manager, node) { - this._super(field_manager, node); - this.options = py.eval(node.attrs.options) - this.legend_field = this.options.legend_field; + +instance.web.Legend = instance.web.Widget.extend({ + init: function (parent, dataset, options) { + this._super(parent); + this.parent = parent; + this.dataset = dataset; + this.options = options; }, - render_value: function() { + render_value: function(record_id, data) { var self = this; - var legend_value = this.field_manager.fields[this.legend_field].get_value() - var content = QWeb.render("Legend."+ self.name, { - 'widget': self, - 'legend_value': legend_value, - }); - this.$el.html(content); - this.$el.find('li').click(self.execute_action.bind(self)); + self.record_id = record_id; + var content = QWeb.render("Legend."+ self.parent.name, data); + this.parent.$el.html(content); + if (!this.parent.get("effective_readonly")){ + this.parent.$el.find('.oe_legend').click(self.do_action.bind(self)); + } }, - execute_action: function(e){ + do_action: function(e){ var self = this; var li = $(e.target).closest( "li" ); if (li.length){ var value = li.data('value'); - return this.view.dataset.call_button(self.options.action, [this.view.datarecord.id, value, this.view.dataset.get_context()]).done(function(r) { - self.view.reload(); - }); + return self.dataset.call_button(self.options.action, [self.record_id, value, self.dataset.get_context()]).done(self.parent.reload_record.bind(self.parent)); } } }); + +instance.web.form.Legend = instance.web.form.FieldChar.extend({ + init: function (field_manager, node) { + this._super(field_manager, node); + this.legend = new instance.web.Legend(this, this.view.dataset, py.eval(node.attrs.options)); + }, + + reload_record: function(){ + this.view.reload(); + }, + render_value: function() { + var self = this; + var legend_field = this.options.legend_field; + var legend_value = this.field_manager.fields[legend_field].get_value(); + self.legend.render_value(this.view.datarecord.id, { + 'widget': self, + 'legend_value': legend_value, + }); + }, +}); instance.web.form.FieldID = instance.web.form.FieldChar.extend({ process_modifiers: function () { this._super(); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 12b247534a8..5dc8d210a32 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1036,14 +1036,14 @@
- + @@ -1053,12 +1053,12 @@ diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index ec5c8cce204..888397c90ac 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -1233,31 +1233,22 @@ instance.web_kanban.AbstractField = instance.web.Widget.extend(instance.web_kanb instance.web_kanban.Legend = instance.web_kanban.AbstractField.extend({ init: function(parent, field, $node) { this._super.apply(this, arguments); - this.parent = parent; this.name = $node.attr('name') + this.parent = parent; + this.legend = new instance.web.Legend(this, parent.view.dataset, this.options); + }, + reload_record: function(){ + this.parent.do_reload(); }, renderElement: function() { var self = this; var legend_field = this.options.legend_field; - var legend_field_value = this.parent.record[legend_field].raw_value - var content = QWeb.render("Legend." + self.name, { + var legend_field_value = this.parent.record[legend_field].raw_value + self.legend.render_value(this.parent.id, { 'widget': self, 'legend_value': legend_field_value, }); - this.$el.html(content); - this.$el.click(self.execute_action.bind(self)); }, - execute_action: function(e){ - e.preventDefault(); - var li = $(e.target).closest( "li" ); - if (li.length){ - var parent = this.parent - var value = li.data('value'); - return parent.view.dataset.call_button(this.options.action, [parent.id, value, parent.view.dataset.get_context()]).done(function(r) { - parent.do_reload(); - }); - } - } });