Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[12.0][MIG] web_widget_x2many_2d_matrix #1101

Merged
merged 58 commits into from
Nov 20, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
9d53699
[ADD] web_widget_x2many_2d_matrix
hbrunn Mar 11, 2015
4e73cdd
[UPD] readme
hbrunn Mar 11, 2015
3ec242a
[IMP] show column totals in table footer
hbrunn Mar 12, 2015
1aa706d
[FIX] use odoo's parse_value
hbrunn Mar 12, 2015
4ef233d
[ADD] allow to open linked record
hbrunn Mar 12, 2015
24adac0
[IMP] handle readonly flag
hbrunn Mar 12, 2015
3f5155a
[IMP] collapse whitespace in rows
hbrunn Mar 13, 2015
0ff664d
[IMP] support changing readonly state
hbrunn Mar 13, 2015
483b02f
[FIX] update readonly value after editing
hbrunn Mar 13, 2015
61f2cb4
[IMP] pass computed totals to inheriting function
hbrunn Mar 13, 2015
3f35550
[FIX] replace therp icon
hbrunn Mar 13, 2015
fa17226
[FIX] setup focus
hbrunn Mar 13, 2015
555de4a
[ADD] validation
hbrunn Mar 13, 2015
9b460f5
[IMP] we don't need data-x and data-y on the input
hbrunn Mar 16, 2015
49131e0
[IMP] use semantic css classes instead of element names
hbrunn Mar 16, 2015
b87b5e5
[IMP] add screenshot, example in README
hbrunn Mar 16, 2015
03f62ae
[IMP] icon
hbrunn Mar 16, 2015
410bf22
[IMP] better modularity
hbrunn Mar 18, 2015
e8d6014
[FIX] support rerendering after virtual ids change
hbrunn Apr 16, 2015
5f0d890
[FIX] also reinitialize totals
hbrunn Apr 16, 2015
fe6c41f
Add bug tracker link on README.rst
yvaucher May 22, 2015
b051d46
add OCA to author
Jun 4, 2015
8705e57
remove comma
Jun 4, 2015
a31ee8b
[UPD] prefix versions with 8.0
sbidoul Oct 9, 2015
49ef856
[MIG] Make modules uninstallable
pedrobaeza Oct 14, 2015
004b29e
OCA Transbot updated translations from Transifex
oca-transbot Nov 24, 2015
165e962
[IMP] web_widget_x2many_2d_matrix: Several improvements
hbrunn Jan 18, 2016
c0c6289
[IMP] web_widget_x2many_2d_matrix: New option field_att_<name>
pedrobaeza Sep 14, 2016
9e9b934
[MIG] web_widget_x2many_2d_matrix: Migration to 9.0
pedrobaeza Sep 16, 2016
c1a1713
[IMP] web_widget_x2many_2d_matrix: Use new JS modularized API.
yajo Sep 16, 2016
5990b02
[IMP] web_widget_x2many_2d_matrix: Include x_axis_clickable and y_axi…
pedrobaeza Sep 21, 2016
6542442
[FIX] web_widget_x2many_2d_matrix: Use existing value in load_views
pedrobaeza Sep 21, 2016
606c25a
[IMP] web_widget_x2many_2d_matrix: Better options parsing
pedrobaeza Sep 22, 2016
4f40019
[IMP+ web_widget_x2many_2d_matrix: Add roadmap
pedrobaeza Sep 22, 2016
50a3af9
[IMP] web_widget_x2many_2d_matrix: Remove unneeded code
pedrobaeza Sep 22, 2016
b4f1a37
[FIX] web_widget_x2many_2d_matrix: Init correctly the view
pedrobaeza Sep 22, 2016
20ed7d3
[MIG] Make modules uninstallable
pedrobaeza Oct 6, 2016
b35d088
[MIG] Rename manifest files
pedrobaeza Oct 6, 2016
cbb2e8a
Migration of web_widget_x2many_2d_matrix to 10.0
jesusVMayor Apr 24, 2017
f7881e1
[IMP] web_widget_x2many_2d_matrix: Update example
pedrobaeza Apr 28, 2017
0f7f30a
[10.0] web_widget_x2many_2d_matrix: update README
Jun 21, 2017
2fc7a00
[FIX] web_widget_x2many_2d_matrix: fixes (#712)
Aug 30, 2017
908dc89
OCA Transbot updated translations from Transifex
oca-transbot Jan 17, 2018
27aed59
[11][MIG] web_widget_x2many_2d_matrix WIP
Feb 15, 2018
935bd42
[MIG+REF][11] web_widget_x2many_2d_matrix
simahawk Feb 19, 2018
2d4a45c
[11.0] x2m matrix widget: Fix display of widget when called in onchange
grindtildeath Apr 17, 2018
8419269
[FIX] Make matrix editable depending of the status of the parent
MiquelRForgeFlow May 2, 2018
8e93093
[UPD] Update web_widget_x2many_2d_matrix.pot
oca-travis Jun 24, 2018
8bf6c91
Translated using Weblate (Portuguese (Brazil))
Aug 3, 2018
fe8a044
[FIX] web_widget_x2many_2d_matrix: Fix linters
yajo Aug 21, 2018
6dba2c0
[FIX] web_widget_x2many_2d_matrix: Enable keyboard navigation
yajo Aug 21, 2018
0fd0446
[FIX] web_widget_x2many_2d_matrix: Allow empty cells
yajo Aug 24, 2018
2439bde
[UPD] Update web_widget_x2many_2d_matrix.pot
oca-travis Aug 27, 2018
47c09db
[IMP] web_widget_x2many_2d_matrix: Total of all rows (#1043)
tarteo Sep 20, 2018
652af96
[UPD] Update web_widget_x2many_2d_matrix.pot
oca-travis Sep 20, 2018
fc66ba9
web_widget_x2many_matrix: fix issue with limit of records
JordiBForgeFlow Aug 7, 2018
a57d77a
[FIX] web_widget_x2many_2d_matrix: Closing parenthesis
pedrobaeza Nov 9, 2018
fa2969a
[MIG] web_widget_x2many_2d_matrix: Migration to 12.0
alexey-pelykh Nov 9, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
218 changes: 218 additions & 0 deletions web_widget_x2many_2d_matrix/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
===========================
2D matrix for x2many fields
===========================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/12.0/web_widget_x2many_2d_matrix
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_widget_x2many_2d_matrix
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/12.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to show an x2many field with 3-tuples
($x_value, $y_value, $value) in a table

+-----------+-------------+-------------+
| | $x_value1 | $x_value2 |
+===========+=============+=============+
| $y_value1 | $value(1/1) | $value(2/1) |
+-----------+-------------+-------------+
| $y_value2 | $value(1/2) | $value(2/2) |
+-----------+-------------+-------------+

where `value(n/n)` is editable.

An example use case would be: Select some projects and some employees so that
a manager can easily fill in the planned_hours for one task per employee. The
result could look like this:

.. image:: /web_widget_x2many_2d_matrix/static/description/screenshot.png
:alt: Screenshot

The beauty of this is that you have an arbitrary amount of columns with this
widget, trying to get this in standard x2many lists involves some quite ugly
hacks.

**Table of contents**

.. contents::
:local:

Usage
=====

Use this widget by saying::

<field name="my_field" widget="x2many_2d_matrix" />

This assumes that my_field refers to a model with the fields `x`, `y` and
`value`. If your fields are named differently, pass the correct names as
attributes:

.. code-block:: xml

<field name="my_field" widget="x2many_2d_matrix" field_x_axis="my_field1" field_y_axis="my_field2" field_value="my_field3">
<tree>
<field name="my_field"/>
<field name="my_field1"/>
<field name="my_field2"/>
<field name="my_field3"/>
</tree>
</field>

You can pass the following parameters:

field_x_axis
The field that indicates the x value of a point
field_y_axis
The field that indicates the y value of a point
field_label_x_axis
Use another field to display in the table header
field_label_y_axis
Use another field to display in the table header
field_value
Show this field as value
show_row_totals
If field_value is a numeric field, it indicates if you want to calculate
row totals. True by default
show_column_totals
If field_value is a numeric field, it indicates if you want to calculate
column totals. True by default

Example
=======

You need a data structure already filled with values. Let's assume we want to
use this widget in a wizard that lets the user fill in planned hours for one
task per project per user. In this case, we can use ``project.task`` as our
data model and point to it from our wizard. The crucial part is that we fill
the field in the default function:

.. code-block:: python

from odoo import fields, models

class MyWizard(models.TransientModel):
_name = 'my.wizard'

def _default_task_ids(self):
# your list of project should come from the context, some selection
# in a previous wizard or wherever else
projects = self.env['project.project'].browse([1, 2, 3])
# same with users
users = self.env['res.users'].browse([1, 2, 3])
return [
(0, 0, {
'name': 'Sample task name',
'project_id': p.id,
'user_id': u.id,
'planned_hours': 0,
'message_needaction': False,
'date_deadline': fields.Date.today(),
})
# if the project doesn't have a task for the user,
# create a new one
if not p.task_ids.filtered(lambda x: x.user_id == u) else
# otherwise, return the task
(4, p.task_ids.filtered(lambda x: x.user_id == u)[0].id)
for p in projects
for u in users
]

task_ids = fields.Many2many('project.task', default=_default_task_ids)

Now in our wizard, we can use:

.. code-block:: xml

<field name="task_ids" widget="x2many_2d_matrix" field_x_axis="project_id" field_y_axis="user_id" field_value="planned_hours">
<tree>
<field name="task_ids"/>
<field name="project_id"/>
<field name="user_id"/>
<field name="planned_hours"/>
</tree>
</field>

Known issues / Roadmap
======================

* Support extra attributes on each field cell via `field_extra_attrs` param.
We could set a cell as not editable, required or readonly for instance.
The `readonly` case will also give the ability
to click on m2o to open related records.

* Support limit total records in the matrix. Ref: https://github.com/OCA/web/issues/901

* Support cell traversal through keyboard arrows.

* Entering the widget from behind by pressing ``Shift+TAB`` in your keyboard
will enter into the 1st cell until https://github.com/odoo/odoo/pull/26490
is merged.

* Support extra invisible fields inside each cell.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_x2many_2d_matrix%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Therp BV
* Tecnativa
* Camptocamp

Contributors
~~~~~~~~~~~~

* Holger Brunn <hbrunn@therp.nl>
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Artem Kostyuk <a.kostyuk@mobilunity.com>
* Simone Orsi <simone.orsi@camptocamp.com>
* Timon Tschanz <timon.tschanz@camptocamp.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Dennis Sluijk <d.sluijk@onestein.nl>
* Alexey Pelykh <alexey.pelykh@brainbeanapps.com>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/web <https://github.com/OCA/web/tree/12.0/web_widget_x2many_2d_matrix>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions web_widget_x2many_2d_matrix/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
25 changes: 25 additions & 0 deletions web_widget_x2many_2d_matrix/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2015 Holger Brunn <hbrunn@therp.nl>
# Copyright 2016 Pedro M. Baeza <pedro.baeza@tecnativa.com>
# Copyright 2018 Simone Orsi <simone.orsi@camptocamp.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': '2D matrix for x2many fields',
'version': '12.0.1.0.0',
'author': (
'Therp BV, '
'Tecnativa, '
'Camptocamp, '
'Odoo Community Association (OCA)'
),
'website': 'https://github.com/OCA/web',
'license': 'AGPL-3',
'category': 'Hidden/Dependency',
'summary': 'Show list fields as a matrix',
'depends': [
'web',
],
'data': [
'views/assets.xml',
],
'installable': True,
}
31 changes: 31 additions & 0 deletions web_widget_x2many_2d_matrix/i18n/ar.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_widget_x2many_2d_matrix
#
# Translators:
# SaFi J. <safi2266@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: web (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-16 07:41+0000\n"
"PO-Revision-Date: 2015-12-16 17:24+0000\n"
"Last-Translator: SaFi J. <safi2266@gmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/oca/OCA-web-8-0/language/"
"ar/)\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#. module: web_widget_x2many_2d_matrix
#. openerp-web
#: code:addons/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js:46
#, python-format
msgid "Sorry no matrix data to display."
msgstr ""

#~ msgid "Total"
#~ msgstr "المجموع الاجمالي"
30 changes: 30 additions & 0 deletions web_widget_x2many_2d_matrix/i18n/de.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_widget_x2many_2d_matrix
#
# Translators:
# Rudolf Schnapka <rs@techno-flex.de>, 2016
msgid ""
msgstr ""
"Project-Id-Version: web (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-10 07:31+0000\n"
"PO-Revision-Date: 2016-01-18 20:15+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
"Language-Team: German (http://www.transifex.com/oca/OCA-web-8-0/language/"
"de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: web_widget_x2many_2d_matrix
#. openerp-web
#: code:addons/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js:46
#, python-format
msgid "Sorry no matrix data to display."
msgstr ""

#~ msgid "Total"
#~ msgstr "Gesamt"
29 changes: 29 additions & 0 deletions web_widget_x2many_2d_matrix/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_widget_x2many_2d_matrix
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: web (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-23 13:46+0000\n"
"PO-Revision-Date: 2015-11-07 11:29+0000\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-web-8-0/language/"
"es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: web_widget_x2many_2d_matrix
#. openerp-web
#: code:addons/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js:46
#, python-format
msgid "Sorry no matrix data to display."
msgstr ""

#~ msgid "Total"
#~ msgstr "Total"
30 changes: 30 additions & 0 deletions web_widget_x2many_2d_matrix/i18n/fi.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_widget_x2many_2d_matrix
#
# Translators:
# Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: web (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-10 07:31+0000\n"
"PO-Revision-Date: 2016-02-01 09:54+0000\n"
"Last-Translator: Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>\n"
"Language-Team: Finnish (http://www.transifex.com/oca/OCA-web-8-0/language/"
"fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#. module: web_widget_x2many_2d_matrix
#. openerp-web
#: code:addons/web_widget_x2many_2d_matrix/static/src/js/2d_matrix_renderer.js:46
#, python-format
msgid "Sorry no matrix data to display."
msgstr ""

#~ msgid "Total"
#~ msgstr "Yhteensä"
Loading