From da65d03e8e899e4c30a2e121d92cfd22fecf8999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 1 Sep 2016 17:33:40 -0400 Subject: [PATCH 1/3] lint: declare variable in scope --- src/traces/scatter/clean_data.js | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/traces/scatter/clean_data.js b/src/traces/scatter/clean_data.js index 60ec2481e12..ecbf5060e91 100644 --- a/src/traces/scatter/clean_data.js +++ b/src/traces/scatter/clean_data.js @@ -10,23 +10,19 @@ 'use strict'; +// remove opacity for any trace that has a fill or is filled to module.exports = function cleanData(fullData) { - var i, - tracei, - filli, - j, - tracej; + for(var i = 0; i < fullData.length; i++) { + var tracei = fullData[i]; + var filli = tracei.fill; - // remove opacity for any trace that has a fill or is filled to - for(i = 0; i < fullData.length; i++) { - tracei = fullData[i]; - filli = tracei.fill; if((filli === 'none') || (tracei.type !== 'scatter')) continue; tracei.opacity = undefined; if(filli === 'tonexty' || filli === 'tonextx') { - for(j = i - 1; j >= 0; j--) { - tracej = fullData[j]; + for(var j = i - 1; j >= 0; j--) { + var tracej = fullData[j]; + if((tracej.type === 'scatter') && (tracej.xaxis === tracei.xaxis) && (tracej.yaxis === tracei.yaxis)) { From 1c93190cd59a1a09636285cb2480229eb36b1e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 1 Sep 2016 17:34:00 -0400 Subject: [PATCH 2/3] scatter: don't turn off opacity in 'toself' fills --- src/traces/scatter/clean_data.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/traces/scatter/clean_data.js b/src/traces/scatter/clean_data.js index ecbf5060e91..9508000e095 100644 --- a/src/traces/scatter/clean_data.js +++ b/src/traces/scatter/clean_data.js @@ -14,9 +14,11 @@ module.exports = function cleanData(fullData) { for(var i = 0; i < fullData.length; i++) { var tracei = fullData[i]; + if(tracei.type !== 'scatter') continue; + var filli = tracei.fill; + if(filli === 'none' || filli === 'toself') continue; - if((filli === 'none') || (tracei.type !== 'scatter')) continue; tracei.opacity = undefined; if(filli === 'tonexty' || filli === 'tonextx') { From d51a41e43e0ef7fe73812ad27059d3bcd7f01552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 1 Sep 2016 17:34:15 -0400 Subject: [PATCH 3/3] test: add toself fill + opacity mock --- .../baselines/scatter_fill_self_opacity.png | Bin 0 -> 28036 bytes .../mocks/scatter_fill_self_opacity.json | 21 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 test/image/baselines/scatter_fill_self_opacity.png create mode 100644 test/image/mocks/scatter_fill_self_opacity.json diff --git a/test/image/baselines/scatter_fill_self_opacity.png b/test/image/baselines/scatter_fill_self_opacity.png new file mode 100644 index 0000000000000000000000000000000000000000..27dd39f42b68c4c3d1d9a94fe62379b47103807f GIT binary patch literal 28036 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