var me = this;
var chart = me.chart;
var timeOpts = me.options.time;
+ var unit = timeOpts.unit || 'day';
var min = MAX_INTEGER;
var max = MIN_INTEGER;
var timestamps = [];
min = parse(timeOpts.min, me) || min;
max = parse(timeOpts.max, me) || max;
- // In case there is no valid min/max, let's use today limits
- min = min === MAX_INTEGER ? +moment().startOf('day') : min;
- max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max;
+ // In case there is no valid min/max, set limits based on unit time option
+ min = min === MAX_INTEGER ? +moment().startOf(unit) : min;
+ max = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;
// Make sure that max is strictly higher than min (required by the lookup table)
me.min = Math.min(min, max);
expect(getTicksLabels(scale)).toEqual([
'2017', '2019', '2020', '2025', '2042']);
});
- it ('should correctly handle empty `data.labels`', function() {
+ it ('should correctly handle empty `data.labels` using "day" if `time.unit` is undefined`', function() {
var chart = this.chart;
var scale = chart.scales.x;
expect(scale.max).toEqual(+moment().endOf('day') + 1);
expect(getTicksLabels(scale)).toEqual([]);
});
+ it ('should correctly handle empty `data.labels` using `time.unit`', function() {
+ var chart = this.chart;
+ var scale = chart.scales.x;
+ var options = chart.options.scales.xAxes[0];
+
+ options.time.unit = 'year';
+ chart.data.labels = [];
+ chart.update();
+
+ expect(scale.min).toEqual(+moment().startOf('year'));
+ expect(scale.max).toEqual(+moment().endOf('year') + 1);
+ expect(getTicksLabels(scale)).toEqual([]);
+ });
});
describe('is "data"', function() {
expect(getTicksLabels(scale)).toEqual([
'2017', '2018', '2019', '2020', '2025', '2042', '2043']);
});
- it ('should correctly handle empty `data.labels`', function() {
+ it ('should correctly handle empty `data.labels` using "day" if `time.unit` is undefined`', function() {
var chart = this.chart;
var scale = chart.scales.x;
expect(getTicksLabels(scale)).toEqual([
'2018', '2020', '2043']);
});
+ it ('should correctly handle empty `data.labels` and hidden datasets using `time.unit`', function() {
+ var chart = this.chart;
+ var scale = chart.scales.x;
+ var options = chart.options.scales.xAxes[0];
+
+ options.time.unit = 'year';
+ chart.data.labels = [];
+ var meta = chart.getDatasetMeta(1);
+ meta.hidden = true;
+ chart.update();
+
+ expect(scale.min).toEqual(+moment().startOf('year'));
+ expect(scale.max).toEqual(+moment().endOf('year') + 1);
+ expect(getTicksLabels(scale)).toEqual([]);
+ });
});
});