MCPcopy
hub / github.com/chartjs/Chart.js / mergeScaleConfig

Function mergeScaleConfig

src/core/core.config.js:71–113  ·  view source on GitHub ↗
(config, options)

Source from the content-addressed store, hash-verified

69}
70
71function mergeScaleConfig(config, options) {
72 const chartDefaults = overrides[config.type] || {scales: {}};
73 const configScales = options.scales || {};
74 const chartIndexAxis = getIndexAxis(config.type, options);
75 const scales = Object.create(null);
76
77 // First figure out first scale id's per axis.
78 Object.keys(configScales).forEach(id => {
79 const scaleConf = configScales[id];
80 if (!isObject(scaleConf)) {
81 return console.error(`Invalid scale configuration for scale: ${id}`);
82 }
83 if (scaleConf._proxy) {
84 return console.warn(`Ignoring resolver passed as options for scale: ${id}`);
85 }
86 const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);
87 const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);
88 const defaultScaleOptions = chartDefaults.scales || {};
89 scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);
90 });
91
92 // Then merge dataset defaults to scale configs
93 config.data.datasets.forEach(dataset => {
94 const type = dataset.type || config.type;
95 const indexAxis = dataset.indexAxis || getIndexAxis(type, options);
96 const datasetDefaults = overrides[type] || {};
97 const defaultScaleOptions = datasetDefaults.scales || {};
98 Object.keys(defaultScaleOptions).forEach(defaultID => {
99 const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);
100 const id = dataset[axis + 'AxisID'] || axis;
101 scales[id] = scales[id] || Object.create(null);
102 mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);
103 });
104 });
105
106 // apply scale defaults, if not overridden by dataset defaults
107 Object.keys(scales).forEach(key => {
108 const scale = scales[key];
109 mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);
110 });
111
112 return scales;
113}
114
115function initOptions(config) {
116 const options = config.options || (config.options = {});

Callers 1

initOptionsFunction · 0.85

Calls 7

getIndexAxisFunction · 0.85
isObjectFunction · 0.85
determineAxisFunction · 0.85
retrieveAxisFromDatasetsFunction · 0.85
mergeIfFunction · 0.85

Tested by

no test coverage detected