From c66acb75e53a1d02bfdf6fcc5b91f856aa21b561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 10 Sep 2025 00:53:45 +0200 Subject: [PATCH] Use the length of data to generate color scheme on pie chart We need a different color for each data instead of each y field. Closes #14221 --- sao/src/view/graph.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sao/src/view/graph.js b/sao/src/view/graph.js index 4be933f77f..7584ae9dd7 100644 --- a/sao/src/view/graph.js +++ b/sao/src/view/graph.js @@ -211,20 +211,15 @@ } }; } + let keys = this._data_keys(data); var color = this.view.attributes.color || Sao.config.graph_color; var rgb = Sao.common.hex2rgb( Sao.common.COLOR_SCHEMES[color] || color); var maxcolor = Math.max.apply(null, rgb); - var keys = []; - var i, yfield; - for (i = 0; i < this.yfields.length; i++) { - yfield = this.yfields[i]; - keys.push(yfield.key || yfield.name); - } var colors = Sao.common.generateColorscheme( color, keys, maxcolor / (keys.length || 1)); - for (i = 0; i < this.yfields.length; i++) { - yfield = this.yfields[i]; + for (let i = 0; i < this.yfields.length; i++) { + let yfield = this.yfields[i]; if (yfield.color) { colors[yfield.key || yfield.name] = yfield.color; } @@ -236,6 +231,14 @@ }; return c3_config; }, + _data_keys: function(data) { + let keys = []; + for (let i = 0; i < this.yfields.length; i++) { + let yfield = this.yfields[i]; + keys.push(yfield.key || yfield.name); + } + return keys; + }, action: function(data, element) { var ids = this.ids[this._action_key(data)]; var ctx = jQuery.extend({}, this.view.screen.group._context); @@ -336,6 +339,13 @@ config.data.names = pie_names; return config; }, + _data_keys: function(data) { + let keys = []; + for (let i = 0; i < data.columns[1].length - 1; i++) { + keys.push(i); + }; + return keys; + }, _add_id: function(key, id) { var type = this.xfield.type; if ((type == 'date') || (type == 'datetime')) {