1010
1111var createScatter = require ( 'regl-scatter2d' ) ;
1212var createLine = require ( 'regl-line2d' ) ;
13- var createErrorX = require ( 'regl-error2d' ) ;
14- var createErrorY = require ( 'regl-error2d' ) ;
13+ var createError = require ( 'regl-error2d' ) ;
1514var cluster = require ( 'point-cluster' ) ;
1615var arrayRange = require ( 'array-range' ) ;
1716var Text = require ( 'gl-text' ) ;
@@ -108,8 +107,7 @@ function calc(gd, trace) {
108107 if ( opts . fill && ! scene . fill2d ) scene . fill2d = true ;
109108 if ( opts . marker && ! scene . scatter2d ) scene . scatter2d = true ;
110109 if ( opts . line && ! scene . line2d ) scene . line2d = true ;
111- if ( opts . errorX && ! scene . errorX2d ) scene . errorX2d = true ;
112- if ( opts . errorY && ! scene . errorY2d ) scene . errorY2d = true ;
110+ if ( ( opts . errorX || opts . errorY ) && ! scene . error2d ) scene . error2d = true ;
113111 if ( opts . text && ! scene . glText ) scene . glText = true ;
114112
115113 // FIXME: organize it in a more appropriate manner, probably in sceneOptions
@@ -163,15 +161,12 @@ function sceneOptions(gd, subplot, trace, positions, x, y) {
163161 ) ;
164162 }
165163
166- var errors ;
167- if ( opts . errorX ) {
168- errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
164+ if ( opts . errorX || opts . errorY ) {
165+ var errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
166+
169167 if ( opts . errorX ) {
170168 Lib . extendFlat ( opts . errorX , errors . x ) ;
171169 }
172- }
173- if ( opts . errorY ) {
174- errors = convert . errorBarPositions ( gd , trace , positions , x , y ) ;
175170 if ( opts . errorY ) {
176171 Lib . extendFlat ( opts . errorY , errors . y ) ;
177172 }
@@ -227,8 +222,7 @@ function sceneUpdate(gd, subplot) {
227222 // regl- component stubs, initialized in dirty plot call
228223 fill2d : false ,
229224 scatter2d : false ,
230- errorX2d : false ,
231- errorY2d : false ,
225+ error2d : false ,
232226 line2d : false ,
233227 glText : false ,
234228 select2d : null
@@ -250,8 +244,7 @@ function sceneUpdate(gd, subplot) {
250244 if ( scene . fill2d ) scene . fill2d . update ( opts ) ;
251245 if ( scene . scatter2d ) scene . scatter2d . update ( opts ) ;
252246 if ( scene . line2d ) scene . line2d . update ( opts ) ;
253- if ( scene . errorX2d ) scene . errorX2d . update ( opts ) ;
254- if ( scene . errorY2d ) scene . errorY2d . update ( opts ) ;
247+ if ( scene . error2d ) scene . error2d . update ( opts . concat ( opts ) ) ;
255248 if ( scene . select2d ) scene . select2d . update ( opts ) ;
256249 if ( scene . glText ) {
257250 for ( var i = 0 ; i < scene . count ; i ++ ) {
@@ -264,8 +257,7 @@ function sceneUpdate(gd, subplot) {
264257 scene . draw = function draw ( ) {
265258 var count = scene . count ;
266259 var fill2d = scene . fill2d ;
267- var errorX2d = scene . errorX2d ;
268- var errorY2d = scene . errorY2d ;
260+ var error2d = scene . error2d ;
269261 var line2d = scene . line2d ;
270262 var scatter2d = scene . scatter2d ;
271263 var glText = scene . glText ;
@@ -280,11 +272,9 @@ function sceneUpdate(gd, subplot) {
280272 if ( line2d && scene . lineOptions [ i ] ) {
281273 line2d . draw ( i ) ;
282274 }
283- if ( errorX2d && scene . errorXOptions [ i ] ) {
284- errorX2d . draw ( i ) ;
285- }
286- if ( errorY2d && scene . errorYOptions [ i ] ) {
287- errorY2d . draw ( i ) ;
275+ if ( error2d ) {
276+ if ( scene . errorXOptions [ i ] ) error2d . draw ( i ) ;
277+ if ( scene . errorYOptions [ i ] ) error2d . draw ( i + count ) ;
288278 }
289279 if ( scatter2d && scene . markerOptions [ i ] && ( ! selectBatch || ! selectBatch [ i ] ) ) {
290280 scatter2d . draw ( i ) ;
@@ -306,8 +296,7 @@ function sceneUpdate(gd, subplot) {
306296 scene . destroy = function destroy ( ) {
307297 if ( scene . fill2d && scene . fill2d . destroy ) scene . fill2d . destroy ( ) ;
308298 if ( scene . scatter2d && scene . scatter2d . destroy ) scene . scatter2d . destroy ( ) ;
309- if ( scene . errorX2d && scene . errorX2d . destroy ) scene . errorX2d . destroy ( ) ;
310- if ( scene . errorY2d && scene . errorY2d . destroy ) scene . errorY2d . destroy ( ) ;
299+ if ( scene . error2d && scene . error2d . destroy ) scene . error2d . destroy ( ) ;
311300 if ( scene . line2d && scene . line2d . destroy ) scene . line2d . destroy ( ) ;
312301 if ( scene . select2d && scene . select2d . destroy ) scene . select2d . destroy ( ) ;
313302 if ( scene . glText ) {
@@ -381,11 +370,8 @@ function plot(gd, subplot, cdata) {
381370
382371 if ( scene . dirty ) {
383372 // make sure scenes are created
384- if ( scene . errorX2d === true ) {
385- scene . errorX2d = createErrorX ( regl ) ;
386- }
387- if ( scene . errorY2d === true ) {
388- scene . errorY2d = createErrorY ( regl ) ;
373+ if ( scene . error2d === true ) {
374+ scene . error2d = createError ( regl ) ;
389375 }
390376 if ( scene . line2d === true ) {
391377 scene . line2d = createLine ( regl ) ;
@@ -442,11 +428,9 @@ function plot(gd, subplot, cdata) {
442428 } ) ;
443429 scene . line2d . update ( scene . lineOptions ) ;
444430 }
445- if ( scene . errorX2d ) {
446- scene . errorX2d . update ( scene . errorXOptions ) ;
447- }
448- if ( scene . errorY2d ) {
449- scene . errorY2d . update ( scene . errorYOptions ) ;
431+ if ( scene . error2d ) {
432+ var errorBatch = ( scene . errorXOptions || [ ] ) . concat ( scene . errorYOptions || [ ] ) ;
433+ scene . error2d . update ( errorBatch ) ;
450434 }
451435 if ( scene . scatter2d ) {
452436 scene . scatter2d . update ( scene . markerOptions ) ;
@@ -685,11 +669,8 @@ function plot(gd, subplot, cdata) {
685669 if ( scene . line2d ) {
686670 scene . line2d . update ( vpRange ) ;
687671 }
688- if ( scene . errorX2d ) {
689- scene . errorX2d . update ( vpRange ) ;
690- }
691- if ( scene . errorY2d ) {
692- scene . errorY2d . update ( vpRange ) ;
672+ if ( scene . error2d ) {
673+ scene . error2d . update ( vpRange . concat ( vpRange ) ) ;
693674 }
694675 if ( scene . scatter2d ) {
695676 scene . scatter2d . update ( vpRange ) ;
0 commit comments