Skip to content

Commit

Permalink
Fix shorthand legend: false and title: false
Browse files Browse the repository at this point in the history
Prevent attempt to remove the legend or title layout items if they haven't been created but also check if the item to remove is registered with the layout manager to avoid removing the wrong box `splice(-1, 1)`. Add ids to the legend and title plugins to allow to fully disable them (`options: {plugins: {legend: false, title: false}}`).
  • Loading branch information
simonbrunel authored and etimberg committed Mar 4, 2017
1 parent 5234899 commit b4dfa38
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
6 changes: 3 additions & 3 deletions src/core/core.layoutService.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ module.exports = function(Chart) {
* @param {Object} layoutItem - the item to remove from the layout
*/
removeBox: function(chart, layoutItem) {
if (!chart.boxes) {
return;
var index = chart.boxes? chart.boxes.indexOf(layoutItem) : -1;
if (index !== -1) {
chart.boxes.splice(index, 1);
}
chart.boxes.splice(chart.boxes.indexOf(layoutItem), 1);
},

/**
Expand Down
11 changes: 7 additions & 4 deletions src/core/core.legend.js
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,8 @@ module.exports = function(Chart) {

// Register the legend plugin
Chart.plugins.register({
id: 'legend',

beforeInit: function(chart) {
var legendOpts = chart.options.legend;

Expand All @@ -518,17 +520,18 @@ module.exports = function(Chart) {
},
beforeUpdate: function(chart) {
var legendOpts = chart.options.legend;
var legend = chart.legend;

if (legendOpts) {
legendOpts = helpers.configMerge(Chart.defaults.global.legend, legendOpts);

if (chart.legend) {
chart.legend.options = legendOpts;
if (legend) {
legend.options = legendOpts;
} else {
createNewLegendAndAttach(chart, legendOpts);
}
} else {
Chart.layoutService.removeBox(chart, chart.legend);
} else if (legend) {
Chart.layoutService.removeBox(chart, legend);
delete chart.legend;
}
},
Expand Down
12 changes: 7 additions & 5 deletions src/core/core.title.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ module.exports = function(Chart) {

var noop = helpers.noop;
Chart.Title = Chart.Element.extend({

initialize: function(config) {
var me = this;
helpers.extend(me, config);
Expand Down Expand Up @@ -198,6 +197,8 @@ module.exports = function(Chart) {

// Register the title plugin
Chart.plugins.register({
id: 'title',

beforeInit: function(chart) {
var titleOpts = chart.options.title;

Expand All @@ -207,17 +208,18 @@ module.exports = function(Chart) {
},
beforeUpdate: function(chart) {
var titleOpts = chart.options.title;
var titleBlock = chart.titleBlock;

if (titleOpts) {
titleOpts = helpers.configMerge(Chart.defaults.global.title, titleOpts);

if (chart.titleBlock) {
chart.titleBlock.options = titleOpts;
if (titleBlock) {
titleBlock.options = titleOpts;
} else {
createNewTitleBlockAndAttach(chart, titleOpts);
}
} else {
Chart.layoutService.removeBox(chart, chart.titleBlock);
} else if (titleBlock) {
Chart.layoutService.removeBox(chart, titleBlock);
delete chart.titleBlock;
}
}
Expand Down

0 comments on commit b4dfa38

Please sign in to comment.