diff --git a/setup/web_tree_dynamic_colored_field/odoo/addons/web_tree_dynamic_colored_field b/setup/web_tree_dynamic_colored_field/odoo/addons/web_tree_dynamic_colored_field new file mode 120000 index 000000000..33902bb25 --- /dev/null +++ b/setup/web_tree_dynamic_colored_field/odoo/addons/web_tree_dynamic_colored_field @@ -0,0 +1 @@ +../../../../web_tree_dynamic_colored_field \ No newline at end of file diff --git a/setup/web_tree_dynamic_colored_field/setup.py b/setup/web_tree_dynamic_colored_field/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/web_tree_dynamic_colored_field/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_tree_dynamic_colored_field/README.rst b/web_tree_dynamic_colored_field/README.rst new file mode 100644 index 000000000..a8893444b --- /dev/null +++ b/web_tree_dynamic_colored_field/README.rst @@ -0,0 +1,162 @@ +============================ +Colorize field in tree views +============================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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_tree_dynamic_colored_field + :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_tree_dynamic_colored_field + :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 aims to add support for dynamically coloring fields in tree view +according to data in the record. + +It provides attributes on fields with the similar syntax as the ``colors`` attribute +in tree tags. + +Further, it provides a ``color_field`` attribute on tree tags's ``colors`` to use +a field's value as color. + +Features +======== + +* Add attribute ``bg_color`` on field's ``options`` to color background of a cell in tree view +* Add attribute ``fg_color`` on field's ``options`` to change text color of a cell in tree view +* Add attribute ``color_field`` on the tree element's ``colors`` to use as color + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* In the tree view declaration, put ``options='{"bg_color": "red: customer==True"}`` attribute in the ``field`` tag:: + + ... + + + ... + + ... + + + ... + + With this example, column which renders 'name' field will have its background colored in red. + +* In the tree view declaration, put ``options='{"fg_color": "white:customer == True"}'`` attribute in the ``field`` tag:: + + ... + + + ... + + ... + + + ... + + With this example, column which renders 'name' field will have its text colored in white on a customer records. + +* In the tree view declaration, use ``options='"color_field": "my_color"'`` attribute in the ``tree`` tag:: + + ... + + + ... + + ... + + + ... + +* If you want to use more than one color, you can split the attributes using ';': + +.. code:: + + options='{"fg_color": "red:red_color == True; green:green_color == True"}' + +Example: + +.. code:: xml + + ... + + + ... + + ... + + + ... + + With this example, the content of the field named `my_color` will be used to + populate the `my_color` CSS value. Use a function field to return whichever + color you want depending on the other record values. Note that this + overrides the rest of `colors` attributes, and that you need the tree + to load your field in the first place by adding it as invisible field. + +**Note that you should always use single quotes for fields' ``options`` and wrap nested values in double quotes since ``options`` is a JSON object.** + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp +* Therp BV + +Contributors +~~~~~~~~~~~~ + +* Damien Crier +* Holger Brunn +* Artem Kostyuk +* Guewen Baconnier + +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 `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_tree_dynamic_colored_field/__init__.py b/web_tree_dynamic_colored_field/__init__.py new file mode 100644 index 000000000..6d4f4bde9 --- /dev/null +++ b/web_tree_dynamic_colored_field/__init__.py @@ -0,0 +1 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). diff --git a/web_tree_dynamic_colored_field/__manifest__.py b/web_tree_dynamic_colored_field/__manifest__.py new file mode 100644 index 000000000..3fc8257fc --- /dev/null +++ b/web_tree_dynamic_colored_field/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2015-2018 Camptocamp SA, Damien Crier +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Colorize field in tree views", + "summary": "Allows you to dynamically color fields on tree views", + "category": "Hidden/Dependency", + "version": "13.0.1.0.0", + "depends": ["web"], + "author": "Camptocamp, Therp BV, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/web", + "demo": ["demo/res_users.xml"], + "data": ["views/web_tree_dynamic_colored_field.xml"], + "installable": True, +} diff --git a/web_tree_dynamic_colored_field/demo/res_users.xml b/web_tree_dynamic_colored_field/demo/res_users.xml new file mode 100644 index 000000000..c2f004e70 --- /dev/null +++ b/web_tree_dynamic_colored_field/demo/res_users.xml @@ -0,0 +1,21 @@ + + + + res.users + + + + { + "bg_color": "#9e1635: login_date == False", + "fg_color": "white: login_date == False" + } + + + { + "bg_color": "blue; #653b5b: login == 'admin'", + "fg_color": "white" + } + + + + diff --git a/web_tree_dynamic_colored_field/i18n/es.po b/web_tree_dynamic_colored_field/i18n/es.po new file mode 100644 index 000000000..6e6aeff9f --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/es.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_tree_dynamic_colored_field +# +# Translators: +# Pedro M. Baeza , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-05 01:38+0000\n" +"PO-Revision-Date: 2017-01-05 01:38+0000\n" +"Last-Translator: Pedro M. Baeza , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_tree_dynamic_colored_field +#. openerp-web +#: code:addons/web_tree_dynamic_colored_field/static/src/xml/web_tree_dynamic_colored_field.xml:7 +#, python-format +msgid "columns.fct_colorize(record, column)" +msgstr "columns.fct_colorize(record, column)" diff --git a/web_tree_dynamic_colored_field/i18n/fi.po b/web_tree_dynamic_colored_field/i18n/fi.po new file mode 100644 index 000000000..acf992c3b --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/fi.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_tree_dynamic_colored_field +# +# Translators: +# Jarmo Kortetjärvi , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-08 16:36+0000\n" +"PO-Revision-Date: 2016-07-08 16:36+0000\n" +"Last-Translator: Jarmo Kortetjärvi , 2016\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_tree_dynamic_colored_field +#. openerp-web +#: code:addons/web_tree_dynamic_colored_field/static/src/xml/web_tree_dynamic_colored_field.xml:7 +#, python-format +msgid "columns.fct_colorize(record, column)" +msgstr "columns.fct_colorize(record, column)" diff --git a/web_tree_dynamic_colored_field/i18n/nl_NL.po b/web_tree_dynamic_colored_field/i18n/nl_NL.po new file mode 100644 index 000000000..edc9e2e2c --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/nl_NL.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_tree_dynamic_colored_field +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 08:27+0000\n" +"PO-Revision-Date: 2017-06-22 08:27+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: web_tree_dynamic_colored_field +#. openerp-web +#: code:addons/web_tree_dynamic_colored_field/static/src/xml/web_tree_dynamic_colored_field.xml:7 +#, python-format +msgid "columns.fct_colorize(record, column)" +msgstr "columns.fct_colorize(record, column)" diff --git a/web_tree_dynamic_colored_field/i18n/sl.po b/web_tree_dynamic_colored_field/i18n/sl.po new file mode 100644 index 000000000..c37ce8abb --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/sl.po @@ -0,0 +1,26 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * web_tree_dynamic_colored_field +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-24 00:46+0000\n" +"PO-Revision-Date: 2016-06-24 00:46+0000\n" +"Last-Translator: Matjaž Mozetič , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: web_tree_dynamic_colored_field +#. openerp-web +#: code:addons/web_tree_dynamic_colored_field/static/src/xml/web_tree_dynamic_colored_field.xml:7 +#, python-format +msgid "columns.fct_colorize(record, column)" +msgstr "columns.fct_colorize(record, column)" diff --git a/web_tree_dynamic_colored_field/i18n/web_tree_dynamic_colored_field.pot b/web_tree_dynamic_colored_field/i18n/web_tree_dynamic_colored_field.pot new file mode 100644 index 000000000..d2e396f15 --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/web_tree_dynamic_colored_field.pot @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + diff --git a/web_tree_dynamic_colored_field/i18n/zh_CN.po b/web_tree_dynamic_colored_field/i18n/zh_CN.po new file mode 100644 index 000000000..4159be77e --- /dev/null +++ b/web_tree_dynamic_colored_field/i18n/zh_CN.po @@ -0,0 +1,14 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" diff --git a/web_tree_dynamic_colored_field/readme/CONTRIBUTORS.rst b/web_tree_dynamic_colored_field/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..a1e31ed6c --- /dev/null +++ b/web_tree_dynamic_colored_field/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Damien Crier +* Holger Brunn +* Artem Kostyuk +* Guewen Baconnier diff --git a/web_tree_dynamic_colored_field/readme/DESCRIPTION.rst b/web_tree_dynamic_colored_field/readme/DESCRIPTION.rst new file mode 100644 index 000000000..1568429d5 --- /dev/null +++ b/web_tree_dynamic_colored_field/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module aims to add support for dynamically coloring fields in tree view +according to data in the record. + +Features +======== + +* Add attribute ``bg_color`` on field's ``options`` to color background of a cell in tree view +* Add attribute ``fg_color`` on field's ``options`` to change text color of a cell in tree view diff --git a/web_tree_dynamic_colored_field/readme/ROADMAP.rst b/web_tree_dynamic_colored_field/readme/ROADMAP.rst new file mode 100644 index 000000000..4d068a177 --- /dev/null +++ b/web_tree_dynamic_colored_field/readme/ROADMAP.rst @@ -0,0 +1,5 @@ +* Before version 13.0, this module had a feature allowing to change the color of + a line depending on a field, using a ``colors`` attribute with the name of the + field on the ```` element. Since 13.0, the ``colors`` attribute is no + longer in the RelaxNG schema of the tree view, so we can't use it anymore. + This feature has then been dropped, but could be reimplement in another way. diff --git a/web_tree_dynamic_colored_field/readme/USAGE.rst b/web_tree_dynamic_colored_field/readme/USAGE.rst new file mode 100644 index 000000000..2be4517c5 --- /dev/null +++ b/web_tree_dynamic_colored_field/readme/USAGE.rst @@ -0,0 +1,55 @@ +* In the tree view declaration, put ``options='{"bg_color": "red: customer==True"}`` attribute in the ``field`` tag:: + + ... + + + ... + + ... + + + ... + + With this example, column which renders 'name' field will have its background colored in red. + +* In the tree view declaration, put ``options='{"fg_color": "white:customer == True"}'`` attribute in the ``field`` tag:: + + ... + + + ... + + ... + + + ... + + With this example, column which renders 'name' field will have its text colored in white on a customer records. + +* If you want to use more than one color, you can split the attributes using ';': + +.. code:: + + options='{"fg_color": "red:red_color == True; green:green_color == True"}' + +Example: + +.. code:: xml + + ... + + + ... + + ... + + + ... + + With this example, the content of the field named `my_color` will be used to + populate the `my_color` CSS value. Use a function field to return whichever + color you want depending on the other record values. Note that this + overrides the rest of `colors` attributes, and that you need the tree + to load your field in the first place by adding it as invisible field. + +**Note that you should always use single quotes for fields' ``options`` and wrap nested values in double quotes since ``options`` is a JSON object.** diff --git a/web_tree_dynamic_colored_field/static/description/icon.png b/web_tree_dynamic_colored_field/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/web_tree_dynamic_colored_field/static/description/icon.png differ diff --git a/web_tree_dynamic_colored_field/static/description/index.html b/web_tree_dynamic_colored_field/static/description/index.html new file mode 100644 index 000000000..d5fcf9a7a --- /dev/null +++ b/web_tree_dynamic_colored_field/static/description/index.html @@ -0,0 +1,497 @@ + + + + + + +Colorize field in tree views + + + +
+

Colorize field in tree views

+ + +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

+

This module aims to add support for dynamically coloring fields in tree view +according to data in the record.

+

It provides attributes on fields with the similar syntax as the colors attribute +in tree tags.

+

Further, it provides a color_field attribute on tree tags’s colors to use +a field’s value as color.

+
+

Features

+
    +
  • Add attribute bg_color on field’s options to color background of a cell in tree view
  • +
  • Add attribute fg_color on field’s options to change text color of a cell in tree view
  • +
  • Add attribute color_field on the tree element’s colors to use as color
  • +
+

Table of contents

+
+
+

Usage

+
    +
  • In the tree view declaration, put options='{"bg_color": "red: customer==True"} attribute in the field tag:

    +
    +...
    +<field name="arch" type="xml">
    +    <tree string="View name">
    +        ...
    +        <field name="name" options='{"bg_color": "red: customer == True"}'/>
    +        ...
    +    </tree>
    +</field>
    +...
    +
    +With this example, column which renders 'name' field will have its background colored in red.
    +
    +
  • +
  • In the tree view declaration, put options='{"fg_color": "white:customer == True"}' attribute in the field tag:

    +
    +...
    +<field name="arch" type="xml">
    +    <tree string="View name">
    +        ...
    +        <field name="name" options='{"fg_color": "white:customer == True"}'/>
    +        ...
    +    </tree>
    +</field>
    +...
    +
    +With this example, column which renders 'name' field will have its text colored in white on a customer records.
    +
    +
  • +
  • In the tree view declaration, use options='"color_field": "my_color"' attribute in the tree tag:

    +
    +...
    +<field name="arch" type="xml">
    +    <tree string="View name" colors="color_field: my_color" >
    +        ...
    +        <field name="my_color" invisible="1"/>
    +        ...
    +    </tree>
    +</field>
    +...
    +
    +
  • +
  • If you want to use more than one color, you can split the attributes using ‘;’:

    +
  • +
+
+options='{"fg_color": "red:red_color == True; green:green_color == True"}'
+
+

Example:

+
+...
+ <field name="arch" type="xml">
+     <tree string="View name">
+         ...
+         <field name="name" options='{"fg_color": "red:red_color == True; green:green_color == True"}'/>
+         ...
+     </tree>
+ </field>
+ ...
+
+ With this example, the content of the field named `my_color` will be used to
+ populate the `my_color` CSS value. Use a function field to return whichever
+ color you want depending on the other record values. Note that this
+ overrides the rest of `colors` attributes, and that you need the tree
+ to load your field in the first place by adding it as invisible field.
+
+

Note that you should always use single quotes for fields’ ``options`` and wrap nested values in double quotes since ``options`` is a JSON object.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
  • Therp BV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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 project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js b/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js new file mode 100644 index 000000000..2b9812de5 --- /dev/null +++ b/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js @@ -0,0 +1,124 @@ +odoo.define("web_tree_dynamic_colored_field", function(require) { + "use strict"; + + var ListRenderer = require("web.ListRenderer"); + var pyUtils = require("web.py_utils"); + var py = window.py; + + ListRenderer.include({ + /** + * Colorize a cell during it's render + * + * @override + */ + _renderBodyCell: function(record, node) { + var $td = this._super.apply(this, arguments); + var ctx = this.getEvalContext(record); + this.applyColorize($td, record, node, ctx); + return $td; + }, + + /** + * Colorize the current cell depending on expressions provided. + * + * @param {Element} $td a tag inside a table representing a list view + * @param {Object} record + * @param {Object} node an XML node (must be a ) + * @param {Object} ctx evaluation context for the record + */ + applyColorize: function($td, record, node, ctx) { + if (!node.attrs.options) { + return; + } + if (node.tag !== "field") { + return; + } + var nodeOptions = node.attrs.options; + if (!_.isObject(nodeOptions)) { + nodeOptions = pyUtils.py_eval(nodeOptions); + } + this.applyColorizeHelper($td, nodeOptions, node, "fg_color", "color", ctx); + this.applyColorizeHelper( + $td, + nodeOptions, + node, + "bg_color", + "background-color", + ctx + ); + }, + /** + * @param {Element} $td a tag inside a table representing a list view + * @param {Object} nodeOptions a mapping of nodeOptions parameters to the color itself + * @param {Object} node an XML node (must be a ) + * @param {String} nodeAttribute an attribute of a node to apply a style onto + * @param {String} cssAttribute a real CSS-compatible attribute + * @param {Object} ctx evaluation context for the record + */ + applyColorizeHelper: function( + $td, + nodeOptions, + node, + nodeAttribute, + cssAttribute, + ctx + ) { + if (nodeOptions[nodeAttribute]) { + var colors = _(nodeOptions[nodeAttribute].split(";")) + .chain() + .map(this.pairColors) + .value() + .filter(function CheckUndefined(value) { + return value !== undefined; + }); + for (var i = 0, len = colors.length; i < len; ++i) { + var pair = colors[i], + color = pair[0], + expression = pair[1]; + if (py.evaluate(expression, ctx).toJSON()) { + $td.css(cssAttribute, color); + } + } + } + }, + + /** + * Parse `: ` forms to + * evaluable expressions + * + * @param {String} pairColor `color: expression` pair + * @returns {Array} undefined or array of color, parsed expression, + * original expression + */ + pairColors: function(pairColor) { + if (pairColor !== "") { + var pairList = pairColor.split(":"), + color = pairList[0], + // If one passes a bare color instead of an expression, + // then we consider that color is to be shown in any case + expression = pairList[1] ? pairList[1] : "True"; + return [color, py.parse(py.tokenize(expression)), expression]; + } + return undefined; + }, + /** + * Construct domain evaluation context, mostly by passing + * record's fields's values to local scope. + * + * @param {Object} record a record to build a context from + * @returns {Object} evaluation context for the record + */ + getEvalContext: function(record) { + var ctx = _.extend({}, record.data, pyUtils.context()); + for (var key in ctx) { + var value = ctx[key]; + if (ctx[key] instanceof moment) { + // Date/datetime fields are represented w/ Moment objects + // docs: https://momentjs.com/ + ctx[key] = value.format("YYYY-MM-DD hh:mm:ss"); + } + } + return ctx; + }, + }); +}); diff --git a/web_tree_dynamic_colored_field/views/web_tree_dynamic_colored_field.xml b/web_tree_dynamic_colored_field/views/web_tree_dynamic_colored_field.xml new file mode 100644 index 000000000..dbd9e43cd --- /dev/null +++ b/web_tree_dynamic_colored_field/views/web_tree_dynamic_colored_field.xml @@ -0,0 +1,15 @@ + + +