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.
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) {
/**
* 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)
+ }));
+ };
+ }
+);
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.Bar = function(context, config) {
- config.type = 'bar';
-
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.Bubble = function(context, config) {
- config.type = 'bubble';
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.Doughnut = function(context, config) {
- config.type = 'doughnut';
-
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.Line = function(context, config) {
- config.type = 'line';
-
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.PolarArea = function(context, config) {
- config.type = 'polarArea';
-
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
-
- Chart.Radar = function(context, config) {
- config.type = 'radar';
-
- return new Chart(context, config);
- };
-
-};
+++ /dev/null
-'use strict';
-
-module.exports = function(Chart) {
- Chart.Scatter = function(context, config) {
- config.type = 'scatter';
- return new Chart(context, config);
- };
-};
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();