mirror of https://github.com/OCA/web.git
[IMP] rename module to 'web_tree_dynamic_colored_field'
parent
481ce4ec97
commit
770df440f4
|
@ -0,0 +1,80 @@
|
|||
Colorize field in tree views
|
||||
============================
|
||||
|
||||
This module aims to add support for dynamically coloring fields in tree view
|
||||
according to data in the record.
|
||||
|
||||
It provides new attributes with the same syntax as 'colors' attribute in tree tag.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
* Add attribute 'bg_color' to color background of a cell in tree view
|
||||
|
||||
* Add attribute 'fg_color' to change text color of a cell in tree view
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
* In the tree view declaration, put bg_color="red:customer==True;" attribute in the field tag::
|
||||
|
||||
...
|
||||
<field name="arch" type="xml">
|
||||
<tree string="View name">
|
||||
...
|
||||
<field name="name" 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 fg_color="white:customer==True;" attribute in the field tag::
|
||||
|
||||
...
|
||||
<field name="arch" type="xml">
|
||||
<tree string="View name">
|
||||
...
|
||||
<field name="name" fg_color="white:customer==True;"/>
|
||||
...
|
||||
</tree>
|
||||
</field>
|
||||
...
|
||||
|
||||
With this example, column which renders 'name' field will have its text colored in white.
|
||||
|
||||
|
||||
|
||||
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
|
||||
`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**>`_.
|
||||
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Damien Crier <damien.crier@camptocamp.com>
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
.. image:: http://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: http://odoo-community.org
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
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.
|
||||
|
||||
To contribute to this module, please visit http://odoo-community.org.
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
|
@ -0,0 +1,37 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# 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': 'web tree dynamic colored field',
|
||||
'category': 'Hidden',
|
||||
'version': '8.0.1.0.0',
|
||||
'depends': ['web'],
|
||||
'author': "Camptocamp,Odoo Community Association (OCA)",
|
||||
'license': 'AGPL-3',
|
||||
'website': 'http://www.camptocamp.com',
|
||||
'data': [
|
||||
'views/web_tree_dynamic_colored_field.xml',
|
||||
],
|
||||
'qweb': [
|
||||
'static/xml/*.xml',
|
||||
],
|
||||
'auto_install': False,
|
||||
'installable': False,
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
|
@ -0,0 +1,86 @@
|
|||
openerp.web_tree_dynamic_colored_field = function(instance){
|
||||
var _t = instance.web._t,
|
||||
_lt = instance.web._lt;
|
||||
var QWeb = instance.web.qweb;
|
||||
|
||||
var pair_colors = function(pair_color){
|
||||
if (pair_color != ""){
|
||||
var pair_list = pair_color.split(':'),
|
||||
color = pair_list[0],
|
||||
expression = pair_list[1];
|
||||
return [color, py.parse(py.tokenize(expression)), expression]
|
||||
}
|
||||
};
|
||||
|
||||
var colorize_helper = function(obj, record, column, field_attribute, css_attribute){
|
||||
var result = '';
|
||||
if (column[field_attribute]){
|
||||
var colors = _(column[field_attribute].split(';'))
|
||||
.chain()
|
||||
.map(pair_colors)
|
||||
.value();
|
||||
var colors = colors.filter(function CheckUndefined(value, index, ar) {
|
||||
return value != undefined;
|
||||
})
|
||||
var ctx = _.extend(
|
||||
{},
|
||||
record.attributes,
|
||||
{
|
||||
uid: obj.session.uid,
|
||||
current_date: new Date().toString('yyyy-MM-dd')
|
||||
}
|
||||
);
|
||||
for(i=0, len=colors.length; i<len; ++i) {
|
||||
pair = colors[i];
|
||||
var color = pair[0];
|
||||
var expression = pair[1];
|
||||
if (py.evaluate(expression, ctx).toJSON()) {
|
||||
result = css_attribute + ': ' + color + ';';
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
};
|
||||
|
||||
var colorize = function(record, column){
|
||||
var res = '';
|
||||
res += colorize_helper(this, record, column, 'bg_color', 'background-color');
|
||||
res += colorize_helper(this, record, column, 'fg_color', 'color');
|
||||
return res;
|
||||
};
|
||||
|
||||
instance.web.ListView.List.include({
|
||||
init: function(group, opts){
|
||||
this._super(group, opts);
|
||||
this.columns.fct_colorize = colorize;
|
||||
},
|
||||
fct_colorize: colorize,
|
||||
render: function() {
|
||||
this.$current.empty().append(
|
||||
QWeb.render('ListView.rows', _.extend({
|
||||
render_cell: function () {
|
||||
return self.render_cell.apply(self, arguments); },
|
||||
fct_colorize: function(){
|
||||
return self.fct_colorize.apply(self, arguments);
|
||||
}
|
||||
}, this)));
|
||||
this.pad_table_to(4);
|
||||
},
|
||||
render_record: function(record) {
|
||||
var self = this;
|
||||
var index = this.records.indexOf(record);
|
||||
return QWeb.render('ListView.row', {
|
||||
columns: this.columns,
|
||||
options: this.options,
|
||||
record: record,
|
||||
row_parity: (index % 2 === 0) ? 'even' : 'odd',
|
||||
view: this.view,
|
||||
render_cell: function () {
|
||||
return self.render_cell.apply(self, arguments); },
|
||||
fct_colorize: function(){
|
||||
return self.fct_colorize.apply(self, arguments);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<templates>
|
||||
|
||||
<tr t-extend="ListView.row">
|
||||
<t t-jquery="td[t-att-data-field='column.id']" t-operation="attributes">
|
||||
<attribute name="t-att-style">fct_colorize(record, column)</attribute>
|
||||
</t>
|
||||
</tr>
|
||||
|
||||
</templates>
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- vim:fdn=3:
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="assets_backend" name="web_tree_dynamic_colored_field assets" inherit_id="web.assets_backend">
|
||||
<xpath expr="." position="inside">
|
||||
<script type="text/javascript" src="/web_tree_dynamic_colored_field/static/js/web_tree_dynamic_colored_field.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue