diff --git a/README.md b/README.md index c33d3d1c0073..e26c0dbfa6f3 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ addon | version | maintainers | summary [web_widget_product_label_section_and_note](web_widget_product_label_section_and_note/) | 17.0.1.0.1 | | unify the product and name into a single column [web_widget_section_and_note_text_scrollable](web_widget_section_and_note_text_scrollable/) | 17.0.1.0.0 | ivantodorovich | Make the text field of Section and Note widget scrollable [web_widget_url_advanced](web_widget_url_advanced/) | 17.0.1.0.0 | | This module extends URL widget for displaying anchors with custom labels. -[web_widget_x2many_2d_matrix](web_widget_x2many_2d_matrix/) | 17.0.2.0.0 | JasminSForgeFlow hbrunn | Show list fields as a matrix +[web_widget_x2many_2d_matrix](web_widget_x2many_2d_matrix/) | 17.0.2.0.1 | JasminSForgeFlow hbrunn | Show list fields as a matrix [//]: # (end addons) diff --git a/web_widget_x2many_2d_matrix/README.rst b/web_widget_x2many_2d_matrix/README.rst index 6c3766041d32..b218f059e650 100644 --- a/web_widget_x2many_2d_matrix/README.rst +++ b/web_widget_x2many_2d_matrix/README.rst @@ -11,7 +11,7 @@ !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3b939ed31516b2624a4420ffc82a3930260841d3edd944ba87968d79353e11c1 + !! source digest: sha256:b3c49bb3ff89ecca8e15592499b305035a572489dbca5abb391c3a1946978fc5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png diff --git a/web_widget_x2many_2d_matrix/__manifest__.py b/web_widget_x2many_2d_matrix/__manifest__.py index d219bf546365..6ba83068125e 100644 --- a/web_widget_x2many_2d_matrix/__manifest__.py +++ b/web_widget_x2many_2d_matrix/__manifest__.py @@ -5,7 +5,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "2D matrix for x2many fields", - "version": "17.0.2.0.0", + "version": "17.0.2.0.1", "maintainers": ["JasminSForgeFlow", "hbrunn"], "development_status": "Production/Stable", "author": ( diff --git a/web_widget_x2many_2d_matrix/demo/res_groups_views.xml b/web_widget_x2many_2d_matrix/demo/res_groups_views.xml index 4488c30e167b..fd87de62e57c 100644 --- a/web_widget_x2many_2d_matrix/demo/res_groups_views.xml +++ b/web_widget_x2many_2d_matrix/demo/res_groups_views.xml @@ -15,7 +15,7 @@ field_y_axis="partner_id" field_value="country_id" > - [ + -
Char field as value
+
Char field as value, clickable X axis
- [ - + + +
Boolean field as value
@@ -53,7 +57,7 @@ field_y_axis="partner_id" field_value="active" > - [ + - [ + +
Float field as value with float_time widget
+ + + + + + +
diff --git a/web_widget_x2many_2d_matrix/i18n/ar.po b/web_widget_x2many_2d_matrix/i18n/ar.po index c763e753a9a8..268bf7b5eef7 100644 --- a/web_widget_x2many_2d_matrix/i18n/ar.po +++ b/web_widget_x2many_2d_matrix/i18n/ar.po @@ -27,7 +27,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -35,6 +35,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/de.po b/web_widget_x2many_2d_matrix/i18n/de.po index a81a0aa8a6cb..6661b583da7f 100644 --- a/web_widget_x2many_2d_matrix/i18n/de.po +++ b/web_widget_x2many_2d_matrix/i18n/de.po @@ -27,7 +27,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -35,6 +35,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/es.po b/web_widget_x2many_2d_matrix/i18n/es.po index 71fbb8154ad9..f3990c0f5446 100644 --- a/web_widget_x2many_2d_matrix/i18n/es.po +++ b/web_widget_x2many_2d_matrix/i18n/es.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/fi.po b/web_widget_x2many_2d_matrix/i18n/fi.po index db07ba2e98f2..c1f7bce73b4c 100644 --- a/web_widget_x2many_2d_matrix/i18n/fi.po +++ b/web_widget_x2many_2d_matrix/i18n/fi.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/fr.po b/web_widget_x2many_2d_matrix/i18n/fr.po index bd00378c78ed..4c179a0d0505 100644 --- a/web_widget_x2many_2d_matrix/i18n/fr.po +++ b/web_widget_x2many_2d_matrix/i18n/fr.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/hr.po b/web_widget_x2many_2d_matrix/i18n/hr.po index 49283c5a7c0b..48f2d47aa34a 100644 --- a/web_widget_x2many_2d_matrix/i18n/hr.po +++ b/web_widget_x2many_2d_matrix/i18n/hr.po @@ -28,7 +28,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -36,6 +36,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/it.po b/web_widget_x2many_2d_matrix/i18n/it.po index 5670a1ff16e7..394d95525be3 100644 --- a/web_widget_x2many_2d_matrix/i18n/it.po +++ b/web_widget_x2many_2d_matrix/i18n/it.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: web (8.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-03-17 07:30+0000\n" -"PO-Revision-Date: 2025-07-11 21:04+0000\n" +"PO-Revision-Date: 2025-08-19 15:25+0000\n" "Last-Translator: mymage \n" "Language-Team: Italian (http://www.transifex.com/oca/OCA-web-8-0/language/it/" ")\n" @@ -26,14 +26,19 @@ msgstr "Campo booleano come valore" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" -msgstr "Campo carattere come valore" +msgid "Char field as value, clickable X axis" +msgstr "Campo carattere come valore, asse X cliccabile" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "Float field as value" msgstr "Campo a virgola mobile come valore" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "Valore in virgola mobile con widget float_time" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" @@ -58,6 +63,9 @@ msgstr "Niente da visualizzare." msgid "Selection field as value" msgstr "Campo selezione come valore" +#~ msgid "Char field as value" +#~ msgstr "Campo carattere come valore" + #, python-format #~ msgid "Sorry no matrix data to display." #~ msgstr "Spiacenti, nessun dato da visualizzare." diff --git a/web_widget_x2many_2d_matrix/i18n/lt.po b/web_widget_x2many_2d_matrix/i18n/lt.po index fd7c347cc17f..f9a7aa3320e2 100644 --- a/web_widget_x2many_2d_matrix/i18n/lt.po +++ b/web_widget_x2many_2d_matrix/i18n/lt.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/nl.po b/web_widget_x2many_2d_matrix/i18n/nl.po index 1583f43acb50..a72279857429 100644 --- a/web_widget_x2many_2d_matrix/i18n/nl.po +++ b/web_widget_x2many_2d_matrix/i18n/nl.po @@ -23,7 +23,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -31,6 +31,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/nl_NL.po b/web_widget_x2many_2d_matrix/i18n/nl_NL.po index 057b2373847d..073714a08a89 100644 --- a/web_widget_x2many_2d_matrix/i18n/nl_NL.po +++ b/web_widget_x2many_2d_matrix/i18n/nl_NL.po @@ -27,7 +27,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -35,6 +35,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/pt_BR.po b/web_widget_x2many_2d_matrix/i18n/pt_BR.po index 1d506b2de4bf..230e0efe14cd 100644 --- a/web_widget_x2many_2d_matrix/i18n/pt_BR.po +++ b/web_widget_x2many_2d_matrix/i18n/pt_BR.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/sl.po b/web_widget_x2many_2d_matrix/i18n/sl.po index 359bb5d731fb..fa617f788615 100644 --- a/web_widget_x2many_2d_matrix/i18n/sl.po +++ b/web_widget_x2many_2d_matrix/i18n/sl.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/tr.po b/web_widget_x2many_2d_matrix/i18n/tr.po index 9c97bf3dc4c7..5eb199b0072e 100644 --- a/web_widget_x2many_2d_matrix/i18n/tr.po +++ b/web_widget_x2many_2d_matrix/i18n/tr.po @@ -26,7 +26,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -34,6 +34,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/web_widget_x2many_2d_matrix.pot b/web_widget_x2many_2d_matrix/i18n/web_widget_x2many_2d_matrix.pot index 59e77621a175..beaaa1c87a15 100644 --- a/web_widget_x2many_2d_matrix/i18n/web_widget_x2many_2d_matrix.pot +++ b/web_widget_x2many_2d_matrix/i18n/web_widget_x2many_2d_matrix.pot @@ -20,7 +20,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -28,6 +28,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/i18n/zh_CN.po b/web_widget_x2many_2d_matrix/i18n/zh_CN.po index 66e5c5dabbcd..f4ab95a8554d 100644 --- a/web_widget_x2many_2d_matrix/i18n/zh_CN.po +++ b/web_widget_x2many_2d_matrix/i18n/zh_CN.po @@ -23,7 +23,7 @@ msgstr "" #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form -msgid "Char field as value" +msgid "Char field as value, clickable X axis" msgstr "" #. module: web_widget_x2many_2d_matrix @@ -31,6 +31,11 @@ msgstr "" msgid "Float field as value" msgstr "" +#. module: web_widget_x2many_2d_matrix +#: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form +msgid "Float field as value with float_time widget" +msgstr "" + #. module: web_widget_x2many_2d_matrix #: model_terms:ir.ui.view,arch_db:web_widget_x2many_2d_matrix.view_groups_form msgid "" diff --git a/web_widget_x2many_2d_matrix/static/description/index.html b/web_widget_x2many_2d_matrix/static/description/index.html index 8eebac8b6c9e..08ec9c7ff39c 100644 --- a/web_widget_x2many_2d_matrix/static/description/index.html +++ b/web_widget_x2many_2d_matrix/static/description/index.html @@ -372,7 +372,7 @@

2D matrix for x2many fields

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:3b939ed31516b2624a4420ffc82a3930260841d3edd944ba87968d79353e11c1 +!! source digest: sha256:b3c49bb3ff89ecca8e15592499b305035a572489dbca5abb391c3a1946978fc5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Production/Stable License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

This module allows to show an x2many field with 3-tuples ($x_value, diff --git a/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.esm.js b/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.esm.js index cb429feff4ae..9f4dceced343 100644 --- a/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.esm.js +++ b/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.esm.js @@ -3,17 +3,14 @@ import {Component, onWillUpdateProps} from "@odoo/owl"; import {evaluateBooleanExpr, evaluateExpr} from "@web/core/py_js/py"; import {Domain} from "@web/core/domain"; +import {Record} from "@web/model/relational_model/record"; import {getFieldContext} from "@web/model/relational_model/utils"; -import {registry} from "@web/core/registry"; -const fieldRegistry = registry.category("fields"); export class X2Many2DMatrixRenderer extends Component { setup() { - this.ValueFieldComponent = this._getValueFieldComponent(); this.columns = this._getColumns(); this.rows = this._getRows(); this.matrix = this._getMatrix(); - this.ValueFieldType = this._getValueFieldType(); onWillUpdateProps((newProps) => { this.columns = this._getColumns(newProps.list.records); @@ -28,6 +25,7 @@ export class X2Many2DMatrixRenderer extends Component { const column = { value: record.data[this.matrixFields.x], text: record.data[this.matrixFields.x], + rawValue: record.data[this.matrixFields.x], }; if (record.fields[this.matrixFields.x].type === "many2one") { column.text = column.value[1]; @@ -45,6 +43,7 @@ export class X2Many2DMatrixRenderer extends Component { const row = { value: record.data[this.matrixFields.y], text: record.data[this.matrixFields.y], + rawValue: record.data[this.matrixFields.y], }; if (record.fields[this.matrixFields.y].type === "many2one") { row.text = row.value[1]; @@ -94,62 +93,41 @@ export class X2Many2DMatrixRenderer extends Component { return this.props.matrixFields; } - _getValueField() { - const field = this.list.fields[this.matrixFields.value]; - if (!field.widget) { - return fieldRegistry.get(field.type); - } - return fieldRegistry.get(field.widget); - } - - _getValueFieldComponent() { - return this._getValueField().component; + get valueFieldComponent() { + return this.props.list_view.fieldNodes[this.matrixFields.value + "_0"].field + .component; } - _getValueFieldType() { - const field = this.list.fields[this.matrixFields.value]; - return field.type; + get xFieldComponent() { + return this.props.list_view.fieldNodes[this.matrixFields.x + "_0"].field + .component; } - _getXAxisField() { - return this.list.fields[this.matrixFields.x]; - } - - _getYAxisField() { - return this.list.fields[this.matrixFields.y]; + get yFieldComponent() { + return this.props.list_view.fieldNodes[this.matrixFields.y + "_0"].field + .component; } _aggregateRow(row) { const y = this.rows.findIndex((r) => r.value === row); const total = this.matrix[y].map((r) => r.value).reduce((aggr, x) => aggr + x); - if (this.ValueFieldType === "integer") { - return total; - } - return Number(total).toFixed(2); + return total; } _aggregateColumn(column) { const x = this.columns.findIndex((c) => c.value === column); - const total = this.matrix - .map((r) => r[x]) .map((r) => r.value) .reduce((aggr, y) => aggr + y); - if (this.ValueFieldType === "integer") { - return total; - } - return Number(total).toFixed(2); + return total; } _aggregateAll() { const total = this.matrix .map((r) => r.map((x) => x.value).reduce((aggr, x) => aggr + x)) .reduce((aggr, y) => aggr + y); - if (this.ValueFieldType === "integer") { - return total; - } - return Number(total).toFixed(2); + return total; } _canAggregate() { @@ -158,26 +136,43 @@ export class X2Many2DMatrixRenderer extends Component { ); } - getValueFieldProps(column, row) { + _getValueFieldProps(column, row) { const x = this.columns.findIndex((c) => c.value === column); const y = this.rows.findIndex((r) => r.value === row); - let record = null; - let value = null; - if ( - this.matrix[y] && - this.matrix[y][x] && - (record = this.matrix[y][x].records[0]) - ) { - record = this.matrix[y][x].records[0]; - value = this.matrix[y][x].value; - } - value = record ? record.data[this.matrixFields.value] : value; - this.matrix[y][x].value = value; + const record = this.matrix[y][x].records[0]; + if (!record) { return null; } + return this._getMatrixFieldProps(record, "value"); + } + + _getAxisFieldProps(value, axis) { + const fieldName = this.matrixFields[axis]; + const record = new Record(this.list.model, this.list._config, { + [fieldName]: value, + }); + const props = this._getMatrixFieldProps(record, axis); + if (this.list.fields[fieldName].type === "many2one") { + props.canOpen = + axis === "x" ? this.props.isXClickable : this.props.isYClickable; + } + props.readonly = true; + return props; + } + + _getAggregateProps(value) { + const record = new Record(this.list.model, this.list._config, { + [this.matrixFields.value]: value, + }); + const props = this._getMatrixFieldProps(record, "value"); + props.readonly = true; + return props; + } + + _getMatrixFieldProps(record, fieldName) { const fieldInfo = - this.props.list_view.fieldNodes[this.matrixFields.value + "_0"]; + this.props.list_view.fieldNodes[this.matrixFields[fieldName] + "_0"]; const dynamicInfo = { get context() { return getFieldContext(record, fieldInfo.name, fieldInfo.context); @@ -201,19 +196,15 @@ export class X2Many2DMatrixRenderer extends Component { record.evalContextWithVirtualIds ), }; - const valueField = this._getValueField(); const result = { readonly: dynamicInfo.readonly, record: record, - name: this.matrixFields.value, - ...(valueField.extractProps || (() => ({}))).apply(valueField, [ + name: this.matrixFields[fieldName], + ...(fieldInfo.field.extractProps || (() => ({}))).apply(fieldInfo.field, [ fieldInfo, dynamicInfo, ]), }; - if (value === null) { - result.readonly = true; - } return result; } } diff --git a/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.xml b/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.xml index edc7b67fa5db..6aff7687dbf5 100644 --- a/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.xml +++ b/web_widget_x2many_2d_matrix/static/src/components/x2many_2d_matrix_renderer/x2many_2d_matrix_renderer.xml @@ -14,15 +14,10 @@ t-key="column.value" class="text-center" > - - - - - - + @@ -30,24 +25,19 @@ - - - - - - + @@ -55,7 +45,10 @@ t-if="props.showRowTotals and _canAggregate()" class="row-total" > - + @@ -63,10 +56,16 @@ - + - +