From: Evert Timberg Date: Sat, 12 Dec 2015 13:52:06 +0000 (-0500) Subject: Better property picking. Added a helper function so we don't have to write a complica... X-Git-Tag: 2.0.0-beta2~24^2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=refs%2Fpull%2F1774%2Fhead;p=thirdparty%2FChart.js.git Better property picking. Added a helper function so we don't have to write a complicated ternary everywhere. Updated tests accordingly. --- diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index 1755ca99e..8d0ad0eb1 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -144,7 +144,7 @@ // Model _model: { // Appearance - tension: line.custom && line.custom.tension ? line.custom.tension : (this.getDataset().tension || this.chart.options.elements.line.tension), + tension: line.custom && line.custom.tension ? line.custom.tension : helpers.getValueOrDefault(this.getDataset().tension, this.chart.options.elements.line.tension), backgroundColor: line.custom && line.custom.backgroundColor ? line.custom.backgroundColor : (this.getDataset().backgroundColor || this.chart.options.elements.line.backgroundColor), borderWidth: line.custom && line.custom.borderWidth ? line.custom.borderWidth : (this.getDataset().borderWidth || this.chart.options.elements.line.borderWidth), borderColor: line.custom && line.custom.borderColor ? line.custom.borderColor : (this.getDataset().borderColor || this.chart.options.elements.line.borderColor), @@ -238,7 +238,7 @@ x: xScale.getPixelForValue(this.getDataset().data[index], index, this.index, this.chart.isCombo), y: reset ? scaleBase : this.calculatePointY(this.getDataset().data[index], index, this.index, this.chart.isCombo), // Appearance - tension: point.custom && point.custom.tension ? point.custom.tension : (this.getDataset().tension || this.chart.options.elements.line.tension), + tension: point.custom && point.custom.tension ? point.custom.tension : helpers.getValueOrDefault(this.getDataset().tension, this.chart.options.elements.line.tension), radius: point.custom && point.custom.radius ? point.custom.radius : helpers.getValueAtIndexOrDefault(this.getDataset().radius, index, this.chart.options.elements.point.radius), backgroundColor: this.getPointBackgroundColor(point, index), borderColor: this.getPointBorderColor(point, index), diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 639c87722..9bec21e2b 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -136,7 +136,7 @@ // Model _model: { // Appearance - tension: this.getDataset().tension || this.chart.options.elements.line.tension, + tension: helpers.getValueOrDefault(this.getDataset().tension, this.chart.options.elements.line.tension), backgroundColor: this.getDataset().backgroundColor || this.chart.options.elements.line.backgroundColor, borderWidth: this.getDataset().borderWidth || this.chart.options.elements.line.borderWidth, borderColor: this.getDataset().borderColor || this.chart.options.elements.line.borderColor, @@ -175,7 +175,7 @@ y: reset ? this.chart.scale.yCenter : pointPosition.y, // Appearance - tension: point.custom && point.custom.tension ? point.custom.tension : this.chart.options.elements.line.tension, + tension: point.custom && point.custom.tension ? point.custom.tension : helpers.getValueOrDefault(this.getDataset().tension, this.chart.options.elements.line.tension), radius: point.custom && point.custom.radius ? point.custom.pointRadius : helpers.getValueAtIndexOrDefault(this.getDataset().pointRadius, index, this.chart.options.elements.point.radius), backgroundColor: point.custom && point.custom.backgroundColor ? point.custom.backgroundColor : helpers.getValueAtIndexOrDefault(this.getDataset().pointBackgroundColor, index, this.chart.options.elements.point.backgroundColor), borderColor: point.custom && point.custom.borderColor ? point.custom.borderColor : helpers.getValueAtIndexOrDefault(this.getDataset().pointBorderColor, index, this.chart.options.elements.point.borderColor), diff --git a/src/core/core.helpers.js b/src/core/core.helpers.js index 2fc62ec2f..177397a20 100644 --- a/src/core/core.helpers.js +++ b/src/core/core.helpers.js @@ -171,6 +171,9 @@ return value; }, + getValueOrDefault = helpers.getValueOrDefault = function(value, defaultValue) { + return value === undefined ? defaultValue : value; + }, indexOf = helpers.indexOf = function(arrayToSearch, item) { if (Array.prototype.indexOf) { return arrayToSearch.indexOf(item); diff --git a/test/controller.line.tests.js b/test/controller.line.tests.js index a729fe674..f813bb55d 100644 --- a/test/controller.line.tests.js +++ b/test/controller.line.tests.js @@ -342,7 +342,7 @@ describe('Line controller tests', function() { }); // Use dataset level styles for lines & points - chart.data.datasets[0].tension = 0.2; + chart.data.datasets[0].tension = 0; chart.data.datasets[0].backgroundColor = 'rgb(98, 98, 98)'; chart.data.datasets[0].borderColor = 'rgb(8, 8, 8)'; chart.data.datasets[0].borderWidth = 0.55; @@ -370,7 +370,7 @@ describe('Line controller tests', function() { borderJoinStyle: 'miter', borderWidth: 0.55, fill: false, - tension: 0.2, + tension: 0, scaleTop: 0, scaleBottom: 200, @@ -384,7 +384,7 @@ describe('Line controller tests', function() { hitRadius: 3.3, radius: 22, skip: false, - tension: 0.2, + tension: 0, // Point x: 81, @@ -393,8 +393,8 @@ describe('Line controller tests', function() { // Control points controlPointPreviousX: 81, controlPointPreviousY: 62, - controlPointNextX: 91, - controlPointNextY: 52.6, + controlPointNextX: 81, + controlPointNextY: 62, }); expect(chart.data.datasets[0].metaData[1]._model).toEqual({ @@ -404,17 +404,17 @@ describe('Line controller tests', function() { hitRadius: 3.3, radius: 22, skip: false, - tension: 0.2, + tension: 0, // Point x: 131, y: 15, // Control points - controlPointPreviousX: 124.65778768378175, - controlPointPreviousY: 9.097346953222619, - controlPointNextX: 144.85778768378177, - controlPointNextY: 27.897346953222623, + controlPointPreviousX: 131, + controlPointPreviousY: 15, + controlPointNextX: 131, + controlPointNextY: 15, }); expect(chart.data.datasets[0].metaData[2]._model).toEqual({ @@ -424,17 +424,17 @@ describe('Line controller tests', function() { hitRadius: 3.3, radius: 22, skip: false, - tension: 0.2, + tension: 0, // Point x: 182, y: 156, // Control points - controlPointPreviousX: 167.76304506745115, - controlPointPreviousY: 130.76816898092827, - controlPointNextX: 187.96304506745116, - controlPointNextY: 166.56816898092828, + controlPointPreviousX: 182, + controlPointPreviousY: 156, + controlPointNextX: 182, + controlPointNextY: 156, }); expect(chart.data.datasets[0].metaData[3]._model).toEqual({ @@ -444,15 +444,15 @@ describe('Line controller tests', function() { hitRadius: 3.3, radius: 22, skip: false, - tension: 0.2, + tension: 0, // Point x: 232, y: 194, // Control points - controlPointPreviousX: 222, - controlPointPreviousY: 186.4, + controlPointPreviousX: 232, + controlPointPreviousY: 194, controlPointNextX: 232, controlPointNextY: 194, });