mirror of
https://github.com/chartjs/Chart.js.git
synced 2026-03-10 18:26:52 +01:00
Make Chart.defaults/Ticks/Interaction importable (#4512)
Default options can now be accessed by importing `core/core.defaults`. The returned object acts as a singleton and is populated when importing classes that expose their own default values (meaning that importing only `code.defaults` results in an empty object). Also make `Chart.Ticks` and `Chart.Interaction` importable since existing defaults rely on these values. Add the `defaults._set` method that make easier declaring new defaults by merging given values with existing ones for a specific scope (`global`, `scale`, `bar`, etc).
This commit is contained in:
@@ -1,18 +1,24 @@
|
||||
/**
|
||||
* Plugin based on discussion from the following Chart.js issues:
|
||||
* @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569
|
||||
* @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var defaults = require('../core/core.defaults');
|
||||
var helpers = require('../helpers/index');
|
||||
|
||||
module.exports = function(Chart) {
|
||||
/**
|
||||
* Plugin based on discussion from the following Chart.js issues:
|
||||
* @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569
|
||||
* @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897
|
||||
*/
|
||||
Chart.defaults.global.plugins.filler = {
|
||||
propagate: true
|
||||
};
|
||||
defaults._set('global', {
|
||||
plugins: {
|
||||
filler: {
|
||||
propagate: true
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = function(Chart) {
|
||||
|
||||
var defaults = Chart.defaults;
|
||||
var mappers = {
|
||||
dataset: function(source) {
|
||||
var index = source.fill;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
var defaults = require('../core/core.defaults');
|
||||
var helpers = require('../helpers/index');
|
||||
|
||||
module.exports = function(Chart) {
|
||||
|
||||
var layout = Chart.layoutService;
|
||||
var noop = helpers.noop;
|
||||
|
||||
Chart.defaults.global.legend = {
|
||||
defaults._set('global', {
|
||||
legend: {
|
||||
display: true,
|
||||
position: 'top',
|
||||
fullWidth: true,
|
||||
@@ -64,7 +61,27 @@ module.exports = function(Chart) {
|
||||
}, this) : [];
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
legendCallback: function(chart) {
|
||||
var text = [];
|
||||
text.push('<ul class="' + chart.id + '-legend">');
|
||||
for (var i = 0; i < chart.data.datasets.length; i++) {
|
||||
text.push('<li><span style="background-color:' + chart.data.datasets[i].backgroundColor + '"></span>');
|
||||
if (chart.data.datasets[i].label) {
|
||||
text.push(chart.data.datasets[i].label);
|
||||
}
|
||||
text.push('</li>');
|
||||
}
|
||||
text.push('</ul>');
|
||||
return text.join('');
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = function(Chart) {
|
||||
|
||||
var layout = Chart.layoutService;
|
||||
var noop = helpers.noop;
|
||||
|
||||
/**
|
||||
* Helper function to get the box width based on the usePointStyle option
|
||||
@@ -192,7 +209,7 @@ module.exports = function(Chart) {
|
||||
|
||||
var ctx = me.ctx;
|
||||
|
||||
var globalDefault = Chart.defaults.global,
|
||||
var globalDefault = defaults.global,
|
||||
valueOrDefault = helpers.valueOrDefault,
|
||||
fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize),
|
||||
fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle),
|
||||
@@ -304,7 +321,7 @@ module.exports = function(Chart) {
|
||||
var me = this;
|
||||
var opts = me.options;
|
||||
var labelOpts = opts.labels;
|
||||
var globalDefault = Chart.defaults.global,
|
||||
var globalDefault = defaults.global,
|
||||
lineDefault = globalDefault.elements.line,
|
||||
legendWidth = me.width,
|
||||
lineWidths = me.lineWidths;
|
||||
@@ -525,7 +542,7 @@ module.exports = function(Chart) {
|
||||
var legend = chart.legend;
|
||||
|
||||
if (legendOpts) {
|
||||
helpers.mergeIf(legendOpts, Chart.defaults.global.legend);
|
||||
helpers.mergeIf(legendOpts, defaults.global.legend);
|
||||
|
||||
if (legend) {
|
||||
layout.configure(chart, legend, legendOpts);
|
||||
|
||||
@@ -1,24 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
var defaults = require('../core/core.defaults');
|
||||
var helpers = require('../helpers/index');
|
||||
|
||||
defaults._set('global', {
|
||||
title: {
|
||||
display: false,
|
||||
fontStyle: 'bold',
|
||||
fullWidth: true,
|
||||
padding: 10,
|
||||
position: 'top',
|
||||
text: '',
|
||||
weight: 2000 // by default greater than legend (1000) to be above
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = function(Chart) {
|
||||
|
||||
var layout = Chart.layoutService;
|
||||
var noop = helpers.noop;
|
||||
|
||||
Chart.defaults.global.title = {
|
||||
display: false,
|
||||
position: 'top',
|
||||
fullWidth: true,
|
||||
weight: 2000, // by default greater than legend (1000) to be above
|
||||
fontStyle: 'bold',
|
||||
padding: 10,
|
||||
|
||||
// actual title
|
||||
text: ''
|
||||
};
|
||||
|
||||
Chart.Title = Chart.Element.extend({
|
||||
initialize: function(config) {
|
||||
var me = this;
|
||||
@@ -109,9 +110,8 @@ module.exports = function(Chart) {
|
||||
var me = this,
|
||||
valueOrDefault = helpers.valueOrDefault,
|
||||
opts = me.options,
|
||||
globalDefaults = Chart.defaults.global,
|
||||
display = opts.display,
|
||||
fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),
|
||||
fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize),
|
||||
minSize = me.minSize,
|
||||
lineCount = helpers.isArray(opts.text) ? opts.text.length : 1,
|
||||
lineHeight = valueOrDefault(opts.lineHeight, fontSize),
|
||||
@@ -143,7 +143,7 @@ module.exports = function(Chart) {
|
||||
ctx = me.ctx,
|
||||
valueOrDefault = helpers.valueOrDefault,
|
||||
opts = me.options,
|
||||
globalDefaults = Chart.defaults.global;
|
||||
globalDefaults = defaults.global;
|
||||
|
||||
if (opts.display) {
|
||||
var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),
|
||||
@@ -225,7 +225,7 @@ module.exports = function(Chart) {
|
||||
var titleBlock = chart.titleBlock;
|
||||
|
||||
if (titleOpts) {
|
||||
helpers.mergeIf(titleOpts, Chart.defaults.global.title);
|
||||
helpers.mergeIf(titleOpts, defaults.global.title);
|
||||
|
||||
if (titleBlock) {
|
||||
layout.configure(chart, titleBlock, titleOpts);
|
||||
|
||||
Reference in New Issue
Block a user