Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 688438c

Browse files
committed
handle typed arrays inside a 2d array - plus a bit of optimization
1 parent 4697f9c commit 688438c

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/plots/cartesian/axis_autotype.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@ var isNumeric = require('fast-isnumeric');
1414
var Lib = require('../../lib');
1515
var BADNUM = require('../../constants/numerical').BADNUM;
1616

17+
var isArrayOrTypedArray = Lib.isArrayOrTypedArray;
18+
var isDateTime = Lib.isDateTime;
19+
var cleanNumber = Lib.cleanNumber;
20+
var round = Math.round;
21+
1722
module.exports = function autoType(array, calendar, opts) {
1823
var a = array;
1924

20-
if(Lib.isArrayOrTypedArray(a) && !a.length) return '-';
21-
if(!opts.noMultiCategory && multiCategory(a)) return 'multicategory';
22-
if(opts.noMultiCategory && Array.isArray(a[0])) {
25+
var noMultiCategory = opts.noMultiCategory;
26+
if(isArrayOrTypedArray(a) && !a.length) return '-';
27+
if(!noMultiCategory && multiCategory(a)) return 'multicategory';
28+
if(noMultiCategory && Array.isArray(a[0])) { // no need to flat typed arrays here
2329
var b = [];
2430
for(var i = 0; i < a.length; i++) {
25-
if(Array.isArray(a[i])) {
31+
if(isArrayOrTypedArray(a[i])) {
2632
for(var j = 0; j < a[i].length; j++) {
2733
b.push(a[i][j]);
2834
}
@@ -71,13 +77,13 @@ function moreDates(a, calendar) {
7177
var seen = {};
7278

7379
for(var f = 0; f < len; f += inc) {
74-
var i = Math.round(f);
80+
var i = round(f);
7581
var ai = a[i];
7682
var stri = String(ai);
7783
if(seen[stri]) continue;
7884
seen[stri] = 1;
7985

80-
if(Lib.isDateTime(ai, calendar)) dats++;
86+
if(isDateTime(ai, calendar)) dats++;
8187
if(isNumeric(ai)) nums++;
8288
}
8389

@@ -100,15 +106,15 @@ function category(a, convertNumeric) {
100106
var seen = {};
101107

102108
for(var f = 0; f < len; f += inc) {
103-
var i = Math.round(f);
109+
var i = round(f);
104110
var ai = a[i];
105111
var stri = String(ai);
106112
if(seen[stri]) continue;
107113
seen[stri] = 1;
108114

109115
var t = typeof ai;
110116
if(t === 'boolean') cats++;
111-
else if(convertNumeric ? Lib.cleanNumber(ai) !== BADNUM : t === 'number') nums++;
117+
else if(convertNumeric ? cleanNumber(ai) !== BADNUM : t === 'number') nums++;
112118
else if(t === 'string') cats++;
113119
}
114120

@@ -119,5 +125,5 @@ function category(a, convertNumeric) {
119125
// trace modules that should never auto-type to multicategory
120126
// should be declared with 'noMultiCategory'
121127
function multiCategory(a) {
122-
return Lib.isArrayOrTypedArray(a[0]) && Lib.isArrayOrTypedArray(a[1]);
128+
return isArrayOrTypedArray(a[0]) && isArrayOrTypedArray(a[1]);
123129
}

0 commit comments

Comments
 (0)