From 28fdffbeb96b6e32331932cc9081577d670b4c5b Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 18 Jul 2019 23:24:25 +0100 Subject: [PATCH] Perf improvement for ticks.source:'labels' (#6354) * Perf improvement for ticks.source:'labels' * Address review comments * Address review comments --- src/scales/scale.time.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index b766a16829d..9b29916c8d3 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -538,15 +538,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; @@ -561,10 +559,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] = []; @@ -572,14 +571,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]); }