diff options
| author | Jiten (OpenERP) <jra@tinyerp.com> | 2011-10-12 14:39:58 +0530 |
|---|---|---|
| committer | Jiten (OpenERP) <jra@tinyerp.com> | 2011-10-12 14:39:58 +0530 |
| commit | d7933e221113110f6e2cf97041f711c7a3cede1d (patch) | |
| tree | b45e46d834307bab66ad4ad0381407556793afea /addons/web/static/src/js/view_tree.js | |
| parent | 77ad674798fbb82c364a82341763614aaede686d (diff) | |
| parent | 048cfa7804759c6b3fb952983451165fb319bc80 (diff) | |
[Merge] merge from openerp-web.
bzr revid: jra@tinyerp.com-20111012090958-3c5xp3e8viplb84f
Diffstat (limited to 'addons/web/static/src/js/view_tree.js')
| -rw-r--r-- | addons/web/static/src/js/view_tree.js | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js index 7988d65805c..78818c069c0 100644 --- a/addons/web/static/src/js/view_tree.js +++ b/addons/web/static/src/js/view_tree.js @@ -32,6 +32,8 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# this.records = {}; this.options = _.extend({}, this.defaults, options || {}); + + _.bindAll(this, 'color_for'); }, start: function () { @@ -107,6 +109,43 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# $select.change(); } }); + + if (this.fields_view.arch.attrs.colors) { + return; + } + this.colors = _(this.fields_view.arch.attrs.colors.split(';')).chain() + .compact() + .map(function(color_pair) { + var pair = color_pair.split(':'), + color = pair[0], + expr = pair[1]; + return [color, py.parse(py.tokenize(expr)), expr]; + }).value(); + }, + /** + * Returns the color for the provided record in the current view (from the + * ``@colors`` attribute) + * + * @param {Object} record record for the current row + * @returns {String} CSS color declaration + */ + color_for: function (record) { + if (!this.colors) { return ''; } + var context = _.extend({}, record, { + uid: this.session.uid, + current_date: new Date().toString('yyyy-MM-dd') + // TODO: time, datetime, relativedelta + }); + for(var i=0, len=this.colors.length; i<len; ++i) { + var pair = this.colors[i], + color = pair[0], + expression = pair[1]; + if (py.evaluate(expression, context)) { + return 'color: ' + color + ';'; + } + // TODO: handle evaluation errors + } + return ''; }, /** * Sets up opening a row @@ -159,7 +198,8 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# 'fields_view': self.fields_view.arch.children, 'fields': self.fields, 'level': $curr_node.data('level') || 0, - 'render': openerp.web.format_value + 'render': openerp.web.format_value, + 'color_for': self.color_for }); if ($curr_node.length) { |
