Skip to content

Commit 6f9f298

Browse files
committed
fix for transforms operating on auto-invisible traces
1 parent 6de0042 commit 6f9f298

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

Diff for: src/plots/plots.js

+13
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,8 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) {
951951
fullTrace._expandedIndex = cnt;
952952

953953
if(fullTrace.transforms && fullTrace.transforms.length) {
954+
var sdInvisible = trace.visible !== false && fullTrace.visible === false;
955+
954956
var expandedTraces = applyTransforms(fullTrace, dataOut, layout, fullLayout);
955957

956958
for(var j = 0; j < expandedTraces.length; j++) {
@@ -964,6 +966,17 @@ plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) {
964966
// to promote consistency between update calls
965967
uid: fullTrace.uid + j
966968
};
969+
970+
// If the first supplyDefaults created `visible: false`,
971+
// clear it before running supplyDefaults a second time,
972+
// because sometimes there are items we still want to coerce
973+
// inside trace modules before determining that the trace is
974+
// again `visible: false`, for example partial visibilities
975+
// in `splom` traces.
976+
if(sdInvisible && expandedTrace.visible === false) {
977+
delete expandedTrace.visible;
978+
}
979+
967980
plots.supplyTraceDefaults(expandedTrace, fullExpandedTrace, cnt, fullLayout, i);
968981

969982
// relink private (i.e. underscore) keys expanded trace to full expanded trace so

Diff for: test/jasmine/tests/splom_test.js

+31
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,37 @@ describe('Test splom trace defaults:', function() {
4949
});
5050

5151
expect(gd._fullData[0].visible).toBe(false);
52+
53+
// make sure these are still coerced - so you can get back via GUI!
54+
expect(gd._fullData[0].showupperhalf).toBe(false);
55+
expect(gd._fullData[0].showlowerhalf).toBe(false);
56+
expect(gd._fullData[0].diagonal.visible).toBe(false);
57+
});
58+
59+
it('still coerces partial visibilities even if all are false with transforms', function() {
60+
_supply({
61+
dimensions: [{
62+
values: [1, 2, 3]
63+
}],
64+
showupperhalf: false,
65+
showlowerhalf: false,
66+
diagonal: {visible: false},
67+
transforms: [{
68+
type: 'filter',
69+
target: 'dimensions[0].values',
70+
operation: '>',
71+
value: 2
72+
}]
73+
});
74+
75+
expect(gd._fullData[0].visible).toBe(false);
76+
77+
expect(gd._fullData[0].transforms[0].enabled).toBe(true);
78+
79+
// make sure these are still coerced - so you can get back via GUI!
80+
expect(gd._fullData[0].showupperhalf).toBe(false);
81+
expect(gd._fullData[0].showlowerhalf).toBe(false);
82+
expect(gd._fullData[0].diagonal.visible).toBe(false);
5283
});
5384

5485
it('should set `visible: false` to values-less dimensions', function() {

0 commit comments

Comments
 (0)