diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index 0f6348bc433..c96026ac2da 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -537,15 +537,13 @@ module.exports = Scale.extend({ var timestamps = []; var datasets = []; var labels = []; - var i, j, ilen, jlen, data, timestamp; + var i, j, ilen, jlen, data, timestamp, labelsAdded; var dataLabels = me._getLabels(); - // Convert labels to timestamps for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { labels.push(parse(me, dataLabels[i])); } - // Convert data to timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { data = chart.data.datasets[i].data; @@ -560,10 +558,11 @@ module.exports = Scale.extend({ datasets[i][j] = timestamp; } } else { - for (j = 0, jlen = labels.length; j < jlen; ++j) { - timestamps.push(labels[j]); - } datasets[i] = labels.slice(0); + if (!labelsAdded) { + timestamps = timestamps.concat(labels); + labelsAdded = true; + } } } else { datasets[i] = []; @@ -571,14 +570,12 @@ module.exports = Scale.extend({ } if (labels.length) { - // Sort labels **after** data have been converted - labels = arrayUnique(labels).sort(sorter); min = Math.min(min, labels[0]); max = Math.max(max, labels[labels.length - 1]); } if (timestamps.length) { - timestamps = arrayUnique(timestamps).sort(sorter); + timestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter); min = Math.min(min, timestamps[0]); max = Math.max(max, timestamps[timestamps.length - 1]); }