[IMP] add stage mode widget

bzr revid: rgaopenerp-20131216125602-r10t3se7hgvoy73w
This commit is contained in:
RGA(OpenERP) 2013-12-16 18:26:02 +05:30
parent 0fd50c4750
commit 8d509498b6
2 changed files with 64 additions and 1 deletions

View File

@ -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'
});
/**

View File

@ -1031,6 +1031,31 @@
</t>
</span>
</t>
<t t-name="StageMode.kanban_state">
<div class="btn-group">
<t t-foreach="res" t-as="rec">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" t-if="widget.get('value') === rec.name" t-att-title="rec.description" >
<t t-raw="rec.body" />
</a>
</t>
<ul class="dropdown-menu">
<t t-foreach="res" t-as="rec">
<t t-if="widget.get('value') !== rec.name">
<li><a t-att-data-value="rec.name" href="#"><t t-raw="rec.body" /></a></li>
</t>
</t>
</ul>
</div>
</t>
<t t-name="StageMode.priority">
<t t-foreach="res" t-as="rec">
<a t-if="widget.get('value') === rec.name" t-att-data="rec.name" t-att-title="rec.description" >
<t t-raw="rec.body" />
</a>
</t>
</t>
<t t-name="FieldEmail">
<span class="oe_form_field oe_form_field_email" t-att-style="widget.node.attrs.style">
<a t-if="widget.get('effective_readonly')" href="#" class="oe_form_uri" target="_blank"/>