Deprecate Chart.{Type} classes (#5868)

It looks like these classes are a legacy from version 1 but we actually never promoted their usage. Instead, the regular way to create a chart is to set the type in the config, for example: `new Chart(ctx, {type: 'bar'})`. Some types are actually missing (no `Chart.HorizontalBar` or `Chart.Pie`) but it's also not scalable because it can easily conflict with other classes scoped under the `Chart` namespace.
This commit is contained in:
Simon Brunel 2018-11-29 07:56:20 +01:00 committed by GitHub
parent d6ac7d8a80
commit aa652df240
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 53 additions and 82 deletions

View File

@ -42,14 +42,6 @@ require('./controllers/controller.polarArea')(Chart);
require('./controllers/controller.radar')(Chart);
require('./controllers/controller.scatter')(Chart);
require('./charts/Chart.Bar')(Chart);
require('./charts/Chart.Bubble')(Chart);
require('./charts/Chart.Doughnut')(Chart);
require('./charts/Chart.Line')(Chart);
require('./charts/Chart.PolarArea')(Chart);
require('./charts/Chart.Radar')(Chart);
require('./charts/Chart.Scatter')(Chart);
// Loading built-in plugins
var plugins = require('./plugins');
for (var k in plugins) {
@ -116,8 +108,33 @@ Chart.canvasHelpers = Chart.helpers.canvas;
/**
* Provided for backward compatibility, use Chart.layouts instead.
* @namespace Chart.layoutService
* @deprecated since version 2.8.0
* @deprecated since version 2.7.3
* @todo remove at version 3
* @private
*/
Chart.layoutService = Chart.layouts;
/**
* Provided for backward compatibility, instead we should create a new Chart
* by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).
* @deprecated since version 2.8.0
* @todo remove at version 3
*/
Chart.helpers.each(
[
'Bar',
'Bubble',
'Doughnut',
'Line',
'PolarArea',
'Radar',
'Scatter'
],
function(klass) {
Chart[klass] = function(ctx, cfg) {
return new Chart(ctx, Chart.helpers.merge(cfg || {}, {
type: klass.charAt(0).toLowerCase() + klass.slice(1)
}));
};
}
);

View File

@ -1,11 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Bar = function(context, config) {
config.type = 'bar';
return new Chart(context, config);
};
};

View File

@ -1,10 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Bubble = function(context, config) {
config.type = 'bubble';
return new Chart(context, config);
};
};

View File

@ -1,11 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Doughnut = function(context, config) {
config.type = 'doughnut';
return new Chart(context, config);
};
};

View File

@ -1,11 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Line = function(context, config) {
config.type = 'line';
return new Chart(context, config);
};
};

View File

@ -1,11 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.PolarArea = function(context, config) {
config.type = 'polarArea';
return new Chart(context, config);
};
};

View File

@ -1,11 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Radar = function(context, config) {
config.type = 'radar';
return new Chart(context, config);
};
};

View File

@ -1,8 +0,0 @@
'use strict';
module.exports = function(Chart) {
Chart.Scatter = function(context, config) {
config.type = 'scatter';
return new Chart(context, config);
};
};

View File

@ -1,5 +1,32 @@
describe('Deprecations', function() {
describe('Version 2.8.0', function() {
[
['Bar', 'bar'],
['Bubble', 'bubble'],
['Doughnut', 'doughnut'],
['Line', 'line'],
['PolarArea', 'polarArea'],
['Radar', 'radar'],
['Scatter', 'scatter']
].forEach(function(descriptor) {
var klass = descriptor[0];
var type = descriptor[1];
describe('Chart.' + klass, function() {
it('should be defined as a function', function() {
expect(Chart[klass]).toBeDefined();
expect(typeof Chart[klass]).toBe('function');
});
it('should create a chart of type "' + type + '"', function() {
var chart = new Chart[klass]('foo', {data: {}});
expect(chart instanceof Chart.Controller).toBeTruthy();
expect(chart.config.type).toBe(type);
});
});
});
});
describe('Version 2.7.3', function() {
describe('Chart.layoutService', function() {
it('should be defined and an alias of Chart.layouts', function() {
expect(Chart.layoutService).toBeDefined();