diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 6f63b92dbd7..c27983699c5 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -36,7 +36,14 @@ defaults._set('scale', { // actual label labelString: '', - lineHeight: 1.2 + // line height + lineHeight: 1.2, + + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } }, // label settings @@ -391,7 +398,6 @@ module.exports = function(Chart) { var tickFont = parseFontOptions(tickOpts); var tickMarkLength = opts.gridLines.tickMarkLength; - var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); // Width if (isHorizontal) { @@ -410,10 +416,14 @@ module.exports = function(Chart) { // Are we showing a title for the scale? if (scaleLabelOpts.display && display) { + var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); + var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); + var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; + if (isHorizontal) { - minSize.height += scaleLabelLineHeight; + minSize.height += deltaHeight; } else { - minSize.width += scaleLabelLineHeight; + minSize.width += deltaHeight; } } @@ -435,16 +445,17 @@ module.exports = function(Chart) { // TODO - improve this calculation var labelHeight = (sinRotation * largestTextWidth) + (tickFont.size * tallestLabelHeightInLines) - + (lineSpace * tallestLabelHeightInLines); + + (lineSpace * (tallestLabelHeightInLines - 1)) + + lineSpace; // padding minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); - me.ctx.font = tickFont.font; + me.ctx.font = tickFont.font; var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); - // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned which means that the right padding is dominated - // by the font height + // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned + // which means that the right padding is dominated by the font height if (me.labelRotation !== 0) { me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; @@ -453,15 +464,18 @@ module.exports = function(Chart) { me.paddingRight = lastLabelWidth / 2 + 3; } } else { - // A vertical axis is more constrained by the width. Labels are the dominant factor here, so get that length first - // Account for padding - + // A vertical axis is more constrained by the width. Labels are the + // dominant factor here, so get that length first and account for padding if (tickOpts.mirror) { largestTextWidth = 0; } else { - largestTextWidth += tickPadding; + // use lineSpace for consistency with horizontal axis + // tickPadding is not implemented for horizontal + largestTextWidth += tickPadding + lineSpace; } + minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); + me.paddingTop = tickFont.size / 2; me.paddingBottom = tickFont.size / 2; } @@ -663,6 +677,7 @@ module.exports = function(Chart) { var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); var scaleLabelFont = parseFontOptions(scaleLabel); + var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); var labelRotationRadians = helpers.toRadians(me.labelRotation); var itemsToDraw = []; @@ -840,10 +855,14 @@ module.exports = function(Chart) { if (isHorizontal) { scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width - scaleLabelY = options.position === 'bottom' ? me.bottom - halfLineHeight : me.top + halfLineHeight; + scaleLabelY = options.position === 'bottom' + ? me.bottom - halfLineHeight - scaleLabelPadding.bottom + : me.top + halfLineHeight + scaleLabelPadding.top; } else { var isLeft = options.position === 'left'; - scaleLabelX = isLeft ? me.left + halfLineHeight : me.right - halfLineHeight; + scaleLabelX = isLeft + ? me.left + halfLineHeight + scaleLabelPadding.top + : me.right - halfLineHeight - scaleLabelPadding.top; scaleLabelY = me.top + ((me.bottom - me.top) / 2); rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; } diff --git a/test/specs/controller.bar.tests.js b/test/specs/controller.bar.tests.js index 09abf5288ae..74b6b99e419 100644 --- a/test/specs/controller.bar.tests.js +++ b/test/specs/controller.bar.tests.js @@ -726,8 +726,8 @@ describe('Bar controller tests', function() { expect(meta.data.length).toBe(2); [ - {x: 113, y: 484}, - {x: 229, y: 32} + {x: 118, y: 484}, + {x: 231, y: 32} ].forEach(function(expected, i) { expect(meta.data[i]._datasetIndex).toBe(1); expect(meta.data[i]._index).toBe(i); @@ -788,7 +788,7 @@ describe('Bar controller tests', function() { var bar1 = meta.data[0]; var bar2 = meta.data[1]; - expect(bar1._model.x).toBeCloseToPixel(187); + expect(bar1._model.x).toBeCloseToPixel(191); expect(bar1._model.y).toBeCloseToPixel(132); expect(bar2._model.x).toBeCloseToPixel(422); expect(bar2._model.y).toBeCloseToPixel(32); @@ -823,9 +823,9 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 290, w: 83 / 2, x: 63, y: 161}, - {b: 290, w: 83 / 2, x: 179, y: 419}, - {b: 290, w: 83 / 2, x: 295, y: 161}, + {b: 290, w: 83 / 2, x: 68, y: 161}, + {b: 290, w: 83 / 2, x: 182, y: 419}, + {b: 290, w: 83 / 2, x: 298, y: 161}, {b: 290, w: 83 / 2, x: 411, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); @@ -837,9 +837,9 @@ describe('Bar controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {b: 161, w: 83 / 2, x: 109, y: 32}, - {b: 290, w: 83 / 2, x: 225, y: 97}, - {b: 161, w: 83 / 2, x: 341, y: 161}, + {b: 161, w: 83 / 2, x: 114, y: 32}, + {b: 290, w: 83 / 2, x: 229, y: 97}, + {b: 161, w: 83 / 2, x: 344, y: 161}, {b: 419, w: 83 / 2, x: 457, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b); @@ -882,10 +882,10 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 936, w: 83 / 2, x: 65.5, y: 484}, - {b: 936, w: 83 / 2, x: 180.5, y: 755}, - {b: 936, w: 83 / 2, x: 296.5, y: 846}, - {b: 936, w: 83 / 2, x: 411.5, y: 32} + {b: 936, w: 83 / 2, x: 70, y: 484}, + {b: 936, w: 83 / 2, x: 184, y: 755}, + {b: 936, w: 83 / 2, x: 298, y: 846}, + {b: 936, w: 83 / 2, x: 413, y: 32} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); expect(meta0.data[i]._model.width).toBeCloseToPixel(values.w); @@ -896,10 +896,10 @@ describe('Bar controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {b: 484, w: 83 / 2, x: 111.5, y: 32}, - {b: 755, w: 83 / 2, x: 226.5, y: 32}, - {b: 846, w: 83 / 2, x: 342.5, y: 32}, - {b: 32, w: 83 / 2, x: 457.5, y: 32} + {b: 484, w: 83 / 2, x: 115, y: 32}, + {b: 755, w: 83 / 2, x: 230, y: 32}, + {b: 846, w: 83 / 2, x: 344, y: 32}, + {b: 32, w: 83 / 2, x: 457, y: 32} ].forEach(function(values, i) { expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b); expect(meta1.data[i]._model.width).toBeCloseToPixel(values.w); @@ -937,9 +937,9 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 290, w: 83, x: 86, y: 32}, - {b: 290, w: 83, x: 202, y: 419}, - {b: 290, w: 83, x: 318, y: 161}, + {b: 290, w: 83, x: 91, y: 32}, + {b: 290, w: 83, x: 206, y: 419}, + {b: 290, w: 83, x: 321, y: 161}, {b: 290, w: 83, x: 434, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); @@ -951,9 +951,9 @@ describe('Bar controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {b: 290, w: 83, x: 86, y: 161}, - {b: 290, w: 83, x: 202, y: 97}, - {b: 290, w: 83, x: 318, y: 290}, + {b: 290, w: 83, x: 91, y: 161}, + {b: 290, w: 83, x: 206, y: 97}, + {b: 290, w: 83, x: 321, y: 290}, {b: 290, w: 83, x: 434, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b); @@ -992,9 +992,9 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 290, w: 83 / 2, x: 63, y: 161}, - {b: 290, w: 83 / 2, x: 179, y: 419}, - {b: 290, w: 83 / 2, x: 295, y: 161}, + {b: 290, w: 83 / 2, x: 68, y: 161}, + {b: 290, w: 83 / 2, x: 182, y: 419}, + {b: 290, w: 83 / 2, x: 298, y: 161}, {b: 290, w: 83 / 2, x: 411, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); @@ -1006,9 +1006,9 @@ describe('Bar controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {b: 161, w: 83 / 2, x: 109, y: 32}, - {b: 290, w: 83 / 2, x: 225, y: 97}, - {b: 161, w: 83 / 2, x: 341, y: 161}, + {b: 161, w: 83 / 2, x: 114, y: 32}, + {b: 290, w: 83 / 2, x: 229, y: 97}, + {b: 161, w: 83 / 2, x: 344, y: 161}, {b: 419, w: 83 / 2, x: 457, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b); @@ -1049,9 +1049,9 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 290, w: 83, x: 86, y: 161}, - {b: 290, w: 83, x: 202, y: 419}, - {b: 290, w: 83, x: 318, y: 161}, + {b: 290, w: 83, x: 91, y: 161}, + {b: 290, w: 83, x: 206, y: 419}, + {b: 290, w: 83, x: 321, y: 161}, {b: 290, w: 83, x: 434, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); @@ -1063,9 +1063,9 @@ describe('Bar controller tests', function() { var meta = chart.getDatasetMeta(1); [ - {b: 161, w: 83, x: 86, y: 32}, - {b: 290, w: 83, x: 202, y: 97}, - {b: 161, w: 83, x: 318, y: 161}, + {b: 161, w: 83, x: 91, y: 32}, + {b: 290, w: 83, x: 206, y: 97}, + {b: 161, w: 83, x: 321, y: 161}, {b: 419, w: 83, x: 434, y: 471} ].forEach(function(values, i) { expect(meta.data[i]._model.base).toBeCloseToPixel(values.b); @@ -1104,8 +1104,8 @@ describe('Bar controller tests', function() { var meta = chart.getDatasetMeta(1); [ - {x: 108, y: 258}, - {x: 224, y: 32} + {x: 113, y: 258}, + {x: 228, y: 32} ].forEach(function(values, i) { expect(meta.data[i]._model.base).toBeCloseToPixel(484); expect(meta.data[i]._model.width).toBeCloseToPixel(42); @@ -1146,8 +1146,8 @@ describe('Bar controller tests', function() { var meta = chart.getDatasetMeta(2); [ - {b: 371, x: 108, y: 258}, - {b: 258, x: 224, y: 32} + {b: 371, x: 113, y: 258}, + {b: 258, x: 228, y: 32} ].forEach(function(values, i) { expect(meta.data[i]._model.base).toBeCloseToPixel(values.b); expect(meta.data[i]._model.width).toBeCloseToPixel(42); @@ -1187,9 +1187,9 @@ describe('Bar controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {b: 484, w: 92, x: 94, y: 484}, - {b: 484, w: 92, x: 208, y: 136}, - {b: 484, w: 92, x: 322, y: 484}, + {b: 484, w: 92, x: 98, y: 484}, + {b: 484, w: 92, x: 211, y: 136}, + {b: 484, w: 92, x: 324, y: 484}, {b: 484, w: 92, x: 436, y: 136} ].forEach(function(values, i) { expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b); @@ -1201,9 +1201,9 @@ describe('Bar controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {b: 484, w: 92, x: 94, y: 122}, - {b: 136, w: 92, x: 208, y: 122}, - {b: 484, w: 92, x: 322, y: 484}, + {b: 484, w: 92, x: 98, y: 122}, + {b: 136, w: 92, x: 211, y: 122}, + {b: 484, w: 92, x: 324, y: 484}, {b: 136, w: 92, x: 436, y: 32} ].forEach(function(values, i) { expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b); diff --git a/test/specs/controller.bubble.tests.js b/test/specs/controller.bubble.tests.js index 6212b0c3dc6..78dcfc5ee32 100644 --- a/test/specs/controller.bubble.tests.js +++ b/test/specs/controller.bubble.tests.js @@ -134,9 +134,9 @@ describe('Bubble controller tests', function() { var meta = chart.getDatasetMeta(0); [ - {r: 5, x: 28, y: 32}, - {r: 1, x: 183, y: 484}, - {r: 2, x: 338, y: 461}, + {r: 5, x: 34, y: 32}, + {r: 1, x: 187, y: 484}, + {r: 2, x: 340, y: 461}, {r: 1, x: 492, y: 32} ].forEach(function(expected, i) { expect(meta.data[i]._model.radius).toBe(expected.r); diff --git a/test/specs/controller.line.tests.js b/test/specs/controller.line.tests.js index e1231dc692c..da41bc53e43 100644 --- a/test/specs/controller.line.tests.js +++ b/test/specs/controller.line.tests.js @@ -203,8 +203,8 @@ describe('Line controller tests', function() { [ - {x: 33, y: 484}, - {x: 186, y: 32} + {x: 39, y: 484}, + {x: 190, y: 32} ].forEach(function(expected, i) { expect(meta.data[i]._datasetIndex).toBe(0); expect(meta.data[i]._index).toBe(i); @@ -250,7 +250,7 @@ describe('Line controller tests', function() { var meta = chart.getDatasetMeta(0); // 1 point var point = meta.data[0]; - expect(point._model.x).toBeCloseToPixel(27); + expect(point._model.x).toBeCloseToPixel(32); // 2 points chart.data.labels = ['One', 'Two']; @@ -259,7 +259,7 @@ describe('Line controller tests', function() { var points = meta.data; - expect(points[0]._model.x).toBeCloseToPixel(27); + expect(points[0]._model.x).toBeCloseToPixel(32); expect(points[1]._model.x).toBeCloseToPixel(498); // 3 points @@ -269,8 +269,8 @@ describe('Line controller tests', function() { points = meta.data; - expect(points[0]._model.x).toBeCloseToPixel(27); - expect(points[1]._model.x).toBeCloseToPixel(260); + expect(points[0]._model.x).toBeCloseToPixel(32); + expect(points[1]._model.x).toBeCloseToPixel(263); expect(points[2]._model.x).toBeCloseToPixel(493); // 4 points @@ -280,8 +280,8 @@ describe('Line controller tests', function() { points = meta.data; - expect(points[0]._model.x).toBeCloseToPixel(27); - expect(points[1]._model.x).toBeCloseToPixel(184); + expect(points[0]._model.x).toBeCloseToPixel(32); + expect(points[1]._model.x).toBeCloseToPixel(187); expect(points[2]._model.x).toBeCloseToPixel(340); expect(points[3]._model.x).toBeCloseToPixel(497); }); @@ -311,9 +311,9 @@ describe('Line controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 28, y: 161}, - {x: 183, y: 419}, - {x: 338, y: 161}, + {x: 34, y: 161}, + {x: 187, y: 419}, + {x: 340, y: 161}, {x: 492, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.x).toBeCloseToPixel(values.x); @@ -323,9 +323,9 @@ describe('Line controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 28, y: 32}, - {x: 183, y: 97}, - {x: 338, y: 161}, + {x: 34, y: 32}, + {x: 187, y: 97}, + {x: 340, y: 161}, {x: 492, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x); @@ -366,9 +366,9 @@ describe('Line controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 56, y: 161}, - {x: 202, y: 419}, - {x: 347, y: 161}, + {x: 68, y: 161}, + {x: 210, y: 419}, + {x: 351, y: 161}, {x: 492, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.x).toBeCloseToPixel(values.x); @@ -378,9 +378,9 @@ describe('Line controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 56, y: 32}, - {x: 202, y: 97}, - {x: 347, y: 161}, + {x: 68, y: 32}, + {x: 210, y: 97}, + {x: 351, y: 161}, {x: 492, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x); @@ -438,9 +438,9 @@ describe('Line controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 28, y: 161}, - {x: 183, y: 419}, - {x: 338, y: 161}, + {x: 34, y: 161}, + {x: 187, y: 419}, + {x: 340, y: 161}, {x: 492, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.x).toBeCloseToPixel(values.x); @@ -450,9 +450,9 @@ describe('Line controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 28, y: 32}, - {x: 183, y: 97}, - {x: 338, y: 161}, + {x: 34, y: 32}, + {x: 187, y: 97}, + {x: 340, y: 161}, {x: 492, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x); @@ -486,9 +486,9 @@ describe('Line controller tests', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 28, y: 161}, - {x: 183, y: 419}, - {x: 338, y: 161}, + {x: 34, y: 161}, + {x: 187, y: 419}, + {x: 340, y: 161}, {x: 492, y: 419} ].forEach(function(values, i) { expect(meta0.data[i]._model.x).toBeCloseToPixel(values.x); @@ -498,9 +498,9 @@ describe('Line controller tests', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 28, y: 32}, - {x: 183, y: 97}, - {x: 338, y: 161}, + {x: 34, y: 32}, + {x: 187, y: 97}, + {x: 340, y: 161}, {x: 492, y: 471} ].forEach(function(values, i) { expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x); diff --git a/test/specs/core.helpers.tests.js b/test/specs/core.helpers.tests.js index 1b5edb89edf..dc865fb01b2 100644 --- a/test/specs/core.helpers.tests.js +++ b/test/specs/core.helpers.tests.js @@ -128,11 +128,7 @@ describe('Core helper tests', function() { }, position: 'right', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { beginAtZero: false, minRotation: 0, @@ -170,11 +166,7 @@ describe('Core helper tests', function() { }, position: 'left', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { beginAtZero: false, minRotation: 0, diff --git a/test/specs/core.scale.tests.js b/test/specs/core.scale.tests.js index 58e5a33faeb..dc2da042aca 100644 --- a/test/specs/core.scale.tests.js +++ b/test/specs/core.scale.tests.js @@ -1,3 +1,22 @@ describe('Core.scale', function() { describe('auto', jasmine.specsFromFixtures('core.scale')); + + it('should provide default scale label options', function() { + expect(Chart.defaults.scale.scaleLabel).toEqual({ + // display property + display: false, + + // actual label + labelString: '', + + // actual label + lineHeight: 1.2, + + // top/bottom padding + padding: { + top: 4, + bottom: 4 + } + }); + }); }); diff --git a/test/specs/core.tooltip.tests.js b/test/specs/core.tooltip.tests.js index b1896da3338..73d943bd853 100755 --- a/test/specs/core.tooltip.tests.js +++ b/test/specs/core.tooltip.tests.js @@ -143,7 +143,7 @@ describe('Core.Tooltip', function() { }] })); - expect(tooltip._view.x).toBeCloseToPixel(263); + expect(tooltip._view.x).toBeCloseToPixel(266); expect(tooltip._view.y).toBeCloseToPixel(155); }); @@ -341,7 +341,7 @@ describe('Core.Tooltip', function() { }] })); - expect(tooltip._view.x).toBeCloseToPixel(263); + expect(tooltip._view.x).toBeCloseToPixel(266); expect(tooltip._view.y).toBeCloseToPixel(312); }); @@ -494,7 +494,7 @@ describe('Core.Tooltip', function() { }] })); - expect(tooltip._view.x).toBeCloseToPixel(211); + expect(tooltip._view.x).toBeCloseToPixel(214); expect(tooltip._view.y).toBeCloseToPixel(190); }); @@ -574,7 +574,7 @@ describe('Core.Tooltip', function() { }] })); - expect(tooltip._view.x).toBeCloseToPixel(263); + expect(tooltip._view.x).toBeCloseToPixel(266); expect(tooltip._view.y).toBeCloseToPixel(155); }); diff --git a/test/specs/scale.category.tests.js b/test/specs/scale.category.tests.js index 8d8d32cd424..1665235ae8d 100644 --- a/test/specs/scale.category.tests.js +++ b/test/specs/scale.category.tests.js @@ -30,11 +30,7 @@ describe('Category scale tests', function() { }, position: 'bottom', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { beginAtZero: false, minRotation: 0, @@ -215,7 +211,7 @@ describe('Category scale tests', function() { }); var xScale = chart.scales.xScale0; - expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(23); + expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(23 + 6); // plus lineHeight expect(xScale.getValueForPixel(23)).toBe(0); expect(xScale.getPixelForValue(0, 4, 0)).toBeCloseToPixel(487); @@ -224,7 +220,7 @@ describe('Category scale tests', function() { xScale.options.offset = true; chart.update(); - expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(69); + expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(69 + 6); // plus lineHeight expect(xScale.getValueForPixel(69)).toBe(0); expect(xScale.getPixelForValue(0, 4, 0)).toBeCloseToPixel(441); @@ -258,8 +254,8 @@ describe('Category scale tests', function() { }); var xScale = chart.scales.xScale0; - expect(xScale.getPixelForValue('tick_1', 0, 0)).toBeCloseToPixel(23); - expect(xScale.getPixelForValue('tick_1', 1, 0)).toBeCloseToPixel(139); + expect(xScale.getPixelForValue('tick_1', 0, 0)).toBeCloseToPixel(23 + 6); // plus lineHeight + expect(xScale.getPixelForValue('tick_1', 1, 0)).toBeCloseToPixel(143); }); it ('Should get the correct pixel for a value when horizontal and zoomed', function() { @@ -293,13 +289,13 @@ describe('Category scale tests', function() { }); var xScale = chart.scales.xScale0; - expect(xScale.getPixelForValue(0, 1, 0)).toBeCloseToPixel(23); + expect(xScale.getPixelForValue(0, 1, 0)).toBeCloseToPixel(23 + 6); // plus lineHeight expect(xScale.getPixelForValue(0, 3, 0)).toBeCloseToPixel(496); xScale.options.offset = true; chart.update(); - expect(xScale.getPixelForValue(0, 1, 0)).toBeCloseToPixel(102); + expect(xScale.getPixelForValue(0, 1, 0)).toBeCloseToPixel(102 + 6); // plus lineHeight expect(xScale.getPixelForValue(0, 3, 0)).toBeCloseToPixel(417); }); diff --git a/test/specs/scale.linear.tests.js b/test/specs/scale.linear.tests.js index ed6f9c1f96e..60dd07698c0 100644 --- a/test/specs/scale.linear.tests.js +++ b/test/specs/scale.linear.tests.js @@ -28,11 +28,7 @@ describe('Linear Scale', function() { }, position: 'left', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { beginAtZero: false, minRotation: 0, @@ -695,8 +691,8 @@ describe('Linear Scale', function() { var xScale = chart.scales.xScale0; expect(xScale.getPixelForValue(1, 0, 0)).toBeCloseToPixel(501); // right - paddingRight - expect(xScale.getPixelForValue(-1, 0, 0)).toBeCloseToPixel(31); // left + paddingLeft - expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(266); // halfway*/ + expect(xScale.getPixelForValue(-1, 0, 0)).toBeCloseToPixel(31 + 6); // left + paddingLeft + lineSpace + expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(266 + 6 / 2); // halfway*/ expect(xScale.getValueForPixel(501)).toBeCloseTo(1, 1e-2); expect(xScale.getValueForPixel(31)).toBeCloseTo(-1, 1e-2); @@ -754,7 +750,7 @@ describe('Linear Scale', function() { expect(xScale.paddingBottom).toBeCloseToPixel(0); expect(xScale.paddingLeft).toBeCloseToPixel(0); expect(xScale.paddingRight).toBeCloseToPixel(0); - expect(xScale.width).toBeCloseToPixel(468); + expect(xScale.width).toBeCloseToPixel(468 - 6); // minus lineSpace expect(xScale.height).toBeCloseToPixel(28); var yScale = chart.scales.yScale0; @@ -762,7 +758,7 @@ describe('Linear Scale', function() { expect(yScale.paddingBottom).toBeCloseToPixel(0); expect(yScale.paddingLeft).toBeCloseToPixel(0); expect(yScale.paddingRight).toBeCloseToPixel(0); - expect(yScale.width).toBeCloseToPixel(30); + expect(yScale.width).toBeCloseToPixel(30 + 6); // plus lineSpace expect(yScale.height).toBeCloseToPixel(452); // Extra size when scale label showing @@ -774,15 +770,15 @@ describe('Linear Scale', function() { expect(xScale.paddingBottom).toBeCloseToPixel(0); expect(xScale.paddingLeft).toBeCloseToPixel(0); expect(xScale.paddingRight).toBeCloseToPixel(0); - expect(xScale.width).toBeCloseToPixel(454); - expect(xScale.height).toBeCloseToPixel(42); + expect(xScale.width).toBeCloseToPixel(440); + expect(xScale.height).toBeCloseToPixel(50); expect(yScale.paddingTop).toBeCloseToPixel(0); expect(yScale.paddingBottom).toBeCloseToPixel(0); expect(yScale.paddingLeft).toBeCloseToPixel(0); expect(yScale.paddingRight).toBeCloseToPixel(0); - expect(yScale.width).toBeCloseToPixel(44); - expect(yScale.height).toBeCloseToPixel(438); + expect(yScale.width).toBeCloseToPixel(58); + expect(yScale.height).toBeCloseToPixel(430); }); it('should fit correctly when display is turned off', function() { diff --git a/test/specs/scale.logarithmic.tests.js b/test/specs/scale.logarithmic.tests.js index 98d0fbf09c4..9640b1d3d62 100644 --- a/test/specs/scale.logarithmic.tests.js +++ b/test/specs/scale.logarithmic.tests.js @@ -27,11 +27,7 @@ describe('Logarithmic Scale tests', function() { }, position: 'left', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { beginAtZero: false, minRotation: 0, @@ -720,9 +716,9 @@ describe('Logarithmic Scale tests', function() { var xScale = chart.scales.xScale; expect(xScale.getPixelForValue(80, 0, 0)).toBeCloseToPixel(495); // right - paddingRight - expect(xScale.getPixelForValue(1, 0, 0)).toBeCloseToPixel(37); // left + paddingLeft - expect(xScale.getPixelForValue(10, 0, 0)).toBeCloseToPixel(278); // halfway - expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(37); // 0 is invalid, put it on the left. + expect(xScale.getPixelForValue(1, 0, 0)).toBeCloseToPixel(37 + 6); // left + paddingLeft + lineSpace + expect(xScale.getPixelForValue(10, 0, 0)).toBeCloseToPixel(278 + 6 / 2); // halfway + expect(xScale.getPixelForValue(0, 0, 0)).toBeCloseToPixel(37 + 6); // 0 is invalid, put it on the left. expect(xScale.getValueForPixel(495)).toBeCloseToPixel(80); expect(xScale.getValueForPixel(48)).toBeCloseTo(1, 1e-4); diff --git a/test/specs/scale.radialLinear.tests.js b/test/specs/scale.radialLinear.tests.js index 70c75f02ad7..707ce0b7c52 100644 --- a/test/specs/scale.radialLinear.tests.js +++ b/test/specs/scale.radialLinear.tests.js @@ -40,11 +40,7 @@ describe('Test the radial linear scale', function() { }, position: 'chartArea', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, ticks: { backdropColor: 'rgba(255,255,255,0.75)', backdropPaddingY: 2, diff --git a/test/specs/scale.time.tests.js b/test/specs/scale.time.tests.js index 3c757243d56..b6554e60d9a 100755 --- a/test/specs/scale.time.tests.js +++ b/test/specs/scale.time.tests.js @@ -73,11 +73,7 @@ describe('Time scale tests', function() { }, position: 'bottom', offset: false, - scaleLabel: { - display: false, - labelString: '', - lineHeight: 1.2 - }, + scaleLabel: Chart.defaults.scale.scaleLabel, bounds: 'data', distribution: 'linear', ticks: {