From fb00e1fe76d9ee282b5392a61d0a3311a08d2845 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Fri, 25 Mar 2016 16:26:21 -0700 Subject: [PATCH 1/7] implement connectGaps false --- devtools/test_dashboard/test_gl3d.js | 1 + package.json | 2 +- src/traces/scatter3d/attributes.js | 6 ++++++ src/traces/scatter3d/convert.js | 3 ++- src/traces/scatter3d/defaults.js | 1 + test/image/mocks/gl3d_scatter3d-connectgaps.json | 13 +++++++++++++ 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 test/image/mocks/gl3d_scatter3d-connectgaps.json diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index dce47915ce0..2781d612dd4 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -36,5 +36,6 @@ 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'); +plots['connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.json'); plotButtons(plots, figDir); diff --git a/package.json b/package.json index 8fd5469086b..401ec115acc 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..b2d174af344 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -95,6 +95,12 @@ module.exports = { y: makeProjectionAttr('y'), z: makeProjectionAttr('z') }, + connectgaps: { + valType: 'boolean', + role: 'style', + dfl: false, + description: 'Connects gaps in data' + }, 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..250060f82e0 100644 --- a/src/traces/scatter3d/defaults.js +++ b/src/traces/scatter3d/defaults.js @@ -34,6 +34,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('mode'); + coerce('connectgaps'); if(subTypes.hasLines(traceOut)) { handleLineDefaults(traceIn, traceOut, defaultColor, coerce); diff --git a/test/image/mocks/gl3d_scatter3d-connectgaps.json b/test/image/mocks/gl3d_scatter3d-connectgaps.json new file mode 100644 index 00000000000..1b71425c9b3 --- /dev/null +++ b/test/image/mocks/gl3d_scatter3d-connectgaps.json @@ -0,0 +1,13 @@ +{ + "data": [{ + "type": "scatter3d", + "mode": "lines", + "x": [0, 1, 2, 3, 4, 5], + "y": [0, 1, 2, 3, 4, 5], + "z": [2, 1, null, null, 0, 3], + "connectgaps": false + }], + "layout": { + "title": "connect gaps test", + } +} From a4c4e0dfa2191861647ad762b494e894db5cc450 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Fri, 25 Mar 2016 16:26:21 -0700 Subject: [PATCH 2/7] implement connectGaps for line plots --- devtools/test_dashboard/test_gl3d.js | 1 + .../baselines/gl3d_scatter3d-connectgaps.png | Bin 0 -> 25332 bytes .../image/mocks/gl3d_scatter3d-connectgaps.json | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 test/image/baselines/gl3d_scatter3d-connectgaps.png diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index bde385d7998..08d7a3c1469 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -38,5 +38,6 @@ plots['nan-holes'] = require('@mocks/gl3d_nan-holes.json'); plots['connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.json'); plots['tet'] = require('@mocks/gl3d_tet.json'); plots['surface_intensity'] = require('@mocks/gl3d_surface_intensity.json'); +plots['connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.json'); plotButtons(plots, figDir); diff --git a/test/image/baselines/gl3d_scatter3d-connectgaps.png b/test/image/baselines/gl3d_scatter3d-connectgaps.png new file mode 100644 index 0000000000000000000000000000000000000000..3a9ffda858e94b5f5a8d5f2cb772d462b2805ffc GIT binary patch literal 25332 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%0A8+b3!|(w) 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 G`2PW)54#}% literal 0 HcmV?d00001 diff --git a/test/image/mocks/gl3d_scatter3d-connectgaps.json b/test/image/mocks/gl3d_scatter3d-connectgaps.json index 1b71425c9b3..691fd528dfd 100644 --- a/test/image/mocks/gl3d_scatter3d-connectgaps.json +++ b/test/image/mocks/gl3d_scatter3d-connectgaps.json @@ -8,6 +8,6 @@ "connectgaps": false }], "layout": { - "title": "connect gaps test", + "title": "connect gaps test" } } From e9ef5fe922c9c428272ff2860e0da4408ae71ab0 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 31 Mar 2016 16:00:47 -0700 Subject: [PATCH 3/7] add some more test cases for connect-gaps and kill duplicate line in the dashboard --- devtools/test_dashboard/test_gl3d.js | 3 +-- .../mocks/gl3d_scatter3d-connectgaps.json | 23 ++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index 08d7a3c1469..7ae784ad2ea 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -35,9 +35,8 @@ 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['connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.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'); -plots['connectgaps'] = require('@mocks/gl3d_scatter3d-connectgaps.json'); plotButtons(plots, figDir); diff --git a/test/image/mocks/gl3d_scatter3d-connectgaps.json b/test/image/mocks/gl3d_scatter3d-connectgaps.json index 691fd528dfd..87442876cf1 100644 --- a/test/image/mocks/gl3d_scatter3d-connectgaps.json +++ b/test/image/mocks/gl3d_scatter3d-connectgaps.json @@ -2,12 +2,29 @@ "data": [{ "type": "scatter3d", "mode": "lines", - "x": [0, 1, 2, 3, 4, 5], + "x": [0, 0, null, null, 0, 0], "y": [0, 1, 2, 3, 4, 5], "z": [2, 1, null, null, 0, 3], - "connectgaps": false + "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" + "title": "connect gaps test", } } From cce8ba851ef8c2f058dd5abb8a357904116be2d4 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 31 Mar 2016 16:02:16 -0700 Subject: [PATCH 4/7] reuse connectgaps from scatter plots --- src/traces/scatter3d/attributes.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/traces/scatter3d/attributes.js b/src/traces/scatter3d/attributes.js index b2d174af344..d43fadce201 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -95,12 +95,7 @@ module.exports = { y: makeProjectionAttr('y'), z: makeProjectionAttr('z') }, - connectgaps: { - valType: 'boolean', - role: 'style', - dfl: false, - description: 'Connects gaps in data' - }, + connectgaps: scatterAttrs.connectgaps, line: { color: scatterLineAttrs.color, width: scatterLineAttrs.width, From 1b2072a8e294ba065810ed202e139e6bed3e9074 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 31 Mar 2016 16:04:09 -0700 Subject: [PATCH 5/7] only coerce connectgaps if scatter3d has lines --- src/traces/scatter3d/defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/scatter3d/defaults.js b/src/traces/scatter3d/defaults.js index 250060f82e0..bf4fc134f38 100644 --- a/src/traces/scatter3d/defaults.js +++ b/src/traces/scatter3d/defaults.js @@ -34,9 +34,9 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('mode'); - coerce('connectgaps'); if(subTypes.hasLines(traceOut)) { + coerce('connectgaps'); handleLineDefaults(traceIn, traceOut, defaultColor, coerce); } From 3535f8d82b0098d2b02bf7d821a82661ad19dc38 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 31 Mar 2016 16:22:30 -0700 Subject: [PATCH 6/7] fix trailing comma in json --- test/image/mocks/gl3d_scatter3d-connectgaps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/gl3d_scatter3d-connectgaps.json b/test/image/mocks/gl3d_scatter3d-connectgaps.json index 87442876cf1..484afddbcd6 100644 --- a/test/image/mocks/gl3d_scatter3d-connectgaps.json +++ b/test/image/mocks/gl3d_scatter3d-connectgaps.json @@ -25,6 +25,6 @@ "name": "gap in x" }], "layout": { - "title": "connect gaps test", + "title": "connect gaps test" } } From 1f2a68986fd1485946b0f9554b5b9e2e637596f9 Mon Sep 17 00:00:00 2001 From: mikolalysenko Date: Thu, 31 Mar 2016 16:57:28 -0700 Subject: [PATCH 7/7] update baseline image for connectgaps test case --- .../baselines/gl3d_scatter3d-connectgaps.png | Bin 25332 -> 33305 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/gl3d_scatter3d-connectgaps.png b/test/image/baselines/gl3d_scatter3d-connectgaps.png index 3a9ffda858e94b5f5a8d5f2cb772d462b2805ffc..a8c61187f565432cb7f25067b9887f1160a97621 100644 GIT binary patch literal 33305 zcmeFZWmr^e+c%Cdl!%moNOyw*&Irun z$9OovUlyP@3m6y-7)r8I+Fr&xjRdt6k66uKv~ka{%*b++jKl{D=_~2S7m#q9B^E?fapl>*3_J{M zV!m`6$Vi(`o%VIu_sr_V72VGgv-6)2M=W?Y+Lg{#In33&|B3=B2K{sCzsQLSsrj1l z)qq73^S>9#ox8?-AX0`q|G9#7$#NF$-Muzx@Z&N5dtviW{__PtUa|;Z16eJCaEtxt z`HDdysdoQrPcdg4#NlN?Yb>JhPjf7iExk|w)jZ3PE#?En_xt>r%>V7d9nze|wMYN- z=nmxQKcB>bxr8b}wyfAtW*G93fkv8YvfY4T6v2)GNAU8K34`8) zPI{9G=C|VPl@g{%1J>PA=%_!$40Q7Wxy1;^Ot$LTbf;h;r=ny;@zo z`Jo%c>5Sds`Cy>&`aq^~i-FVbfd}wYL10B#Wju=nDdu3@!7FIkZ!!o#zNPPS47@a$ zwk`U;YEFOo(Jaf?PjYOgA*L#A`WgoY5-roNpI4COE^J7`R8kW|VA*@x>c&dLM7Kp<2zSzvSd`k$9 zXOsz*{Us#M-f`R8d=>TEcfawl*W~8q#mP3ic}H}Dmb%!}av7uB>xEn1E+6sp)x>g- zU45#@uO(TW6rvw82A-z|a(amc_-`95Y?ZO!98H=88aXtc=$@Yi-g72qDJb zTB^)f$8vEi7e&#{94E?jd!BvE8Hj47w;0Nia+$Ho@4kaeL);jfy>$L@`*Pv7i3eIP zJMX=b*#&W;2E$$rA{IgS2Styf5tn-n3A>m3&CMCUdv%R|ZG;cu8$@Q_lSZE1%k5Fv zO*@sNYA%P}?7dGqY0Qri^w)nB4uQU$9ipFVeO1!1_vpOkuZSg0lCwxCmvZz01OJ$~ zb~%!JHDBWTn@W}_^z^r@y7%_?npMx{OQSf&i}|xAcF3GtqRPj|QlUijbP?r&7x{sa zdv!~p)E3CamSIC;1d%8*$nW?weN5B+Fuber(g4=LBS;__eq%3RL$Lz#=EUT->K@HA zji%$T{7RmloLJbpVXc&{bvS-|b9Bi2K`-tMCI2XA%;bA7=Jen(^E zLBa9n!Zyb+XmRoS?le~}CyZIV+Nb$D@{r6l2-2P|?FTEqPNK^$!d|YZy zR1^6Y7enudlq!)xG29uJaNio^xF1fkj5!}hA5eShP25+c`~Abwz;pgcT(c-5<{rnJ z8FV<6!~<48V}XkrDMK(FCNYFKllU{SY&QYZ?%?g!AoIa<%bujHRK_vn?W}!GrsQMp zmME1S`^3Yn92P~UE~
UgVr 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%0DP8pos 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

gscc)x3m+R)p(a%~lv&1-^KS@ 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%0A{S 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%0A8+b3!|(w) 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 G`2PW)54#}%