From 3388249144eceda38741675bd3ceffc808aa0459 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 25 Feb 2016 15:43:03 -0800 Subject: [PATCH 1/2] fix argument parsing for vertex and face colors of mesh3d traces --- devtools/test_dashboard/test_gl3d.js | 1 + src/traces/mesh3d/convert.js | 12 ++++++------ src/traces/mesh3d/defaults.js | 4 ++-- test/image/mocks/gl3d_tet.json | 21 +++++++++++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 test/image/mocks/gl3d_tet.json diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index 902cb8e0305..dce47915ce0 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -35,5 +35,6 @@ 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['tetrahedra'] = require('@mocks/gl3d_tet.json'); plotButtons(plots, figDir); diff --git a/src/traces/mesh3d/convert.js b/src/traces/mesh3d/convert.js index 22fabd640f4..12f4297ce84 100644 --- a/src/traces/mesh3d/convert.js +++ b/src/traces/mesh3d/convert.js @@ -123,13 +123,13 @@ proto.update = function(data) { config.vertexIntensity = data.intensity; config.colormap = parseColorScale(data.colorscale); } - else if(data.vertexColor) { - this.color = data.vertexColor[0]; - config.vertexColors = parseColorArray(data.vertexColor); + else if(data.vertexcolor) { + this.color = data.vertexcolors[0]; + config.vertexColors = parseColorArray(data.vertexcolor); } - else if(data.faceColor) { - this.color = data.faceColor[0]; - config.cellColors = parseColorArray(data.faceColor); + else if(data.facecolor) { + this.color = data.facecolor[0]; + config.cellColors = parseColorArray(data.facecolor); } else { this.color = data.color; diff --git a/src/traces/mesh3d/defaults.js b/src/traces/mesh3d/defaults.js index 36c09511e6d..03ec5559900 100644 --- a/src/traces/mesh3d/defaults.js +++ b/src/traces/mesh3d/defaults.js @@ -72,8 +72,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout else { traceOut.showscale = false; - if('vertexColor' in traceIn) coerce('vertexColor'); - else if('faceColor' in traceIn) coerce('faceColor'); + if('vertexcolor' in traceIn) coerce('vertexcolor'); + else if('facecolor' in traceIn) coerce('facecolor'); else coerce('color', defaultColor); } diff --git a/test/image/mocks/gl3d_tet.json b/test/image/mocks/gl3d_tet.json new file mode 100644 index 00000000000..0876e77b435 --- /dev/null +++ b/test/image/mocks/gl3d_tet.json @@ -0,0 +1,21 @@ +{ + "data": [ + { + "type":"mesh3d", + "y":[0, 0, 1, 2], + "x":[0, 1, 2, 0], + "z":[0, 2, 0, 1], + "i":[0, 0, 0, 1], + "j":[1, 2, 3, 2], + "k":[2, 3, 1, 3], + "facecolors": [ + "rgb(0, 0, 0)", + "rgb(255, 0, 0)", + "rgb(0, 255, 0)", + "rgb(0, 0, 255)" + ] + }], + "layout": { + "title": "Tetrahedra" + } +} From 357994025808db92bca5829ab380b45a841d01e7 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 3 Mar 2016 11:48:58 -0800 Subject: [PATCH 2/2] add test image for gl3d_tet --- test/image/baselines/gl3d_tet.png | Bin 0 -> 24350 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/image/baselines/gl3d_tet.png diff --git a/test/image/baselines/gl3d_tet.png b/test/image/baselines/gl3d_tet.png new file mode 100644 index 0000000000000000000000000000000000000000..d780f9438275353d2dca974208a222bf6d4b0da3 GIT binary patch literal 24350 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 Zh-|d=LVdY`0=oCRe%3bB%G0zA{x1$&%#i>9 literal 0 HcmV?d00001