mirror of
https://github.com/chartjs/Chart.js.git
synced 2026-03-03 15:04:03 +01:00
44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
import defaults from './core.defaults';
|
|
import {clone, each, extend, merge} from '../helpers/helpers.core';
|
|
import layouts from './core.layouts';
|
|
|
|
export default {
|
|
// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then
|
|
// use the new chart options to grab the correct scale
|
|
constructors: {},
|
|
// Use a registration function so that we can move to an ES6 map when we no longer need to support
|
|
// old browsers
|
|
|
|
// Scale config defaults
|
|
defaults: {},
|
|
registerScaleType: function(type, scaleConstructor, scaleDefaults) {
|
|
this.constructors[type] = scaleConstructor;
|
|
this.defaults[type] = clone(scaleDefaults);
|
|
},
|
|
getScaleConstructor: function(type) {
|
|
return Object.prototype.hasOwnProperty.call(this.constructors, type) ? this.constructors[type] : undefined;
|
|
},
|
|
getScaleDefaults: function(type) {
|
|
// Return the scale defaults merged with the global settings so that we always use the latest ones
|
|
return Object.prototype.hasOwnProperty.call(this.defaults, type) ? merge({}, [defaults.scale, this.defaults[type]]) : {};
|
|
},
|
|
updateScaleDefaults: function(type, additions) {
|
|
var me = this;
|
|
if (Object.prototype.hasOwnProperty.call(me.defaults, type)) {
|
|
me.defaults[type] = extend(me.defaults[type], additions);
|
|
}
|
|
},
|
|
addScalesToLayout: function(chart) {
|
|
// Adds each scale to the chart.boxes array to be sized accordingly
|
|
each(chart.scales, function(scale) {
|
|
// Set ILayoutItem parameters for backwards compatibility
|
|
scale.fullWidth = scale.options.fullWidth;
|
|
scale.position = scale.options.position;
|
|
scale.weight = scale.options.weight;
|
|
layouts.addBox(chart, scale);
|
|
});
|
|
}
|
|
};
|