]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Refactoring using helpers.options.resolve (#5965)
authorAkihiko Kusanagi <nagi@nagi-p.com>
Tue, 8 Jan 2019 15:50:33 +0000 (23:50 +0800)
committerSimon Brunel <simonbrunel@users.noreply.github.com>
Tue, 8 Jan 2019 15:50:33 +0000 (16:50 +0100)
18 files changed:
src/controllers/controller.bar.js
src/controllers/controller.bubble.js
src/controllers/controller.doughnut.js
src/controllers/controller.line.js
src/controllers/controller.polarArea.js
src/controllers/controller.radar.js
src/core/core.controller.js
src/core/core.datasetController.js
src/core/core.scale.js
src/core/core.tooltip.js
src/elements/element.line.js
src/elements/element.point.js
src/helpers/helpers.options.js
src/plugins/plugin.legend.js
src/plugins/plugin.title.js
src/scales/scale.logarithmic.js
src/scales/scale.radialLinear.js
src/scales/scale.time.js

index 639350f71f21436a64d694e6e5afd1b9606e3793..cd6116572755b1a33bf8c13dff85951efda1fd9b 100644 (file)
@@ -5,6 +5,8 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
+var resolve = helpers.options.resolve;
+
 defaults._set('bar', {
        hover: {
                mode: 'label'
@@ -410,7 +412,6 @@ module.exports = DatasetController.extend({
                var dataset = datasets[me.index];
                var custom = rectangle.custom || {};
                var options = chart.options.elements.rectangle;
-               var resolve = helpers.options.resolve;
                var values = {};
                var i, ilen, key;
 
index 77956c9dc7b146f05ceef89ae79edd2d6c2d3567..d40b4393b515fd877bf9b7cfed8d29a104adcd92 100644 (file)
@@ -5,6 +5,9 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
+var valueOrDefault = helpers.valueOrDefault;
+var resolve = helpers.options.resolve;
+
 defaults._set('bubble', {
        hover: {
                mode: 'single'
@@ -101,6 +104,7 @@ module.exports = DatasetController.extend({
        setHoverStyle: function(point) {
                var model = point._model;
                var options = point._options;
+               var getHoverColor = helpers.getHoverColor;
 
                point.$previousStyle = {
                        backgroundColor: model.backgroundColor,
@@ -109,9 +113,9 @@ module.exports = DatasetController.extend({
                        radius: model.radius
                };
 
-               model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));
-               model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));
-               model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);
+               model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
+               model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));
+               model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);
                model.radius = options.radius + options.hoverRadius;
        },
 
@@ -125,7 +129,6 @@ module.exports = DatasetController.extend({
                var dataset = datasets[me.index];
                var custom = point.custom || {};
                var options = chart.options.elements.point;
-               var resolve = helpers.options.resolve;
                var data = dataset.data[index];
                var values = {};
                var i, ilen, key;
index f2a55d84e9021d0f09c87e02097c3d00df54f561..e634e4baff657b21ca2685b06b9c646ce257d171 100644 (file)
@@ -5,6 +5,8 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
+var resolve = helpers.options.resolve;
+
 defaults._set('doughnut', {
        animation: {
                // Boolean - Whether we animate the rotation of the Doughnut
@@ -46,11 +48,10 @@ defaults._set('doughnut', {
                                                var ds = data.datasets[0];
                                                var arc = meta.data[i];
                                                var custom = arc && arc.custom || {};
-                                               var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
                                                var arcOpts = chart.options.elements.arc;
-                                               var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
-                                               var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
-                                               var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);
+                                               var fill = resolve([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);
+                                               var stroke = resolve([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);
+                                               var bw = resolve([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);
 
                                                return {
                                                        text: label,
@@ -322,13 +323,12 @@ module.exports = DatasetController.extend({
                var dataset = me.getDataset();
                var custom = arc.custom || {};
                var options = me.chart.options.elements.arc;
-               var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
 
                return {
-                       backgroundColor: custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(dataset.backgroundColor, index, options.backgroundColor),
-                       borderColor: custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(dataset.borderColor, index, options.borderColor),
-                       borderWidth: custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(dataset.borderWidth, index, options.borderWidth),
-                       borderAlign: custom.borderAlign ? custom.borderAlign : valueAtIndexOrDefault(dataset.borderAlign, index, options.borderAlign)
+                       backgroundColor: resolve([custom.backgroundColor, dataset.backgroundColor, options.backgroundColor], undefined, index),
+                       borderColor: resolve([custom.borderColor, dataset.borderColor, options.borderColor], undefined, index),
+                       borderWidth: resolve([custom.borderWidth, dataset.borderWidth, options.borderWidth], undefined, index),
+                       borderAlign: resolve([custom.borderAlign, dataset.borderAlign, options.borderAlign], undefined, index)
                };
        }
 });
index 03f7faf96d29f59abf14a3c15a620a6f50f45695..0e313116ef4a475f03fbacac09fcfc07847dd811 100644 (file)
@@ -5,7 +5,9 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
-var _isPointInArea = helpers.canvas._isPointInArea;
+var valueOrDefault = helpers.valueOrDefault;
+var resolve = helpers.options.resolve;
+var isPointInArea = helpers.canvas._isPointInArea;
 
 defaults._set('line', {
        showLines: true,
@@ -28,7 +30,7 @@ defaults._set('line', {
 });
 
 function lineEnabled(dataset, options) {
-       return helpers.valueOrDefault(dataset.showLine, options.showLines);
+       return valueOrDefault(dataset.showLine, options.showLines);
 }
 
 module.exports = DatasetController.extend({
@@ -69,18 +71,18 @@ module.exports = DatasetController.extend({
                                // The default behavior of lines is to break at null values, according
                                // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158
                                // This option gives lines the ability to span gaps
-                               spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,
-                               tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),
-                               backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),
-                               borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),
-                               borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),
-                               borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),
-                               borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),
-                               borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),
-                               borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),
-                               fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),
-                               steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),
-                               cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),
+                               spanGaps: valueOrDefault(dataset.spanGaps, options.spanGaps),
+                               tension: resolve([custom.tension, dataset.lineTension, lineElementOptions.tension]),
+                               backgroundColor: resolve([custom.backgroundColor, dataset.backgroundColor, lineElementOptions.backgroundColor]),
+                               borderWidth: resolve([custom.borderWidth, dataset.borderWidth, lineElementOptions.borderWidth]),
+                               borderColor: resolve([custom.borderColor, dataset.borderColor, lineElementOptions.borderColor]),
+                               borderCapStyle: resolve([custom.borderCapStyle, dataset.borderCapStyle, lineElementOptions.borderCapStyle]),
+                               borderDash: resolve([custom.borderDash, dataset.borderDash, lineElementOptions.borderDash]),
+                               borderDashOffset: resolve([custom.borderDashOffset, dataset.borderDashOffset, lineElementOptions.borderDashOffset]),
+                               borderJoinStyle: resolve([custom.borderJoinStyle, dataset.borderJoinStyle, lineElementOptions.borderJoinStyle]),
+                               fill: resolve([custom.fill, dataset.fill, lineElementOptions.fill]),
+                               steppedLine: resolve([custom.steppedLine, dataset.steppedLine, lineElementOptions.stepped]),
+                               cubicInterpolationMode: resolve([custom.cubicInterpolationMode, dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode]),
                        };
 
                        line.pivot();
@@ -102,64 +104,49 @@ module.exports = DatasetController.extend({
        },
 
        getPointBackgroundColor: function(point, index) {
-               var backgroundColor = this.chart.options.elements.point.backgroundColor;
                var dataset = this.getDataset();
                var custom = point.custom || {};
 
-               if (custom.backgroundColor) {
-                       backgroundColor = custom.backgroundColor;
-               } else if (dataset.pointBackgroundColor) {
-                       backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);
-               } else if (dataset.backgroundColor) {
-                       backgroundColor = dataset.backgroundColor;
-               }
-
-               return backgroundColor;
+               return resolve([
+                       custom.backgroundColor,
+                       dataset.pointBackgroundColor,
+                       dataset.backgroundColor,
+                       this.chart.options.elements.point.backgroundColor
+               ], undefined, index);
        },
 
        getPointBorderColor: function(point, index) {
-               var borderColor = this.chart.options.elements.point.borderColor;
                var dataset = this.getDataset();
                var custom = point.custom || {};
 
-               if (custom.borderColor) {
-                       borderColor = custom.borderColor;
-               } else if (dataset.pointBorderColor) {
-                       borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);
-               } else if (dataset.borderColor) {
-                       borderColor = dataset.borderColor;
-               }
-
-               return borderColor;
+               return resolve([
+                       custom.borderColor,
+                       dataset.pointBorderColor,
+                       dataset.borderColor,
+                       this.chart.options.elements.point.borderColor
+               ], undefined, index);
        },
 
        getPointBorderWidth: function(point, index) {
-               var borderWidth = this.chart.options.elements.point.borderWidth;
                var dataset = this.getDataset();
                var custom = point.custom || {};
 
-               if (!isNaN(custom.borderWidth)) {
-                       borderWidth = custom.borderWidth;
-               } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {
-                       borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);
-               } else if (!isNaN(dataset.borderWidth)) {
-                       borderWidth = dataset.borderWidth;
-               }
-
-               return borderWidth;
+               return resolve([
+                       custom.borderWidth,
+                       dataset.pointBorderWidth,
+                       dataset.borderWidth,
+                       this.chart.options.elements.point.borderWidth
+               ], undefined, index);
        },
 
        getPointRotation: function(point, index) {
-               var pointRotation = this.chart.options.elements.point.rotation;
-               var dataset = this.getDataset();
                var custom = point.custom || {};
 
-               if (!isNaN(custom.rotation)) {
-                       pointRotation = custom.rotation;
-               } else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {
-                       pointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);
-               }
-               return pointRotation;
+               return resolve([
+                       custom.rotation,
+                       this.getDataset().pointRotation,
+                       this.chart.options.elements.point.rotation
+               ], undefined, index);
        },
 
        updateElement: function(point, index, reset) {
@@ -197,8 +184,8 @@ module.exports = DatasetController.extend({
                        y: y,
                        skip: custom.skip || isNaN(x) || isNaN(y),
                        // Appearance
-                       radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),
-                       pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),
+                       radius: resolve([custom.radius, dataset.pointRadius, pointOptions.radius], undefined, index),
+                       pointStyle: resolve([custom.pointStyle, dataset.pointStyle, pointOptions.pointStyle], undefined, index),
                        rotation: me.getPointRotation(point, index),
                        backgroundColor: me.getPointBackgroundColor(point, index),
                        borderColor: me.getPointBorderColor(point, index),
@@ -206,7 +193,7 @@ module.exports = DatasetController.extend({
                        tension: meta.dataset._model ? meta.dataset._model.tension : 0,
                        steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,
                        // Tooltip
-                       hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)
+                       hitRadius: resolve([custom.hitRadius, dataset.pointHitRadius, pointOptions.hitRadius], undefined, index)
                };
        },
 
@@ -285,12 +272,12 @@ module.exports = DatasetController.extend({
                if (chart.options.elements.line.capBezierPoints) {
                        for (i = 0, ilen = points.length; i < ilen; ++i) {
                                model = points[i]._model;
-                               if (_isPointInArea(model, area)) {
-                                       if (i > 0 && _isPointInArea(points[i - 1]._model, area)) {
+                               if (isPointInArea(model, area)) {
+                                       if (i > 0 && isPointInArea(points[i - 1]._model, area)) {
                                                model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);
                                                model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);
                                        }
-                                       if (i < points.length - 1 && _isPointInArea(points[i + 1]._model, area)) {
+                                       if (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {
                                                model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);
                                                model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);
                                        }
@@ -336,6 +323,7 @@ module.exports = DatasetController.extend({
                var index = element._index;
                var custom = element.custom || {};
                var model = element._model;
+               var getHoverColor = helpers.getHoverColor;
 
                element.$previousStyle = {
                        backgroundColor: model.backgroundColor,
@@ -344,9 +332,9 @@ module.exports = DatasetController.extend({
                        radius: model.radius
                };
 
-               model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));
-               model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));
-               model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);
-               model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);
+               model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.pointHoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);
+               model.borderColor = resolve([custom.hoverBorderColor, dataset.pointHoverBorderColor, getHoverColor(model.borderColor)], undefined, index);
+               model.borderWidth = resolve([custom.hoverBorderWidth, dataset.pointHoverBorderWidth, model.borderWidth], undefined, index);
+               model.radius = resolve([custom.hoverRadius, dataset.pointHoverRadius, this.chart.options.elements.point.hoverRadius], undefined, index);
        }
 });
index 39013d872a4c4c3375ebe409684a72467592556f..5f3afcc20a91a8a3407ad49ef62806d8cd183393 100644 (file)
@@ -5,6 +5,8 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
+var resolve = helpers.options.resolve;
+
 defaults._set('polarArea', {
        scale: {
                type: 'radialLinear',
@@ -60,11 +62,10 @@ defaults._set('polarArea', {
                                                var ds = data.datasets[0];
                                                var arc = meta.data[i];
                                                var custom = arc.custom || {};
-                                               var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
                                                var arcOpts = chart.options.elements.arc;
-                                               var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);
-                                               var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);
-                                               var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);
+                                               var fill = resolve([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);
+                                               var stroke = resolve([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);
+                                               var bw = resolve([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);
 
                                                return {
                                                        text: label,
@@ -199,13 +200,12 @@ module.exports = DatasetController.extend({
                // Apply border and fill style
                var elementOpts = this.chart.options.elements.arc;
                var custom = arc.custom || {};
-               var valueOrDefault = helpers.valueAtIndexOrDefault;
                var model = arc._model;
 
-               model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);
-               model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);
-               model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);
-               model.borderAlign = custom.borderAlign ? custom.borderAlign : valueOrDefault(dataset.borderAlign, index, elementOpts.borderAlign);
+               model.backgroundColor = resolve([custom.backgroundColor, dataset.backgroundColor, elementOpts.backgroundColor], undefined, index);
+               model.borderColor = resolve([custom.borderColor, dataset.borderColor, elementOpts.borderColor], undefined, index);
+               model.borderWidth = resolve([custom.borderWidth, dataset.borderWidth, elementOpts.borderWidth], undefined, index);
+               model.borderAlign = resolve([custom.borderAlign, dataset.borderAlign, elementOpts.borderAlign], undefined, index);
 
                arc.pivot();
        },
@@ -245,7 +245,7 @@ module.exports = DatasetController.extend({
                        datasetIndex: me.index
                };
 
-               return helpers.options.resolve([
+               return resolve([
                        me.chart.options.elements.arc.angle,
                        (2 * Math.PI) / count
                ], context, index);
index 4d69928d87be8452af2f2c42b577b7005c060820..500a40d3446a8b0d091824ca1713319f2c17e07c 100644 (file)
@@ -5,6 +5,8 @@ var defaults = require('../core/core.defaults');
 var elements = require('../elements/index');
 var helpers = require('../helpers/index');
 
+var resolve = helpers.options.resolve;
+
 defaults._set('radar', {
        scale: {
                type: 'radialLinear'
@@ -50,15 +52,15 @@ module.exports = DatasetController.extend({
                        // Model
                        _model: {
                                // Appearance
-                               tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),
-                               backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),
-                               borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),
-                               borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),
-                               fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),
-                               borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),
-                               borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),
-                               borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),
-                               borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),
+                               tension: resolve([custom.tension, dataset.lineTension, lineElementOptions.tension]),
+                               backgroundColor: resolve([custom.backgroundColor, dataset.backgroundColor, lineElementOptions.backgroundColor]),
+                               borderWidth: resolve([custom.borderWidth, dataset.borderWidth, lineElementOptions.borderWidth]),
+                               borderColor: resolve([custom.borderColor, dataset.borderColor, lineElementOptions.borderColor]),
+                               fill: resolve([custom.fill, dataset.fill, lineElementOptions.fill]),
+                               borderCapStyle: resolve([custom.borderCapStyle, dataset.borderCapStyle, lineElementOptions.borderCapStyle]),
+                               borderDash: resolve([custom.borderDash, dataset.borderDash, lineElementOptions.borderDash]),
+                               borderDashOffset: resolve([custom.borderDashOffset, dataset.borderDashOffset, lineElementOptions.borderDashOffset]),
+                               borderJoinStyle: resolve([custom.borderJoinStyle, dataset.borderJoinStyle, lineElementOptions.borderJoinStyle]),
                        }
                });
 
@@ -106,20 +108,20 @@ module.exports = DatasetController.extend({
                                y: reset ? scale.yCenter : pointPosition.y,
 
                                // Appearance
-                               tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),
-                               radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),
-                               backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),
-                               borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),
-                               borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),
-                               pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),
-                               rotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),
+                               tension: resolve([custom.tension, dataset.lineTension, me.chart.options.elements.line.tension]),
+                               radius: resolve([custom.radius, dataset.pointRadius, pointElementOptions.radius], undefined, index),
+                               backgroundColor: resolve([custom.backgroundColor, dataset.pointBackgroundColor, pointElementOptions.backgroundColor], undefined, index),
+                               borderColor: resolve([custom.borderColor, dataset.pointBorderColor, pointElementOptions.borderColor], undefined, index),
+                               borderWidth: resolve([custom.borderWidth, dataset.pointBorderWidth, pointElementOptions.borderWidth], undefined, index),
+                               pointStyle: resolve([custom.pointStyle, dataset.pointStyle, pointElementOptions.pointStyle], undefined, index),
+                               rotation: resolve([custom.rotation, dataset.pointRotation, pointElementOptions.rotation], undefined, index),
 
                                // Tooltip
-                               hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)
+                               hitRadius: resolve([custom.hitRadius, dataset.pointHitRadius, pointElementOptions.hitRadius], undefined, index)
                        }
                });
 
-               point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));
+               point._model.skip = custom.skip || isNaN(point._model.x) || isNaN(point._model.y);
        },
 
        updateBezierControlPoints: function() {
@@ -156,6 +158,7 @@ module.exports = DatasetController.extend({
                var custom = point.custom || {};
                var index = point._index;
                var model = point._model;
+               var getHoverColor = helpers.getHoverColor;
 
                point.$previousStyle = {
                        backgroundColor: model.backgroundColor,
@@ -164,9 +167,9 @@ module.exports = DatasetController.extend({
                        radius: model.radius
                };
 
-               model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);
-               model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));
-               model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));
-               model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);
+               model.radius = resolve([custom.hoverRadius, dataset.pointHoverRadius, this.chart.options.elements.point.hoverRadius], undefined, index);
+               model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.pointHoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);
+               model.borderColor = resolve([custom.hoverBorderColor, dataset.pointHoverBorderColor, getHoverColor(model.borderColor)], undefined, index);
+               model.borderWidth = resolve([custom.hoverBorderWidth, dataset.pointHoverBorderWidth, model.borderWidth], undefined, index);
        }
 });
index a4f7e3e55c0caf8a01e8a347392d84ad4e5dfcdd..0a97f6aada5f5fef3cebfd3457f608496c95b210 100644 (file)
@@ -12,6 +12,8 @@ var plugins = require('./core.plugins');
 var scaleService = require('../core/core.scaleService');
 var Tooltip = require('./core.tooltip');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 module.exports = function(Chart) {
 
        // Create a dictionary of chart types, to allow for extension of existing types
@@ -265,7 +267,7 @@ module.exports = function(Chart) {
                        helpers.each(items, function(item) {
                                var scaleOptions = item.options;
                                var id = scaleOptions.id;
-                               var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);
+                               var scaleType = valueOrDefault(scaleOptions.type, item.dtype);
 
                                if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {
                                        scaleOptions.position = item.dposition;
@@ -510,9 +512,7 @@ module.exports = function(Chart) {
                        }
 
                        var animationOptions = me.options.animation;
-                       var duration = typeof config.duration !== 'undefined'
-                               ? config.duration
-                               : animationOptions && animationOptions.duration;
+                       var duration = valueOrDefault(config.duration, animationOptions && animationOptions.duration);
                        var lazy = config.lazy;
 
                        if (plugins.notify(me, 'beforeRender') === false) {
index 3b47dffdcb39b7d6c38f2d444333b3ac40311ee6..ab7ca1282c89b2b5d4d2e90427bea934a7095f92 100644 (file)
@@ -2,6 +2,8 @@
 
 var helpers = require('../helpers/index');
 
+var resolve = helpers.options.resolve;
+
 var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];
 
 /**
@@ -245,9 +247,8 @@ helpers.extend(DatasetController.prototype, {
                var dataset = this.chart.data.datasets[element._datasetIndex];
                var index = element._index;
                var custom = element.custom || {};
-               var valueOrDefault = helpers.valueAtIndexOrDefault;
-               var getHoverColor = helpers.getHoverColor;
                var model = element._model;
+               var getHoverColor = helpers.getHoverColor;
 
                element.$previousStyle = {
                        backgroundColor: model.backgroundColor,
@@ -255,9 +256,9 @@ helpers.extend(DatasetController.prototype, {
                        borderWidth: model.borderWidth
                };
 
-               model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));
-               model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));
-               model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);
+               model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);
+               model.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);
+               model.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);
        },
 
        /**
index 690491fbc60d4af546ba662f43bc0881b6410283..f4c38aa256598fb9350b0d6c5094afd83302abda 100644 (file)
@@ -5,6 +5,9 @@ var Element = require('./core.element');
 var helpers = require('../helpers/index');
 var Ticks = require('./core.ticks');
 
+var valueOrDefault = helpers.valueOrDefault;
+var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+
 defaults._set('scale', {
        display: true,
        position: 'left',
@@ -730,24 +733,24 @@ module.exports = Element.extend({
 
                var parseFont = helpers.options._parseFont;
                var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();
-               var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, defaultFontColor);
+               var tickFontColor = valueOrDefault(optionTicks.fontColor, defaultFontColor);
                var tickFont = parseFont(optionTicks);
                var lineHeight = tickFont.lineHeight;
-               var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, defaultFontColor);
+               var majorTickFontColor = valueOrDefault(optionMajorTicks.fontColor, defaultFontColor);
                var majorTickFont = parseFont(optionMajorTicks);
                var tickPadding = optionTicks.padding;
                var labelOffset = optionTicks.labelOffset;
 
                var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;
 
-               var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, defaultFontColor);
+               var scaleLabelFontColor = valueOrDefault(scaleLabel.fontColor, defaultFontColor);
                var scaleLabelFont = parseFont(scaleLabel);
                var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);
                var labelRotationRadians = helpers.toRadians(me.labelRotation);
 
                var itemsToDraw = [];
 
-               var axisWidth = gridLines.drawBorder ? helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;
+               var axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;
                var alignPixel = helpers._alignPixel;
                var borderValue, tickStart, tickEnd;
 
@@ -786,8 +789,8 @@ module.exports = Element.extend({
                                borderDash = gridLines.zeroLineBorderDash || [];
                                borderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;
                        } else {
-                               lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);
-                               lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);
+                               lineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index);
+                               lineColor = valueAtIndexOrDefault(gridLines.color, index);
                                borderDash = gridLines.borderDash || [];
                                borderDashOffset = gridLines.borderDashOffset || 0.0;
                        }
@@ -961,7 +964,7 @@ module.exports = Element.extend({
                if (axisWidth) {
                        // Draw the line at the edge of the axis
                        var firstLineWidth = axisWidth;
-                       var lastLineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0);
+                       var lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0);
                        var x1, x2, y1, y2;
 
                        if (isHorizontal) {
@@ -975,7 +978,7 @@ module.exports = Element.extend({
                        }
 
                        context.lineWidth = axisWidth;
-                       context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);
+                       context.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);
                        context.beginPath();
                        context.moveTo(x1, y1);
                        context.lineTo(x2, y2);
index 127720a415ef028ea60e5e3e92e8eae3deefb4ae..a04bec3fb6d28181db14952a394d80e0ce2b5df1 100644 (file)
@@ -4,6 +4,8 @@ var defaults = require('./core.defaults');
 var Element = require('./core.element');
 var helpers = require('../helpers/index');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 defaults._set('global', {
        tooltips: {
                enabled: true,
@@ -221,7 +223,6 @@ function createTooltipItem(element) {
  */
 function getBaseModel(tooltipOpts) {
        var globalDefaults = defaults.global;
-       var valueOrDefault = helpers.valueOrDefault;
 
        return {
                // Positioning
index 96bb5be383ef7d6e7ba976dffba70801a683454e..12c0f5a3664048c16a8ad4933db4bd4cb99207ca 100644 (file)
@@ -4,6 +4,8 @@ var defaults = require('../core/core.defaults');
 var Element = require('../core/core.element');
 var helpers = require('../helpers/index');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 var defaultColor = defaults.global.defaultColor;
 
 defaults._set('global', {
@@ -50,9 +52,9 @@ module.exports = Element.extend({
                        ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);
                }
 
-               ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;
+               ctx.lineDashOffset = valueOrDefault(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);
                ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;
-               ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;
+               ctx.lineWidth = valueOrDefault(vm.borderWidth, globalOptionLineElements.borderWidth);
                ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;
 
                // Stroke Line
index 8ae37eb8a2853b6e5d195d09caa1e79e727ce337..1e6b22357ec7b8376346498a46b3c59c87457abd 100644 (file)
@@ -4,6 +4,8 @@ var defaults = require('../core/core.defaults');
 var Element = require('../core/core.element');
 var helpers = require('../helpers/index');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 var defaultColor = defaults.global.defaultColor;
 
 defaults._set('global', {
@@ -81,7 +83,7 @@ module.exports = Element.extend({
                // Clipping for Points.
                if (chartArea === undefined || helpers.canvas._isPointInArea(vm, chartArea)) {
                        ctx.strokeStyle = vm.borderColor || defaultColor;
-                       ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, globalDefaults.elements.point.borderWidth);
+                       ctx.lineWidth = valueOrDefault(vm.borderWidth, globalDefaults.elements.point.borderWidth);
                        ctx.fillStyle = vm.backgroundColor || defaultColor;
                        helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);
                }
index 0b107e40d84909f52dd00b3da9e1dcf0fe64a705..b1ff4c199a6dea980ae0d26fa2977807a43e9b88 100644 (file)
@@ -3,10 +3,12 @@
 var defaults = require('../core/core.defaults');
 var helpers = require('./helpers.core');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 /**
  * Converts the given font object into a CSS font string.
  * @param {Object} font - A font object.
- * @return {Stringg} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font
+ * @return {String} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font
  * @private
  */
 function toFontString(font) {
@@ -85,13 +87,12 @@ module.exports = {
 
        /**
         * Parses font options and returns the font object.
-        * @param {Object} options - A object that contains font opttons to be parsed.
+        * @param {Object} options - A object that contains font options to be parsed.
         * @return {Object} The font object.
         * @todo Support font.* options and renamed to toFont().
         * @private
         */
        _parseFont: function(options) {
-               var valueOrDefault = helpers.valueOrDefault;
                var globalDefaults = defaults.global;
                var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);
                var font = {
index f11b823ea585c85adc048141af8e528df5a9cd8c..7d13ea13ed44d0e5e0e1f32f1caaefc4ec99cba2 100644 (file)
@@ -6,6 +6,7 @@ var helpers = require('../helpers/index');
 var layouts = require('../core/core.layouts');
 
 var noop = helpers.noop;
+var valueOrDefault = helpers.valueOrDefault;
 
 defaults._set('global', {
        legend: {
@@ -327,7 +328,6 @@ var Legend = Element.extend({
 
                if (opts.display) {
                        var ctx = me.ctx;
-                       var valueOrDefault = helpers.valueOrDefault;
                        var fontColor = valueOrDefault(labelOpts.fontColor, globalDefaults.defaultFontColor);
                        var labelFont = helpers.options._parseFont(labelOpts);
                        var fontSize = labelFont.size;
index eb09aa0e2030df875ca64c3c433a38be82634789..0f37b6004f8d6b34d0a2d30f795dfc41d39eee34 100644 (file)
@@ -141,7 +141,6 @@ var Title = Element.extend({
        draw: function() {
                var me = this;
                var ctx = me.ctx;
-               var valueOrDefault = helpers.valueOrDefault;
                var opts = me.options;
 
                if (opts.display) {
@@ -155,7 +154,7 @@ var Title = Element.extend({
                        var right = me.right;
                        var maxWidth, titleX, titleY;
 
-                       ctx.fillStyle = valueOrDefault(opts.fontColor, defaults.global.defaultFontColor); // render in correct colour
+                       ctx.fillStyle = helpers.valueOrDefault(opts.fontColor, defaults.global.defaultFontColor); // render in correct colour
                        ctx.font = fontOpts.string;
 
                        // Horizontal
index 5dd5fe80e3073f5f5679df0c85bde52f5b15059e..91f90845da3aef9f0f52379d8ea8632f3145341a 100644 (file)
@@ -5,6 +5,8 @@ var helpers = require('../helpers/index');
 var Scale = require('../core/core.scale');
 var Ticks = require('../core/core.ticks');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 /**
  * Generate a set of logarithmic ticks
  * @param generationOptions the options used to generate the ticks
@@ -13,7 +15,6 @@ var Ticks = require('../core/core.ticks');
  */
 function generateTicks(generationOptions, dataRange) {
        var ticks = [];
-       var valueOrDefault = helpers.valueOrDefault;
 
        var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));
 
@@ -169,9 +170,7 @@ module.exports = Scale.extend({
 
        handleTickRangeOptions: function() {
                var me = this;
-               var opts = me.options;
-               var tickOpts = opts.ticks;
-               var valueOrDefault = helpers.valueOrDefault;
+               var tickOpts = me.options.ticks;
                var DEFAULT_MIN = 1;
                var DEFAULT_MAX = 10;
 
@@ -208,8 +207,7 @@ module.exports = Scale.extend({
 
        buildTicks: function() {
                var me = this;
-               var opts = me.options;
-               var tickOpts = opts.ticks;
+               var tickOpts = me.options.ticks;
                var reverse = !me.isHorizontal();
 
                var generationOptions = {
@@ -266,7 +264,8 @@ module.exports = Scale.extend({
 
        getPixelForValue: function(value) {
                var me = this;
-               var reverse = me.options.ticks.reverse;
+               var tickOpts = me.options.ticks;
+               var reverse = tickOpts.reverse;
                var log10 = helpers.log10;
                var firstTickValue = me._getFirstTickValue(me.minNotZero);
                var offset = 0;
@@ -292,10 +291,7 @@ module.exports = Scale.extend({
                }
                if (value !== start) {
                        if (start === 0) { // include zero tick
-                               offset = helpers.getValueOrDefault(
-                                       me.options.ticks.fontSize,
-                                       defaults.global.defaultFontSize
-                               );
+                               offset = valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);
                                innerDimension -= offset;
                                start = firstTickValue;
                        }
@@ -309,7 +305,8 @@ module.exports = Scale.extend({
 
        getValueForPixel: function(pixel) {
                var me = this;
-               var reverse = me.options.ticks.reverse;
+               var tickOpts = me.options.ticks;
+               var reverse = tickOpts.reverse;
                var log10 = helpers.log10;
                var firstTickValue = me._getFirstTickValue(me.minNotZero);
                var innerDimension, start, end, value;
@@ -330,10 +327,7 @@ module.exports = Scale.extend({
                }
                if (value !== start) {
                        if (start === 0) { // include zero tick
-                               var offset = helpers.getValueOrDefault(
-                                       me.options.ticks.fontSize,
-                                       defaults.global.defaultFontSize
-                               );
+                               var offset = valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);
                                value -= offset;
                                innerDimension -= offset;
                                start = firstTickValue;
index 50d49d5e2b5fccdb67dbf7438a94aaf4992c5a16..d19c03e99bccd4f627e1b248fe57a040bd673e3a 100644 (file)
@@ -5,6 +5,10 @@ var helpers = require('../helpers/index');
 var LinearScaleBase = require('./scale.linearbase');
 var Ticks = require('../core/core.ticks');
 
+var valueOrDefault = helpers.valueOrDefault;
+var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;
+var resolve = helpers.options.resolve;
+
 var defaultConfig = {
        display: true,
 
@@ -64,7 +68,7 @@ function getTickBackdropHeight(opts) {
        var tickOpts = opts.ticks;
 
        if (tickOpts.display && opts.display) {
-               return helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;
+               return valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;
        }
        return 0;
 }
@@ -223,16 +227,16 @@ function drawPointLabels(scale) {
        var angleLineOpts = opts.angleLines;
        var gridLineOpts = opts.gridLines;
        var pointLabelOpts = opts.pointLabels;
-       var lineWidth = helpers.valueOrDefault(angleLineOpts.lineWidth, gridLineOpts.lineWidth);
-       var lineColor = helpers.valueOrDefault(angleLineOpts.color, gridLineOpts.color);
+       var lineWidth = valueOrDefault(angleLineOpts.lineWidth, gridLineOpts.lineWidth);
+       var lineColor = valueOrDefault(angleLineOpts.color, gridLineOpts.color);
        var tickBackdropHeight = getTickBackdropHeight(opts);
 
        ctx.save();
        ctx.lineWidth = lineWidth;
        ctx.strokeStyle = lineColor;
        if (ctx.setLineDash) {
-               ctx.setLineDash(helpers.valueOrDefault(angleLineOpts.borderDash, gridLineOpts.borderDash) || []);
-               ctx.lineDashOffset = helpers.valueOrDefault(angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset) || 0.0;
+               ctx.setLineDash(resolve([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));
+               ctx.lineDashOffset = resolve([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);
        }
 
        var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);
@@ -258,7 +262,7 @@ function drawPointLabels(scale) {
                        var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);
 
                        // Keep this in loop since we may support array properties here
-                       var pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, defaults.global.defaultFontColor);
+                       var pointLabelFontColor = valueAtIndexOrDefault(pointLabelOpts.fontColor, i, defaults.global.defaultFontColor);
                        ctx.fillStyle = pointLabelFontColor;
 
                        var angleRadians = scale.getIndexAngle(i);
@@ -275,8 +279,8 @@ function drawRadiusLine(scale, gridLineOpts, radius, index) {
        var ctx = scale.ctx;
        var circular = gridLineOpts.circular;
        var valueCount = getValueCount(scale);
-       var lineColor = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);
-       var lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);
+       var lineColor = valueAtIndexOrDefault(gridLineOpts.color, index - 1);
+       var lineWidth = valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);
        var pointPosition;
 
        if ((!circular && !valueCount) || !lineColor || !lineWidth) {
@@ -475,7 +479,6 @@ module.exports = LinearScaleBase.extend({
                var opts = me.options;
                var gridLineOpts = opts.gridLines;
                var tickOpts = opts.ticks;
-               var valueOrDefault = helpers.valueOrDefault;
 
                if (opts.display) {
                        var ctx = me.ctx;
index c7c49eb6b1b770cf717d72703f65a9fd7dc60e02..356e8a1968dd0d28234293ef92eab715b1ea6c05 100644 (file)
@@ -6,6 +6,8 @@ var defaults = require('../core/core.defaults');
 var helpers = require('../helpers/index');
 var Scale = require('../core/core.scale');
 
+var valueOrDefault = helpers.valueOrDefault;
+
 // Integer constants are from the ES6 spec.
 var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
 var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
@@ -307,7 +309,7 @@ function generate(min, max, capacity, options) {
        var timeOpts = options.time;
        var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);
        var major = determineMajorUnit(minor);
-       var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);
+       var stepSize = valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);
        var weekday = minor === 'week' ? timeOpts.isoWeekday : false;
        var majorTicksEnabled = options.ticks.major.enabled;
        var interval = INTERVALS[minor];
@@ -690,7 +692,7 @@ module.exports = Scale.extend({
                var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;
                var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);
                var tickOpts = major ? majorTickOpts : options.ticks.minor;
-               var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);
+               var formatter = valueOrDefault(tickOpts.callback, tickOpts.userCallback);
 
                return formatter ? formatter(label, index, ticks) : label;
        },
@@ -765,7 +767,7 @@ module.exports = Scale.extend({
                var angle = helpers.toRadians(ticksOpts.maxRotation);
                var cosRotation = Math.cos(angle);
                var sinRotation = Math.sin(angle);
-               var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);
+               var tickFontSize = valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);
 
                return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);
        },