============================
Colorize field in tree views
============================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:9421f600f808456315bd58fa3ad58e5d8790f99fb1f0809e81ce7bb0ef0774b1
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/18.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-18-0/web-18-0-web_tree_dynamic_colored_field
    :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
    :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=18.0
    :alt: Try me on Runboat

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

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

**Table of contents**

.. contents::
   :local:

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 on customer records.

- 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 customer records.

- 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:

.. code:: xml

   ...
    <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>
    ...

- Can use strings too... In the tree view declaration, put
  ``options="{'fg_color': 'green:customer_state == \'success\''}"``
  attribute in the ``field`` tag:

  ::

     ...
     <field name="arch" type="xml">
         <tree string="View name">
             ...
             <field name="name" options="{'fg_color': 'green:customer_state == \'success\''}"/>
             ...
         </tree>
     </field>
     ...

**Note that you can use single or normal quotes. If the declaration of
the options doesn't follow the JSON format, the options string will be
evaluated using py.eval()**

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

- 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 ``<tree>`` 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.
- Since version 17.0 coloring is written into ``style`` attribute of
  (td) element

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 to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_tree_dynamic_colored_field%0Aversion:%2018.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
-------

* Camptocamp
* Therp BV

Contributors
------------

- Damien Crier <damien.crier@camptocamp.com>
- Holger Brunn <hbrunn@therp.nl>
- Artem Kostyuk <a.kostyuk@mobilunity.com>
- Guewen Baconnier <guewen.baconnier@camptocamp.com>
- Phuc Tran Thanh <phuc@trobz.com>
- Sylvain LE GAL <https://twitter.com/legalsylvain>
- Jurgis Pralgauskis <jurgis@versada.eu>

Other credits
-------------

The development of this module has been financially supported by:

- Camptocamp
- Versada

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/18.0/web_tree_dynamic_colored_field>`_ project on GitHub.

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