3
0
Fork 0

web_tree_dynamic_colored_field v9

demo view
17.0
Holger Brunn 2016-11-08 15:48:21 +01:00 committed by jurgis
parent 0bec4a1c74
commit 2ee7e6a96e
5 changed files with 77 additions and 67 deletions

View File

@ -65,18 +65,17 @@ Usage
With this example, the content of the field named `color` will be used to With this example, the content of the field named `color` will be used to
populate the `color` CSS value. Use a function field to return whichever populate the `color` CSS value. Use a function field to return whichever
color you want depending on the other record values. Note this this color you want depending on the other record values. Note that this
overrides the `colors` attribute, and that you need the tree to load your overrides the `colors` attribute, and that you need the tree to load your
field in the first place by adding it as invisible field. field in the first place by adding it as invisible field.
Bug Tracker Bug Tracker
=========== ===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_. Bugs are tracked on `GitHub Issues
In case of trouble, please check there if your issue has already been reported. <https://github.com/OCA/web/issues>`_. In case of trouble, please
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback check there if your issue has already been reported. If you spotted it first,
`here <https://github.com/OCA/web/issues/new?body=module:%20web_widget_color_tree_field%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. help us smashing it by providing a detailed and welcomed feedback.
Credits Credits
======= =======
@ -90,9 +89,9 @@ Contributors
Maintainer Maintainer
---------- ----------
.. image:: http://odoo-community.org/logo.png .. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association :alt: Odoo Community Association
:target: http://odoo-community.org :target: https://odoo-community.org
This module is maintained by the OCA. This module is maintained by the OCA.
@ -100,4 +99,4 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and mission is to support the collaborative development of Odoo features and
promote its widespread use. promote its widespread use.
To contribute to this module, please visit http://odoo-community.org. To contribute to this module, please visit https://odoo-community.org.

View File

@ -1,20 +1,3 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## # © 2015 Camptocamp SA, Damien Crier
# # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# Author: Damien Crier
# Copyright 2015 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################

View File

@ -1,32 +1,18 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## # © 2015 Camptocamp SA, Damien Crier
# # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# Author: Damien Crier
# Copyright 2015 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{ {
'name': 'Colorize field in tree views', 'name': 'Colorize field in tree views',
'summary': 'Allows you to dynamically color fields on tree views', 'summary': 'Allows you to dynamically color fields on tree views',
'category': 'Hidden', 'category': 'Hidden/Dependency',
'version': '8.0.2.0.0', 'version': '9.0.2.0.0',
'depends': ['web'], 'depends': ['web'],
'author': "Camptocamp,Odoo Community Association (OCA)", 'author': "Camptocamp,Therp BV,Odoo Community Association (OCA)",
'license': 'AGPL-3', 'license': 'AGPL-3',
'website': 'http://www.camptocamp.com', 'website': 'https://github.com/OCA/web',
'demo': [
"demo/res_users.xml",
],
'data': [ 'data': [
'views/web_tree_dynamic_colored_field.xml', 'views/web_tree_dynamic_colored_field.xml',
], ],

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="view_users_tree" model="ir.ui.view">
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_tree" />
<field name="arch" type="xml">
<xpath expr="." position="attributes">
<attribute name="color_field">lang</attribute>
</xpath>
<field name="login_date" position="attributes">
<attribute name="bg_color">red: login_date == False</attribute>
<attribute name="fg_color">white: login_date == False</attribute>
</field>
<field name="name" position="attributes">
<attribute name="bg_color">red: login == 'admin'</attribute>
<attribute name="fg_color">white: login == 'admin'</attribute>
</field>
</field>
</record>
</data>
</openerp>

View File

@ -1,10 +1,16 @@
openerp.web_tree_dynamic_colored_field = function(instance){ odoo.define('web_tree_dynamic_colored_field', function(require)
{
'use strict';
var ListView = require('web.ListView'),
pyeval = require('web.pyeval'),
py = window.py;
var pair_colors = function(pair_color){ var pair_colors = function(pair_color){
if (pair_color != ""){ if (pair_color !== ""){
var pair_list = pair_color.split(':'), var pair_list = pair_color.split(':'),
color = pair_list[0], color = pair_list[0],
expression = pair_list[1]; expression = pair_list[1];
return [color, py.parse(py.tokenize(expression)), expression] return [color, py.parse(py.tokenize(expression)), expression];
} }
}; };
@ -12,7 +18,7 @@ openerp.web_tree_dynamic_colored_field = function(instance){
return _.extend( return _.extend(
{}, {},
record.attributes, record.attributes,
instance.web.pyeval.context() pyeval.context()
); );
}; };
@ -22,21 +28,21 @@ openerp.web_tree_dynamic_colored_field = function(instance){
var colors = _(column[field_attribute].split(';')) var colors = _(column[field_attribute].split(';'))
.chain() .chain()
.map(pair_colors) .map(pair_colors)
.value(); .value()
var colors = colors.filter(function CheckUndefined(value, index, ar) { .filter(function CheckUndefined(value, index, ar) {
return value != undefined; return value !== undefined;
}) });
var ctx = get_eval_context(record); var ctx = get_eval_context(record);
for(i=0, len=colors.length; i<len; ++i) { for(var i=0, len=colors.length; i<len; ++i) {
pair = colors[i]; var pair = colors[i],
var color = pair[0]; color = pair[0],
var expression = pair[1]; expression = pair[1];
if (py.evaluate(expression, ctx).toJSON()) { if (py.evaluate(expression, ctx).toJSON()) {
result = css_attribute + ': ' + color + ';'; result = css_attribute + ': ' + color + ';';
} }
} }
} }
return result return result;
}; };
var colorize = function(record, column){ var colorize = function(record, column){
@ -46,14 +52,28 @@ openerp.web_tree_dynamic_colored_field = function(instance){
return res; return res;
}; };
instance.web.ListView.List.include({ ListView.List.include({
init: function(group, opts){ init: function(group, opts){
this._super(group, opts); this._super(group, opts);
this.columns.fct_colorize = colorize; this.columns.fct_colorize = colorize;
}, },
}); });
instance.web.ListView.include({ ListView.include({
load_view: function()
{
var self = this;
return this._super.apply(this, arguments)
.then(function()
{
// the style_for helper is only called if one of colors or
// fonts is not null
if(self.fields_view.arch.attrs.color_field)
{
self.colors = [];
}
});
},
style_for: function (record) style_for: function (record)
{ {
var result = this._super.apply(this, arguments); var result = this._super.apply(this, arguments);
@ -72,4 +92,4 @@ openerp.web_tree_dynamic_colored_field = function(instance){
return result; return result;
}, },
}); });
} });