1010
1111var createScatter = require ( 'regl-scatter2d' ) ;
1212var createLine = require ( 'regl-line2d' ) ;
13- var createError = require ( 'regl-error2d' ) ;
13+ var createErrorX = require ( 'regl-error2d' ) ;
14+ var createErrorY = require ( 'regl-error2d' ) ;
1415var cluster = require ( 'point-cluster' ) ;
1516var arrayRange = require ( 'array-range' ) ;
1617var Text = require ( 'gl-text' ) ;
@@ -107,7 +108,8 @@ function calc(gd, trace) {
107108 if ( opts . fill && ! scene . fill2d ) scene . fill2d = true ;
108109 if ( opts . marker && ! scene . scatter2d ) scene . scatter2d = true ;
109110 if ( opts . line && ! scene . line2d ) scene . line2d = true ;
110- if ( ( opts . errorX || opts . errorY ) && ! scene . error2d ) scene . error2d = true ;
111+ if ( opts . errorX && ! scene . errorX2d ) scene . errorX2d = true ;
112+ if ( opts . errorY && ! scene . errorY2d ) scene . errorY2d = true ;
111113 if ( opts . text && ! scene . glText ) scene . glText = true ;
112114
113115 // FIXME: organize it in a more appropriate manner, probably in sceneOptions
@@ -161,12 +163,15 @@ function sceneOptions(gd, subplot, trace, positions, x, y) {
161163 ) ;
162164 }
163165
164- if ( opts . errorX || opts . errorY ) {
165- var errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
166-
166+ var errors ;
167+ if ( opts . errorX ) {
168+ errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
167169 if ( opts . errorX ) {
168170 Lib . extendFlat ( opts . errorX , errors . x ) ;
169171 }
172+ }
173+ if ( opts . errorY ) {
174+ errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
170175 if ( opts . errorY ) {
171176 Lib . extendFlat ( opts . errorY , errors . y ) ;
172177 }
@@ -222,7 +227,8 @@ function sceneUpdate(gd, subplot) {
222227 // regl- component stubs, initialized in dirty plot call
223228 fill2d : false ,
224229 scatter2d : false ,
225- error2d : false ,
230+ errorX2d : false ,
231+ errorY2d : false ,
226232 line2d : false ,
227233 glText : false ,
228234 select2d : null
@@ -244,7 +250,8 @@ function sceneUpdate(gd, subplot) {
244250 if ( scene . fill2d ) scene . fill2d . update ( opts ) ;
245251 if ( scene . scatter2d ) scene . scatter2d . update ( opts ) ;
246252 if ( scene . line2d ) scene . line2d . update ( opts ) ;
247- if ( scene . error2d ) scene . error2d . update ( opts . concat ( opts ) ) ;
253+ if ( scene . errorX2d ) scene . errorX2d . update ( opts ) ;
254+ if ( scene . errorY2d ) scene . errorY2d . update ( opts ) ;
248255 if ( scene . select2d ) scene . select2d . update ( opts ) ;
249256 if ( scene . glText ) {
250257 for ( var i = 0 ; i < scene . count ; i ++ ) {
@@ -257,7 +264,8 @@ function sceneUpdate(gd, subplot) {
257264 scene . draw = function draw ( ) {
258265 var count = scene . count ;
259266 var fill2d = scene . fill2d ;
260- var error2d = scene . error2d ;
267+ var errorX2d = scene . errorX2d ;
268+ var errorY2d = scene . errorY2d ;
261269 var line2d = scene . line2d ;
262270 var scatter2d = scene . scatter2d ;
263271 var glText = scene . glText ;
@@ -272,9 +280,11 @@ function sceneUpdate(gd, subplot) {
272280 if ( line2d && scene . lineOptions [ i ] ) {
273281 line2d . draw ( i ) ;
274282 }
275- if ( error2d ) {
276- if ( scene . errorXOptions [ i ] ) error2d . draw ( i ) ;
277- if ( scene . errorYOptions [ i ] ) error2d . draw ( i + count ) ;
283+ if ( errorX2d && scene . errorXOptions [ i ] ) {
284+ errorX2d . draw ( i ) ;
285+ }
286+ if ( errorY2d && scene . errorYOptions [ i ] ) {
287+ errorY2d . draw ( i ) ;
278288 }
279289 if ( scatter2d && scene . markerOptions [ i ] && ( ! selectBatch || ! selectBatch [ i ] ) ) {
280290 scatter2d . draw ( i ) ;
@@ -296,7 +306,8 @@ function sceneUpdate(gd, subplot) {
296306 scene . destroy = function destroy ( ) {
297307 if ( scene . fill2d && scene . fill2d . destroy ) scene . fill2d . destroy ( ) ;
298308 if ( scene . scatter2d && scene . scatter2d . destroy ) scene . scatter2d . destroy ( ) ;
299- if ( scene . error2d && scene . error2d . destroy ) scene . error2d . destroy ( ) ;
309+ if ( scene . errorX2d && scene . errorX2d . destroy ) scene . errorX2d . destroy ( ) ;
310+ if ( scene . errorY2d && scene . errorY2d . destroy ) scene . errorY2d . destroy ( ) ;
300311 if ( scene . line2d && scene . line2d . destroy ) scene . line2d . destroy ( ) ;
301312 if ( scene . select2d && scene . select2d . destroy ) scene . select2d . destroy ( ) ;
302313 if ( scene . glText ) {
@@ -370,8 +381,11 @@ function plot(gd, subplot, cdata) {
370381
371382 if ( scene . dirty ) {
372383 // make sure scenes are created
373- if ( scene . error2d === true ) {
374- scene . error2d = createError ( regl ) ;
384+ if ( scene . errorX2d === true ) {
385+ scene . errorX2d = createErrorX ( regl ) ;
386+ }
387+ if ( scene . errorY2d === true ) {
388+ scene . errorY2d = createErrorY ( regl ) ;
375389 }
376390 if ( scene . line2d === true ) {
377391 scene . line2d = createLine ( regl ) ;
@@ -428,9 +442,11 @@ function plot(gd, subplot, cdata) {
428442 } ) ;
429443 scene . line2d . update ( scene . lineOptions ) ;
430444 }
431- if ( scene . error2d ) {
432- var errorBatch = ( scene . errorXOptions || [ ] ) . concat ( scene . errorYOptions || [ ] ) ;
433- scene . error2d . update ( errorBatch ) ;
445+ if ( scene . errorX2d ) {
446+ scene . errorX2d . update ( scene . errorXOptions ) ;
447+ }
448+ if ( scene . errorY2d ) {
449+ scene . errorY2d . update ( scene . errorYOptions ) ;
434450 }
435451 if ( scene . scatter2d ) {
436452 scene . scatter2d . update ( scene . markerOptions ) ;
@@ -669,8 +685,11 @@ function plot(gd, subplot, cdata) {
669685 if ( scene . line2d ) {
670686 scene . line2d . update ( vpRange ) ;
671687 }
672- if ( scene . error2d ) {
673- scene . error2d . update ( vpRange . concat ( vpRange ) ) ;
688+ if ( scene . errorX2d ) {
689+ scene . errorX2d . update ( vpRange ) ;
690+ }
691+ if ( scene . errorY2d ) {
692+ scene . errorY2d . update ( vpRange ) ;
674693 }
675694 if ( scene . scatter2d ) {
676695 scene . scatter2d . update ( vpRange ) ;
0 commit comments