From e7ff2d2c6a564823dd05e2d53cb32c47b826caed Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Wed, 13 May 2015 14:20:18 +0200 Subject: [IMP] Web: ListView: semantics classes for row decoration based on bootstrap contextual colors, and bold/italic fonts. Backward compatibility is ensured as the ListView is monkey-patched to keep interpreting colors and fonts attributes. --- addons/web/static/src/js/compatibility.js | 78 +++++++++++++++++++++++++ addons/web/static/src/js/views/list_view.js | 88 ++++++++++------------------- 2 files changed, 107 insertions(+), 59 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/compatibility.js b/addons/web/static/src/js/compatibility.js index cb1b3b795de..cc80915735a 100644 --- a/addons/web/static/src/js/compatibility.js +++ b/addons/web/static/src/js/compatibility.js @@ -183,6 +183,84 @@ function start_modules (modules) { return openerp; }; +// Monkey-patching of the ListView for backward compatibiliy of the colors and +// fonts row's attributes, as they are deprecated in 9.0. +ListView.include({ + load_list: function(data) { + this._super(data); + if (this.fields_view.arch.attrs.colors) { + 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(); + } + + if (this.fields_view.arch.attrs.fonts) { + this.fonts = _(this.fields_view.arch.attrs.fonts.split(';')).chain().compact() + .map(function(font_pair) { + var pair = font_pair.split(':'), + font = pair[0], + expr = pair[1]; + return [font, py.parse(py.tokenize(expr)), expr]; + }).value(); + } + }, + /** + * Returns the style for the provided record in the current view (from the + * ``@colors`` and ``@fonts`` attributes) + * + * @param {Record} record record for the current row + * @returns {String} CSS style declaration + */ + style_for: function (record) { + var len, style= ''; + + var context = _.extend({}, record.attributes, { + uid: session.uid, + current_date: moment().format('YYYY-MM-DD') + // TODO: time, datetime, relativedelta + }); + var i; + var pair; + var expression; + if (this.fonts) { + for(i=0, len=this.fonts.length; i= 0; + }); + this.decoration = _.mapObject(this.decoration, function(value) { + return py.parse(py.tokenize(value)); + }); this.setup_columns(this.fields_view.fields, this.grouped); -- cgit v1.2.3