From cd055e4382c728b3adcfcbfe476218b375c51ae6 Mon Sep 17 00:00:00 2001 From: archmoj Date: Thu, 26 Dec 2019 23:42:48 -0500 Subject: [PATCH] Add intensitymode to allow cell intensity values in mesh3d - bump gl-mesh3d @2.2.0 --- package-lock.json | 6 +- package.json | 2 +- src/traces/mesh3d/attributes.js | 15 +- src/traces/mesh3d/convert.js | 5 +- src/traces/mesh3d/defaults.js | 1 + .../baselines/gl3d_mesh3d_cell-intensity.png | Bin 0 -> 33509 bytes .../mocks/gl3d_mesh3d_cell-intensity.json | 2050 +++++++++++++++++ test/jasmine/tests/mesh3d_test.js | 6 +- 8 files changed, 2075 insertions(+), 10 deletions(-) create mode 100644 test/image/baselines/gl3d_mesh3d_cell-intensity.png create mode 100644 test/image/mocks/gl3d_mesh3d_cell-intensity.json diff --git a/package-lock.json b/package-lock.json index 6c301107e90..bdbfa224fe0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4610,9 +4610,9 @@ } }, "gl-mesh3d": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.1.3.tgz", - "integrity": "sha512-c1zMvkVoKrVPSn/YA0JTDE/I289xqAjkH52HZBLvEGmKAg0Ezwi/Llg1M7NPIb4d5nwekCBMXGZmemsZaedI5g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gl-mesh3d/-/gl-mesh3d-2.2.0.tgz", + "integrity": "sha512-wO6EKjBUo/k7ZLGsMACWGETjmjfsGwwoDWEKjDbjyjo1qPvgkTQQB9Y8p+OKGjE6GeihsfQuoqGBUTu9tiAOmg==", "requires": { "barycentric": "^1.0.1", "colormap": "^2.3.1", diff --git a/package.json b/package.json index f63d2dcbe30..65649f9c5cd 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "gl-heatmap2d": "^1.0.5", "gl-line3d": "^1.1.11", "gl-mat4": "^1.2.0", - "gl-mesh3d": "^2.1.3", + "gl-mesh3d": "^2.2.0", "gl-plot2d": "^1.4.2", "gl-plot3d": "^2.3.0", "gl-pointcloud2d": "^1.0.2", diff --git a/src/traces/mesh3d/attributes.js b/src/traces/mesh3d/attributes.js index 9641ae6ef1a..fa5bf529c14 100644 --- a/src/traces/mesh3d/attributes.js +++ b/src/traces/mesh3d/attributes.js @@ -144,8 +144,19 @@ module.exports = extendFlat({ valType: 'data_array', editType: 'calc', description: [ - 'Sets the vertex intensity values,', - 'used for plotting fields on meshes' + 'Sets the intensity values for vertices or cells', + 'as defined by `intensitymode`.', + 'It can be used for plotting fields on meshes.' + ].join(' ') + }, + intensitymode: { + valType: 'enumerated', + values: ['vertex', 'cell'], + dflt: 'vertex', + editType: 'calc', + role: 'info', + description: [ + 'Determines the source of `intensity` values.' ].join(' ') }, diff --git a/src/traces/mesh3d/convert.js b/src/traces/mesh3d/convert.js index bc9b69ebfa4..7d8a4d35adf 100644 --- a/src/traces/mesh3d/convert.js +++ b/src/traces/mesh3d/convert.js @@ -160,8 +160,9 @@ proto.update = function(data) { if(data.intensity) { var cOpts = extractOpts(data); this.color = '#fff'; - config.vertexIntensity = data.intensity; - config.vertexIntensityBounds = [cOpts.min, cOpts.max]; + var mode = data.intensitymode; + config[mode + 'Intensity'] = data.intensity; + config[mode + 'IntensityBounds'] = [cOpts.min, cOpts.max]; config.colormap = parseColorScale(data); } else if(data.vertexcolor) { this.color = data.vertexcolor[0]; diff --git a/src/traces/mesh3d/defaults.js b/src/traces/mesh3d/defaults.js index fa4299a99cb..29b9e77088d 100644 --- a/src/traces/mesh3d/defaults.js +++ b/src/traces/mesh3d/defaults.js @@ -79,6 +79,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if('intensity' in traceIn) { coerce('intensity'); + coerce('intensitymode'); colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'c'}); } else { traceOut.showscale = false; diff --git a/test/image/baselines/gl3d_mesh3d_cell-intensity.png b/test/image/baselines/gl3d_mesh3d_cell-intensity.png new file mode 100644 index 0000000000000000000000000000000000000000..6dceac35977cc765f15ba2363c3ce198b37947cd GIT binary patch literal 33509 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