From 8d509498b6ee28c96866b76803b07bce00114329 Mon Sep 17 00:00:00 2001 From: "RGA(OpenERP)" <> Date: Mon, 16 Dec 2013 18:26:02 +0530 Subject: [PATCH] [IMP] add stage mode widget bzr revid: rgaopenerp-20131216125602-r10t3se7hgvoy73w --- addons/web/static/src/js/view_form.js | 40 ++++++++++++++++++++++++++- addons/web/static/src/xml/base.xml | 25 +++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f20e9053867..d772cbb55cd 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2330,7 +2330,44 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we }); } }); - +instance.web.form.StageMode = instance.web.form.FieldChar.extend({ + init: function (field_manager, node) { + this._super(field_manager, node); + this.options = py.eval(node.attrs.options) + this.stage_dataset = new instance.web.DataSetStatic(this, this.options.stage_model, this.build_context()); + this.stage_field = this.options.stage_field; + }, + + get_stage_value: function(){ + var def = $.Deferred(); + var stage_id = this.field_manager.fields[this.stage_field].get_value() + this.stage_dataset.call('search_read', [[[this.stage_field,'=', stage_id],['type','=',this.name]]]).then(function (res){ + def.resolve(res); + }) + return def + }, + + render_value: function() { + var self = this; + self.get_stage_value().then(function (res){ + var content = QWeb.render("StageMode."+self.name, { + 'widget': self, + 'res': res, + }); + self.$el.html(content); + self.$el.find("li").click(self.execute_action.bind(self)); + }) + }, + execute_action: function(e){ + e.preventDefault(); + var self = this; + $this = $(e.target) + var value = $this.data('value') || $this.parent().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(); + }); + } +}); instance.web.form.FieldID = instance.web.form.FieldChar.extend({ process_modifiers: function () { this._super(); @@ -5853,6 +5890,7 @@ instance.web.form.widgets = new instance.web.Registry({ 'monetary': 'instance.web.form.FieldMonetary', 'many2many_checkboxes': 'instance.web.form.FieldMany2ManyCheckBoxes', 'x2many_counter': 'instance.web.form.X2ManyCounter', + 'stage_mode':'instance.web.form.StageMode' }); /** diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ae7a4f279b0..8d1f9cb01f4 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1031,6 +1031,31 @@ + + + +
+ + + + + + +
+
+ + + + + + +