Browse Source

[IMP] Many2one click event and new tag for m2o fields

Signed-off-by: Luis Felipe Mileo <mileo@kmee.com.br>
pull/1242/head
Luis Felipe Mileo 5 years ago
parent
commit
57e914585d
  1. 4
      web_widget_x2many_2d_matrix/static/src/css/web_widget_x2many_2d_matrix.css
  2. 78
      web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js
  3. 4
      web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml

4
web_widget_x2many_2d_matrix/static/src/css/web_widget_x2many_2d_matrix.css

@ -6,3 +6,7 @@
{
white-space: normal;
}
.widget_x2many_hide_xy
{
display: none !important;
}

78
web_widget_x2many_2d_matrix/static/src/js/web_widget_x2many_2d_matrix.js

@ -33,6 +33,7 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
fields_att: {},
x_axis_clickable: true,
y_axis_clickable: true,
xy_many2one: false,
// read parameters
init: function(field_manager, node)
@ -41,6 +42,7 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
this.field_y_axis = node.attrs.field_y_axis || this.field_y_axis;
this.x_axis_clickable = node.attrs.x_axis_clickable || this.x_axis_clickable;
this.y_axis_clickable = node.attrs.y_axis_clickable || this.y_axis_clickable;
this.xy_many2one = node.attrs.xy_many2one || this.xy_many2one;
this.field_label_x_axis = node.attrs.field_label_x_axis || this.field_x_axis;
this.field_label_y_axis = node.attrs.field_label_y_axis || this.field_y_axis;
this.field_value = node.attrs.field_value || this.field_value;
@ -371,7 +373,7 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
this.proxy(this.many2one_axis_click),
this.field_y_axis, 'y'));
}
if(this.fields[this.field_value])
if(this.fields[this.field_value] && this.xy_many2one)
{
this.$el.find('tbody tr td[data-x]').addClass('oe_link')
.click(_.partial(
@ -394,31 +396,35 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
xy_axis_click: function(field, e)
{
var self = this;
var pop = new instance.web.form.FormOpenPopup(self);
var context = self.build_context().eval();
var model_obj = new instance.web.Model(self.field.relation);
model_obj.call('get_formview_id', [self.get("value"), context]).then(function(view_id){
pop.show_element(
self.field.relation,
self.get_xy_id(
jQuery(e.currentTarget).data('x'),
jQuery(e.currentTarget).data('y')
),
self.build_context(),
{
title: _t("Open: ") + self.string,
view_id: view_id
}
);
pop.on('write_completed', self, function(){
self.display_value = {};
self.display_value_backup = {};
self.render_value();
self.focus();
self.trigger('changed_value');
if (!this.get('effective_readonly'))
{
var self = this;
var pop = new instance.web.form.FormOpenPopup(self);
var context = self.build_context().eval();
var model_obj = new instance.web.Model(self.field.relation);
model_obj.call('get_formview_id', [self.get("value"), context]).then(function(view_id){
pop.show_element(
self.field.relation,
self.get_xy_id(
jQuery(e.currentTarget).data('x'),
jQuery(e.currentTarget).data('y')
),
self.build_context(),
{
title: _t("Open: ") + self.string,
view_id: view_id
}
);
pop.on('write_completed', self, function(){
self.display_value = {};
self.display_value_backup = {};
self.render_value();
self.focus();
self.trigger('changed_value');
});
});
});
}
},
start: function()
@ -459,13 +465,21 @@ openerp.web_widget_x2many_2d_matrix = function(instance)
effective_readonly_change: function()
{
this.$el
.find('tbody td.oe_list_field_cell span.oe_form_field .edit')
.toggle(!this.get('effective_readonly'));
this.$el
.find('tbody td.oe_list_field_cell span.oe_form_field .read')
.toggle(this.get('effective_readonly'));
this.$el.find('.edit').first().focus();
if(this.xy_many2one){
this.$el.find('input.widget_x2many_xy').addClass('widget_x2many_hide_xy')
this.$el.find('span.widget_x2many_xy').removeClass('oe_read_only')
this.$el.find('span.widget_x2many_xy').removeClass('read')
}else
{
this.$el
.find('tbody td.oe_list_field_cell span.oe_form_field .edit')
.toggle(!this.get('effective_readonly'));
this.$el
.find('tbody td.oe_list_field_cell span.oe_form_field .read')
.toggle(this.get('effective_readonly'));
this.$el.find('.edit').first().focus();
}
},
is_syntax_valid: function()

4
web_widget_x2many_2d_matrix/static/src/xml/web_widget_x2many_2d_matrix.xml

@ -16,8 +16,8 @@
<th><t t-esc="widget.get_y_axis_label(y)" /></th>
<td t-foreach="widget.get_x_axis_values()" t-as="x" t-att-class="'oe_list_field_cell' + (widget.is_numeric ? ' oe_number' : '')" t-att-data-x="x" t-att-data-y="y">
<span t-att-class="widget.get_xy_value_class()">
<input class="edit" t-att-data-id="widget.get_xy_id(x, y)" t-att-value="widget.format_xy_value(widget.get_xy_value(x, y))" t-att="widget.get_xy_att(x, y)"/>
<span class="read"><t t-esc="widget.format_xy_value(widget.get_xy_value(x, y))" /></span>
<input class="widget_x2many_xy edit o_form_input oe_edit_only" t-att-data-id="widget.get_xy_id(x, y)" t-att-value="widget.format_xy_value(widget.get_xy_value(x, y))" t-att="widget.get_xy_att(x, y)"/>
<span class="widget_x2many_xy read oe_read_only"><t t-esc="widget.format_xy_value(widget.get_xy_value(x, y))" /></span>
</span>
</td>
<td t-if="widget.show_row_totals" class="row_total oe_number" t-att-data-y="y"/>

Loading…
Cancel
Save