Skip to content

Commit

Permalink
some fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle committed Oct 23, 2019
1 parent 6d69c85 commit 3f7282b
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 47 deletions.
33 changes: 16 additions & 17 deletions src/core/core.datasetController.js
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,8 @@ helpers.extend(DatasetController.prototype, {
var yId = yScale.id;
var xKey = getStackKey(xScale, yScale, meta);
var yKey = getStackKey(yScale, xScale, meta);
var i, ilen, parsed, stack, item, key, x, y;
var stacks = xKey || yKey;
var i, ilen, parsed, stack, item, x, y;

if (helpers.isArray(data[start])) {
parsed = me._parseArrayData(meta, data, start, count);
Expand All @@ -407,28 +408,26 @@ helpers.extend(DatasetController.prototype, {
parsed = me._parsePrimitiveData(meta, data, start, count);
}

function storeStack(stackKey, indexValue, scaleId, value) {
if (stackKey) {
stackKey += '.' + indexValue;
item._stackKeys[scaleId] = stackKey;
stack = crossRef[stackKey] || (crossRef[stackKey] = {});
stack[meta.datasetIndex] = value;
}
}

for (i = 0, ilen = parsed.length; i < ilen; ++i) {
item = parsed[i];
meta.data[item._index]._parsed = item;

if (xKey || yKey) {
if (stacks) {
item._stackKeys = {};
x = item[xId];
y = item[yId];

if (xKey) {
key = xKey + '.' + x;
item._stackKeys[yId] = key;
stack = crossRef[key] || (crossRef[key] = {});
stack[meta.datasetIndex] = y;
}

if (yKey) {
key = yKey + '.' + y;
item._stackKeys[xId] = key;
stack = crossRef[key] || (crossRef[key] = {});
stack[meta.datasetIndex] = y;
}
storeStack(xKey, x, yId, y);
storeStack(yKey, y, xId, x);
}
}

Expand Down Expand Up @@ -572,7 +571,7 @@ helpers.extend(DatasetController.prototype, {
return value;
},

_getMinMax: function(scale) {
_getMinMax: function(scale, canStack) {
var chart = this.chart;
var meta = this._cachedMeta;
var metaData = meta.data;
Expand All @@ -584,7 +583,7 @@ helpers.extend(DatasetController.prototype, {
var stacked = scale.options.stacked;
var i, item, value, parsed, stack;

stacked = stacked || (stacked === undefined && meta.stack !== undefined);
stacked = canStack && (stacked || (stacked === undefined && meta.stack !== undefined));

for (i = 0; i < ilen; ++i) {
item = metaData[i];
Expand Down
24 changes: 23 additions & 1 deletion src/core/core.scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ var Scale = Element.extend({
},

/**
* Parse a object for axis to internal representation.
* Parse an object for axis to internal representation.
* @param {object} obj
* @param {string} axis
* @param {number} index
Expand Down Expand Up @@ -369,6 +369,28 @@ var Scale = Element.extend({
return this.chart.getDatasetMeta(datasetIndex).controller._getParsedCustom(index);
},

_getMinMax: function(canStack) {
var me = this;
var metas = me._getMatchingMetas();
var min = Number.POSITIVE_INFINITY;
var max = Number.NEGATIVE_INFINITY;
var minNotZero = Number.POSITIVE_INFINITY;
var i, ilen, minmax;

for (i = 0, ilen = metas.length; i < ilen; ++i) {
minmax = metas[i].controller._getMinMax(me, canStack);
min = Math.min(min, minmax.min);
max = Math.max(max, minmax.max);
minNotZero = Math.min(minNotZero, minmax.minNotZero);
}

return {
min: min,
max: max,
minNotZero: minNotZero
};
},

_invalidateCaches: helpers.noop,

/**
Expand Down
13 changes: 3 additions & 10 deletions src/scales/scale.linear.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,11 @@ var defaultConfig = {
module.exports = LinearScaleBase.extend({
determineDataLimits: function() {
var me = this;
var metas = me._getMatchingMetas();
var DEFAULT_MIN = 0;
var DEFAULT_MAX = 1;
var min = Number.POSITIVE_INFINITY;
var max = Number.NEGATIVE_INFINITY;
var i, ilen, minmax;

for (i = 0, ilen = metas.length; i < ilen; ++i) {
minmax = metas[i].controller._getMinMax(me);
min = Math.min(min, minmax.min);
max = Math.max(max, minmax.max);
}
var minmax = me._getMinMax(true);
var min = minmax.min;
var max = minmax.max;

me.min = helpers.isFinite(min) && !isNaN(min) ? min : DEFAULT_MIN;
me.max = helpers.isFinite(max) && !isNaN(max) ? max : DEFAULT_MAX;
Expand Down
16 changes: 4 additions & 12 deletions src/scales/scale.logarithmic.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,10 @@ module.exports = Scale.extend({

determineDataLimits: function() {
var me = this;
var metas = me._getMatchingMetas();
var min = Number.POSITIVE_INFINITY;
var max = Number.NEGATIVE_INFINITY;
var minNotZero = Number.POSITIVE_INFINITY;
var i, ilen, minmax;

for (i = 0, ilen = metas.length; i < ilen; ++i) {
minmax = metas[i].controller._getMinMax(me);
min = Math.min(min, minmax.min);
max = Math.max(max, minmax.max);
minNotZero = Math.min(minNotZero, minmax.minNotZero);
}
var minmax = me._getMinMax(true);
var min = minmax.min;
var max = minmax.max;
var minNotZero = minmax.minNotZero;

me.min = helpers.isFinite(min) ? Math.max(0, min) : null;
me.max = helpers.isFinite(max) ? Math.max(0, max) : null;
Expand Down
11 changes: 4 additions & 7 deletions src/scales/scale.time.js
Original file line number Diff line number Diff line change
Expand Up @@ -504,14 +504,11 @@ module.exports = Scale.extend({
var unit = options.time.unit || 'day';
var min = Number.POSITIVE_INFINITY;
var max = Number.NEGATIVE_INFINITY;
var metas = me._getMatchingMetas();
var i, ilen, minmax, labels;
var minmax = me._getMinMax(false);
var i, ilen, labels;

for (i = 0, ilen = metas.length; i < ilen; ++i) {
minmax = metas[i].controller._getMinMax(me);
min = Math.min(min, minmax.min);
max = Math.max(max, minmax.max);
}
min = Math.min(min, minmax.min);
max = Math.max(max, minmax.max);

labels = me._getLabelTimestamps();
for (i = 0, ilen = labels.length; i < ilen; ++i) {
Expand Down

0 comments on commit 3f7282b

Please sign in to comment.