mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Reduce object creation during parsing (#6758)
* Reduce object creation during parsing * Rename method to createElement * Make code more efficient? * Update migration guide
This commit is contained in:
parent
4b4b4b79e1
commit
f5b2b8db64
@ -65,18 +65,19 @@ Chart.js 3.0 introduces a number of breaking changes. Chart.js 2.0 was released
|
|||||||
* `helpers.removeEvent`
|
* `helpers.removeEvent`
|
||||||
* `helpers.roundedRect`
|
* `helpers.roundedRect`
|
||||||
* `helpers.scaleMerge`
|
* `helpers.scaleMerge`
|
||||||
* `Scale.getRightValue`
|
|
||||||
* `Scale.mergeTicksOptions`
|
|
||||||
* `Scale.ticksAsNumbers`
|
|
||||||
* `Chart.Controller`
|
* `Chart.Controller`
|
||||||
* `Chart.chart.chart`
|
* `Chart.chart.chart`
|
||||||
* `Chart.types`
|
* `Chart.types`
|
||||||
* `Line.calculatePointY`
|
* `DatasetController.addElementAndReset`
|
||||||
* `Element.getArea`
|
* `Element.getArea`
|
||||||
* `Element.height`
|
* `Element.height`
|
||||||
* `Element.inLabelRange`
|
* `Element.inLabelRange`
|
||||||
* Made `scale.handleDirectionalChanges` private
|
* `Line.calculatePointY`
|
||||||
* Made `scale.tickValues` private
|
* `Scale.getRightValue`
|
||||||
|
* `Scale.mergeTicksOptions`
|
||||||
|
* `Scale.ticksAsNumbers`
|
||||||
|
* `Scale.handleDirectionalChanges` is now private
|
||||||
|
* `Scale.tickValues` is now private
|
||||||
|
|
||||||
#### Removal of private APIs
|
#### Removal of private APIs
|
||||||
|
|
||||||
@ -95,6 +96,7 @@ Chart.js 3.0 introduces a number of breaking changes. Chart.js 2.0 was released
|
|||||||
* `helpers.log10` was renamed to `helpers.math.log10`
|
* `helpers.log10` was renamed to `helpers.math.log10`
|
||||||
* `Chart.Animation.animationObject` was renamed to `Chart.Animation`
|
* `Chart.Animation.animationObject` was renamed to `Chart.Animation`
|
||||||
* `Chart.Animation.chartInstance` was renamed to `Chart.Animation.chart`
|
* `Chart.Animation.chartInstance` was renamed to `Chart.Animation.chart`
|
||||||
|
* `DatasetController.createMetaData` and `DatasetController.createMetaDataset` were replaced with `DatasetController.createElement`
|
||||||
* `TimeScale.getLabelCapacity` was renamed to `TimeScale._getLabelCapacity`
|
* `TimeScale.getLabelCapacity` was renamed to `TimeScale._getLabelCapacity`
|
||||||
* `TimeScale.tickFormatFunction` was renamed to `TimeScale._tickFormatFunction`
|
* `TimeScale.tickFormatFunction` was renamed to `TimeScale._tickFormatFunction`
|
||||||
* `TimeScale.getPixelForOffset` was renamed to `TimeScale._getPixelForOffset`
|
* `TimeScale.getPixelForOffset` was renamed to `TimeScale._getPixelForOffset`
|
||||||
|
|||||||
@ -143,7 +143,7 @@ module.exports = DatasetController.extend({
|
|||||||
var metaData = this.getMeta().data;
|
var metaData = this.getMeta().data;
|
||||||
var i, ilen;
|
var i, ilen;
|
||||||
for (i = start, ilen = start + count; i < ilen; ++i) {
|
for (i = start, ilen = start + count; i < ilen; ++i) {
|
||||||
metaData[i]._val = +data[i];
|
metaData[i]._parsed = +data[i];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -232,7 +232,7 @@ module.exports = DatasetController.extend({
|
|||||||
var centerY = (chartArea.top + chartArea.bottom) / 2;
|
var centerY = (chartArea.top + chartArea.bottom) / 2;
|
||||||
var startAngle = opts.rotation; // non reset case handled later
|
var startAngle = opts.rotation; // non reset case handled later
|
||||||
var endAngle = opts.rotation; // non reset case handled later
|
var endAngle = opts.rotation; // non reset case handled later
|
||||||
var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(arc._val * opts.circumference / DOUBLE_PI);
|
var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(arc._parsed * opts.circumference / DOUBLE_PI);
|
||||||
var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;
|
var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;
|
||||||
var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;
|
var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;
|
||||||
var options = arc._options || {};
|
var options = arc._options || {};
|
||||||
@ -276,7 +276,7 @@ module.exports = DatasetController.extend({
|
|||||||
var value;
|
var value;
|
||||||
|
|
||||||
helpers.each(metaData, function(arc) {
|
helpers.each(metaData, function(arc) {
|
||||||
value = arc ? arc._val : NaN;
|
value = arc ? arc._parsed : NaN;
|
||||||
if (!isNaN(value) && !arc.hidden) {
|
if (!isNaN(value) && !arc.hidden) {
|
||||||
total += Math.abs(value);
|
total += Math.abs(value);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -327,20 +327,9 @@ helpers.extend(DatasetController.prototype, {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
createMetaDataset: function() {
|
createElement: function(type) {
|
||||||
var me = this;
|
|
||||||
var type = me.datasetElementType;
|
|
||||||
return type && new type({
|
return type && new type({
|
||||||
_ctx: me.chart.ctx
|
_ctx: this.chart.ctx
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
createMetaData: function() {
|
|
||||||
var me = this;
|
|
||||||
var type = me.dataElementType;
|
|
||||||
return type && new type({
|
|
||||||
_ctx: me.chart.ctx,
|
|
||||||
_parsed: {}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -411,16 +400,10 @@ helpers.extend(DatasetController.prototype, {
|
|||||||
data = me._data;
|
data = me._data;
|
||||||
|
|
||||||
for (i = 0, ilen = data.length; i < ilen; ++i) {
|
for (i = 0, ilen = data.length; i < ilen; ++i) {
|
||||||
metaData[i] = metaData[i] || me.createMetaData();
|
metaData[i] = metaData[i] || me.createElement(me.dataElementType);
|
||||||
}
|
}
|
||||||
|
|
||||||
meta.dataset = meta.dataset || me.createMetaDataset();
|
meta.dataset = meta.dataset || me.createElement(me.datasetElementType);
|
||||||
},
|
|
||||||
|
|
||||||
addElementAndReset: function(index) {
|
|
||||||
var element = this.createMetaData();
|
|
||||||
this._cachedMeta.data.splice(index, 0, element);
|
|
||||||
this.updateElement(element, index, true);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
buildOrUpdateElements: function() {
|
buildOrUpdateElements: function() {
|
||||||
@ -973,10 +956,17 @@ helpers.extend(DatasetController.prototype, {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
insertElements: function(start, count) {
|
insertElements: function(start, count) {
|
||||||
for (var i = 0; i < count; ++i) {
|
const me = this;
|
||||||
this.addElementAndReset(start + i);
|
const elements = [];
|
||||||
|
var i;
|
||||||
|
for (i = start; i < start + count; ++i) {
|
||||||
|
elements.push(me.createElement(me.dataElementType));
|
||||||
|
}
|
||||||
|
me._cachedMeta.data.splice(start, 0, ...elements);
|
||||||
|
me._parse(start, count);
|
||||||
|
for (i = 0; i < count; ++i) {
|
||||||
|
me.updateElement(elements[i], start + i, true);
|
||||||
}
|
}
|
||||||
this._parse(start, count);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user