Skip to content

Commit

Permalink
Even further
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle committed Oct 27, 2019
1 parent d9ad76a commit 8b50c33
Show file tree
Hide file tree
Showing 19 changed files with 139 additions and 230 deletions.
4 changes: 2 additions & 2 deletions docs/developers/axes.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ To work with Chart.js, custom scale types must implement the following interface
// buildTicks() should create a ticks array on the axis instance, if you intend to use any of the implementations from the base class
buildTicks: function() {},

// Get the value to show for the data at the given index of the the given dataset, ie this.chart.data.datasets[datasetIndex].data[index]
getLabelForIndex: function(index, datasetIndex) {},
// Get the label to show for the given value
getLabelForValue: function(value) {},

// Get the pixel (x coordinate for horizontal axis, y coordinate for vertical axis) for a given value
// @param index: index into the ticks array
Expand Down
15 changes: 9 additions & 6 deletions src/controllers/controller.bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ module.exports = DatasetController.extend({
};

// all borders are drawn for floating bar
if (me._getParsedCustom(index)) {
if (me._getParsed(index)._custom) {
rectangle._model.borderSkipped = null;
}

Expand Down Expand Up @@ -364,7 +364,7 @@ module.exports = DatasetController.extend({
var i, ilen;

for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {
pixels.push(scale.getPixelForValue(me._getParsedValue(scale, i)));
pixels.push(scale.getPixelForValue(me._getParsed(i)[scale.id]));
}

return {
Expand All @@ -385,9 +385,12 @@ module.exports = DatasetController.extend({
var valueScale = me._getValueScale();
var minBarLength = options.minBarLength;
var start = 0;
var value = me._getParsedValue(valueScale, index);
var custom = me._getParsedCustom(index);
var length = me._getStackedValue(valueScale, index);
var parsed = me._getParsed(index);
var value = parsed[valueScale.id];
var custom = parsed._custom;
var optStacked = valueScale.options.stacked;
var stacked = (optStacked || (optStacked === undefined && me._cachedMeta.stack !== undefined));
var length = stacked ? me._applyStack(valueScale, parsed) : parsed[valueScale.id];
var base, head, size;

if (length !== value) {
Expand Down Expand Up @@ -456,7 +459,7 @@ module.exports = DatasetController.extend({
helpers.canvas.clipArea(chart.ctx, chart.chartArea);

for (; i < ilen; ++i) {
if (!isNaN(me._getParsedValue(scale, i))) {
if (!isNaN(me._getParsed(i)[scale.id])) {
rects[i].draw();
}
}
Expand Down
17 changes: 12 additions & 5 deletions src/controllers/controller.bubble.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,16 @@ module.exports = DatasetController.extend({
var yScale = me.getScaleForId(meta.yAxisID);
var options = me._resolveDataElementOptions(point, index);
var dsIndex = me.index;

var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(me._getParsedValue(xScale, index));
var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(me._getParsedValue(yScale, index));
var parsed, x, y;

if (reset) {
x = xScale.getPixelForDecimal(0.5);
y = yScale.getBasePixel();
} else {
parsed = me._getParsed(index);
x = xScale.getPixelForValue(parsed[xScale.id]);
y = yScale.getPixelForValue(parsed[yScale.id]);
}

point._xScale = xScale;
point._yScale = yScale;
Expand Down Expand Up @@ -162,7 +169,7 @@ module.exports = DatasetController.extend({
var chart = me.chart;
var dataset = me.getDataset();
var custom = point.custom || {};
var parsedCustom = me._getParsedCustom(index);
var parsed = me._getParsed(index);
var values = DatasetController.prototype._resolveDataElementOptions.apply(me, arguments);

// Scriptable options
Expand All @@ -181,7 +188,7 @@ module.exports = DatasetController.extend({
// Custom radius resolution
values.radius = resolve([
custom.radius,
parsedCustom,
parsed && parsed._custom,
me._config.radius,
chart.options.elements.point.radius
], context, index);
Expand Down
21 changes: 5 additions & 16 deletions src/controllers/controller.line.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,15 @@ module.exports = DatasetController.extend({
var xScale = me._xScale;
var yScale = me._yScale;
var lineModel = meta.dataset._model;
var optStacked = yScale.options.stacked;
var stacked = (optStacked || (optStacked === undefined && me._cachedMeta.stack !== undefined));
var parsed = me._getParsed(index);
var x, y;

var options = me._resolveDataElementOptions(point, index);

x = xScale.getPixelForValue(me._getParsedValue(xScale, index));
y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(me._getStackedValue(yScale, index));
x = xScale.getPixelForValue(parsed[xScale.id]);
y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(stacked ? me._applyStack(yScale, parsed) : parsed[yScale.id]);

// Utility
point._xScale = xScale;
Expand Down Expand Up @@ -281,18 +284,4 @@ module.exports = DatasetController.extend({
model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);
model.radius = valueOrDefault(options.hoverRadius, options.radius);
},

// DEPRECATIONS

/**
* Provided for backward compatibility
* @deprecated since version 2.9.0
* @todo remove at version 3
*/
calculatePointY: function(value, index, datasetIndex) {
var me = this;
var chart = me.chart;
var controller = datasetIndex === me.index ? me : chart.getDatasetMeta(datasetIndex).controller;
return controller._getStackedValue(me._yScale, index);
},
});
2 changes: 0 additions & 2 deletions src/controllers/controller.polarArea.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,6 @@ module.exports = DatasetController.extend({

dataElementType: elements.Arc,

linkScales: helpers.noop,

/**
* @private
*/
Expand Down
2 changes: 0 additions & 2 deletions src/controllers/controller.radar.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ module.exports = DatasetController.extend({

dataElementType: elements.Point,

linkScales: helpers.noop,

/**
* @private
*/
Expand Down
26 changes: 9 additions & 17 deletions src/core/core.datasetController.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,12 +212,16 @@ helpers.extend(DatasetController.prototype, {
var scales = chart.scales;
var dataset = me.getDataset();
var scalesOpts = chart.options.scales;
var xId = scalesOpts && scalesOpts.xAxes && scalesOpts.xAxes.length && scalesOpts.xAxes[0].id;
var yId = scalesOpts && scalesOpts.yAxes && scalesOpts.yAxes.length && scalesOpts.yAxes[0].id;
var scale = chart.options.scale;
var scaleId = scale && scale.id;

if (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {
meta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;
meta.xAxisID = dataset.xAxisID || xId || scaleId;
}
if (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {
meta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;
meta.yAxisID = dataset.yAxisID || yId || scaleId;
}
},

Expand Down Expand Up @@ -542,32 +546,20 @@ helpers.extend(DatasetController.prototype, {
/**
* @private
*/
_getParsedValue: function(scale, index) {
_getParsed: function(index) {
var data = this._cachedMeta.data;
if (index < 0 || index >= data.length) {
return;
}
return data[index]._parsed[scale.id];
return data[index]._parsed;
},

/**
* @private
*/
_getParsedCustom: function(index) {
var data = this._cachedMeta.data;
if (index < 0 || index >= data.length) {
return;
}
return data[index]._parsed._custom;
},

/**
* @private
*/
_getStackedValue: function(scale, index) {
_applyStack: function(scale, parsed) {
var chart = this.chart;
var meta = this._cachedMeta;
var parsed = meta.data[index]._parsed;
var value = parsed[scale.id];
var stacked = scale.options.stacked;
var stack;
Expand Down
43 changes: 5 additions & 38 deletions src/core/core.scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -353,28 +353,6 @@ var Scale = Element.extend({
return null;
},

/**
* Get internal parsed value
* @param {number} index
* @param {number} datasetIndex
* @private
* @since 2.9
*/
_getParsedValue: function(index, datasetIndex) {
return this.chart.getDatasetMeta(datasetIndex).controller._getParsedValue(this, index);
},

/**
* Get internal parsed custom data
* @param {number} index
* @param {number} datasetIndex
* @private
* @since 2.9
*/
_getParsedCustom: function(index, datasetIndex) {
return this.chart.getDatasetMeta(datasetIndex).controller._getParsedCustom(index);
},

_getMinMax: function(canStack) {
var me = this;
var metas = me._getMatchingVisibleMetas();
Expand Down Expand Up @@ -883,23 +861,12 @@ var Scale = Element.extend({
},

/**
* @private
*/
_getScaleLabel: function(index, datasetIndex) {
var c = this._getParsedCustom(index, datasetIndex);
if (c && c.start !== undefined && c.end !== undefined) {
return '[' + c.start + ', ' + c.end + ']';
}

return this._getParsedValue(index, datasetIndex);
},

/**
* Used to get the value to display in the tooltip for the data at the given index
* @param index
* @param datasetIndex
* Used to get the label to display in the tooltip for the given value
* @param value
*/
getLabelForIndex: helpers.noop,
getLabelForValue: function(value) {
return value;
},

/**
* Returns the location of the given data point. Value can either be an index or a numerical value
Expand Down
9 changes: 5 additions & 4 deletions src/core/core.tooltip.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,13 @@ function createTooltipItem(element) {
var controller = element._chart.getDatasetMeta(datasetIndex).controller;
var indexScale = controller._getIndexScale();
var valueScale = controller._getValueScale();
var parsed = controller._getParsed(index);

return {
xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',
yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',
label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',
value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',
xLabel: xScale ? xScale.getLabelForValue(parsed[xScale.id]) : '',
yLabel: yScale ? yScale.getLabelForValue(parsed[yScale.id]) : '',
label: indexScale ? '' + indexScale.getLabelForValue(parsed[indexScale.id]) : '',
value: valueScale ? '' + valueScale.getLabelForValue(parsed[valueScale.id]) : '',
index: index,
datasetIndex: datasetIndex,
x: element._model.x,
Expand Down
13 changes: 4 additions & 9 deletions src/scales/scale.category.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict';

var helpers = require('../helpers/index');
var Scale = require('../core/core.scale');

var isNullOrUndef = helpers.isNullOrUndef;
var defaultConfig = {
position: 'bottom'
};
Expand Down Expand Up @@ -66,9 +64,8 @@ module.exports = Scale.extend({
me.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);
},

getLabelForIndex: function(index, datasetIndex) {
getLabelForValue: function(value) {
var me = this;
var value = me._getParsedValue(index, datasetIndex);
var labels = me._getLabels();

if (value >= 0 && value < labels.length) {
Expand Down Expand Up @@ -98,13 +95,11 @@ module.exports = Scale.extend({
},

// Used to get data value locations. Value can either be an index or a numerical value
getPixelForValue: function(value, index, datasetIndex) {
getPixelForValue: function(value) {
var me = this;

if (!isNullOrUndef(index) && !isNullOrUndef(datasetIndex)) {
value = me._getParsedValue(index, datasetIndex);
} else if (typeof value !== 'number') {
value = me._parse(value, index);
if (typeof value !== 'number') {
value = me._parse(value);
}

return me.getPixelForDecimal((value - me._startValue) / me._valueRange);
Expand Down
4 changes: 0 additions & 4 deletions src/scales/scale.linear.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ module.exports = LinearScaleBase.extend({
}
},

getLabelForIndex: function(index, datasetIndex) {
return this._getScaleLabel(index, datasetIndex);
},

// Utils
getPixelForValue: function(value) {
var me = this;
Expand Down
5 changes: 0 additions & 5 deletions src/scales/scale.logarithmic.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,6 @@ module.exports = Scale.extend({
Scale.prototype.convertTicksToLabels.call(this);
},

// Get the correct tooltip label
getLabelForIndex: function(index, datasetIndex) {
return this._getScaleLabel(index, datasetIndex);
},

getPixelForTick: function(index) {
var ticks = this.tickValues;
if (index < 0 || index > ticks.length - 1) {
Expand Down
30 changes: 5 additions & 25 deletions src/scales/scale.radialLinear.js
Original file line number Diff line number Diff line change
Expand Up @@ -305,28 +305,12 @@ module.exports = LinearScaleBase.extend({

determineDataLimits: function() {
var me = this;
var chart = me.chart;
var min = Number.POSITIVE_INFINITY;
var max = Number.NEGATIVE_INFINITY;

helpers.each(chart.data.datasets, function(dataset, datasetIndex) {
if (chart.isDatasetVisible(datasetIndex)) {
var meta = chart.getDatasetMeta(datasetIndex);

helpers.each(meta.data, function(metaData, index) {
var value = me._getParsedValue(index, datasetIndex);
if (isNaN(value) || metaData.hidden) {
return;
}

min = Math.min(value, min);
max = Math.max(value, max);
});
}
});
var minmax = me._getMinMax(false);
var min = minmax.min;
var max = minmax.max;

me.min = (min === Number.POSITIVE_INFINITY ? 0 : min);
me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);
me.min = helpers.isFinite(min) && !isNaN(min) ? min : 0;
me.max = helpers.isFinite(max) && !isNaN(max) ? max : 0;

// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero
me.handleTickRangeOptions();
Expand All @@ -349,10 +333,6 @@ module.exports = LinearScaleBase.extend({
});
},

getLabelForIndex: function(index, datasetIndex) {
return this._getParsedValue(index, datasetIndex);
},

fit: function() {
var me = this;
var opts = me.options;
Expand Down
Loading

0 comments on commit 8b50c33

Please sign in to comment.