Skip to content

Commit

Permalink
Add getStyle method to provide style properties for dataset or data
Browse files Browse the repository at this point in the history
  • Loading branch information
nagix committed Mar 18, 2019
1 parent 2ddc4e0 commit 9d8ac9f
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 32 deletions.
8 changes: 4 additions & 4 deletions src/controllers/controller.doughnut.js
Expand Up @@ -46,13 +46,13 @@ defaults._set('doughnut', {
if (data.labels.length && data.datasets.length) {
return data.labels.map(function(label, i) {
var meta = chart.getDatasetMeta(0);
var model = meta.controller._resolveElementOptions(meta.data[i] || {}, i);
var style = meta.controller.getStyle(i);

return {
text: label,
fillStyle: model.backgroundColor,
strokeStyle: model.borderColor,
lineWidth: model.borderWidth,
fillStyle: style.backgroundColor,
strokeStyle: style.borderColor,
lineWidth: style.borderWidth,
hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,

// Extra data used for toggling the correct item
Expand Down
10 changes: 10 additions & 0 deletions src/controllers/controller.line.js
Expand Up @@ -125,6 +125,16 @@ module.exports = DatasetController.extend({
};
},

/**
* @private
*/
_resolveElementOptions: function(element, index) {
if (index !== undefined) {
return this._resolvePointOptions(element, index);
}
return this._resolveLineOptions(element);
},

/**
* @private
*/
Expand Down
8 changes: 4 additions & 4 deletions src/controllers/controller.polarArea.js
Expand Up @@ -59,13 +59,13 @@ defaults._set('polarArea', {
if (data.labels.length && data.datasets.length) {
return data.labels.map(function(label, i) {
var meta = chart.getDatasetMeta(0);
var model = meta.controller._resolveElementOptions(meta.data[i] || {}, i);
var style = meta.controller.getStyle(i);

return {
text: label,
fillStyle: model.backgroundColor,
strokeStyle: model.borderColor,
lineWidth: model.borderWidth,
fillStyle: style.backgroundColor,
strokeStyle: style.borderColor,
lineWidth: style.borderWidth,
hidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,

// Extra data used for toggling the correct item
Expand Down
10 changes: 10 additions & 0 deletions src/controllers/controller.radar.js
Expand Up @@ -102,6 +102,16 @@ module.exports = DatasetController.extend({
};
},

/**
* @private
*/
_resolveElementOptions: function(element, index) {
if (index !== undefined) {
return this._resolvePointOptions(element, index);
}
return this._resolveLineOptions(element);
},

/**
* @private
*/
Expand Down
43 changes: 43 additions & 0 deletions src/core/core.datasetController.js
Expand Up @@ -268,6 +268,49 @@ helpers.extend(DatasetController.prototype, {
}
},

/*
* Returns a set of predefined style properties that should be used to represent the dataset
* or the data if the index is specified
* @params {number} index - data index
* @return {IStyleInterface} style object
*/
getStyle: function(index) {
var me = this;
var meta = me.getMeta();
var element, style;

if (meta.dataset && index === undefined) {
element = meta.dataset;
} else {
index = index || 0;
element = meta.data[index];
}
style = me._resolveElementOptions(element || {}, index);

if (style.fill === false || style.fill === null) {
style.backgroundColor = 'rgba(0,0,0,0)';
}

return {
backgroundColor: style.backgroundColor,
borderCapStyle: style.borderCapStyle,
borderDash: style.borderDash,
borderDashOffset: style.borderDashOffset,
borderJoinStyle: style.borderJoinStyle,
borderWidth: style.borderWidth,
borderColor: style.borderColor,
pointStyle: style.pointStyle,
rotation: style.rotation
};
},

/**
* @private
*/
_resolveElementOptions: function() {
// noop
},

removeHoverStyle: function(element) {
helpers.merge(element._model, element.$previousStyle || {});
delete element.$previousStyle;
Expand Down
37 changes: 13 additions & 24 deletions src/plugins/plugin.legend.js
Expand Up @@ -48,36 +48,25 @@ defaults._set('global', {
// lineWidth :
generateLabels: function(chart) {
var data = chart.data;
var options = chart.options.legend || {};
var usePointStyle = options.labels && options.labels.usePointStyle;

return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {
var meta = chart.getDatasetMeta(i);
var controller = meta.controller;
var legendOpts = chart.options.legend;
var usePointStyle = legendOpts && legendOpts.labels && legendOpts.labels.usePointStyle;
var model;

if (controller._resolveLineOptions && !usePointStyle) {
model = controller._resolveLineOptions(meta.dataset || {});
if (model.fill === false || model.fill === null) {
model.backgroundColor = 'rgba(0,0,0,0)';
}
} else if (controller._resolvePointOptions) {
model = controller._resolvePointOptions(meta.data[0] || {}, 0);
} else {
model = controller._resolveElementOptions(meta.data[0] || {}, 0);
}
var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);

return {
text: dataset.label,
fillStyle: model.backgroundColor,
fillStyle: style.backgroundColor,
hidden: !chart.isDatasetVisible(i),
lineCap: model.borderCapStyle,
lineDash: model.borderDash,
lineDashOffset: model.borderDashOffset,
lineJoin: model.borderJoinStyle,
lineWidth: model.borderWidth,
strokeStyle: model.borderColor,
pointStyle: model.pointStyle,
rotation: model.rotation,
lineCap: style.borderCapStyle,
lineDash: style.borderDash,
lineDashOffset: style.borderDashOffset,
lineJoin: style.borderJoinStyle,
lineWidth: style.borderWidth,
strokeStyle: style.borderColor,
pointStyle: style.pointStyle,
rotation: style.rotation,

// Below is extra data used for toggling the datasets
datasetIndex: i
Expand Down

0 comments on commit 9d8ac9f

Please sign in to comment.