[IMP] add stage mode widget
bzr revid: rgaopenerp-20131216125602-r10t3se7hgvoy73w
This commit is contained in:
parent
0fd50c4750
commit
8d509498b6
|
@ -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'
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
@ -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"/>
|
||||
|
|
Loading…
Reference in New Issue