From 93850b647d538d3df513a1c68a0c0e003016331b Mon Sep 17 00:00:00 2001 From: Simon Brunel Date: Fri, 4 Jan 2019 18:20:27 +0100 Subject: [PATCH] Better scale export (class with static `_defaults`) --- src/chart.js | 4 ++-- src/scales/scale.category.js | 8 +++----- src/scales/scale.linear.js | 8 +++----- src/scales/scale.logarithmic.js | 9 ++++----- src/scales/scale.radialLinear.js | 8 +++----- src/scales/scale.time.js | 8 +++----- 6 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/chart.js b/src/chart.js index 572f0bdc1b0..3b71edee925 100644 --- a/src/chart.js +++ b/src/chart.js @@ -29,8 +29,8 @@ require('./core/core.controller')(Chart); // Register built-in scales var scales = require('./scales'); -Chart.helpers.each(scales, function(register) { - register(); +Chart.helpers.each(scales, function(scale, type) { + Chart.scaleService.registerScaleType(type, scale, scale._defaults); }); // Loading built-in plugins diff --git a/src/scales/scale.category.js b/src/scales/scale.category.js index 1d1a5add6c1..3a4d20645b3 100644 --- a/src/scales/scale.category.js +++ b/src/scales/scale.category.js @@ -1,13 +1,12 @@ 'use strict'; var Scale = require('../core/core.scale'); -var scales = require('../core/core.scaleService'); var defaultConfig = { position: 'bottom' }; -var CategoryScale = Scale.extend({ +module.exports = Scale.extend({ /** * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those * else fall back to data.labels @@ -131,6 +130,5 @@ var CategoryScale = Scale.extend({ } }); -module.exports = function() { - scales.registerScaleType('category', CategoryScale, defaultConfig); -}; +// INTERNAL: static default options, registered in src/chart.js +module.exports._defaults = defaultConfig; diff --git a/src/scales/scale.linear.js b/src/scales/scale.linear.js index 54b6b6b3745..41a4e4168a3 100644 --- a/src/scales/scale.linear.js +++ b/src/scales/scale.linear.js @@ -2,7 +2,6 @@ var helpers = require('../helpers/index'); var LinearScaleBase = require('./scale.linearbase'); -var scales = require('../core/core.scaleService'); var Ticks = require('../core/core.ticks'); var defaultConfig = { @@ -12,7 +11,7 @@ var defaultConfig = { } }; -var LinearScale = LinearScaleBase.extend({ +module.exports = LinearScaleBase.extend({ determineDataLimits: function() { var me = this; var opts = me.options; @@ -187,6 +186,5 @@ var LinearScale = LinearScaleBase.extend({ } }); -module.exports = function() { - scales.registerScaleType('linear', LinearScale, defaultConfig); -}; +// INTERNAL: static default options, registered in src/chart.js +module.exports._defaults = defaultConfig; diff --git a/src/scales/scale.logarithmic.js b/src/scales/scale.logarithmic.js index 3db732793e4..08996de809b 100644 --- a/src/scales/scale.logarithmic.js +++ b/src/scales/scale.logarithmic.js @@ -3,7 +3,6 @@ var defaults = require('../core/core.defaults'); var helpers = require('../helpers/index'); var Scale = require('../core/core.scale'); -var scales = require('../core/core.scaleService'); var Ticks = require('../core/core.ticks'); /** @@ -53,6 +52,7 @@ function generateTicks(generationOptions, dataRange) { return ticks; } +// INTERNAL: static default options, registered in src/chart.js var defaultConfig = { position: 'left', @@ -62,7 +62,7 @@ var defaultConfig = { } }; -var LogarithmicScale = Scale.extend({ +module.exports = Scale.extend({ determineDataLimits: function() { var me = this; var opts = me.options; @@ -347,6 +347,5 @@ var LogarithmicScale = Scale.extend({ } }); -module.exports = function() { - scales.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); -}; +// INTERNAL: static default options, registered in src/chart.js +module.exports._defaults = defaultConfig; diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index bb007925e5d..c705b974088 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -3,7 +3,6 @@ var defaults = require('../core/core.defaults'); var helpers = require('../helpers/index'); var LinearScaleBase = require('./scale.linearbase'); -var scales = require('../core/core.scaleService'); var Ticks = require('../core/core.ticks'); var defaultConfig = { @@ -316,7 +315,7 @@ function numberOrZero(param) { return helpers.isNumber(param) ? param : 0; } -var LinearRadialScale = LinearScaleBase.extend({ +module.exports = LinearScaleBase.extend({ setDimensions: function() { var me = this; @@ -529,6 +528,5 @@ var LinearRadialScale = LinearScaleBase.extend({ } }); -module.exports = function() { - scales.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); -}; +// INTERNAL: static default options, registered in src/chart.js +module.exports._defaults = defaultConfig; diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index b2389a31fa9..c7c49eb6b1b 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -5,7 +5,6 @@ var moment = require('moment'); var defaults = require('../core/core.defaults'); var helpers = require('../helpers/index'); var Scale = require('../core/core.scale'); -var scales = require('../core/core.scaleService'); // Integer constants are from the ES6 spec. var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; @@ -488,7 +487,7 @@ var defaultConfig = { } }; -var TimeScale = Scale.extend({ +module.exports = Scale.extend({ initialize: function() { if (!moment) { throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); @@ -788,6 +787,5 @@ var TimeScale = Scale.extend({ } }); -module.exports = function() { - scales.registerScaleType('time', TimeScale, defaultConfig); -}; +// INTERNAL: static default options, registered in src/chart.js +module.exports._defaults = defaultConfig;