me.afterFit();
// Auto-skip
- me._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(me.ticks) : me.ticks;
+ me.ticks = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(me.ticks) : me.ticks;
if (samplingEnabled) {
// Generate labels using all non-skipped ticks
- me._convertTicksToLabels(me._ticksToDraw);
+ me._convertTicksToLabels(me.ticks);
}
// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!
var position = options.position;
var offsetGridLines = gridLines.offsetGridLines;
var isHorizontal = me.isHorizontal();
- var ticks = me._ticksToDraw;
+ var ticks = me.ticks;
var ticksLength = ticks.length + (offsetGridLines ? 1 : 0);
- var context;
-
var tl = getTickMarkLength(gridLines);
var items = [];
- context = {
+ var context = {
scale: me,
tick: ticks[0],
};
const borderDash = gridLines.borderDash || [];
const borderDashOffset = resolve([gridLines.borderDashOffset], context, i);
- lineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);
+ lineValue = getPixelForGridLine(me, i, offsetGridLines);
// Skip if the pixel is out of the range
if (lineValue === undefined) {
var position = options.position;
var isMirrored = optionTicks.mirror;
var isHorizontal = me.isHorizontal();
- var ticks = me._ticksToDraw;
+ var ticks = me.ticks;
var fonts = parseTickFontOptions(optionTicks);
var tickPadding = optionTicks.padding;
var tl = getTickMarkLength(options.gridLines);
tick = ticks[i];
label = tick.label;
- pixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;
+ pixel = me.getPixelForTick(i) + optionTicks.labelOffset;
font = tick.major ? fonts.major : fonts.minor;
lineHeight = font.lineHeight;
lineCount = isArray(label) ? label.length : 1;
var alignPixel = helpers._alignPixel;
var context = {
scale: me,
- tick: me._ticksToDraw[0],
+ tick: me.ticks[0],
};
var axisWidth = gridLines.drawBorder ? resolve([gridLines.lineWidth, 0], context, 0) : 0;
var items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));
var firstLineWidth = axisWidth;
context = {
scale: me,
- tick: me._ticksToDraw[items.ticksLength - 1],
+ tick: me.ticks[items.ticksLength - 1],
};
var lastLineWidth = resolve([gridLines.lineWidth, 1], context, items.ticksLength - 1);
var borderValue = items.borderValue;
var ticks = getLabels(scale);
// `bounds === 'data'`: first and last ticks removed since outside the data range
- expect(ticks.length).toEqual(217);
+ expect(ticks.length).toEqual(44);
});
it('should accept labels as date objects', function() {
var ticks = getLabels(scale);
// `bounds === 'data'`: first and last ticks removed since outside the data range
- expect(ticks.length).toEqual(217);
+ expect(ticks.length).toEqual(44);
});
it('should accept data as xy points', function() {
var ticks = getLabels(xScale);
// `bounds === 'data'`: first and last ticks removed since outside the data range
- expect(ticks.length).toEqual(217);
+ expect(ticks.length).toEqual(37);
});
it('should accept data as ty points', function() {
var ticks = getLabels(tScale);
// `bounds === 'data'`: first and last ticks removed since outside the data range
- expect(ticks.length).toEqual(217);
+ expect(ticks.length).toEqual(37);
});
});
it('should get the correct labels for ticks', function() {
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('<8:00:00>');
expect(labels[labels.length - 1]).toEqual('<8:01:00>');
});
chart.update();
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('{8:00:00}');
expect(labels[labels.length - 1]).toEqual('{8:01:00}');
});
it('should get the correct labels for major and minor ticks', function() {
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('[[8:00 pm]]');
expect(labels[Math.floor(labels.length / 2)]).toEqual('(8:00:30 pm)');
expect(labels[labels.length - 1]).toEqual('[[8:01 pm]]');
chart.update();
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('(8:00:00 pm)');
expect(labels[labels.length - 1]).toEqual('(8:01:00 pm)');
});
chart.update();
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('<8:00 pm>');
expect(labels[labels.length - 1]).toEqual('<8:01 pm>');
});
chart.update();
var labels = getLabels(this.scale);
- expect(labels.length).toEqual(61);
+ expect(labels.length).toEqual(21);
expect(labels[0]).toEqual('[[8:00 pm]]');
expect(labels[Math.floor(labels.length / 2)]).toEqual('<8:00:30 pm>');
expect(labels[labels.length - 1]).toEqual('[[8:01 pm]]');
expect(scale.getPixelForValue('2012')).toBeCloseToPixel(scale.left);
expect(scale.getPixelForValue('2051')).toBeCloseToPixel(scale.left + scale.width);
});
+ });
+ });
+ });
+
+ ['data', 'labels'].forEach(function(source) {
+ ['series', 'linear'].forEach(function(distribution) {
+ describe('when ticks.source is "' + source + '" and distribution is "' + distribution + '"', function() {
+ beforeEach(function() {
+ this.chart = window.acquireChart({
+ type: 'line',
+ data: {
+ labels: ['2017', '2019', '2020', '2025', '2042'],
+ datasets: [{data: [0, 1, 2, 3, 4, 5]}]
+ },
+ options: {
+ scales: {
+ xAxes: [{
+ id: 'x',
+ type: 'time',
+ time: {
+ parser: 'YYYY'
+ },
+ ticks: {
+ source: source
+ },
+ distribution: distribution
+ }]
+ }
+ }
+ });
+ });
it ('should add offset if min and max extend the labels range and offset is true', function() {
var chart = this.chart;
var scale = chart.scales.xScale0;
- var labels = scale._ticksToDraw.map(function(t) {
+ var labels = scale.ticks.map(function(t) {
return t.label;
});
expect(labels).toEqual([