From 6034417555936def62cc3c0dd452eca5538dbeca Mon Sep 17 00:00:00 2001 From: etienne Date: Fri, 30 Mar 2018 16:39:54 -0400 Subject: [PATCH] fixes #2512 - skip over BADNUM lonlat in scattermapbox select --- src/traces/scattermapbox/select.js | 28 ++++++++++++++++------------ test/jasmine/tests/select_test.js | 4 ++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/traces/scattermapbox/select.js b/src/traces/scattermapbox/select.js index 4f6e151d6a9..ade2ea5ceeb 100644 --- a/src/traces/scattermapbox/select.js +++ b/src/traces/scattermapbox/select.js @@ -10,6 +10,7 @@ var Lib = require('../../lib'); var subtypes = require('../scatter/subtypes'); +var BADNUM = require('../../constants/numerical').BADNUM; module.exports = function selectPoints(searchInfo, polygon) { var cd = searchInfo.cd; @@ -29,18 +30,21 @@ module.exports = function selectPoints(searchInfo, polygon) { for(i = 0; i < cd.length; i++) { var di = cd[i]; var lonlat = di.lonlat; - var lonlat2 = [Lib.wrap180(lonlat[0]), lonlat[1]]; - var xy = [xa.c2p(lonlat2), ya.c2p(lonlat2)]; - - if(polygon.contains(xy)) { - selection.push({ - pointNumber: i, - lon: lonlat[0], - lat: lonlat[1] - }); - di.selected = 1; - } else { - di.selected = 0; + + if(lonlat[0] !== BADNUM) { + var lonlat2 = [Lib.wrap180(lonlat[0]), lonlat[1]]; + var xy = [xa.c2p(lonlat2), ya.c2p(lonlat2)]; + + if(polygon.contains(xy)) { + selection.push({ + pointNumber: i, + lon: lonlat[0], + lat: lonlat[1] + }); + di.selected = 1; + } else { + di.selected = 0; + } } } } diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 644a7d6a4c6..aef6ca104b3 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -777,6 +777,10 @@ describe('@flaky Test select box and lasso per trace:', function() { var assertSelectedPoints = makeAssertSelectedPoints(); var fig = Lib.extendDeep({}, require('@mocks/mapbox_bubbles-text')); + + fig.data[0].lon.push(null); + fig.data[0].lat.push(null); + fig.layout.dragmode = 'select'; fig.config = { mapboxAccessToken: require('@build/credentials.json').MAPBOX_ACCESS_TOKEN