diff --git a/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js b/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js index 187550f6c..21a3adc9e 100644 --- a/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js +++ b/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js @@ -220,7 +220,7 @@ odoo.define('web_widget_x2many_2d_matrix.X2Many2dMatrixRenderer', function (requ */ _renderLabelCell: function (record) { var $td = $(''); - var value = record.data[this.matrix_data.field_y_axis]; + var value = record.data[this.matrix_data.field_label_y_axis]; if (value.type === 'record') { // We have a related record value = value.data.display_name; diff --git a/web_widget_x2many_2d_matrix/static/src/js/widget_x2many_2d_matrix.js b/web_widget_x2many_2d_matrix/static/src/js/widget_x2many_2d_matrix.js index a8b336da1..8f639ae5b 100644 --- a/web_widget_x2many_2d_matrix/static/src/js/widget_x2many_2d_matrix.js +++ b/web_widget_x2many_2d_matrix/static/src/js/widget_x2many_2d_matrix.js @@ -94,8 +94,8 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) { this.x_axis = []; this.y_axis = []; _.each(records, function (record) { - var x = record.data[this.field_x_axis], - y = record.data[this.field_y_axis]; + var x = record.data[this.field_label_x_axis], + y = record.data[this.field_label_y_axis]; if (x.type === 'record') { // We have a related record x = x.data.display_name; @@ -126,6 +126,8 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) { 'field_value': this.field_value, 'field_x_axis': this.field_x_axis, 'field_y_axis': this.field_y_axis, + 'field_label_x_axis': this.field_label_x_axis, + 'field_label_y_axis': this.field_label_y_axis, 'columns': this.columns, 'rows': this.rows, 'show_row_totals': this.show_row_totals, diff --git a/web_widget_x2many_2d_matrix_example/models/__init__.py b/web_widget_x2many_2d_matrix_example/models/__init__.py index bf8b6ac47..40f134705 100644 --- a/web_widget_x2many_2d_matrix_example/models/__init__.py +++ b/web_widget_x2many_2d_matrix_example/models/__init__.py @@ -1,2 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import x2m_demo +from . import res_users diff --git a/web_widget_x2many_2d_matrix_example/models/res_users.py b/web_widget_x2many_2d_matrix_example/models/res_users.py new file mode 100644 index 000000000..d7e6b0859 --- /dev/null +++ b/web_widget_x2many_2d_matrix_example/models/res_users.py @@ -0,0 +1,13 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models, api, fields + + +class ResUsers(models.Model): + _inherit = 'res.users' + + matrix_display_name = fields.Char(compute="_compute_matrix_display_name") + + @api.depends("name", "email") + def _compute_matrix_display_name(self): + for user in self: + user.matrix_display_name = "%s (%s)" % (user.name, user.email) diff --git a/web_widget_x2many_2d_matrix_example/models/x2m_demo.py b/web_widget_x2many_2d_matrix_example/models/x2m_demo.py index 1f6a69977..6a13dc58d 100644 --- a/web_widget_x2many_2d_matrix_example/models/x2m_demo.py +++ b/web_widget_x2many_2d_matrix_example/models/x2m_demo.py @@ -7,8 +7,16 @@ class X2MDemo(models.Model): _description = 'X2Many Demo' name = fields.Char() + + display_name = fields.Char(compute="_compute_display_name") + line_ids = fields.One2many('x2m.demo.line', 'demo_id') + @api.depends("name") + def _compute_display_name(self): + for demo in self: + demo.display_name = "%s (#%s)" % (demo.name, demo.id) + @api.multi def _open_x2m_matrix(self, view_xmlid): wiz = self.env['x2m.matrix.demo.wiz'].create({}) @@ -46,7 +54,9 @@ class X2MDemoLine(models.Model): name = fields.Char() demo_id = fields.Many2one('x2m.demo') + demo_display_name = fields.Char(related="demo_id.display_name") user_id = fields.Many2one('res.users') + user_display_name = fields.Char(related="user_id.matrix_display_name") value = fields.Integer() value_selection = fields.Selection( [('val1', 'Value 1'), ('val2', 'Value 2')], diff --git a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py index 8d4eacb0d..e68a0130b 100644 --- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py +++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py @@ -19,6 +19,7 @@ class X2mMatrixDemoWiz(models.TransientModel): 'name': "{}'s task on {}".format(usr.name, rec.name), 'demo_id': rec.id, 'user_id': usr.id, + 'user_display_name': usr.matrix_display_name, }) # if there isn't a demo line record for the user, create a new one if not rec.line_ids.filtered(lambda x: x.user_id == usr) else diff --git a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml index ddb92653c..26755e149 100644 --- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml +++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml @@ -8,10 +8,12 @@
+ field_x_axis="demo_id" field_y_axis="user_id" field_value="value" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + + @@ -26,10 +28,12 @@ + field_x_axis="demo_id" field_y_axis="user_id" field_value="value_selection" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + + @@ -44,10 +48,12 @@ + field_x_axis="demo_id" field_y_axis="user_id" field_value="value_many2one" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + +