From 71fd0484424928f6eb812a0cfec159ff7a5d8b40 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Wed, 7 Mar 2018 08:32:06 +0100 Subject: [PATCH] web_tree_dynamic_colored_field: Assume that color may not start with 'color_field' The index at 0 in the following code: var colorField = this.arch.attrs.colors.split(';') .filter(color => color.trim().startsWith('color_field'))[0] Was failing on such valid xml: --- .../src/js/web_tree_dynamic_colored_field.js | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js b/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js index baa5616e..d9e14c11 100644 --- a/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js +++ b/web_tree_dynamic_colored_field/static/src/js/web_tree_dynamic_colored_field.js @@ -12,20 +12,21 @@ odoo.define('web_tree_dynamic_colored_field', function (require) { */ _renderBody: function () { if (this.arch.attrs.colors) { - var colorField = this.arch.attrs.colors.split(';') - .filter(color => color.trim().startsWith('color_field'))[0] - .split(':')[1] - .trim(); - // validate the presence of that field in tree view - var fieldNames = _(this.columns).map( - (value) => { return value.attrs.name; } - ); - if (fieldNames.indexOf(colorField) === -1) { - console.warn( - "No field named '" + colorField + "' present in view." + var colorAttr = this.arch.attrs.colors.split(';') + .filter(color => color.trim().startsWith('color_field')); + if (colorAttr.length > 0) { + var colorField = colorAttr[0].split(':')[1].trim(); + // validate the presence of that field in tree view + var fieldNames = _(this.columns).map( + (value) => { return value.attrs.name; } ); - } else { - this.colorField = colorField; + if (fieldNames.indexOf(colorField) === -1) { + console.warn( + "No field named '" + colorField + "' present in view." + ); + } else { + this.colorField = colorField; + } } } return this._super();