Skip to content

Commit c7bc82c

Browse files
committed
use len instead of raw input lengths - empty distinct vals when len is zero
1 parent 72689c4 commit c7bc82c

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

src/traces/streamtube/calc.js

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,30 @@ module.exports = function calc(gd, trace) {
9696
if(!filledY) gridFill += 'y';
9797
if(!filledZ) gridFill += 'z';
9898

99-
var valsx = distinctVals(trace.x.slice(0, len));
100-
var valsy = distinctVals(trace.y.slice(0, len));
101-
var valsz = distinctVals(trace.z.slice(0, len));
99+
var Xs = distinctVals(trace.x.slice(0, len));
100+
var Ys = distinctVals(trace.y.slice(0, len));
101+
var Zs = distinctVals(trace.z.slice(0, len));
102+
103+
var empty = function() {
104+
len = 0;
105+
Xs = [];
106+
Ys = [];
107+
Zs = [];
108+
};
109+
110+
// Over-specified mesh case, this would error in tube2mesh
111+
if(!len || len < Xs.length * Ys.length * Zs.length) empty();
102112

103113
var getArray = function(c) { return c === 'x' ? x : c === 'y' ? y : z; };
104-
var getVals = function(c) { return c === 'x' ? valsx : c === 'y' ? valsy : valsz; };
105-
var getLength = function(c) { return getVals(c).length; };
106-
var getDir = function(c) { return (+(c[c.length - 1] - c[0])) * 2 + 1; };
114+
var getVals = function(c) { return c === 'x' ? Xs : c === 'y' ? Ys : Zs; };
115+
var getDir = function(c) { return (+(c[len - 1] - c[0])) * 2 + 1; };
107116

108117
var arrK = getArray(gridFill[0]);
109118
var arrJ = getArray(gridFill[1]);
110119
var arrI = getArray(gridFill[2]);
111-
var nk = getLength(gridFill[0]);
112-
var nj = getLength(gridFill[1]);
113-
var ni = getLength(gridFill[2]);
120+
var nk = getVals(gridFill[0]).length;
121+
var nj = getVals(gridFill[1]).length;
122+
var ni = getVals(gridFill[2]).length;
114123

115124
var arbitrary = false;
116125

@@ -147,7 +156,7 @@ module.exports = function calc(gd, trace) {
147156

148157
if(arbitrary) {
149158
Lib.warn('Encountered arbitrary coordinates! Unable to input data grid.');
150-
len = 0;
159+
empty();
151160
}
152161

153162
for(i = 0; i < slen; i++) {
@@ -170,9 +179,9 @@ module.exports = function calc(gd, trace) {
170179
trace._xbnds = [xMin, xMax];
171180
trace._ybnds = [yMin, yMax];
172181
trace._zbnds = [zMin, zMax];
173-
trace._valsx = valsx;
174-
trace._valsy = valsy;
175-
trace._valsz = valsz;
182+
trace._Xs = Xs;
183+
trace._Ys = Ys;
184+
trace._Zs = Zs;
176185
trace._gridFill = gridFill;
177186
};
178187

src/traces/streamtube/convert.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,17 @@ function convert(scene, trace) {
104104
len
105105
);
106106

107-
var valsx = trace._valsx;
108-
var valsy = trace._valsy;
109-
var valsz = trace._valsz;
110-
111107
// Over-specified mesh case, this would error in tube2mesh
112-
if(valsx.length * valsy.length * valsz.length > len) {
113-
return {positions: [], cells: []};
108+
if(!len) {
109+
return {
110+
positions: [],
111+
cells: []
112+
};
114113
}
115114

116-
var meshx = toDataCoords(valsx, 'xaxis');
117-
var meshy = toDataCoords(valsy, 'yaxis');
118-
var meshz = toDataCoords(valsz, 'zaxis');
115+
var meshx = toDataCoords(trace._Xs, 'xaxis');
116+
var meshy = toDataCoords(trace._Ys, 'yaxis');
117+
var meshz = toDataCoords(trace._Zs, 'zaxis');
119118

120119
tubeOpts.meshgrid = [meshx, meshy, meshz];
121120
tubeOpts.gridFill = trace._gridFill;

0 commit comments

Comments
 (0)