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
This commit is contained in:
Cédric Krier
2025-09-10 00:53:45 +02:00
parent 8d56e4fbf1
commit c66acb75e5
+18 -8
View File
@@ -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')) {