forked from Techsystech/web
[IMP] rename module to 'web_tree_dynamic_colored_field'
parent
e4e84f1eec
commit
7f504a1b22
|
@ -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