@@ -895,9 +895,9 @@ describe('@flaky Test select box and lasso per trace:', function() {
895
895
keys . forEach ( function ( k , j ) {
896
896
var msgFull = msg + 'selected pt ' + i + ' - ' + k + ' val' ;
897
897
898
- if ( typeof e [ j ] === 'number' ) {
898
+ if ( typeof p [ k ] === 'number' && typeof e [ j ] === 'number' ) {
899
899
expect ( p [ k ] ) . toBeCloseTo ( e [ j ] , 1 , msgFull ) ;
900
- } else if ( Array . isArray ( e [ j ] ) ) {
900
+ } else if ( Array . isArray ( p [ k ] ) && Array . isArray ( e [ j ] ) ) {
901
901
expect ( p [ k ] ) . toBeCloseToArray ( e [ j ] , 1 , msgFull ) ;
902
902
} else {
903
903
expect ( p [ k ] ) . toBe ( e [ j ] , msgFull ) ;
@@ -1151,11 +1151,23 @@ describe('@flaky Test select box and lasso per trace:', function() {
1151
1151
var assertRanges = makeAssertRanges ( 'geo' ) ;
1152
1152
var assertLassoPoints = makeAssertLassoPoints ( 'geo' ) ;
1153
1153
1154
+ function assertNodeOpacity ( exp ) {
1155
+ var traces = d3 . select ( gd ) . selectAll ( '.scatterlayer > .trace' ) ;
1156
+ expect ( traces . size ( ) ) . toBe ( Object . keys ( exp ) . length , 'correct # of trace <g>' ) ;
1157
+
1158
+ traces . each ( function ( _ , i ) {
1159
+ d3 . select ( this ) . selectAll ( 'path.point' ) . each ( function ( _ , j ) {
1160
+ expect ( Number ( this . style . opacity ) )
1161
+ . toBe ( exp [ i ] [ j ] , 'node opacity - trace ' + i + ' pt ' + j ) ;
1162
+ } ) ;
1163
+ } ) ;
1164
+ }
1165
+
1154
1166
var fig = {
1155
1167
data : [ {
1156
1168
type : 'scattergeo' ,
1157
- lon : [ 10 , 20 , 30 ] ,
1158
- lat : [ 10 , 20 , 30 ]
1169
+ lon : [ 10 , 20 , 30 , null ] ,
1170
+ lat : [ 10 , 20 , 30 , null ]
1159
1171
} , {
1160
1172
type : 'scattergeo' ,
1161
1173
lon : [ - 10 , - 20 , - 30 ] ,
@@ -1177,6 +1189,7 @@ describe('@flaky Test select box and lasso per trace:', function() {
1177
1189
function ( ) {
1178
1190
assertPoints ( [ [ 10 , 10 ] , [ 20 , 20 ] , [ - 10 , 10 ] , [ - 20 , 20 ] ] ) ;
1179
1191
assertSelectedPoints ( { 0 : [ 0 , 1 ] , 1 : [ 0 , 1 ] } ) ;
1192
+ assertNodeOpacity ( { 0 : [ 1 , 1 , 0.2 ] , 1 : [ 1 , 1 , 0.2 ] } ) ;
1180
1193
assertRanges ( [ [ - 28.13 , 61.88 ] , [ 28.13 , - 50.64 ] ] ) ;
1181
1194
} ,
1182
1195
null , BOXEVENTS , 'scattergeo select'
@@ -1191,13 +1204,33 @@ describe('@flaky Test select box and lasso per trace:', function() {
1191
1204
function ( ) {
1192
1205
assertPoints ( [ [ - 10 , 10 ] , [ - 20 , 20 ] , [ - 30 , 30 ] ] ) ;
1193
1206
assertSelectedPoints ( { 0 : [ ] , 1 : [ 0 , 1 , 2 ] } ) ;
1207
+ assertNodeOpacity ( { 0 : [ 0.2 , 0.2 , 0.2 ] , 1 : [ 1 , 1 , 1 ] } ) ;
1194
1208
assertLassoPoints ( [
1195
1209
[ - 56.25 , 61.88 ] , [ - 56.24 , 5.63 ] , [ 0 , 5.63 ] , [ 0 , 61.88 ] , [ - 56.25 , 61.88 ]
1196
1210
] ) ;
1197
1211
} ,
1198
1212
null , LASSOEVENTS , 'scattergeo lasso'
1199
1213
) ;
1200
1214
} )
1215
+ . then ( function ( ) {
1216
+ // some projection types can't handle BADNUM during c2p,
1217
+ // make they are skipped here
1218
+ return Plotly . relayout ( gd , 'geo.projection.type' , 'robinson' ) ;
1219
+ } )
1220
+ . then ( function ( ) {
1221
+ return _run (
1222
+ [ [ 300 , 200 ] , [ 300 , 300 ] , [ 400 , 300 ] , [ 400 , 200 ] , [ 300 , 200 ] ] ,
1223
+ function ( ) {
1224
+ assertPoints ( [ [ - 10 , 10 ] , [ - 20 , 20 ] , [ - 30 , 30 ] ] ) ;
1225
+ assertSelectedPoints ( { 0 : [ ] , 1 : [ 0 , 1 , 2 ] } ) ;
1226
+ assertNodeOpacity ( { 0 : [ 0.2 , 0.2 , 0.2 ] , 1 : [ 1 , 1 , 1 ] } ) ;
1227
+ assertLassoPoints ( [
1228
+ [ - 67.40 , 55.07 ] , [ - 56.33 , 4.968 ] , [ 0 , 4.968 ] , [ 0 , 55.07 ] , [ - 67.40 , 55.07 ]
1229
+ ] ) ;
1230
+ } ,
1231
+ null , LASSOEVENTS , 'scattergeo lasso (on robinson projection)'
1232
+ ) ;
1233
+ } )
1201
1234
. then ( function ( ) {
1202
1235
// make sure selection handlers don't get called in 'pan' dragmode
1203
1236
return Plotly . relayout ( gd , 'dragmode' , 'pan' ) ;
0 commit comments