Commit bc7234a5 authored by Vitaly Lipatov's avatar Vitaly Lipatov

fix findMinMax function for stacked chart (eterbug #10934)

parent 86cecc4b
...@@ -4982,74 +4982,55 @@ ...@@ -4982,74 +4982,55 @@
var minY, maxY, minX, maxX; var minY, maxY, minX, maxX;
var i,j, id; var i,j, id;
var allData = $$.api.data(); // detect if we have stacked group
allData.forEach(function(v){
var data;
if(v){
data = v.values;
} else {
data = {
length: 0
};
}
for(i = 0; i < data.length; i++) {
if (isUndefined(maxX) || data[i].x > maxX)
maxX = data[i].x;
if (isUndefined(minX) || data[i].x < minX)
minX = data[i].x;
}
var stacked = false; var stacked = false;
var groups = $$.api.groups(); var groups = $$.api.groups();
groups.forEach(function(elem){ groups.forEach(function(elem){
if(elem.length){ if(elem.length) {
stacked = true; stacked = true;
} }
}); });
if(stacked){ var stackedSum = [];
data = $$.api.data();
var tmp = []; var allData = $$.api.data();
allData.forEach(function(v){
if(!v)
return;
var data = v.values;
for(i = 0; i < data.length; i++){ // calc min/max for X axis
var tmp_seq = []; for(i = 0; i < data.length; i++) {
var values = data[i].values; if (isUndefined(maxX) || data[i].x > maxX)
values.forEach(function(value){ maxX = data[i].x;
tmp_seq.push(value); if (isUndefined(minX) || data[i].x < minX)
}); minX = data[i].x;
tmp.push(tmp_seq);
} }
// calc min/max for Y axis
for(i = 0; i < data.length; i++){
for(var j = 0; j < tmp[0].length; j++){
var s = 0;
for(var k = 0; k < tmp.length; k++){
s += tmp[k][j].value;
}
if (isUndefined(maxY) || s > maxY){
maxY = s;
}
if (isUndefined(minY) || s < minY){
minY = s;
}
}
}
} else {
for(i = 0; i < data.length; i++) { for(i = 0; i < data.length; i++) {
if (isUndefined(maxY) || data[i].value > maxY) if (isUndefined(maxY) || data[i].value > maxY)
maxY = data[i].value; maxY = data[i].value;
if (isUndefined(minY) || data[i].value < minY) if (isUndefined(minY) || data[i].value < minY)
minY = data[i].value; minY = data[i].value;
// calc sum row for stacked
if (stacked) {
if (!stackedSum[i])
stackedSum[i] = 0;
stackedSum[i] += data[i].value;
} }
} }
}); });
if (stacked) {
for(i = 0; i < stackedSum.length; i++) {
if (isUndefined(maxY) || stackedSum[i] > maxY)
maxY = stackedSum[i];
if (isUndefined(minY) || stackedSum[i] < minY)
minY = stackedSum[i];
}
}
return {minY: minY, maxY: maxY, minX: minX, maxX: maxX}; return {minY: minY, maxY: maxY, minX: minX, maxX: maxX};
}; };
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -587,74 +587,55 @@ c3_chart_internal_fn.findMinMax = function () { ...@@ -587,74 +587,55 @@ c3_chart_internal_fn.findMinMax = function () {
var minY, maxY, minX, maxX; var minY, maxY, minX, maxX;
var i,j, id; var i,j, id;
var allData = $$.api.data(); // detect if we have stacked group
allData.forEach(function(v){
var data;
if(v){
data = v.values;
} else {
data = {
length: 0
};
}
for(i = 0; i < data.length; i++) {
if (isUndefined(maxX) || data[i].x > maxX)
maxX = data[i].x;
if (isUndefined(minX) || data[i].x < minX)
minX = data[i].x;
}
var stacked = false; var stacked = false;
var groups = $$.api.groups(); var groups = $$.api.groups();
groups.forEach(function(elem){ groups.forEach(function(elem){
if(elem.length){ if(elem.length) {
stacked = true; stacked = true;
} }
}); });
if(stacked){ var stackedSum = [];
data = $$.api.data();
var tmp = []; var allData = $$.api.data();
allData.forEach(function(v){
if(!v)
return;
var data = v.values;
for(i = 0; i < data.length; i++){ // calc min/max for X axis
var tmp_seq = []; for(i = 0; i < data.length; i++) {
var values = data[i].values; if (isUndefined(maxX) || data[i].x > maxX)
values.forEach(function(value){ maxX = data[i].x;
tmp_seq.push(value); if (isUndefined(minX) || data[i].x < minX)
}); minX = data[i].x;
tmp.push(tmp_seq);
} }
// calc min/max for Y axis
for(i = 0; i < data.length; i++){
for(var j = 0; j < tmp[0].length; j++){
var s = 0;
for(var k = 0; k < tmp.length; k++){
s += tmp[k][j].value;
}
if (isUndefined(maxY) || s > maxY){
maxY = s;
}
if (isUndefined(minY) || s < minY){
minY = s;
}
}
}
} else {
for(i = 0; i < data.length; i++) { for(i = 0; i < data.length; i++) {
if (isUndefined(maxY) || data[i].value > maxY) if (isUndefined(maxY) || data[i].value > maxY)
maxY = data[i].value; maxY = data[i].value;
if (isUndefined(minY) || data[i].value < minY) if (isUndefined(minY) || data[i].value < minY)
minY = data[i].value; minY = data[i].value;
// calc sum row for stacked
if (stacked) {
if (!stackedSum[i])
stackedSum[i] = 0;
stackedSum[i] += data[i].value;
} }
} }
}); });
if (stacked) {
for(i = 0; i < stackedSum.length; i++) {
if (isUndefined(maxY) || stackedSum[i] > maxY)
maxY = stackedSum[i];
if (isUndefined(minY) || stackedSum[i] < minY)
minY = stackedSum[i];
}
}
return {minY: minY, maxY: maxY, minX: minX, maxX: maxX}; return {minY: minY, maxY: maxY, minX: minX, maxX: maxX};
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment