]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Perf improvement for ticks.source:'labels' (#6354)
authorBen McCann <322311+benmccann@users.noreply.github.com>
Thu, 18 Jul 2019 22:24:25 +0000 (23:24 +0100)
committerEvert Timberg <evert.timberg+github@gmail.com>
Thu, 18 Jul 2019 22:24:25 +0000 (18:24 -0400)
* Perf improvement for ticks.source:'labels'

* Address review comments

* Address review comments

src/scales/scale.time.js

index b766a16829d5015dc88fd01b770af064af14310c..9b29916c8d309edf8e92533806bc2fa3043050c3 100644 (file)
@@ -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]);
                }