From d6f37ae07f06555f8417673a9f2255f5e13b8427 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 23 Jun 2019 08:57:59 -0700 Subject: [PATCH 1/3] Perf improvement for ticks.source:'labels' --- src/scales/scale.time.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index 0f6348bc433..9920039d0c8 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -534,16 +534,16 @@ module.exports = Scale.extend({ var unit = options.time.unit || 'day'; var min = MAX_INTEGER; var max = MIN_INTEGER; - var timestamps = []; var datasets = []; var labels = []; - var i, j, ilen, jlen, data, timestamp; + var timestamps, i, j, ilen, jlen, data, timestamp; var dataLabels = me._getLabels(); // Convert labels to timestamps for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { labels.push(parse(me, dataLabels[i])); } + timestamps = labels.slice(0); // Convert data to timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { @@ -560,9 +560,6 @@ 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); } } else { @@ -571,8 +568,6 @@ 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]); } From 62370b04dccc934f8b61e56f49891f6cb5a4f3ce Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 24 Jun 2019 14:15:48 -0700 Subject: [PATCH 2/3] Address review comments --- src/scales/scale.time.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index 9920039d0c8..f294454fbdc 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -534,18 +534,18 @@ module.exports = Scale.extend({ var unit = options.time.unit || 'day'; var min = MAX_INTEGER; var max = MIN_INTEGER; + var timestamps = []; var datasets = []; var labels = []; - var timestamps, i, j, ilen, jlen, data, timestamp; + var i, j, ilen, jlen, data, timestamp, labelsAdded; var dataLabels = me._getLabels(); - // Convert labels to timestamps + // Set labels for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { labels.push(parse(me, dataLabels[i])); } - timestamps = labels.slice(0); - // Convert data to timestamps + // Set timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { data = chart.data.datasets[i].data; @@ -561,6 +561,10 @@ module.exports = Scale.extend({ } } else { datasets[i] = labels.slice(0); + if (!labelsAdded) { + timestamps = timestamps.concat(labels); + labelsAdded = true; + } } } else { datasets[i] = []; @@ -573,7 +577,9 @@ module.exports = Scale.extend({ } if (timestamps.length) { - timestamps = arrayUnique(timestamps).sort(sorter); + if (ilen > 1) { + timestamps = arrayUnique(timestamps).sort(sorter); + } min = Math.min(min, timestamps[0]); max = Math.max(max, timestamps[timestamps.length - 1]); } From 370ce221fd50cedef4e3b671aaff8664a0e51ada Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 25 Jun 2019 19:14:41 -0700 Subject: [PATCH 3/3] Address review comments --- src/scales/scale.time.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index f294454fbdc..c96026ac2da 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -540,12 +540,10 @@ module.exports = Scale.extend({ var i, j, ilen, jlen, data, timestamp, labelsAdded; var dataLabels = me._getLabels(); - // Set labels for (i = 0, ilen = dataLabels.length; i < ilen; ++i) { labels.push(parse(me, dataLabels[i])); } - // Set timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { data = chart.data.datasets[i].data; @@ -577,9 +575,7 @@ module.exports = Scale.extend({ } if (timestamps.length) { - if (ilen > 1) { - 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]); }