diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index a6321c50160..7ae784ad2ea 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -35,6 +35,7 @@ plots['marker-arrays'] = require('@mocks/gl3d_marker-arrays.json'); plots['scatter3d-colorscale'] = require('@mocks/gl3d_scatter3d-colorscale.json'); plots['autocolorscale'] = require('@mocks/gl3d_autocolorscale.json'); plots['nan-holes'] = require('@mocks/gl3d_nan-holes.json'); +plots['scatter3d-connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.json'); plots['tet'] = require('@mocks/gl3d_tet.json'); plots['surface_intensity'] = require('@mocks/gl3d_surface_intensity.json'); diff --git a/package.json b/package.json index 01a227a14e6..6738cc29861 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "gl-error2d": "^1.0.0", "gl-error3d": "^1.0.0", "gl-line2d": "^1.2.1", - "gl-line3d": "^1.0.1", + "gl-line3d": "^1.1.0", "gl-mat4": "^1.1.2", "gl-mesh3d": "^1.0.7", "gl-plot2d": "^1.1.6", diff --git a/src/traces/scatter3d/attributes.js b/src/traces/scatter3d/attributes.js index af468e3196f..d43fadce201 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -95,6 +95,7 @@ module.exports = { y: makeProjectionAttr('y'), z: makeProjectionAttr('z') }, + connectgaps: scatterAttrs.connectgaps, line: { color: scatterLineAttrs.color, width: scatterLineAttrs.width, diff --git a/src/traces/scatter3d/convert.js b/src/traces/scatter3d/convert.js index aee10619d5b..8ee2c6418c7 100644 --- a/src/traces/scatter3d/convert.js +++ b/src/traces/scatter3d/convert.js @@ -303,7 +303,8 @@ proto.update = function(data) { lineWidth: options.lineWidth || 1, dashes: dashPattern[0], dashScale: dashPattern[1], - opacity: data.opacity + opacity: data.opacity, + connectGaps: data.connectgaps }; if(this.mode.indexOf('lines') !== -1) { diff --git a/src/traces/scatter3d/defaults.js b/src/traces/scatter3d/defaults.js index 43704afdd2c..bf4fc134f38 100644 --- a/src/traces/scatter3d/defaults.js +++ b/src/traces/scatter3d/defaults.js @@ -36,6 +36,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('mode'); if(subTypes.hasLines(traceOut)) { + coerce('connectgaps'); handleLineDefaults(traceIn, traceOut, defaultColor, coerce); } diff --git a/test/image/baselines/gl3d_scatter3d-connectgaps.png b/test/image/baselines/gl3d_scatter3d-connectgaps.png new file mode 100644 index 00000000000..a8c61187f56 Binary files /dev/null and b/test/image/baselines/gl3d_scatter3d-connectgaps.png differ diff --git a/test/image/mocks/gl3d_scatter3d-connectgaps.json b/test/image/mocks/gl3d_scatter3d-connectgaps.json new file mode 100644 index 00000000000..484afddbcd6 --- /dev/null +++ b/test/image/mocks/gl3d_scatter3d-connectgaps.json @@ -0,0 +1,30 @@ +{ + "data": [{ + "type": "scatter3d", + "mode": "lines", + "x": [0, 0, null, null, 0, 0], + "y": [0, 1, 2, 3, 4, 5], + "z": [2, 1, null, null, 0, 3], + "connectgaps": false, + "name": "gap in z" + }, { + "type": "scatter3d", + "mode": "lines", + "x": [1, 1, 1, 1, 1, 1], + "y": [0, 1, null, null, 4, 5], + "z": [2, 1, 2, 0, 0, 3], + "connectgaps": false, + "name": "gap in y" + },{ + "type": "scatter3d", + "mode": "lines", + "x": [2, 2, null, null, 2, 2], + "y": [0, 1, 2, 3, 4, 5], + "z": [2, 1, 2, 0, 0, 3], + "connectgaps": false, + "name": "gap in x" + }], + "layout": { + "title": "connect gaps test" + } +}