* `'auto'`: generates "optimal" ticks based on scale size and time options
* `'data'`: generates ticks from data (including labels from data `{t|x|y}` objects)
-* `'labels'`: generates ticks from user given `data.labels` values ONLY
+* `'labels'`: generates ticks from user given `labels` ONLY
### Parser
If this property is defined as a string, it is interpreted as a custom format to be used by Moment.js to parse the date.
return this._ticks;
},
+ /**
+ * @private
+ */
+ _getLabels: function() {
+ var data = this.chart.data;
+ return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;
+ },
+
// These methods are ordered by lifecyle. Utilities then follow.
// Any function defined here is inherited by all scale types.
// Any function can be extended by the scale type
};
module.exports = Scale.extend({
- /**
- * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those
- * else fall back to data.labels
- * @private
- */
- getLabels: function() {
- var data = this.chart.data;
- return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;
- },
-
determineDataLimits: function() {
var me = this;
- var labels = me.getLabels();
+ var labels = me._getLabels();
me.minIndex = 0;
me.maxIndex = labels.length - 1;
var findIndex;
buildTicks: function() {
var me = this;
- var labels = me.getLabels();
+ var labels = me._getLabels();
// If we are viewing some subset of labels, slice the original array
me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);
},
valueCategory = me.isHorizontal() ? value.x : value.y;
}
if (valueCategory !== undefined || (value !== undefined && isNaN(index))) {
- var labels = me.getLabels();
+ var labels = me._getLabels();
value = valueCategory || value;
var idx = labels.indexOf(value);
index = idx !== -1 ? idx : index;
var datasets = [];
var labels = [];
var i, j, ilen, jlen, data, timestamp;
- var dataLabels = chart.data.labels || [];
+ var dataLabels = me._getLabels();
// Convert labels to timestamps
for (i = 0, ilen = dataLabels.length; i < ilen; ++i) {
});
});
+ describe('labels', function() {
+ it('should read labels from scale / xLabels / yLabels', function() {
+ var timeOpts = {
+ parser: 'YYYY',
+ unit: 'year',
+ displayFormats: {
+ year: 'YYYY'
+ }
+ };
+ var chart = window.acquireChart({
+ type: 'line',
+ data: {
+ labels: ['1975', '1976', '1977'],
+ xLabels: ['1985', '1986', '1987'],
+ yLabels: ['1995', '1996', '1997']
+ },
+ options: {
+ scales: {
+ xAxes: [{
+ id: 'x',
+ type: 'time',
+ labels: ['2015', '2016', '2017'],
+ time: timeOpts
+ },
+ {
+ id: 'x2',
+ type: 'time',
+ time: timeOpts
+ }],
+ yAxes: [{
+ id: 'y',
+ type: 'time',
+ time: timeOpts
+ },
+ {
+ id: 'y2',
+ type: 'time',
+ labels: ['2005', '2006', '2007'],
+ time: timeOpts
+ }]
+ }
+ }
+ });
+
+ expect(getTicksLabels(chart.scales.x)).toEqual(['2015', '2016', '2017']);
+ expect(getTicksLabels(chart.scales.x2)).toEqual(['1985', '1986', '1987']);
+ expect(getTicksLabels(chart.scales.y)).toEqual(['1995', '1996', '1997']);
+ expect(getTicksLabels(chart.scales.y2)).toEqual(['2005', '2006', '2007']);
+ });
+ });
+
describe('Deprecations', function() {
describe('options.time.displayFormats', function() {
it('should generate defaults from adapter presets', function() {