Skip to content

Commit af17adc

Browse files
committed
revised isosurface default function exports
1 parent 77f7317 commit af17adc

File tree

5 files changed

+136
-123
lines changed

5 files changed

+136
-123
lines changed

src/traces/isosurface/defaults.js

+96-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,107 @@
99
'use strict';
1010

1111
var Lib = require('../../lib');
12+
var Registry = require('../../registry');
1213
var attributes = require('./attributes');
13-
var supplyIsoDefaults = require('./iso_defaults');
14+
var colorscaleDefaults = require('../../components/colorscale/defaults');
1415

15-
module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
16+
function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
1617
function coerce(attr, dflt) {
1718
return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);
1819
}
1920

2021
supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce);
22+
}
23+
24+
function supplyIsoDefaults(traceIn, traceOut, defaultColor, layout, coerce) {
25+
var isomin = coerce('isomin');
26+
var isomax = coerce('isomax');
27+
28+
if(isomax !== undefined && isomax !== null &&
29+
isomin !== undefined && isomin !== null &&
30+
isomin > isomax) {
31+
// applying default values in this case:
32+
traceOut.isomin = null;
33+
traceOut.isomax = null;
34+
}
35+
36+
var x = coerce('x');
37+
var y = coerce('y');
38+
var z = coerce('z');
39+
var value = coerce('value');
40+
41+
if(
42+
!x || !x.length ||
43+
!y || !y.length ||
44+
!z || !z.length ||
45+
!value || !value.length
46+
) {
47+
traceOut.visible = false;
48+
return;
49+
}
50+
51+
var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');
52+
handleCalendarDefaults(traceIn, traceOut, ['x', 'y', 'z'], layout);
53+
54+
['x', 'y', 'z'].forEach(function(dim) {
55+
var capDim = 'caps.' + dim;
56+
var showCap = coerce(capDim + '.show');
57+
if(showCap) {
58+
coerce(capDim + '.fill');
59+
}
60+
61+
var sliceDim = 'slices.' + dim;
62+
var showSlice = coerce(sliceDim + '.show');
63+
if(showSlice) {
64+
coerce(sliceDim + '.fill');
65+
coerce(sliceDim + '.locations');
66+
}
67+
});
68+
69+
var showSpaceframe = coerce('spaceframe.show');
70+
if(showSpaceframe) {
71+
coerce('spaceframe.fill');
72+
}
73+
74+
var showSurface = coerce('surface.show');
75+
if(showSurface) {
76+
coerce('surface.count');
77+
coerce('surface.fill');
78+
coerce('surface.pattern');
79+
}
80+
81+
var showContour = coerce('contour.show');
82+
if(showContour) {
83+
coerce('contour.color');
84+
coerce('contour.width');
85+
}
86+
87+
// Coerce remaining properties
88+
[
89+
'text',
90+
'hovertext',
91+
'hovertemplate',
92+
'lighting.ambient',
93+
'lighting.diffuse',
94+
'lighting.specular',
95+
'lighting.roughness',
96+
'lighting.fresnel',
97+
'lighting.vertexnormalsepsilon',
98+
'lighting.facenormalsepsilon',
99+
'lightposition.x',
100+
'lightposition.y',
101+
'lightposition.z',
102+
'flatshading',
103+
'opacity'
104+
].forEach(function(x) { coerce(x); });
105+
106+
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'});
107+
108+
// disable 1D transforms (for now)
109+
traceOut._length = null;
110+
}
111+
112+
module.exports = {
113+
supplyDefaults: supplyDefaults,
114+
supplyIsoDefaults: supplyIsoDefaults
21115
};

src/traces/isosurface/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
var Isosurface = {};
1313

1414
Isosurface.attributes = require('./attributes');
15-
Isosurface.supplyDefaults = require('./defaults');
15+
Isosurface.supplyDefaults = require('./defaults').supplyDefaults;
1616
Isosurface.calc = require('./calc');
1717
Isosurface.colorbar = {
1818
min: 'cmin',

src/traces/isosurface/iso_defaults.js

-100
This file was deleted.

src/traces/scattergl/index.js

+38-19
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
var createScatter = require('regl-scatter2d');
1212
var createLine = require('regl-line2d');
13-
var createError = require('regl-error2d');
13+
var createErrorX = require('regl-error2d');
14+
var createErrorY = require('regl-error2d');
1415
var cluster = require('point-cluster');
1516
var arrayRange = require('array-range');
1617
var Text = require('gl-text');
@@ -107,7 +108,8 @@ function calc(gd, trace) {
107108
if(opts.fill && !scene.fill2d) scene.fill2d = true;
108109
if(opts.marker && !scene.scatter2d) scene.scatter2d = true;
109110
if(opts.line && !scene.line2d) scene.line2d = true;
110-
if((opts.errorX || opts.errorY) && !scene.error2d) scene.error2d = true;
111+
if(opts.errorX && !scene.errorX2d) scene.errorX2d = true;
112+
if(opts.errorY && !scene.errorY2d) scene.errorY2d = true;
111113
if(opts.text && !scene.glText) scene.glText = true;
112114

113115
// FIXME: organize it in a more appropriate manner, probably in sceneOptions
@@ -161,12 +163,15 @@ function sceneOptions(gd, subplot, trace, positions, x, y) {
161163
);
162164
}
163165

164-
if(opts.errorX || opts.errorY) {
165-
var errors = convert.errorBarPositions(gd, trace, positions, x, y);
166-
166+
var errors;
167+
if(opts.errorX) {
168+
errors = convert.errorBarPositions(gd, trace, positions, x, y);
167169
if(opts.errorX) {
168170
Lib.extendFlat(opts.errorX, errors.x);
169171
}
172+
}
173+
if(opts.errorY) {
174+
errors = convert.errorBarPositions(gd, trace, positions, x, y);
170175
if(opts.errorY) {
171176
Lib.extendFlat(opts.errorY, errors.y);
172177
}
@@ -222,7 +227,8 @@ function sceneUpdate(gd, subplot) {
222227
// regl- component stubs, initialized in dirty plot call
223228
fill2d: false,
224229
scatter2d: false,
225-
error2d: false,
230+
errorX2d: false,
231+
errorY2d: false,
226232
line2d: false,
227233
glText: false,
228234
select2d: null
@@ -244,7 +250,8 @@ function sceneUpdate(gd, subplot) {
244250
if(scene.fill2d) scene.fill2d.update(opts);
245251
if(scene.scatter2d) scene.scatter2d.update(opts);
246252
if(scene.line2d) scene.line2d.update(opts);
247-
if(scene.error2d) scene.error2d.update(opts.concat(opts));
253+
if(scene.errorX2d) scene.errorX2d.update(opts);
254+
if(scene.errorY2d) scene.errorY2d.update(opts);
248255
if(scene.select2d) scene.select2d.update(opts);
249256
if(scene.glText) {
250257
for(var i = 0; i < scene.count; i++) {
@@ -257,7 +264,8 @@ function sceneUpdate(gd, subplot) {
257264
scene.draw = function draw() {
258265
var count = scene.count;
259266
var fill2d = scene.fill2d;
260-
var error2d = scene.error2d;
267+
var errorX2d = scene.errorX2d;
268+
var errorY2d = scene.errorY2d;
261269
var line2d = scene.line2d;
262270
var scatter2d = scene.scatter2d;
263271
var glText = scene.glText;
@@ -272,9 +280,11 @@ function sceneUpdate(gd, subplot) {
272280
if(line2d && scene.lineOptions[i]) {
273281
line2d.draw(i);
274282
}
275-
if(error2d) {
276-
if(scene.errorXOptions[i]) error2d.draw(i);
277-
if(scene.errorYOptions[i]) error2d.draw(i + count);
283+
if(errorX2d && scene.errorXOptions[i]) {
284+
errorX2d.draw(i);
285+
}
286+
if(errorY2d && scene.errorYOptions[i]) {
287+
errorY2d.draw(i);
278288
}
279289
if(scatter2d && scene.markerOptions[i] && (!selectBatch || !selectBatch[i])) {
280290
scatter2d.draw(i);
@@ -296,7 +306,8 @@ function sceneUpdate(gd, subplot) {
296306
scene.destroy = function destroy() {
297307
if(scene.fill2d && scene.fill2d.destroy) scene.fill2d.destroy();
298308
if(scene.scatter2d && scene.scatter2d.destroy) scene.scatter2d.destroy();
299-
if(scene.error2d && scene.error2d.destroy) scene.error2d.destroy();
309+
if(scene.errorX2d && scene.errorX2d.destroy) scene.errorX2d.destroy();
310+
if(scene.errorY2d && scene.errorY2d.destroy) scene.errorY2d.destroy();
300311
if(scene.line2d && scene.line2d.destroy) scene.line2d.destroy();
301312
if(scene.select2d && scene.select2d.destroy) scene.select2d.destroy();
302313
if(scene.glText) {
@@ -370,8 +381,11 @@ function plot(gd, subplot, cdata) {
370381

371382
if(scene.dirty) {
372383
// make sure scenes are created
373-
if(scene.error2d === true) {
374-
scene.error2d = createError(regl);
384+
if(scene.errorX2d === true) {
385+
scene.errorX2d = createErrorX(regl);
386+
}
387+
if(scene.errorY2d === true) {
388+
scene.errorY2d = createErrorY(regl);
375389
}
376390
if(scene.line2d === true) {
377391
scene.line2d = createLine(regl);
@@ -428,9 +442,11 @@ function plot(gd, subplot, cdata) {
428442
});
429443
scene.line2d.update(scene.lineOptions);
430444
}
431-
if(scene.error2d) {
432-
var errorBatch = (scene.errorXOptions || []).concat(scene.errorYOptions || []);
433-
scene.error2d.update(errorBatch);
445+
if(scene.errorX2d) {
446+
scene.errorX2d.update(scene.errorXOptions);
447+
}
448+
if(scene.errorY2d) {
449+
scene.errorY2d.update(scene.errorYOptions);
434450
}
435451
if(scene.scatter2d) {
436452
scene.scatter2d.update(scene.markerOptions);
@@ -669,8 +685,11 @@ function plot(gd, subplot, cdata) {
669685
if(scene.line2d) {
670686
scene.line2d.update(vpRange);
671687
}
672-
if(scene.error2d) {
673-
scene.error2d.update(vpRange.concat(vpRange));
688+
if(scene.errorX2d) {
689+
scene.errorX2d.update(vpRange);
690+
}
691+
if(scene.errorY2d) {
692+
scene.errorY2d.update(vpRange);
674693
}
675694
if(scene.scatter2d) {
676695
scene.scatter2d.update(vpRange);

src/traces/volume/defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
var Lib = require('../../lib');
1212
var attributes = require('./attributes');
13-
var supplyIsoDefaults = require('../isosurface/iso_defaults');
13+
var supplyIsoDefaults = require('../isosurface/defaults').supplyIsoDefaults;
1414

1515
var MIN = 0.1; // Note: often we don't want the data cube to be disappeared
1616

0 commit comments

Comments
 (0)