From 6397ab3485fa873167014c92bf623f26715a3160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 29 Nov 2019 14:54:18 -0500 Subject: [PATCH 01/12] add locationmode 'geojson-id' to scattergeo and choropleth traces - move extractTraceFeature & fetchTraceGeoData logic from choroplethmapbox/convert.js -> geo_location_utils.js - move feature2polygons from choropleth/plot -> geo_location_utils.js - use lib/loggers instead of Lib in geo_location_utils --- src/lib/geo_location_utils.js | 269 +++++++++++++++++++- src/plots/geo/geo.js | 47 ++-- src/plots/mapbox/mapbox.js | 42 +-- src/traces/choropleth/attributes.js | 13 + src/traces/choropleth/defaults.js | 8 +- src/traces/choropleth/event_data.js | 3 +- src/traces/choropleth/plot.js | 136 ++-------- src/traces/choroplethmapbox/convert.js | 121 ++------- src/traces/scattergeo/attributes.js | 24 +- src/traces/scattergeo/defaults.js | 42 ++- src/traces/scattergeo/event_data.js | 8 +- src/traces/scattergeo/plot.js | 30 ++- test/image/baselines/geo_custom-geojson.png | Bin 0 -> 44983 bytes test/image/mocks/geo_custom-geojson.json | 88 +++++++ test/jasmine/tests/choropleth_test.js | 52 +++- test/jasmine/tests/choroplethmapbox_test.js | 21 +- test/jasmine/tests/scattergeo_test.js | 63 ++++- 17 files changed, 622 insertions(+), 345 deletions(-) create mode 100644 test/image/baselines/geo_custom-geojson.png create mode 100644 test/image/mocks/geo_custom-geojson.json diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 9790c3c7dee..d72577de8a7 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -8,15 +8,22 @@ 'use strict'; +var d3 = require('d3'); var countryRegex = require('country-regex'); -var Lib = require('../lib'); +var turfArea = require('@turf/area'); +var turfCentroid = require('@turf/centroid'); + +var identity = require('./identity'); +var loggers = require('./loggers'); +var isPlainObject = require('./is_plain_object'); +var polygon = require('./polygon'); // make list of all country iso3 ids from at runtime var countryIds = Object.keys(countryRegex); var locationmodeToIdFinder = { - 'ISO-3': Lib.identity, - 'USA-states': Lib.identity, + 'ISO-3': identity, + 'USA-states': identity, 'country names': countryNameToISO3 }; @@ -28,7 +35,7 @@ function countryNameToISO3(countryName) { if(regex.test(countryName.trim().toLowerCase())) return iso3; } - Lib.log('Unrecognized country name: ' + countryName + '.'); + loggers.log('Unrecognized country name: ' + countryName + '.'); return false; } @@ -64,7 +71,7 @@ function locationToFeature(locationmode, location, features) { if(f.id === locationId) return f; } - Lib.log([ + loggers.log([ 'Location with id', locationId, 'does not have a matching topojson feature at this resolution.' ].join(' ')); @@ -73,6 +80,256 @@ function locationToFeature(locationmode, location, features) { return false; } +function feature2polygons(feature) { + var geometry = feature.geometry; + var coords = geometry.coordinates; + var loc = feature.id; + + var polygons = []; + var appendPolygon, j, k, m; + + function doesCrossAntiMerdian(pts) { + for(var l = 0; l < pts.length - 1; l++) { + if(pts[l][0] > 0 && pts[l + 1][0] < 0) return l; + } + return null; + } + + if(loc === 'RUS' || loc === 'FJI') { + // Russia and Fiji have landmasses that cross the antimeridian, + // we need to add +360 to their longitude coordinates, so that + // polygon 'contains' doesn't get confused when crossing the antimeridian. + // + // Note that other countries have polygons on either side of the antimeridian + // (e.g. some Aleutian island for the USA), but those don't confuse + // the 'contains' method; these are skipped here. + appendPolygon = function(_pts) { + var pts; + + if(doesCrossAntiMerdian(_pts) === null) { + pts = _pts; + } else { + pts = new Array(_pts.length); + for(m = 0; m < _pts.length; m++) { + // do not mutate calcdata[i][j].geojson !! + pts[m] = [ + _pts[m][0] < 0 ? _pts[m][0] + 360 : _pts[m][0], + _pts[m][1] + ]; + } + } + + polygons.push(polygon.tester(pts)); + }; + } else if(loc === 'ATA') { + // Antarctica has a landmass that wraps around every longitudes which + // confuses the 'contains' methods. + appendPolygon = function(pts) { + var crossAntiMeridianIndex = doesCrossAntiMerdian(pts); + + // polygon that do not cross anti-meridian need no special handling + if(crossAntiMeridianIndex === null) { + return polygons.push(polygon.tester(pts)); + } + + // stitch polygon by adding pt over South Pole, + // so that it covers the projected region covers all latitudes + // + // Note that the algorithm below only works for polygons that + // start and end on longitude -180 (like the ones built by + // https://github.com/etpinard/sane-topojson). + var stitch = new Array(pts.length + 1); + var si = 0; + + for(m = 0; m < pts.length; m++) { + if(m > crossAntiMeridianIndex) { + stitch[si++] = [pts[m][0] + 360, pts[m][1]]; + } else if(m === crossAntiMeridianIndex) { + stitch[si++] = pts[m]; + stitch[si++] = [pts[m][0], -90]; + } else { + stitch[si++] = pts[m]; + } + } + + // polygon.tester by default appends pt[0] to the points list, + // we must remove it here, to avoid a jump in longitude from 180 to -180, + // that would confuse the 'contains' method + var tester = polygon.tester(stitch); + tester.pts.pop(); + polygons.push(tester); + }; + } else { + // otherwise using same array ref is fine + appendPolygon = function(pts) { + polygons.push(polygon.tester(pts)); + }; + } + + switch(geometry.type) { + case 'MultiPolygon': + for(j = 0; j < coords.length; j++) { + for(k = 0; k < coords[j].length; k++) { + appendPolygon(coords[j][k]); + } + } + break; + case 'Polygon': + for(j = 0; j < coords.length; j++) { + appendPolygon(coords[j]); + } + break; + } + + return polygons; +} + +function extractTraceFeature(calcTrace) { + var trace = calcTrace[0].trace; + + var geojsonIn = typeof trace.geojson === 'string' ? + (window.PlotlyGeoAssets || {})[trace.geojson] : + trace.geojson; + + // This should not happen, but just in case something goes + // really wrong when fetching the GeoJSON + if(!isPlainObject(geojsonIn)) { + loggers.error('Oops ... something when wrong when fetching ' + trace.geojson); + return false; + } + + var lookup = {}; + var featuresOut = []; + var i; + + for(i = 0; i < trace._length; i++) { + var cdi = calcTrace[i]; + if(cdi.loc) lookup[cdi.loc] = cdi; + } + + function appendFeature(fIn) { + var cdi = lookup[fIn.id]; + + if(cdi) { + var geometry = fIn.geometry; + + if(geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') { + var fOut = { + type: 'Feature', + geometry: geometry, + properties: {} + }; + + // Compute centroid, add it to the properties + fOut.properties.ct = findCentroid(fOut); + + // Mutate in in/out features into calcdata + cdi.fIn = fIn; + cdi.fOut = fOut; + + featuresOut.push(fOut); + } else { + loggers.log([ + 'Location with id', cdi.loc, 'does not have a valid GeoJSON geometry,', + 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' + ].join(' ')); + } + } + + // remove key from lookup, so that we can track (if any) + // the locations that did not have a corresponding GeoJSON feature + delete lookup[fIn.id]; + } + + switch(geojsonIn.type) { + case 'FeatureCollection': + var featuresIn = geojsonIn.features; + for(i = 0; i < featuresIn.length; i++) { + appendFeature(featuresIn[i]); + } + break; + case 'Feature': + appendFeature(geojsonIn); + break; + default: + loggers.warn([ + 'Invalid GeoJSON type', (geojsonIn.type || 'none') + ',', + 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' + ].join(' ')); + return false; + } + + for(var loc in lookup) { + loggers.log('Location with id ' + loc + ' does not have a matching feature'); + } + + return featuresOut; +} + +// TODO this find the centroid of the polygon of maxArea +// (just like we currently do for geo choropleth polygons), +// maybe instead it would make more sense to compute the centroid +// of each polygon and consider those on hover/select +function findCentroid(feature) { + var geometry = feature.geometry; + var poly; + + if(geometry.type === 'MultiPolygon') { + var coords = geometry.coordinates; + var maxArea = 0; + + for(var i = 0; i < coords.length; i++) { + var polyi = {type: 'Polygon', coordinates: coords[i]}; + var area = turfArea.default(polyi); + if(area > maxArea) { + maxArea = area; + poly = polyi; + } + } + } else { + poly = geometry; + } + + return turfCentroid.default(poly).geometry.coordinates; +} + +function fetchTraceGeoData(calcData) { + var PlotlyGeoAssets = window.PlotlyGeoAssets || {}; + var promises = []; + + function fetch(url) { + return new Promise(function(resolve, reject) { + d3.json(url, function(err, d) { + if(err) { + delete PlotlyGeoAssets[url]; + var msg = err.status === 404 ? + ('GeoJSON at URL "' + url + '" does not exist.') : + ('Unexpected error while fetching from ' + url); + return reject(new Error(msg)); + } + + PlotlyGeoAssets[url] = d; + resolve(d); + }); + }); + } + + for(var i = 0; i < calcData.length; i++) { + var trace = calcData[i][0].trace; + var url = trace.geojson; + + if(typeof url === 'string' && !PlotlyGeoAssets[url]) { + PlotlyGeoAssets[url] = 'pending'; + promises.push(fetch(url)); + } + } + + return promises; +} + module.exports = { - locationToFeature: locationToFeature + locationToFeature: locationToFeature, + feature2polygons: feature2polygons, + extractTraceFeature: extractTraceFeature, + fetchTraceGeoData: fetchTraceGeoData }; diff --git a/src/plots/geo/geo.js b/src/plots/geo/geo.js index 25f84dc5a8d..6ebb8a8f815 100644 --- a/src/plots/geo/geo.js +++ b/src/plots/geo/geo.js @@ -26,6 +26,7 @@ var selectOnClick = require('../cartesian/select').selectOnClick; var createGeoZoom = require('./zoom'); var constants = require('./constants'); +var geoUtils = require('../../lib/geo_location_utils'); var topojsonUtils = require('../../lib/topojson_utils'); var topojsonFeature = require('topojson-client').feature; @@ -72,6 +73,7 @@ module.exports = function createGeo(opts) { proto.plot = function(geoCalcData, fullLayout, promises) { var _this = this; var geoLayout = fullLayout[this.id]; + var geoPromises = []; var needsTopojson = false; for(var k in constants.layerNameToAdjective) { @@ -86,35 +88,34 @@ proto.plot = function(geoCalcData, fullLayout, promises) { break; } } - if(!needsTopojson) { - return _this.update(geoCalcData, fullLayout); - } - var topojsonNameNew = topojsonUtils.getTopojsonName(geoLayout); + if(needsTopojson) { + var topojsonNameNew = topojsonUtils.getTopojsonName(geoLayout); + if(_this.topojson === null || topojsonNameNew !== _this.topojsonName) { + _this.topojsonName = topojsonNameNew; + + if(PlotlyGeoAssets.topojson[_this.topojsonName] === undefined) { + geoPromises.push(_this.fetchTopojson()); + } + } + } - if(_this.topojson === null || topojsonNameNew !== _this.topojsonName) { - _this.topojsonName = topojsonNameNew; + geoPromises = geoPromises.concat(geoUtils.fetchTraceGeoData(geoCalcData)); - if(PlotlyGeoAssets.topojson[_this.topojsonName] === undefined) { - promises.push(_this.fetchTopojson().then(function(topojson) { - PlotlyGeoAssets.topojson[_this.topojsonName] = topojson; - _this.topojson = topojson; - _this.update(geoCalcData, fullLayout); - })); - } else { + promises.push(new Promise(function(resolve, reject) { + Promise.all(geoPromises).then(function() { _this.topojson = PlotlyGeoAssets.topojson[_this.topojsonName]; _this.update(geoCalcData, fullLayout); - } - } else { - _this.update(geoCalcData, fullLayout); - } + resolve(); + }) + .catch(reject); + })); }; proto.fetchTopojson = function() { - var topojsonPath = topojsonUtils.getTopojsonPath( - this.topojsonURL, - this.topojsonName - ); + var _this = this; + var topojsonPath = topojsonUtils.getTopojsonPath(_this.topojsonURL, _this.topojsonName); + return new Promise(function(resolve, reject) { d3.json(topojsonPath, function(err, topojson) { if(err) { @@ -132,7 +133,9 @@ proto.fetchTopojson = function() { ].join(' '))); } } - resolve(topojson); + + PlotlyGeoAssets.topojson[_this.topojsonName] = topojson; + resolve(); }); }); }; diff --git a/src/plots/mapbox/mapbox.js b/src/plots/mapbox/mapbox.js index c8ab4b1e650..a435e17e38a 100644 --- a/src/plots/mapbox/mapbox.js +++ b/src/plots/mapbox/mapbox.js @@ -8,18 +8,17 @@ 'use strict'; -/* global PlotlyGeoAssets:false */ - var mapboxgl = require('mapbox-gl'); -var d3 = require('d3'); var Fx = require('../../components/fx'); var Lib = require('../../lib'); +var geoUtils = require('../../lib/geo_location_utils'); var Registry = require('../../registry'); var Axes = require('../cartesian/axes'); var dragElement = require('../../components/dragelement'); var prepSelect = require('../cartesian/select').prepSelect; var selectOnClick = require('../cartesian/select').selectOnClick; + var constants = require('./constants'); var createMapboxLayer = require('./layers'); @@ -130,7 +129,7 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) { map.once('load', resolve); })); - promises = promises.concat(self.fetchMapData(calcData, fullLayout)); + promises = promises.concat(geoUtils.fetchTraceGeoData(calcData)); Promise.all(promises).then(function() { self.fillBelowLookup(calcData, fullLayout); @@ -140,39 +139,6 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) { }).catch(reject); }; -proto.fetchMapData = function(calcData) { - var promises = []; - - function fetch(url) { - return new Promise(function(resolve, reject) { - d3.json(url, function(err, d) { - if(err) { - delete PlotlyGeoAssets[url]; - var msg = err.status === 404 ? - ('GeoJSON at URL "' + url + '" does not exist.') : - ('Unexpected error while fetching from ' + url); - return reject(new Error(msg)); - } - - PlotlyGeoAssets[url] = d; - resolve(d); - }); - }); - } - - for(var i = 0; i < calcData.length; i++) { - var trace = calcData[i][0].trace; - var url = trace.geojson; - - if(typeof url === 'string' && !PlotlyGeoAssets[url]) { - PlotlyGeoAssets[url] = 'pending'; - promises.push(fetch(url)); - } - } - - return promises; -}; - proto.updateMap = function(calcData, fullLayout, resolve, reject) { var self = this; var map = self.map; @@ -196,7 +162,7 @@ proto.updateMap = function(calcData, fullLayout, resolve, reject) { })); } - promises = promises.concat(self.fetchMapData(calcData, fullLayout)); + promises = promises.concat(geoUtils.fetchTraceGeoData(calcData)); Promise.all(promises).then(function() { self.fillBelowLookup(calcData, fullLayout); diff --git a/src/traces/choropleth/attributes.js b/src/traces/choropleth/attributes.js index 413d2438fc5..027bc415776 100644 --- a/src/traces/choropleth/attributes.js +++ b/src/traces/choropleth/attributes.js @@ -33,6 +33,19 @@ module.exports = extendFlat({ editType: 'calc', description: 'Sets the color values.' }, + geojson: extendFlat({}, scatterGeoAttrs.geojson, { + description: [ + 'Sets optional GeoJSON data associated with this trace.', + 'If not given, the features on the base map are used.', + + 'Can be set as a valid GeoJSON object or as URL string', + 'Note that we only accept GeoJSON of type *FeatureCollection* and *Feature*', + 'with geometries of type *Polygon* and *MultiPolygon*.' + + // TODO add topojson support with additional 'topojsonobject' attr? + // https://github.com/topojson/topojson-specification/blob/master/README.md + ].join(' ') + }), text: extendFlat({}, scatterGeoAttrs.text, { description: 'Sets the text elements associated with each location.' }), diff --git a/src/traces/choropleth/defaults.js b/src/traces/choropleth/defaults.js index 71a7b39ca7d..7c50fb51ca4 100644 --- a/src/traces/choropleth/defaults.js +++ b/src/traces/choropleth/defaults.js @@ -6,7 +6,6 @@ * LICENSE file in the root directory of this source tree. */ - 'use strict'; var Lib = require('../../lib'); @@ -28,7 +27,12 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout traceOut._length = Math.min(locations.length, z.length); - coerce('locationmode'); + var geojson = coerce('geojson'); + var locationmodeDflt; + if((typeof geojson === 'string' && geojson !== '') || Lib.isPlainObject(geojson)) { + locationmodeDflt = 'geojson-id'; + } + coerce('locationmode', locationmodeDflt); coerce('text'); coerce('hovertext'); diff --git a/src/traces/choropleth/event_data.js b/src/traces/choropleth/event_data.js index b672186b1ee..a5b037ddbd7 100644 --- a/src/traces/choropleth/event_data.js +++ b/src/traces/choropleth/event_data.js @@ -12,8 +12,9 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.location = pt.location; out.z = pt.z; + // include feature properties from input geojson var cdi = cd[pointNumber]; - if(cdi.fIn) { + if(cdi.fIn && cdi.fIn.properties) { out.properties = cdi.fIn.properties; } diff --git a/src/traces/choropleth/plot.js b/src/traces/choropleth/plot.js index dfb2762fdef..3ca98a92450 100644 --- a/src/traces/choropleth/plot.js +++ b/src/traces/choropleth/plot.js @@ -11,10 +11,8 @@ var d3 = require('d3'); var Lib = require('../../lib'); -var polygon = require('../../lib/polygon'); - +var geoUtils = require('../../lib/geo_location_utils'); var getTopojsonFeatures = require('../../lib/topojson_utils').getTopojsonFeatures; -var locationToFeature = require('../../lib/geo_location_utils').locationToFeature; var style = require('./style').style; function plot(gd, geo, calcData) { @@ -41,129 +39,29 @@ function plot(gd, geo, calcData) { function calcGeoJSON(calcTrace, topojson) { var trace = calcTrace[0].trace; - var len = calcTrace.length; - var features = getTopojsonFeatures(trace, topojson); + var locationmode = trace.locationmode; + var len = trace._length; + + var features = locationmode === 'geojson-id' ? + geoUtils.extractTraceFeature(calcTrace) : + getTopojsonFeatures(trace, topojson); for(var i = 0; i < len; i++) { var calcPt = calcTrace[i]; - var feature = locationToFeature(trace.locationmode, calcPt.loc, features); - - if(!feature) { + var feature = locationmode === 'geojson-id' ? + calcPt.fOut : + geoUtils.locationToFeature(locationmode, calcPt.loc, features); + + if(feature) { + calcPt.geojson = feature; + calcPt.ct = feature.properties.ct; + calcPt._polygons = geoUtils.feature2polygons(feature); + } else { calcPt.geojson = null; - continue; } - - calcPt.geojson = feature; - calcPt.ct = feature.properties.ct; - calcPt._polygons = feature2polygons(feature); } } -function feature2polygons(feature) { - var geometry = feature.geometry; - var coords = geometry.coordinates; - var loc = feature.id; - - var polygons = []; - var appendPolygon, j, k, m; - - function doesCrossAntiMerdian(pts) { - for(var l = 0; l < pts.length - 1; l++) { - if(pts[l][0] > 0 && pts[l + 1][0] < 0) return l; - } - return null; - } - - if(loc === 'RUS' || loc === 'FJI') { - // Russia and Fiji have landmasses that cross the antimeridian, - // we need to add +360 to their longitude coordinates, so that - // polygon 'contains' doesn't get confused when crossing the antimeridian. - // - // Note that other countries have polygons on either side of the antimeridian - // (e.g. some Aleutian island for the USA), but those don't confuse - // the 'contains' method; these are skipped here. - appendPolygon = function(_pts) { - var pts; - - if(doesCrossAntiMerdian(_pts) === null) { - pts = _pts; - } else { - pts = new Array(_pts.length); - for(m = 0; m < _pts.length; m++) { - // do nut mutate calcdata[i][j].geojson !! - pts[m] = [ - _pts[m][0] < 0 ? _pts[m][0] + 360 : _pts[m][0], - _pts[m][1] - ]; - } - } - - polygons.push(polygon.tester(pts)); - }; - } else if(loc === 'ATA') { - // Antarctica has a landmass that wraps around every longitudes which - // confuses the 'contains' methods. - appendPolygon = function(pts) { - var crossAntiMeridianIndex = doesCrossAntiMerdian(pts); - - // polygon that do not cross anti-meridian need no special handling - if(crossAntiMeridianIndex === null) { - return polygons.push(polygon.tester(pts)); - } - - // stitch polygon by adding pt over South Pole, - // so that it covers the projected region covers all latitudes - // - // Note that the algorithm below only works for polygons that - // start and end on longitude -180 (like the ones built by - // https://github.com/etpinard/sane-topojson). - var stitch = new Array(pts.length + 1); - var si = 0; - - for(m = 0; m < pts.length; m++) { - if(m > crossAntiMeridianIndex) { - stitch[si++] = [pts[m][0] + 360, pts[m][1]]; - } else if(m === crossAntiMeridianIndex) { - stitch[si++] = pts[m]; - stitch[si++] = [pts[m][0], -90]; - } else { - stitch[si++] = pts[m]; - } - } - - // polygon.tester by default appends pt[0] to the points list, - // we must remove it here, to avoid a jump in longitude from 180 to -180, - // that would confuse the 'contains' method - var tester = polygon.tester(stitch); - tester.pts.pop(); - polygons.push(tester); - }; - } else { - // otherwise using same array ref is fine - appendPolygon = function(pts) { - polygons.push(polygon.tester(pts)); - }; - } - - switch(geometry.type) { - case 'MultiPolygon': - for(j = 0; j < coords.length; j++) { - for(k = 0; k < coords[j].length; k++) { - appendPolygon(coords[j][k]); - } - } - break; - case 'Polygon': - for(j = 0; j < coords.length; j++) { - appendPolygon(coords[j]); - } - break; - } - - return polygons; -} - module.exports = { - plot: plot, - feature2polygons: feature2polygons + plot: plot }; diff --git a/src/traces/choroplethmapbox/convert.js b/src/traces/choroplethmapbox/convert.js index 8c1b00fb566..01e21a123aa 100644 --- a/src/traces/choroplethmapbox/convert.js +++ b/src/traces/choroplethmapbox/convert.js @@ -9,15 +9,13 @@ 'use strict'; var isNumeric = require('fast-isnumeric'); -var turfArea = require('@turf/area'); -var turfCentroid = require('@turf/centroid'); var Lib = require('../../lib'); var Colorscale = require('../../components/colorscale'); var Drawing = require('../../components/drawing'); var makeBlank = require('../../lib/geojson_utils').makeBlank; -var feature2polygons = require('../choropleth/plot').feature2polygons; +var geoUtils = require('../../lib/geo_location_utils'); /* N.B. * @@ -52,25 +50,9 @@ function convert(calcTrace) { if(!isVisible) return opts; - var geojsonIn = typeof trace.geojson === 'string' ? - (window.PlotlyGeoAssets || {})[trace.geojson] : - trace.geojson; + var features = geoUtils.extractTraceFeature(calcTrace); - // This should not happen, but just in case something goes - // really wrong when fetching the GeoJSON - if(!Lib.isPlainObject(geojsonIn)) { - Lib.error('Oops ... something when wrong when fetching ' + trace.geojson); - return opts; - } - - var lookup = {}; - var featuresOut = []; - var i; - - for(i = 0; i < calcTrace.length; i++) { - var cdi = calcTrace[i]; - if(cdi.loc) lookup[cdi.loc] = cdi; - } + if(!features) return opts; var sclFunc = Colorscale.makeColorScaleFuncFromTrace(trace); var marker = trace.marker; @@ -94,63 +76,19 @@ function convert(calcTrace) { lineWidthFn = function(d) { return d.mlw; }; } - function appendFeature(fIn) { - var cdi = lookup[fIn.id]; - - if(cdi) { - var geometry = fIn.geometry; - - if(geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') { - var props = {fc: sclFunc(cdi.z)}; - - if(opacityFn) props.mo = opacityFn(cdi); - if(lineColorFn) props.mlc = lineColorFn(cdi); - if(lineWidthFn) props.mlw = lineWidthFn(cdi); - - var fOut = { - type: 'Feature', - geometry: geometry, - properties: props - }; - - cdi._polygons = feature2polygons(fOut); - cdi.ct = findCentroid(fOut); - cdi.fIn = fIn; - cdi.fOut = fOut; - featuresOut.push(fOut); - } else { - Lib.log([ - 'Location with id', cdi.loc, 'does not have a valid GeoJSON geometry,', - 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' - ].join(' ')); - } + for(var i = 0; i < calcTrace.length; i++) { + var cdi = calcTrace[i]; + var fOut = cdi.fOut; + + if(fOut) { + var props = fOut.properties; + props.fc = sclFunc(cdi.z); + if(opacityFn) props.mo = opacityFn(cdi); + if(lineColorFn) props.mlc = lineColorFn(cdi); + if(lineWidthFn) props.mlw = lineWidthFn(cdi); + cdi.ct = props.ct; + cdi._polygons = geoUtils.feature2polygons(fOut); } - - // remove key from lookup, so that we can track (if any) - // the locations that did not have a corresponding GeoJSON feature - delete lookup[fIn.id]; - } - - switch(geojsonIn.type) { - case 'FeatureCollection': - var featuresIn = geojsonIn.features; - for(i = 0; i < featuresIn.length; i++) { - appendFeature(featuresIn[i]); - } - break; - case 'Feature': - appendFeature(geojsonIn); - break; - default: - Lib.warn([ - 'Invalid GeoJSON type', (geojsonIn.type || 'none') + ',', - 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' - ].join(' ')); - return opts; - } - - for(var loc in lookup) { - Lib.log('Location with id ' + loc + ' does not have a matching feature'); } var opacitySetting = opacityFn ? @@ -175,7 +113,7 @@ function convert(calcTrace) { fill.layout.visibility = 'visible'; line.layout.visibility = 'visible'; - opts.geojson = {type: 'FeatureCollection', features: featuresOut}; + opts.geojson = {type: 'FeatureCollection', features: features}; convertOnSelect(calcTrace); @@ -210,33 +148,6 @@ function convertOnSelect(calcTrace) { return opts; } -// TODO this find the centroid of the polygon of maxArea -// (just like we currently do for geo choropleth polygons), -// maybe instead it would make more sense to compute the centroid -// of each polygon and consider those on hover/select -function findCentroid(feature) { - var geometry = feature.geometry; - var poly; - - if(geometry.type === 'MultiPolygon') { - var coords = geometry.coordinates; - var maxArea = 0; - - for(var i = 0; i < coords.length; i++) { - var polyi = {type: 'Polygon', coordinates: coords[i]}; - var area = turfArea.default(polyi); - if(area > maxArea) { - maxArea = area; - poly = polyi; - } - } - } else { - poly = geometry; - } - - return turfCentroid.default(poly).geometry.coordinates; -} - module.exports = { convert: convert, convertOnSelect: convertOnSelect diff --git a/src/traces/scattergeo/attributes.js b/src/traces/scattergeo/attributes.js index 6c2cfa54a88..7d380497243 100644 --- a/src/traces/scattergeo/attributes.js +++ b/src/traces/scattergeo/attributes.js @@ -42,12 +42,32 @@ module.exports = overrideAll({ }, locationmode: { valType: 'enumerated', - values: ['ISO-3', 'USA-states', 'country names'], + values: ['ISO-3', 'USA-states', 'country names', 'geojson-id'], role: 'info', dflt: 'ISO-3', description: [ 'Determines the set of locations used to match entries in `locations`', - 'to regions on the map.' + 'to regions on the map.', + 'Values *ISO-3*, *USA-states*, *country names* correspond to features on', + 'the base map and value *geojson-id* corresponds to features from a custom', + 'GeoJSON linked to the `geojson` attribute.' + ].join(' ') + }, + + geojson: { + valType: 'any', + role: 'info', + editType: 'calc', + description: [ + 'Sets optional GeoJSON data associated with this trace.', + 'If not given, the features on the base map are used when `locations` is set.', + + 'Can be set as a valid GeoJSON object or as URL string', + 'Note that we only accept GeoJSON of type *FeatureCollection* and *Feature*', + 'with geometries of type *Polygon* and *MultiPolygon*.' + + // TODO add topojson support with additional 'topojsonobject' attr? + // https://github.com/topojson/topojson-specification/blob/master/README.md ].join(' ') }, diff --git a/src/traces/scattergeo/defaults.js b/src/traces/scattergeo/defaults.js index f4c8c8fad4f..ba38af173c1 100644 --- a/src/traces/scattergeo/defaults.js +++ b/src/traces/scattergeo/defaults.js @@ -6,7 +6,6 @@ * LICENSE file in the root directory of this source tree. */ - 'use strict'; var Lib = require('../../lib'); @@ -19,18 +18,35 @@ var handleFillColorDefaults = require('../scatter/fillcolor_defaults'); var attributes = require('./attributes'); - module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) { function coerce(attr, dflt) { return Lib.coerce(traceIn, traceOut, attributes, attr, dflt); } - var len = handleLonLatLocDefaults(traceIn, traceOut, coerce); + var locations = coerce('locations'); + var len; + + if(locations && locations.length) { + var geojson = coerce('geojson'); + var locationmodeDflt; + if((typeof geojson === 'string' && geojson !== '') || Lib.isPlainObject(geojson)) { + locationmodeDflt = 'geojson-id'; + } + coerce('locationmode', locationmodeDflt); + len = locations.length; + } else { + var lon = coerce('lon') || []; + var lat = coerce('lat') || []; + len = Math.min(lon.length, lat.length); + } + if(!len) { traceOut.visible = false; return; } + traceOut._length = len; + coerce('text'); coerce('hovertext'); coerce('hovertemplate'); @@ -57,23 +73,3 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; - -function handleLonLatLocDefaults(traceIn, traceOut, coerce) { - var len = 0; - var locations = coerce('locations'); - - var lon, lat; - - if(locations) { - coerce('locationmode'); - len = locations.length; - return len; - } - - lon = coerce('lon') || []; - lat = coerce('lat') || []; - len = Math.min(lon.length, lat.length); - traceOut._length = len; - - return len; -} diff --git a/src/traces/scattergeo/event_data.js b/src/traces/scattergeo/event_data.js index f52decf21ef..a4b197a6d12 100644 --- a/src/traces/scattergeo/event_data.js +++ b/src/traces/scattergeo/event_data.js @@ -10,10 +10,16 @@ 'use strict'; -module.exports = function eventData(out, pt) { +module.exports = function eventData(out, pt, trace, cd, pointNumber) { out.lon = pt.lon; out.lat = pt.lat; out.location = pt.loc ? pt.loc : null; + // include feature properties from input geojson + var cdi = cd[pointNumber]; + if(cdi.fIn && cdi.fIn.properties) { + out.properties = cdi.fIn.properties; + } + return out; }; diff --git a/src/traces/scattergeo/plot.js b/src/traces/scattergeo/plot.js index 224ddd9903d..661bdaaba97 100644 --- a/src/traces/scattergeo/plot.js +++ b/src/traces/scattergeo/plot.js @@ -14,8 +14,8 @@ var d3 = require('d3'); var Lib = require('../../lib'); var BADNUM = require('../../constants/numerical').BADNUM; var getTopojsonFeatures = require('../../lib/topojson_utils').getTopojsonFeatures; -var locationToFeature = require('../../lib/geo_location_utils').locationToFeature; var geoJsonUtils = require('../../lib/geojson_utils'); +var geoUtils = require('../../lib/geo_location_utils'); var subTypes = require('../scatter/subtypes'); var style = require('./style'); @@ -77,16 +77,22 @@ module.exports = function plot(gd, geo, calcData) { function calcGeoJSON(calcTrace, topojson) { var trace = calcTrace[0].trace; - - if(!Array.isArray(trace.locations)) return; - - var features = getTopojsonFeatures(trace, topojson); - var locationmode = trace.locationmode; - - for(var i = 0; i < calcTrace.length; i++) { - var calcPt = calcTrace[i]; - var feature = locationToFeature(locationmode, calcPt.loc, features); - - calcPt.lonlat = feature ? feature.properties.ct : [BADNUM, BADNUM]; + var len = trace._length; + var i, calcPt; + + if(Array.isArray(trace.locations)) { + var locationmode = trace.locationmode; + var features = locationmode === 'geojson-id' ? + geoUtils.extractTraceFeature(calcTrace) : + getTopojsonFeatures(trace, topojson); + for(i = 0; i < len; i++) { + calcPt = calcTrace[i]; + + var feature = locationmode === 'geojson-id' ? + calcPt.fOut : + geoUtils.locationToFeature(locationmode, calcPt.loc, features); + + calcPt.lonlat = feature ? feature.properties.ct : [BADNUM, BADNUM]; + } } } diff --git a/test/image/baselines/geo_custom-geojson.png b/test/image/baselines/geo_custom-geojson.png new file mode 100644 index 0000000000000000000000000000000000000000..c52876594455521d3a44772c9cf25bd54ab627d8 GIT binary patch literal 44983 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%0D({4;Ug=AQ9uhQQd&PmQI2tmOd4< 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/geo_custom-geojson.json b/test/image/mocks/geo_custom-geojson.json new file mode 100644 index 00000000000..1744a0fe629 --- /dev/null +++ b/test/image/mocks/geo_custom-geojson.json @@ -0,0 +1,88 @@ +{ + "data": [ + { + "type": "scattergeo", + "name": "scattergeo + RAW", + "locations": ["AL"], + "geojson": { + "type": "Feature", + "id": "AL", + "geometry": { + "type": "Polygon", + "coordinates": [[ + [-87.359296, 35.00118], [-85.606675, 34.984749], [-85.431413, 34.124869], [-85.184951, 32.859696], + [-85.069935, 32.580372], [-84.960397, 32.421541], [-85.004212, 32.322956], [-84.889196, 32.262709], + [-85.058981, 32.13674], [-85.053504, 32.01077], [-85.141136, 31.840985], [-85.042551, 31.539753], + [-85.113751, 31.27686], [-85.004212, 31.003013], [-85.497137, 30.997536], [-87.600282, 30.997536], + [-87.633143, 30.86609], [-87.408589, 30.674397], [-87.446927, 30.510088], [-87.37025, 30.427934], + [-87.518128, 30.280057], [-87.655051, 30.247195], [-87.90699, 30.411504], [-87.934375, 30.657966], + [-88.011052, 30.685351], [-88.10416, 30.499135], [-88.137022, 30.318396], [-88.394438, 30.367688], + [-88.471115, 31.895754], [-88.241084, 33.796253], [-88.098683, 34.891641], [-88.202745, 34.995703], + [-87.359296, 35.00118] + ]] + } + } + }, + { + "type": "choropleth", + "name": "choropleth + URL", + "locations": ["NY", "MA", "VT"], + "z": [10, 20, 30], + "showscale": false, + "geojson": "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json" + }, + + { + "type": "choropleth", + "name": "choropleth + RAW", + "locations": ["AL"], + "z": [10], + "showscale": false, + "geojson": { + "type": "Feature", + "id": "AL", + "geometry": { + "type": "Polygon", + "coordinates": [[ + [-87.359296, 35.00118], [-85.606675, 34.984749], [-85.431413, 34.124869], [-85.184951, 32.859696], + [-85.069935, 32.580372], [-84.960397, 32.421541], [-85.004212, 32.322956], [-84.889196, 32.262709], + [-85.058981, 32.13674], [-85.053504, 32.01077], [-85.141136, 31.840985], [-85.042551, 31.539753], + [-85.113751, 31.27686], [-85.004212, 31.003013], [-85.497137, 30.997536], [-87.600282, 30.997536], + [-87.633143, 30.86609], [-87.408589, 30.674397], [-87.446927, 30.510088], [-87.37025, 30.427934], + [-87.518128, 30.280057], [-87.655051, 30.247195], [-87.90699, 30.411504], [-87.934375, 30.657966], + [-88.011052, 30.685351], [-88.10416, 30.499135], [-88.137022, 30.318396], [-88.394438, 30.367688], + [-88.471115, 31.895754], [-88.241084, 33.796253], [-88.098683, 34.891641], [-88.202745, 34.995703], + [-87.359296, 35.00118] + ]] + } + }, + "geo": "geo2" + }, + { + "type": "scattergeo", + "name": "scattergeo + URL", + "locations": ["NY", "MA", "VT"], + "geojson": "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json", + "geo": "geo2" + } + ], + "layout": { + "geo": { + "center": { "lon": -74.22, "lat": 42.35 }, + "projection": {"scale": 3} + }, + "geo2": { + "center": { "lon": -74.22, "lat": 42.35 }, + "projection": {"scale": 3} + }, + "width": 600, + "height": 500, + "showlegend": false, + "title": { + "text": "Geo subplots with custom GeoJSON features", + "x": 0.1, + "xref": "container", + "xanchor": "left" + } + } +} diff --git a/test/jasmine/tests/choropleth_test.js b/test/jasmine/tests/choropleth_test.js index 8c6cf96055f..d82c4235315 100644 --- a/test/jasmine/tests/choropleth_test.js +++ b/test/jasmine/tests/choropleth_test.js @@ -3,6 +3,7 @@ var Choropleth = require('@src/traces/choropleth'); var Plotly = require('@lib'); var Plots = require('@src/plots/plots'); var Lib = require('@src/lib'); +var loggers = require('@src/lib/loggers'); var d3 = require('d3'); var createGraphDiv = require('../assets/create_graph_div'); @@ -88,6 +89,44 @@ describe('Test choropleth', function() { expect(traceOut.marker.line.width).toBe(0, 'mlw'); expect(traceOut.marker.line.color).toBe(undefined, 'mlc'); }); + + it('should default locationmode to *geojson-id* when a valid *geojson* is provided', function() { + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + geojson: 'url' + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('geojson-id', 'valid url string'); + + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + geojson: {} + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('geojson-id', 'valid object'); + + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + geojson: '' + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('ISO-3', 'invalid sting'); + + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + geojson: [] + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('ISO-3', 'invalid object'); + }); }); }); @@ -242,6 +281,15 @@ describe('Test choropleth hover:', function() { run(pos, fig, exp).then(done); }); }); + + it('should include *properties* from input custom geojson', function(done) { + var fig = Lib.extendDeep({}, require('@mocks/geo_custom-geojson.json')); + fig.data = [fig.data[1]]; + fig.data[0].hovertemplate = '%{properties.name}'; + fig.layout.geo.projection = {scale: 20}; + + run([300, 200], fig, ['New York']).then(done); + }); }); describe('choropleth drawing', function() { @@ -254,7 +302,7 @@ describe('choropleth drawing', function() { afterEach(destroyGraphDiv); it('should not throw an error with bad locations', function(done) { - spyOn(Lib, 'log'); + spyOn(loggers, 'log'); Plotly.newPlot(gd, [{ locations: ['canada', 0, null, '', 'utopia'], z: [1, 2, 3, 4, 5], @@ -263,7 +311,7 @@ describe('choropleth drawing', function() { }]) .then(function() { // only utopia logs - others are silently ignored - expect(Lib.log).toHaveBeenCalledTimes(1); + expect(loggers.log).toHaveBeenCalledTimes(1); }) .catch(failTest) .then(done); diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index 41657a1181a..ef9b894728e 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -1,6 +1,7 @@ var Plotly = require('@lib'); var Plots = require('@src/plots/plots'); var Lib = require('@src/lib'); +var loggers = require('@src/lib/loggers'); var convertModule = require('@src/traces/choroplethmapbox/convert'); var MAPBOX_ACCESS_TOKEN = require('@build/credentials.json').MAPBOX_ACCESS_TOKEN; @@ -150,19 +151,19 @@ describe('Test choroplethmapbox convert:', function() { }); it('should return early if something goes wrong while fetching a GeoJSON', function() { - spyOn(Lib, 'error'); + spyOn(loggers, 'error'); var opts = _convert({ locations: ['a'], z: [1], geojson: 'url' }); - expect(Lib.error).toHaveBeenCalledWith('Oops ... something when wrong when fetching url'); + expect(loggers.error).toHaveBeenCalledWith('Oops ... something when wrong when fetching url'); expectBlank(opts); }); describe('should warn when set GeoJSON is not a *FeatureCollection* or a *Feature* type and return early', function() { - beforeEach(function() { spyOn(Lib, 'warn'); }); + beforeEach(function() { spyOn(loggers, 'warn'); }); it('- case missing *type* key', function() { var opts = _convert({ @@ -172,7 +173,7 @@ describe('Test choroplethmapbox convert:', function() { } }); expectBlank(opts); - expect(Lib.warn).toHaveBeenCalledWith([ + expect(loggers.warn).toHaveBeenCalledWith([ 'Invalid GeoJSON type none,', 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' ].join(' ')); @@ -186,7 +187,7 @@ describe('Test choroplethmapbox convert:', function() { } }); expectBlank(opts); - expect(Lib.warn).toHaveBeenCalledWith([ + expect(loggers.warn).toHaveBeenCalledWith([ 'Invalid GeoJSON type nop!,', 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' ].join(' ')); @@ -194,7 +195,7 @@ describe('Test choroplethmapbox convert:', function() { }); describe('should log when crossing a GeoJSON geometry that is not a *Polygon* or a *MultiPolygon* type', function() { - beforeEach(function() { spyOn(Lib, 'log'); }); + beforeEach(function() { spyOn(loggers, 'log'); }); it('- case missing geometry *type*', function() { var trace = base(); @@ -202,7 +203,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(2, '# of feature to be rendered'); - expect(Lib.log).toHaveBeenCalledWith([ + expect(loggers.log).toHaveBeenCalledWith([ 'Location with id b does not have a valid GeoJSON geometry,', 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' ].join(' ')); @@ -214,7 +215,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(2, '# of feature to be rendered'); - expect(Lib.log).toHaveBeenCalledWith([ + expect(loggers.log).toHaveBeenCalledWith([ 'Location with id c does not have a valid GeoJSON geometry,', 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' ].join(' ')); @@ -222,7 +223,7 @@ describe('Test choroplethmapbox convert:', function() { }); it('should log when an entry set in *locations* does not a matching feature in the GeoJSON', function() { - spyOn(Lib, 'log'); + spyOn(loggers, 'log'); var trace = base(); trace.locations = ['a', 'b', 'c', 'd']; @@ -230,7 +231,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(3, '# of features to be rendered'); - expect(Lib.log).toHaveBeenCalledWith('Location with id d does not have a matching feature'); + expect(loggers.log).toHaveBeenCalledWith('Location with id d does not have a matching feature'); }); describe('should accept numbers as *locations* items', function() { diff --git a/test/jasmine/tests/scattergeo_test.js b/test/jasmine/tests/scattergeo_test.js index 6fe010fe392..37e0afff068 100644 --- a/test/jasmine/tests/scattergeo_test.js +++ b/test/jasmine/tests/scattergeo_test.js @@ -1,6 +1,7 @@ var Plotly = require('@lib'); var Lib = require('@src/lib'); var BADNUM = require('@src/constants/numerical').BADNUM; +var loggers = require('@src/lib/loggers'); var ScatterGeo = require('@src/traces/scattergeo'); @@ -86,6 +87,48 @@ describe('Test scattergeo defaults', function() { traceOut = {}; testOne(); }); + + it('should default locationmode to *geojson-id* when a valid *geojson* is provided', function() { + traceIn = { + locations: ['CAN', 'USA'], + geojson: 'url' + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('geojson-id', 'valid url string'); + + traceIn = { + locations: ['CAN', 'USA'], + geojson: {} + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('geojson-id', 'valid object'); + + traceIn = { + locations: ['CAN', 'USA'], + geojson: '' + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('ISO-3', 'invalid sting'); + + traceIn = { + locations: ['CAN', 'USA'], + geojson: [] + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe('ISO-3', 'invalid object'); + + traceIn = { + lon: [20, 40], + lat: [20, 40] + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.locationmode).toBe(undefined, 'lon/lat coordinates'); + }); }); describe('Test scattergeo calc', function() { @@ -385,6 +428,22 @@ describe('Test scattergeo hover', function() { .then(done); }); }); + + it('should include *properties* from input custom geojson', function(done) { + var fig = Lib.extendDeep({}, require('@mocks/geo_custom-geojson.json')); + fig.data = [fig.data[3]]; + fig.data[0].geo = 'geo'; + fig.data[0].marker = {size: 40}; + fig.data[0].hovertemplate = '%{properties.name}LOOK'; + fig.layout.geo.projection = {scale: 30}; + + Plotly.react(gd, fig) + .then(function() { + check([275, 255], ['New York', 'LOOK']); + }) + .catch(failTest) + .then(done); + }); }); describe('scattergeo drawing', function() { @@ -397,7 +456,7 @@ describe('scattergeo drawing', function() { afterEach(destroyGraphDiv); it('should not throw an error with bad locations', function(done) { - spyOn(Lib, 'log'); + spyOn(loggers, 'log'); Plotly.newPlot(gd, [{ locations: ['canada', 0, null, '', 'utopia'], locationmode: 'country names', @@ -405,7 +464,7 @@ describe('scattergeo drawing', function() { }]) .then(function() { // only utopia logs - others are silently ignored - expect(Lib.log).toHaveBeenCalledTimes(1); + expect(loggers.log).toHaveBeenCalledTimes(1); }) .catch(failTest) .then(done); From 5709d1b6c465ccf568b3df893bb4caa74ef20f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 10 Dec 2019 10:57:26 -0500 Subject: [PATCH 02/12] add attribute featureidkey ... to choroplethmapbox, scattergeo and choropleth traces. - Coerced only when `locationmode: 'geojson-id'`. To determine which key (or nested key) to use to identify eahc geojson feature. - Improve error messages in extractTraceFeature --- src/lib/geo_location_utils.js | 23 ++++-- src/traces/choropleth/attributes.js | 2 + src/traces/choropleth/defaults.js | 8 +- src/traces/choroplethmapbox/attributes.js | 11 ++- src/traces/choroplethmapbox/defaults.js | 2 + src/traces/scattergeo/attributes.js | 12 +++ src/traces/scattergeo/defaults.js | 8 +- test/image/baselines/geo_featureidkey.png | Bin 0 -> 20266 bytes .../mapbox_choropleth-raw-geojson.png | Bin 74107 -> 56442 bytes test/image/mocks/geo_featureidkey.json | 72 ++++++++++++++++++ .../mocks/mapbox_choropleth-raw-geojson.json | 14 ++++ test/jasmine/tests/choropleth_test.js | 21 +++++ test/jasmine/tests/choroplethmapbox_test.js | 24 +++--- test/jasmine/tests/scattergeo_test.js | 19 +++++ 14 files changed, 192 insertions(+), 24 deletions(-) create mode 100644 test/image/baselines/geo_featureidkey.png create mode 100644 test/image/mocks/geo_featureidkey.json diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index d72577de8a7..6af5e759791 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -16,6 +16,7 @@ var turfCentroid = require('@turf/centroid'); var identity = require('./identity'); var loggers = require('./loggers'); var isPlainObject = require('./is_plain_object'); +var nestedProperty = require('./nested_property'); var polygon = require('./polygon'); // make list of all country iso3 ids from at runtime @@ -208,7 +209,8 @@ function extractTraceFeature(calcTrace) { } function appendFeature(fIn) { - var cdi = lookup[fIn.id]; + var id = nestedProperty(fIn, trace.featureidkey || 'id').get(); + var cdi = lookup[id]; if(cdi) { var geometry = fIn.geometry; @@ -216,6 +218,7 @@ function extractTraceFeature(calcTrace) { if(geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') { var fOut = { type: 'Feature', + id: id, geometry: geometry, properties: {} }; @@ -230,15 +233,16 @@ function extractTraceFeature(calcTrace) { featuresOut.push(fOut); } else { loggers.log([ - 'Location with id', cdi.loc, 'does not have a valid GeoJSON geometry,', - 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' + 'Location', cdi.loc, 'does not have a valid GeoJSON geometry.', + 'Traces with locationmode *geojson-id* only support', + '*Polygon* and *MultiPolygon* geometries.' ].join(' ')); } } // remove key from lookup, so that we can track (if any) // the locations that did not have a corresponding GeoJSON feature - delete lookup[fIn.id]; + delete lookup[id]; } switch(geojsonIn.type) { @@ -253,14 +257,19 @@ function extractTraceFeature(calcTrace) { break; default: loggers.warn([ - 'Invalid GeoJSON type', (geojsonIn.type || 'none') + ',', - 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' + 'Invalid GeoJSON type', (geojsonIn.type || 'none') + '.', + 'Traces with locationmode *geojson-id* only support', + '*FeatureCollection* and *Feature* types.' ].join(' ')); return false; } for(var loc in lookup) { - loggers.log('Location with id ' + loc + ' does not have a matching feature'); + loggers.log([ + 'Location *' + loc + '*', + 'does not have a matching feature with id-key', + '*' + trace.featureidkey + '*.' + ].join(' ')); } return featuresOut; diff --git a/src/traces/choropleth/attributes.js b/src/traces/choropleth/attributes.js index 027bc415776..d9f741db649 100644 --- a/src/traces/choropleth/attributes.js +++ b/src/traces/choropleth/attributes.js @@ -46,6 +46,8 @@ module.exports = extendFlat({ // https://github.com/topojson/topojson-specification/blob/master/README.md ].join(' ') }), + featureidkey: scatterGeoAttrs.featureidkey, + text: extendFlat({}, scatterGeoAttrs.text, { description: 'Sets the text elements associated with each location.' }), diff --git a/src/traces/choropleth/defaults.js b/src/traces/choropleth/defaults.js index 7c50fb51ca4..71656dc08bb 100644 --- a/src/traces/choropleth/defaults.js +++ b/src/traces/choropleth/defaults.js @@ -28,11 +28,17 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout traceOut._length = Math.min(locations.length, z.length); var geojson = coerce('geojson'); + var locationmodeDflt; if((typeof geojson === 'string' && geojson !== '') || Lib.isPlainObject(geojson)) { locationmodeDflt = 'geojson-id'; } - coerce('locationmode', locationmodeDflt); + + var locationMode = coerce('locationmode', locationmodeDflt); + + if(locationMode === 'geojson-id') { + coerce('featureidkey'); + } coerce('text'); coerce('hovertext'); diff --git a/src/traces/choroplethmapbox/attributes.js b/src/traces/choroplethmapbox/attributes.js index 08e54b7d830..84ac117e404 100644 --- a/src/traces/choroplethmapbox/attributes.js +++ b/src/traces/choroplethmapbox/attributes.js @@ -28,9 +28,7 @@ module.exports = extendFlat({ // Maybe start with only one value (that we could name e.g. 'geojson-id'), // but eventually: // - we could also support for our own dist/topojson/* - // - some people might want `geojson-properties-name` to map data arrays to - // GeoJSON features - // locationmode: choroplethAttrs.locationmode, + // .. and locationmode: choroplethAttrs.locationmode, z: { valType: 'data_array', @@ -52,6 +50,13 @@ module.exports = extendFlat({ 'with geometries of type *Polygon* and *MultiPolygon*.' ].join(' ') }, + featureidkey: extendFlat({}, choroplethAttrs.featureidkey, { + description: [ + 'Sets the key in GeoJSON features which is used as id to match the items', + 'included in the `locations` array.', + 'Support nested property, for example *properties.name*.' + ].join(' ') + }), // TODO agree on name / behaviour // diff --git a/src/traces/choroplethmapbox/defaults.js b/src/traces/choroplethmapbox/defaults.js index 050015ce5e1..d75aa3f9b5f 100644 --- a/src/traces/choroplethmapbox/defaults.js +++ b/src/traces/choroplethmapbox/defaults.js @@ -29,6 +29,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return; } + coerce('featureidkey'); + traceOut._length = Math.min(locations.length, z.length); coerce('below'); diff --git a/src/traces/scattergeo/attributes.js b/src/traces/scattergeo/attributes.js index 7d380497243..efccbf328b0 100644 --- a/src/traces/scattergeo/attributes.js +++ b/src/traces/scattergeo/attributes.js @@ -70,6 +70,18 @@ module.exports = overrideAll({ // https://github.com/topojson/topojson-specification/blob/master/README.md ].join(' ') }, + featureidkey: { + valType: 'string', + role: 'info', + editType: 'calc', + dflt: 'id', + description: [ + 'Sets the key in GeoJSON features which is used as id to match the items', + 'included in the `locations` array.', + 'Only has an effect when `geojson` is set.', + 'Support nested property, for example *properties.name*.' + ].join(' ') + }, mode: extendFlat({}, scatterAttrs.mode, {dflt: 'markers'}), diff --git a/src/traces/scattergeo/defaults.js b/src/traces/scattergeo/defaults.js index ba38af173c1..f706ffd4e69 100644 --- a/src/traces/scattergeo/defaults.js +++ b/src/traces/scattergeo/defaults.js @@ -32,7 +32,13 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if((typeof geojson === 'string' && geojson !== '') || Lib.isPlainObject(geojson)) { locationmodeDflt = 'geojson-id'; } - coerce('locationmode', locationmodeDflt); + + var locationMode = coerce('locationmode', locationmodeDflt); + + if(locationMode === 'geojson-id') { + coerce('featureidkey'); + } + len = locations.length; } else { var lon = coerce('lon') || []; diff --git a/test/image/baselines/geo_featureidkey.png b/test/image/baselines/geo_featureidkey.png new file mode 100644 index 0000000000000000000000000000000000000000..a3dd23d869b735042fb5914340af6d2a32eb0dc7 GIT binary patch literal 20266 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 OPZ_EqUwqg6+5ZB=f`CW> literal 0 HcmV?d00001 diff --git a/test/image/baselines/mapbox_choropleth-raw-geojson.png b/test/image/baselines/mapbox_choropleth-raw-geojson.png index acb1be264e428fbbe86b12adfb09f78173c39f39..c1b5bc08c5d667a8ed5ed68fe445f74273d4848d 100644 GIT binary patch literal 56442 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�y0UzH6L@t{sPJ)CdRv8oCT1 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

(MHlqr+GkYj>(|fgt{$?n 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 ZW3c55D#yDRX8Id47#o=Bf4t=s_doPRW(xoS diff --git a/test/image/mocks/geo_featureidkey.json b/test/image/mocks/geo_featureidkey.json new file mode 100644 index 00000000000..1d02619db7b --- /dev/null +++ b/test/image/mocks/geo_featureidkey.json @@ -0,0 +1,72 @@ +{ + "data": [ + { + "type": "scattergeo", + "locations": ["AL"], + "featureidkey": "properties.name", + "geojson": { + "type": "Feature", + "properties": { + "name": "AL" + }, + "geometry": { + "type": "Polygon", + "coordinates": [[ + [-87.359296, 35.00118], [-85.606675, 34.984749], [-85.431413, 34.124869], [-85.184951, 32.859696], + [-85.069935, 32.580372], [-84.960397, 32.421541], [-85.004212, 32.322956], [-84.889196, 32.262709], + [-85.058981, 32.13674], [-85.053504, 32.01077], [-85.141136, 31.840985], [-85.042551, 31.539753], + [-85.113751, 31.27686], [-85.004212, 31.003013], [-85.497137, 30.997536], [-87.600282, 30.997536], + [-87.633143, 30.86609], [-87.408589, 30.674397], [-87.446927, 30.510088], [-87.37025, 30.427934], + [-87.518128, 30.280057], [-87.655051, 30.247195], [-87.90699, 30.411504], [-87.934375, 30.657966], + [-88.011052, 30.685351], [-88.10416, 30.499135], [-88.137022, 30.318396], [-88.394438, 30.367688], + [-88.471115, 31.895754], [-88.241084, 33.796253], [-88.098683, 34.891641], [-88.202745, 34.995703], + [-87.359296, 35.00118] + ]] + } + } + }, + { + "type": "choropleth", + "name": "choropleth + RAW", + "locations": ["AL"], + "featureidkey": "properties.id", + "z": [10], + "showscale": false, + "geojson": { + "type": "Feature", + "properties": { + "id": "AL" + }, + "geometry": { + "type": "Polygon", + "coordinates": [[ + [-87.359296, 35.00118], [-85.606675, 34.984749], [-85.431413, 34.124869], [-85.184951, 32.859696], + [-85.069935, 32.580372], [-84.960397, 32.421541], [-85.004212, 32.322956], [-84.889196, 32.262709], + [-85.058981, 32.13674], [-85.053504, 32.01077], [-85.141136, 31.840985], [-85.042551, 31.539753], + [-85.113751, 31.27686], [-85.004212, 31.003013], [-85.497137, 30.997536], [-87.600282, 30.997536], + [-87.633143, 30.86609], [-87.408589, 30.674397], [-87.446927, 30.510088], [-87.37025, 30.427934], + [-87.518128, 30.280057], [-87.655051, 30.247195], [-87.90699, 30.411504], [-87.934375, 30.657966], + [-88.011052, 30.685351], [-88.10416, 30.499135], [-88.137022, 30.318396], [-88.394438, 30.367688], + [-88.471115, 31.895754], [-88.241084, 33.796253], [-88.098683, 34.891641], [-88.202745, 34.995703], + [-87.359296, 35.00118] + ]] + } + } + } + ], + "layout": { + "geo": { + "center": { "lon": -86, "lat": 33 }, + "projection": {"scale": 30} + }, + "width": 600, + "height": 400, + "showlegend": false, + "title": { + "text": "Geo traces with set featureidkey", + "x": 0.1, + "xref": "container", + "xanchor": "left" + } + } +} diff --git a/test/image/mocks/mapbox_choropleth-raw-geojson.json b/test/image/mocks/mapbox_choropleth-raw-geojson.json index e3ae99ae8d2..9fc58b63210 100644 --- a/test/image/mocks/mapbox_choropleth-raw-geojson.json +++ b/test/image/mocks/mapbox_choropleth-raw-geojson.json @@ -28,6 +28,20 @@ ]] } } + }, { + "type": "choroplethmapbox", + "locations": ["Georgia"], + "z": [5], + "featureidkey": "properties.name", + "coloraxis": "coloraxis", + "geojson": { + "type": "Feature", + "properties": {"name": "Georgia"}, + "geometry": { + "type": "Polygon", + "coordinates": [[[-83.109191,35.00118],[-83.322791,34.787579],[-83.339222,34.683517],[-83.005129,34.469916],[-82.901067,34.486347],[-82.747713,34.26727],[-82.714851,34.152254],[-82.55602,33.94413],[-82.325988,33.81816],[-82.194542,33.631944],[-81.926172,33.462159],[-81.937125,33.347144],[-81.761863,33.160928],[-81.493493,33.007573],[-81.42777,32.843265],[-81.416816,32.629664],[-81.279893,32.558464],[-81.121061,32.290094],[-81.115584,32.120309],[-80.885553,32.032678],[-81.132015,31.693108],[-81.175831,31.517845],[-81.279893,31.364491],[-81.290846,31.20566],[-81.400385,31.13446],[-81.444201,30.707258],[-81.718048,30.745597],[-81.948079,30.827751],[-82.041187,30.751074],[-82.002849,30.564858],[-82.046664,30.362211],[-82.167157,30.356734],[-82.216449,30.570335],[-83.498053,30.647012],[-84.867289,30.712735],[-85.004212,31.003013],[-85.113751,31.27686],[-85.042551,31.539753],[-85.141136,31.840985],[-85.053504,32.01077],[-85.058981,32.13674],[-84.889196,32.262709],[-85.004212,32.322956],[-84.960397,32.421541],[-85.069935,32.580372],[-85.184951,32.859696],[-85.431413,34.124869],[-85.606675,34.984749],[-84.319594,34.990226],[-83.618546,34.984749],[-83.109191,35.00118]]] + } + } }], "layout": { "width": 600, diff --git a/test/jasmine/tests/choropleth_test.js b/test/jasmine/tests/choropleth_test.js index d82c4235315..b452191c740 100644 --- a/test/jasmine/tests/choropleth_test.js +++ b/test/jasmine/tests/choropleth_test.js @@ -127,6 +127,27 @@ describe('Test choropleth', function() { Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); expect(traceOut.locationmode).toBe('ISO-3', 'invalid object'); }); + + it('should only coerce *featureidkey* when locationmode is *geojson-id', function() { + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + geojson: 'url', + featureidkey: 'properties.name' + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.featureidkey).toBe('properties.name', 'coerced'); + + traceIn = { + locations: ['CAN', 'USA'], + z: [1, 2], + featureidkey: 'properties.name' + }; + traceOut = {}; + Choropleth.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.featureidkey).toBe(undefined, 'NOT coerced'); + }); }); }); diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index ef9b894728e..74bb08aa969 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -174,8 +174,8 @@ describe('Test choroplethmapbox convert:', function() { }); expectBlank(opts); expect(loggers.warn).toHaveBeenCalledWith([ - 'Invalid GeoJSON type none,', - 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' + 'Invalid GeoJSON type none.', + 'Traces with locationmode *geojson-id* only support *FeatureCollection* and *Feature* types.' ].join(' ')); }); @@ -188,8 +188,8 @@ describe('Test choroplethmapbox convert:', function() { }); expectBlank(opts); expect(loggers.warn).toHaveBeenCalledWith([ - 'Invalid GeoJSON type nop!,', - 'choroplethmapbox traces only support *FeatureCollection* and *Feature* types.' + 'Invalid GeoJSON type nop!.', + 'Traces with locationmode *geojson-id* only support *FeatureCollection* and *Feature* types.' ].join(' ')); }); }); @@ -204,8 +204,8 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(2, '# of feature to be rendered'); expect(loggers.log).toHaveBeenCalledWith([ - 'Location with id b does not have a valid GeoJSON geometry,', - 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' + 'Location b does not have a valid GeoJSON geometry.', + 'Traces with locationmode *geojson-id* only support *Polygon* and *MultiPolygon* geometries.' ].join(' ')); }); @@ -216,8 +216,8 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(2, '# of feature to be rendered'); expect(loggers.log).toHaveBeenCalledWith([ - 'Location with id c does not have a valid GeoJSON geometry,', - 'choroplethmapbox traces only support *Polygon* and *MultiPolygon* geometries.' + 'Location c does not have a valid GeoJSON geometry.', + 'Traces with locationmode *geojson-id* only support *Polygon* and *MultiPolygon* geometries.' ].join(' ')); }); }); @@ -231,7 +231,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = _convert(trace); expect(opts.geojson.features.length).toBe(3, '# of features to be rendered'); - expect(loggers.log).toHaveBeenCalledWith('Location with id d does not have a matching feature'); + expect(loggers.log).toHaveBeenCalledWith('Location *d* does not have a matching feature with id-key *id*.'); }); describe('should accept numbers as *locations* items', function() { @@ -594,7 +594,7 @@ describe('@noCI Test choroplethmapbox hover:', function() { desc: 'with "typeof number" locations[i] and feature id (in *name* label case)', patch: function() { var fig = Lib.extendDeep({}, require('@mocks/mapbox_choropleth-raw-geojson.json')); - fig.data.shift(); + fig.data = [fig.data[1]]; fig.data[0].locations = [100]; fig.data[0].geojson.id = 100; return fig; @@ -606,7 +606,7 @@ describe('@noCI Test choroplethmapbox hover:', function() { desc: 'with "typeof number" locations[i] and feature id (in *nums* label case)', patch: function() { var fig = Lib.extendDeep({}, require('@mocks/mapbox_choropleth-raw-geojson.json')); - fig.data.shift(); + fig.data = [fig.data[1]]; fig.data[0].locations = [100]; fig.data[0].geojson.id = 100; fig.data[0].hoverinfo = 'location+name'; @@ -619,7 +619,7 @@ describe('@noCI Test choroplethmapbox hover:', function() { desc: 'with "typeof number" locations[i] and feature id (hovertemplate case)', patch: function() { var fig = Lib.extendDeep({}, require('@mocks/mapbox_choropleth-raw-geojson.json')); - fig.data.shift(); + fig.data = [fig.data[1]]; fig.data[0].locations = [100]; fig.data[0].geojson.id = 100; fig.data[0].hovertemplate = '### %{location}%{location} ###'; diff --git a/test/jasmine/tests/scattergeo_test.js b/test/jasmine/tests/scattergeo_test.js index 37e0afff068..e13ef7bc097 100644 --- a/test/jasmine/tests/scattergeo_test.js +++ b/test/jasmine/tests/scattergeo_test.js @@ -129,6 +129,25 @@ describe('Test scattergeo defaults', function() { ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); expect(traceOut.locationmode).toBe(undefined, 'lon/lat coordinates'); }); + + it('should only coerce *featureidkey* when locationmode is *geojson-id', function() { + traceIn = { + locations: ['CAN', 'USA'], + geojson: 'url', + featureidkey: 'properties.name' + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.featureidkey).toBe('properties.name', 'coerced'); + + traceIn = { + locations: ['CAN', 'USA'], + featureidkey: 'properties.name' + }; + traceOut = {}; + ScatterGeo.supplyDefaults(traceIn, traceOut, defaultColor, layout); + expect(traceOut.featureidkey).toBe(undefined, 'NOT coerced'); + }); }); describe('Test scattergeo calc', function() { From 02d61434896b1ce0ada556230f7eb8c050df0fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 29 Nov 2019 14:54:27 -0500 Subject: [PATCH 03/12] add attribute `geo.fitbounds` ... with values false (the default and current behaviour), `'locations'` and `'geojson'`. - add `_module.calcGeoJSON` method to the scattergeo and choropleth trace modules, use `@turf/bbox` to compute location bounding boxes (for now), call `calcGeoJSON` before during geo 'plot' before `updateProjection` - add mock axes to geo lonaxis and lataxis, use them reuse doAutorange - adjust projection settings using autorange values - clear attributes that get auto-filled via `fitbounds` during the geo layout defaults - add three mocks TODOs - find improvement for `@turf/bbox` - improve fitbounds behaviour for conic projections --- package-lock.json | 9 + package.json | 1 + src/lib/geo_location_utils.js | 24 +- src/plot_api/plot_api.js | 2 +- src/plots/geo/geo.js | 111 ++- src/plots/geo/layout_attributes.js | 27 + src/plots/geo/layout_defaults.js | 50 +- src/plots/geo/zoom.js | 2 +- src/traces/choropleth/index.js | 1 + src/traces/choropleth/plot.js | 31 +- src/traces/scattergeo/index.js | 3 +- src/traces/scattergeo/plot.js | 53 +- .../baselines/geo_fitbounds-locations.png | Bin 0 -> 187907 bytes test/image/baselines/geo_fitbounds-scopes.png | Bin 0 -> 106806 bytes test/image/mocks/geo_fitbounds-locations.json | 763 ++++++++++++++++++ test/image/mocks/geo_fitbounds-scopes.json | 433 ++++++++++ test/jasmine/tests/geo_test.js | 744 ++++++++++++----- test/jasmine/tests/plot_api_react_test.js | 33 + 18 files changed, 2031 insertions(+), 256 deletions(-) create mode 100644 test/image/baselines/geo_fitbounds-locations.png create mode 100644 test/image/baselines/geo_fitbounds-scopes.png create mode 100644 test/image/mocks/geo_fitbounds-locations.json create mode 100644 test/image/mocks/geo_fitbounds-scopes.json diff --git a/package-lock.json b/package-lock.json index 086aee34d0f..1187a57c025 100644 --- a/package-lock.json +++ b/package-lock.json @@ -140,6 +140,15 @@ "@turf/meta": "6.x" } }, + "@turf/bbox": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.0.1.tgz", + "integrity": "sha512-EGgaRLettBG25Iyx7VyUINsPpVj1x3nFQFiGS3ER8KCI1MximzNLsam3eXRabqQDjyAKyAE1bJ4EZEpGvspQxw==", + "requires": { + "@turf/helpers": "6.x", + "@turf/meta": "6.x" + } + }, "@turf/centroid": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.0.2.tgz", diff --git a/package.json b/package.json index 70d0c3ea466..435c1d80bf3 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@turf/area": "^6.0.1", + "@turf/bbox": "^6.0.1", "@turf/centroid": "^6.0.2", "alpha-shape": "^1.0.0", "canvas-fit": "^1.5.0", diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 6af5e759791..bab4c491c0e 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -12,6 +12,7 @@ var d3 = require('d3'); var countryRegex = require('country-regex'); var turfArea = require('@turf/area'); var turfCentroid = require('@turf/centroid'); +var turfBbox = require('@turf/bbox'); var identity = require('./identity'); var loggers = require('./loggers'); @@ -185,9 +186,7 @@ function feature2polygons(feature) { return polygons; } -function extractTraceFeature(calcTrace) { - var trace = calcTrace[0].trace; - +function getTraceGeojson(trace) { var geojsonIn = typeof trace.geojson === 'string' ? (window.PlotlyGeoAssets || {})[trace.geojson] : trace.geojson; @@ -199,6 +198,15 @@ function extractTraceFeature(calcTrace) { return false; } + return geojsonIn; +} + +function extractTraceFeature(calcTrace) { + var trace = calcTrace[0].trace; + + var geojsonIn = getTraceGeojson(trace); + if(!geojsonIn) return false; + var lookup = {}; var featuresOut = []; var i; @@ -336,9 +344,17 @@ function fetchTraceGeoData(calcData) { return promises; } +// TODO `turf/bbox` gives wrong result when the input feature/geometry +// crosses the anti-meridian. We should try to implement our own bbox logic. +function computeBbox(d) { + return turfBbox.default(d); +} + module.exports = { locationToFeature: locationToFeature, feature2polygons: feature2polygons, + getTraceGeojson: getTraceGeojson, extractTraceFeature: extractTraceFeature, - fetchTraceGeoData: fetchTraceGeoData + fetchTraceGeoData: fetchTraceGeoData, + computeBbox: computeBbox }; diff --git a/src/plot_api/plot_api.js b/src/plot_api/plot_api.js index b675866b517..9e4bf22f47b 100644 --- a/src/plot_api/plot_api.js +++ b/src/plot_api/plot_api.js @@ -2442,7 +2442,7 @@ var layoutUIControlPatterns = [ {pattern: /(hover|drag)mode$/, attr: 'modebar.uirevision'}, {pattern: /^(scene\d*)\.camera/}, - {pattern: /^(geo\d*)\.(projection|center)/}, + {pattern: /^(geo\d*)\.(projection|center|fitbounds)/}, {pattern: /^(ternary\d*\.[abc]axis)\.(min|title\.text)$/}, {pattern: /^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/}, {pattern: /^(polar\d*\.angularaxis)\.rotation/}, diff --git a/src/plots/geo/geo.js b/src/plots/geo/geo.js index 6ebb8a8f815..56881f09987 100644 --- a/src/plots/geo/geo.js +++ b/src/plots/geo/geo.js @@ -19,6 +19,7 @@ var Drawing = require('../../components/drawing'); var Fx = require('../../components/fx'); var Plots = require('../plots'); var Axes = require('../cartesian/axes'); +var getAutoRange = require('../cartesian/autorange').getAutoRange; var dragElement = require('../../components/dragelement'); var prepSelect = require('../cartesian/select').prepSelect; var selectOnClick = require('../cartesian/select').selectOnClick; @@ -143,18 +144,24 @@ proto.fetchTopojson = function() { proto.update = function(geoCalcData, fullLayout) { var geoLayout = fullLayout[this.id]; - var hasInvalidBounds = this.updateProjection(fullLayout, geoLayout); - if(hasInvalidBounds) return; - // important: maps with choropleth traces have a different layer order this.hasChoropleth = false; + for(var i = 0; i < geoCalcData.length; i++) { - if(geoCalcData[i][0].trace.type === 'choropleth') { + var calcTrace = geoCalcData[i]; + var trace = calcTrace[0].trace; + + if(trace.type === 'choropleth') { this.hasChoropleth = true; - break; + } + if(trace.visible === true && trace._length > 0) { + trace._module.calcGeoJSON(calcTrace, fullLayout); } } + var hasInvalidBounds = this.updateProjection(geoCalcData, fullLayout); + if(hasInvalidBounds) return; + if(!this.viewInitial || this.scope !== geoLayout.scope) { this.saveViewInitial(geoLayout); } @@ -177,20 +184,19 @@ proto.update = function(geoCalcData, fullLayout) { this.render(); }; -proto.updateProjection = function(fullLayout, geoLayout) { +proto.updateProjection = function(geoCalcData, fullLayout) { + var gd = this.graphDiv; + var geoLayout = fullLayout[this.id]; var gs = fullLayout._size; var domain = geoLayout.domain; var projLayout = geoLayout.projection; - var rotation = projLayout.rotation || {}; - var center = geoLayout.center || {}; - var projection = this.projection = getProjection(geoLayout); + var lonaxis = geoLayout.lonaxis; + var lataxis = geoLayout.lataxis; + var axLon = lonaxis._ax; + var axLat = lataxis._ax; - // set 'pre-fit' projection - projection - .center([center.lon - rotation.lon, center.lat - rotation.lat]) - .rotate([-rotation.lon, -rotation.lat, rotation.roll]) - .parallels(projLayout.parallels); + var projection = this.projection = getProjection(geoLayout); // setup subplot extent [[x0,y0], [x1,y1]] var extent = [[ @@ -201,11 +207,46 @@ proto.updateProjection = function(fullLayout, geoLayout) { gs.t + gs.h * (1 - domain.y[0]) ]]; - var lonaxis = geoLayout.lonaxis; - var lataxis = geoLayout.lataxis; - var rangeBox = makeRangeBox(lonaxis.range, lataxis.range); + var center = geoLayout.center || {}; + var rotation = projLayout.rotation || {}; + var lonaxisRange = lonaxis.range || []; + var lataxisRange = lataxis.range || []; + + if(geoLayout.fitbounds) { + axLon._length = extent[1][0] - extent[0][0]; + axLat._length = extent[1][1] - extent[0][1]; + axLon.range = getAutoRange(gd, axLon); + axLat.range = getAutoRange(gd, axLat); + + var midLon = (axLon.range[0] + axLon.range[1]) / 2; + var midLat = (axLat.range[0] + axLat.range[1]) / 2; + + if(geoLayout._isScoped) { + center = {lon: midLon, lat: midLat}; + } else if(geoLayout._isClipped) { + center = {lon: midLon, lat: midLat}; + rotation = {lon: midLon, lat: midLat, roll: rotation.roll}; + + var projType = projLayout.type; + var lonHalfSpan = (constants.lonaxisSpan[projType] / 2) || 180; + var latHalfSpan = (constants.lataxisSpan[projType] / 2) || 180; + + lonaxisRange = [midLon - lonHalfSpan, midLon + lonHalfSpan]; + lataxisRange = [midLat - latHalfSpan, midLat + latHalfSpan]; + } else { + center = {lon: midLon, lat: midLat}; + rotation = {lon: midLon, lat: rotation.lat, roll: rotation.roll}; + } + } + + // set 'pre-fit' projection + projection + .center([center.lon - rotation.lon, center.lat - rotation.lat]) + .rotate([-rotation.lon, -rotation.lat, rotation.roll]) + .parallels(projLayout.parallels); // fit projection 'scale' and 'translate' to set lon/lat ranges + var rangeBox = makeRangeBox(lonaxisRange, lataxisRange); projection.fitExtent(extent, rangeBox); var b = this.bounds = projection.getBounds(rangeBox); @@ -217,12 +258,11 @@ proto.updateProjection = function(fullLayout, geoLayout) { !isFinite(b[1][0]) || !isFinite(b[1][1]) || isNaN(t[0]) || isNaN(t[0]) ) { - var gd = this.graphDiv; - var attrToUnset = ['projection.rotation', 'center', 'lonaxis.range', 'lataxis.range']; + var attrToUnset = ['fitbounds', 'projection.rotation', 'center', 'lonaxis.range', 'lataxis.range']; var msg = 'Invalid geo settings, relayout\'ing to default view.'; var updateObj = {}; - // clear all attribute that could cause invalid bounds, + // clear all attributes that could cause invalid bounds, // clear viewInitial to update reset-view behavior for(var i = 0; i < attrToUnset.length; i++) { @@ -236,6 +276,18 @@ proto.updateProjection = function(fullLayout, geoLayout) { return msg; } + if(geoLayout.fitbounds) { + var b2 = projection.getBounds(makeRangeBox(axLon.range, axLat.range)); + var k2 = Math.min( + (b[1][0] - b[0][0]) / (b2[1][0] - b2[0][0]), + (b[1][1] - b[0][1]) / (b2[1][1] - b2[0][1]) + ); + projection.scale(k2 * s); + } else { + // adjust projection to user setting + projection.scale(projLayout.scale * s); + } + // px coordinates of view mid-point, // useful to update `geo.center` after interactions var midPt = this.midPt = [ @@ -243,9 +295,7 @@ proto.updateProjection = function(fullLayout, geoLayout) { (b[0][1] + b[1][1]) / 2 ]; - // adjust projection to user setting projection - .scale(projLayout.scale * s) .translate([t[0] + (midPt[0] - t[0]), t[1] + (midPt[1] - t[1])]) .clipExtent(b); @@ -540,26 +590,31 @@ proto.saveViewInitial = function(geoLayout) { var projLayout = geoLayout.projection; var rotation = projLayout.rotation || {}; + this.viewInitial = { + 'fitbounds': geoLayout.fitbounds, + 'projection.scale': projLayout.scale + }; + + var extra; if(geoLayout._isScoped) { - this.viewInitial = { + extra = { 'center.lon': center.lon, 'center.lat': center.lat, - 'projection.scale': projLayout.scale }; } else if(geoLayout._isClipped) { - this.viewInitial = { - 'projection.scale': projLayout.scale, + extra = { 'projection.rotation.lon': rotation.lon, 'projection.rotation.lat': rotation.lat }; } else { - this.viewInitial = { + extra = { 'center.lon': center.lon, 'center.lat': center.lat, - 'projection.scale': projLayout.scale, 'projection.rotation.lon': rotation.lon }; } + + Lib.extendFlat(this.viewInitial, extra); }; // [hot code path] (re)draw all paths which depend on the projection diff --git a/src/plots/geo/layout_attributes.js b/src/plots/geo/layout_attributes.js index 6232c40fbf3..9a9c9e74d91 100644 --- a/src/plots/geo/layout_attributes.js +++ b/src/plots/geo/layout_attributes.js @@ -75,6 +75,33 @@ var attrs = module.exports = overrideAll({ ].join(' ') }), + fitbounds: { + valType: 'enumerated', + values: [false, 'locations', 'geojson'], + dflt: false, + role: 'info', + editType: 'plot', + description: [ + 'Determines if this subplot\'s view settings are auto-computed to fit trace data.', + + 'On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled.', + + 'On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + 'and `projection.rotation.lon` getting auto-filled.', + + 'On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`,', + '`projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lonaxis.range`', + 'getting auto-filled.', + + // TODO we should auto-fill `projection.parallels` for maps + // with conic projection, but how? + + 'If *locations*, only the trace\'s visible locations are considered in the `fitbounds` computations.', + 'If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations,', + 'Defaults to *false*.' + ].join(' ') + }, + resolution: { valType: 'enumerated', values: [110, 50], diff --git a/src/plots/geo/layout_defaults.js b/src/plots/geo/layout_defaults.js index 34da1d42edf..450ac62ff9a 100644 --- a/src/plots/geo/layout_defaults.js +++ b/src/plots/geo/layout_defaults.js @@ -6,10 +6,12 @@ * LICENSE file in the root directory of this source tree. */ - 'use strict'; +var Lib = require('../../lib'); var handleSubplotDefaults = require('../subplot_defaults'); +var getSubplotData = require('../get_data').getSubplotData; + var constants = require('./constants'); var layoutAttributes = require('./layout_attributes'); @@ -20,11 +22,14 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { type: 'geo', attributes: layoutAttributes, handleDefaults: handleGeoDefaults, + fullData: fullData, partition: 'y' }); }; -function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce) { +function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { + var subplotData = getSubplotData(opts.fullData, 'geo', opts.id); + var traceIndices = subplotData.map(function(t) { return t._expandedIndex; }); var show; var resolution = coerce('resolution'); @@ -39,7 +44,7 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce) { var isScoped = geoLayoutOut._isScoped = (scope !== 'world'); var isConic = geoLayoutOut._isConic = projType.indexOf('conic') !== -1; - geoLayoutOut._isClipped = !!constants.lonaxisSpan[projType]; + var isClipped = geoLayoutOut._isClipped = !!constants.lonaxisSpan[projType]; for(var i = 0; i < axesNames.length; i++) { var axisName = axesNames[i]; @@ -58,7 +63,7 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce) { rangeDflt = [rot - hSpan, rot + hSpan]; } - coerce(axisName + '.range', rangeDflt); + var range = coerce(axisName + '.range', rangeDflt); coerce(axisName + '.tick0'); coerce(axisName + '.dtick', dtickDflt); @@ -67,6 +72,20 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce) { coerce(axisName + '.gridcolor'); coerce(axisName + '.gridwidth'); } + + // mock axis for autorange computations + geoLayoutOut[axisName]._ax = { + type: 'linear', + _id: axisName.slice(0, 3), + _traceIndices: traceIndices, + setScale: Lib.identity, + c2l: Lib.identity, + r2l: Lib.identity, + autorange: true, + range: range.slice(), + _m: 1, + _input: {} + }; } var lonRange = geoLayoutOut.lonaxis.range; @@ -158,4 +177,27 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce) { } coerce('bgcolor'); + + var fitBounds = coerce('fitbounds'); + + // clear attributes that will get auto-filled later + if(fitBounds) { + delete geoLayoutOut.projection.scale; + + if(isScoped) { + delete geoLayoutOut.center.lon; + delete geoLayoutOut.center.lat; + } else if(isClipped) { + delete geoLayoutOut.center.lon; + delete geoLayoutOut.center.lat; + delete geoLayoutOut.projection.rotation.lon; + delete geoLayoutOut.projection.rotation.lat; + delete geoLayoutOut.lonaxis.range; + delete geoLayoutOut.lataxis.range; + } else { + delete geoLayoutOut.center.lon; + delete geoLayoutOut.center.lat; + delete geoLayoutOut.projection.rotation.lon; + } + } } diff --git a/src/plots/geo/zoom.js b/src/plots/geo/zoom.js index 66ef7d15fd0..5a8eb4a737a 100644 --- a/src/plots/geo/zoom.js +++ b/src/plots/geo/zoom.js @@ -70,6 +70,7 @@ function sync(geo, projection, cb) { cb(set); set('projection.scale', projection.scale() / geo.fitScale); + set('fitbounds', false); gd.emit('plotly_relayout', eventData); } @@ -179,7 +180,6 @@ function zoomNonClipped(geo, projection) { 'geo.center.lon': center[0], 'geo.center.lat': center[1], 'geo.projection.rotation.lon': -rotate[0] - }); } diff --git a/src/traces/choropleth/index.js b/src/traces/choropleth/index.js index 06a265df6c0..4214cf801a1 100644 --- a/src/traces/choropleth/index.js +++ b/src/traces/choropleth/index.js @@ -13,6 +13,7 @@ module.exports = { supplyDefaults: require('./defaults'), colorbar: require('../heatmap/colorbar'), calc: require('./calc'), + calcGeoJSON: require('./plot').calcGeoJSON, plot: require('./plot').plot, style: require('./style').style, styleOnSelect: require('./style').styleOnSelect, diff --git a/src/traces/choropleth/plot.js b/src/traces/choropleth/plot.js index 3ca98a92450..237598b12a5 100644 --- a/src/traces/choropleth/plot.js +++ b/src/traces/choropleth/plot.js @@ -13,14 +13,13 @@ var d3 = require('d3'); var Lib = require('../../lib'); var geoUtils = require('../../lib/geo_location_utils'); var getTopojsonFeatures = require('../../lib/topojson_utils').getTopojsonFeatures; +var findExtremes = require('../../plots/cartesian/autorange').findExtremes; + var style = require('./style').style; function plot(gd, geo, calcData) { - for(var i = 0; i < calcData.length; i++) { - calcGeoJSON(calcData[i], geo.topojson); - } - var choroplethLayer = geo.layers.backplot.select('.choroplethlayer'); + Lib.makeTraceGroups(choroplethLayer, calcData, 'trace choropleth').each(function(calcTrace) { var sel = d3.select(this); @@ -37,14 +36,19 @@ function plot(gd, geo, calcData) { }); } -function calcGeoJSON(calcTrace, topojson) { +function calcGeoJSON(calcTrace, fullLayout) { var trace = calcTrace[0].trace; + var geoLayout = fullLayout[trace.geo]; + var geo = geoLayout._subplot; var locationmode = trace.locationmode; var len = trace._length; var features = locationmode === 'geojson-id' ? geoUtils.extractTraceFeature(calcTrace) : - getTopojsonFeatures(trace, topojson); + getTopojsonFeatures(trace, geo.topojson); + + var lonArray = []; + var latArray = []; for(var i = 0; i < len; i++) { var calcPt = calcTrace[i]; @@ -56,12 +60,27 @@ function calcGeoJSON(calcTrace, topojson) { calcPt.geojson = feature; calcPt.ct = feature.properties.ct; calcPt._polygons = geoUtils.feature2polygons(feature); + + var bboxFeature = geoUtils.computeBbox(feature); + lonArray.push(bboxFeature[0], bboxFeature[2]); + latArray.push(bboxFeature[1], bboxFeature[3]); } else { calcPt.geojson = null; } } + + if(geoLayout.fitbounds === 'geojson' && locationmode === 'geojson-id') { + var bboxGeojson = geoUtils.computeBbox(geoUtils.getTraceGeojson(trace)); + lonArray = [bboxGeojson[0], bboxGeojson[2]]; + latArray = [bboxGeojson[1], bboxGeojson[3]]; + } + + var opts = {padded: true}; + trace._extremes.lon = findExtremes(geoLayout.lonaxis._ax, lonArray, opts); + trace._extremes.lat = findExtremes(geoLayout.lataxis._ax, latArray, opts); } module.exports = { + calcGeoJSON: calcGeoJSON, plot: plot }; diff --git a/src/traces/scattergeo/index.js b/src/traces/scattergeo/index.js index 27a6fe010e2..ad80eef949f 100644 --- a/src/traces/scattergeo/index.js +++ b/src/traces/scattergeo/index.js @@ -14,7 +14,8 @@ module.exports = { colorbar: require('../scatter/marker_colorbar'), formatLabels: require('./format_labels'), calc: require('./calc'), - plot: require('./plot'), + calcGeoJSON: require('./plot').calcGeoJSON, + plot: require('./plot').plot, style: require('./style'), styleOnSelect: require('../scatter/style').styleOnSelect, hoverPoints: require('./hover'), diff --git a/src/traces/scattergeo/plot.js b/src/traces/scattergeo/plot.js index 661bdaaba97..be9f7a4c083 100644 --- a/src/traces/scattergeo/plot.js +++ b/src/traces/scattergeo/plot.js @@ -6,23 +6,24 @@ * LICENSE file in the root directory of this source tree. */ - 'use strict'; var d3 = require('d3'); var Lib = require('../../lib'); -var BADNUM = require('../../constants/numerical').BADNUM; var getTopojsonFeatures = require('../../lib/topojson_utils').getTopojsonFeatures; var geoJsonUtils = require('../../lib/geojson_utils'); var geoUtils = require('../../lib/geo_location_utils'); +var findExtremes = require('../../plots/cartesian/autorange').findExtremes; +var BADNUM = require('../../constants/numerical').BADNUM; + +var calcMarkerSize = require('../scatter/calc').calcMarkerSize; var subTypes = require('../scatter/subtypes'); var style = require('./style'); -module.exports = function plot(gd, geo, calcData) { - for(var i = 0; i < calcData.length; i++) { - calcGeoJSON(calcData[i], geo.topojson); - } +function plot(gd, geo, calcData) { + var scatterLayer = geo.layers.frontplot.select('.scatterlayer'); + var gTraces = Lib.makeTraceGroups(scatterLayer, calcData, 'trace scattergeo'); function removeBADNUM(d, node) { if(d.lonlat[0] === BADNUM) { @@ -30,9 +31,6 @@ module.exports = function plot(gd, geo, calcData) { } } - var scatterLayer = geo.layers.frontplot.select('.scatterlayer'); - var gTraces = Lib.makeTraceGroups(scatterLayer, calcData, 'trace scattergeo'); - // TODO find a way to order the inner nodes on update gTraces.selectAll('*').remove(); @@ -73,10 +71,12 @@ module.exports = function plot(gd, geo, calcData) { // call style here within topojson request callback style(gd, calcTrace); }); -}; +} -function calcGeoJSON(calcTrace, topojson) { +function calcGeoJSON(calcTrace, fullLayout) { var trace = calcTrace[0].trace; + var geoLayout = fullLayout[trace.geo]; + var geo = geoLayout._subplot; var len = trace._length; var i, calcPt; @@ -84,7 +84,8 @@ function calcGeoJSON(calcTrace, topojson) { var locationmode = trace.locationmode; var features = locationmode === 'geojson-id' ? geoUtils.extractTraceFeature(calcTrace) : - getTopojsonFeatures(trace, topojson); + getTopojsonFeatures(trace, geo.topojson); + for(i = 0; i < len; i++) { calcPt = calcTrace[i]; @@ -95,4 +96,32 @@ function calcGeoJSON(calcTrace, topojson) { calcPt.lonlat = feature ? feature.properties.ct : [BADNUM, BADNUM]; } } + + var opts = {padded: true}; + var lonArray; + var latArray; + + if(geoLayout.fitbounds === 'geojson' && trace.locationmode === 'geojson-id') { + var bboxGeojson = geoUtils.computeBbox(geoUtils.getTraceGeojson(trace)); + lonArray = [bboxGeojson[0], bboxGeojson[2]]; + latArray = [bboxGeojson[1], bboxGeojson[3]]; + } else { + lonArray = new Array(len); + latArray = new Array(len); + for(i = 0; i < len; i++) { + calcPt = calcTrace[i]; + lonArray[i] = calcPt.lonlat[0]; + latArray[i] = calcPt.lonlat[1]; + } + + opts.ppad = calcMarkerSize(trace, len); + } + + trace._extremes.lon = findExtremes(geoLayout.lonaxis._ax, lonArray, opts); + trace._extremes.lat = findExtremes(geoLayout.lataxis._ax, latArray, opts); } + +module.exports = { + calcGeoJSON: calcGeoJSON, + plot: plot +}; diff --git a/test/image/baselines/geo_fitbounds-locations.png b/test/image/baselines/geo_fitbounds-locations.png new file mode 100644 index 0000000000000000000000000000000000000000..da9bd72700aa23d23c46df867585c5a221d70a87 GIT binary patch literal 187907 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 -XwWT1WgNo-24{actqW{aDr2E6}Js51rK(rQ2 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∈$+ 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

`9N79R%&DOT9g54gtfIG*;=8 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/geo_fitbounds-locations.json b/test/image/mocks/geo_fitbounds-locations.json new file mode 100644 index 00000000000..afc408a140d --- /dev/null +++ b/test/image/mocks/geo_fitbounds-locations.json @@ -0,0 +1,763 @@ +{ + "data": [ + { + "name": "equirectangular", + "geo": "geo", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "equirectangular" + }, + { + "geo": "geo", + "type": "scattergeo", + "mode": "text", + "text": "equirectangular", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "mercator", + "geo": "geo2", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "mercator" + }, + { + "geo": "geo2", + "type": "scattergeo", + "mode": "text", + "text": "mercator", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "orthographic", + "geo": "geo3", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "orthographic" + }, + { + "geo": "geo3", + "type": "scattergeo", + "mode": "text", + "text": "orthographic", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "natural earth", + "geo": "geo4", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "natural earth" + }, + { + "geo": "geo4", + "type": "scattergeo", + "mode": "text", + "text": "natural
earth", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "kavrayskiy7", + "geo": "geo5", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "kavrayskiy7" + }, + { + "geo": "geo5", + "type": "scattergeo", + "mode": "text", + "text": "kavrayskiy7", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "miller", + "geo": "geo6", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "miller" + }, + { + "geo": "geo6", + "type": "scattergeo", + "mode": "text", + "text": "miller", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "robinson", + "geo": "geo7", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "robinson" + }, + { + "geo": "geo7", + "type": "scattergeo", + "mode": "text", + "text": "robinson", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "eckert4", + "geo": "geo8", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "eckert4" + }, + { + "geo": "geo8", + "type": "scattergeo", + "mode": "text", + "text": "eckert4", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "azimuthal equal area", + "geo": "geo9", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "azimuthal equal area" + }, + { + "geo": "geo9", + "type": "scattergeo", + "mode": "text", + "text": "azimuthal
equal area", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "azimuthal equidistant", + "geo": "geo10", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "azimuthal equidistant" + }, + { + "geo": "geo10", + "type": "scattergeo", + "mode": "text", + "text": "azimuthal
equidistant", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "conic equal area", + "geo": "geo11", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "conic equal area" + }, + { + "geo": "geo11", + "type": "scattergeo", + "mode": "text", + "text": "conic
equal area", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "conic conformal", + "geo": "geo12", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "conic conformal" + }, + { + "geo": "geo12", + "type": "scattergeo", + "mode": "text", + "text": "conic
conformal", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "conic equidistant", + "geo": "geo13", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "conic equidistant" + }, + { + "geo": "geo13", + "type": "scattergeo", + "mode": "text", + "text": "conic
equidistant", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "gnomonic", + "geo": "geo14", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "gnomonic" + }, + { + "geo": "geo14", + "type": "scattergeo", + "mode": "text", + "text": "gnomonic", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "stereographic", + "geo": "geo15", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "stereographic" + }, + { + "geo": "geo15", + "type": "scattergeo", + "mode": "text", + "text": "stereographic", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "mollweide", + "geo": "geo16", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "mollweide" + }, + { + "geo": "geo16", + "type": "scattergeo", + "mode": "text", + "text": "mollweide", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "hammer", + "geo": "geo17", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "hammer" + }, + { + "geo": "geo17", + "type": "scattergeo", + "mode": "text", + "text": "hammer", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "transverse mercator", + "geo": "geo18", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "transverse mercator" + }, + { + "geo": "geo18", + "type": "scattergeo", + "mode": "text", + "text": "transverse
mercator", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "albers usa", + "geo": "geo19", + "type": "choropleth", + "locationmode": "USA-states", + "locations": [ + "WA" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "albers usa" + }, + { + "name": "albers usa", + "geo": "geo19", + "type": "scattergeo", + "locationmode": "USA-states", + "locations": [ + "WA" + ], + "mode": "text", + "text": "albers
usa", + "hoverinfo": "skip" + }, + { + "name": "winkel tripel", + "geo": "geo20", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "winkel tripel" + }, + { + "geo": "geo20", + "type": "scattergeo", + "mode": "text", + "text": "winkel
tripel", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "aitoff", + "geo": "geo21", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "aitoff" + }, + { + "geo": "geo21", + "type": "scattergeo", + "mode": "text", + "text": "aitoff", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + }, + { + "name": "sinusoidal", + "geo": "geo22", + "type": "choropleth", + "locations": [ + "AUS" + ], + "z": [ + 10 + ], + "showscale": false, + "hovertemplate": "sinusoidal" + }, + { + "geo": "geo22", + "type": "scattergeo", + "mode": "text", + "text": "sinusoidal", + "locations": [ + "AUS" + ], + "hoverinfo": "skip" + } + ], + "layout": { + "grid": { + "rows": 8, + "columns": 3 + }, + "showlegend": false, + "width": 650, + "height": 1200, + "margin": { + "l": 20, + "t": 20, + "r": 20, + "b": 20 + }, + "annotations": [ + { + "showarrow": false, + "text": "fitbounds
'locations'
for all
projection
types", + "font": { + "size": 24 + }, + "x": 1, + "xref": "paper", + "xanchor": "right", + "y": 0.1, + "yanchor": "bottom" + } + ], + "geo": { + "domain": { + "row": 0, + "column": 0 + }, + "projection": { + "type": "equirectangular" + }, + "fitbounds": "locations" + }, + "geo2": { + "domain": { + "row": 1, + "column": 0 + }, + "projection": { + "type": "mercator" + }, + "fitbounds": "locations" + }, + "geo3": { + "domain": { + "row": 2, + "column": 0 + }, + "projection": { + "type": "orthographic" + }, + "fitbounds": "locations" + }, + "geo4": { + "domain": { + "row": 3, + "column": 0 + }, + "projection": { + "type": "natural earth" + }, + "fitbounds": "locations" + }, + "geo5": { + "domain": { + "row": 4, + "column": 0 + }, + "projection": { + "type": "kavrayskiy7" + }, + "fitbounds": "locations" + }, + "geo6": { + "domain": { + "row": 5, + "column": 0 + }, + "projection": { + "type": "miller" + }, + "fitbounds": "locations" + }, + "geo7": { + "domain": { + "row": 6, + "column": 0 + }, + "projection": { + "type": "robinson" + }, + "fitbounds": "locations" + }, + "geo8": { + "domain": { + "row": 7, + "column": 0 + }, + "projection": { + "type": "eckert4" + }, + "fitbounds": "locations" + }, + "geo9": { + "domain": { + "row": 0, + "column": 1 + }, + "projection": { + "type": "azimuthal equal area" + }, + "fitbounds": "locations" + }, + "geo10": { + "domain": { + "row": 1, + "column": 1 + }, + "projection": { + "type": "azimuthal equidistant" + }, + "fitbounds": "locations" + }, + "geo11": { + "domain": { + "row": 2, + "column": 1 + }, + "projection": { + "type": "conic equal area" + }, + "fitbounds": "locations" + }, + "geo12": { + "domain": { + "row": 3, + "column": 1 + }, + "projection": { + "type": "conic conformal" + }, + "fitbounds": "locations" + }, + "geo13": { + "domain": { + "row": 4, + "column": 1 + }, + "projection": { + "type": "conic equidistant" + }, + "fitbounds": "locations" + }, + "geo14": { + "domain": { + "row": 5, + "column": 1 + }, + "projection": { + "type": "gnomonic" + }, + "fitbounds": "locations" + }, + "geo15": { + "domain": { + "row": 6, + "column": 1 + }, + "projection": { + "type": "stereographic" + }, + "fitbounds": "locations" + }, + "geo16": { + "domain": { + "row": 7, + "column": 1 + }, + "projection": { + "type": "mollweide" + }, + "fitbounds": "locations" + }, + "geo17": { + "domain": { + "row": 0, + "column": 2 + }, + "projection": { + "type": "hammer" + }, + "fitbounds": "locations" + }, + "geo18": { + "domain": { + "row": 1, + "column": 2 + }, + "projection": { + "type": "transverse mercator" + }, + "fitbounds": "locations" + }, + "geo19": { + "domain": { + "row": 2, + "column": 2 + }, + "projection": { + "type": "albers usa" + }, + "fitbounds": "locations", + "scope": "usa" + }, + "geo20": { + "domain": { + "row": 3, + "column": 2 + }, + "projection": { + "type": "winkel tripel" + }, + "fitbounds": "locations" + }, + "geo21": { + "domain": { + "row": 4, + "column": 2 + }, + "projection": { + "type": "aitoff" + }, + "fitbounds": "locations" + }, + "geo22": { + "domain": { + "row": 5, + "column": 2 + }, + "projection": { + "type": "sinusoidal" + }, + "fitbounds": "locations" + } + } +} diff --git a/test/image/mocks/geo_fitbounds-scopes.json b/test/image/mocks/geo_fitbounds-scopes.json new file mode 100644 index 00000000000..2d1420551a3 --- /dev/null +++ b/test/image/mocks/geo_fitbounds-scopes.json @@ -0,0 +1,433 @@ +{ + "data": [ + { + "name": "usa", + "geo": "geo", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -120, + 40 + ], + [ + -110, + 40 + ], + [ + -110, + 30 + ], + [ + -120, + 30 + ], + [ + -120, + 40 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) usa" + }, + { + "hovertemplate": "(%{lon},%{lat}) usa", + "geo": "geo", + "type": "scattergeo", + "lon": [ + -115 + ], + "lat": [ + 45 + ], + "marker": { + "size": 23 + } + }, + { + "name": "europe", + "geo": "geo2", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2, + 50 + ], + [ + 20, + 50 + ], + [ + 20, + 40 + ], + [ + 2, + 40 + ], + [ + 2, + 50 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) europe" + }, + { + "hovertemplate": "(%{lon},%{lat}) europe", + "geo": "geo2", + "type": "scattergeo", + "lon": [ + 24 + ], + "lat": [ + 45 + ], + "marker": { + "size": 23 + } + }, + { + "name": "asia", + "geo": "geo3", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 120, + 50 + ], + [ + 150, + 50 + ], + [ + 150, + 20 + ], + [ + 120, + 20 + ], + [ + 120, + 50 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) asia" + }, + { + "hovertemplate": "(%{lon},%{lat}) asia", + "geo": "geo3", + "type": "scattergeo", + "lon": [ + 155 + ], + "lat": [ + 30 + ], + "marker": { + "size": 23 + } + }, + { + "name": "africa", + "geo": "geo4", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 2, + 1 + ], + [ + 20, + 1 + ], + [ + 20, + -20 + ], + [ + 2, + -20 + ], + [ + 2, + 1 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) africa" + }, + { + "hovertemplate": "(%{lon},%{lat}) africa", + "geo": "geo4", + "type": "scattergeo", + "lon": [ + -2 + ], + "lat": [ + 10 + ], + "marker": { + "size": 23 + } + }, + { + "name": "north america", + "geo": "geo5", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -120, + 40 + ], + [ + -110, + 40 + ], + [ + -110, + 30 + ], + [ + -120, + 30 + ], + [ + -120, + 40 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) north america" + }, + { + "hovertemplate": "(%{lon},%{lat}) north america", + "geo": "geo5", + "type": "scattergeo", + "lon": [ + -125 + ], + "lat": [ + 25 + ], + "marker": { + "size": 23 + } + }, + { + "name": "south america", + "geo": "geo6", + "type": "choropleth", + "locations": [ + 1 + ], + "z": [ + 1 + ], + "showscale": false, + "geojson": { + "type": "Feature", + "id": 1, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -60, + -20 + ], + [ + -50, + -20 + ], + [ + -50, + -40 + ], + [ + -60, + -40 + ], + [ + -60, + -20 + ] + ] + ] + } + }, + "marker": { + "opacity": 0.6 + }, + "hovertemplate": "(%{ct[0]},%{ct[1]}) south america" + }, + { + "hovertemplate": "(%{lon},%{lat}) south america", + "geo": "geo6", + "type": "scattergeo", + "lon": [ + -55 + ], + "lat": [ + -45 + ], + "marker": { + "size": 23 + } + } + ], + "layout": { + "grid": { + "rows": 3, + "columns": 2 + }, + "showlegend": false, + "width": 650, + "height": 900, + "margin": { + "l": 20, + "t": 20, + "r": 20, + "b": 20 + }, + "geo": { + "domain": { + "row": 0, + "column": 0 + }, + "scope": "usa", + "fitbounds": "locations" + }, + "geo2": { + "domain": { + "row": 1, + "column": 0 + }, + "scope": "europe", + "fitbounds": "locations" + }, + "geo3": { + "domain": { + "row": 2, + "column": 0 + }, + "scope": "asia", + "fitbounds": "locations" + }, + "geo4": { + "domain": { + "row": 0, + "column": 1 + }, + "scope": "africa", + "fitbounds": "locations" + }, + "geo5": { + "domain": { + "row": 1, + "column": 1 + }, + "scope": "north america", + "fitbounds": "locations" + }, + "geo6": { + "domain": { + "row": 2, + "column": 1 + }, + "scope": "south america", + "fitbounds": "locations" + } + } +} diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index 897a84981fe..a5589516d05 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -128,7 +128,7 @@ describe('Test Geo layout defaults', function() { }); }); - it('should not coerce projection.parallels if type is conic', function() { + it('should only coerce projection.parallels if type is conic', function() { var projTypes = layoutAttributes.projection.type.values; function testOne(projType) { @@ -463,6 +463,166 @@ describe('Test Geo layout defaults', function() { }); }); }); + + describe('should clear attributes that get auto-filled under *fitbounds*', function() { + var vals = ['locations', 'geojson']; + + function _assert(exp) { + expect(layoutOut.geo.projection.scale).toBe(exp['projection.scale'], 'projection.scale'); + expect(layoutOut.geo.center.lon).toBe(exp['center.lon'], 'center.lon'); + expect(layoutOut.geo.center.lat).toBe(exp['center.lat'], 'center.lat'); + expect(layoutOut.geo.projection.rotation.lon).toBe(exp['projection.rotation.lon'], 'projection.rotation.lon'); + expect(layoutOut.geo.projection.rotation.lat).toBe(exp['projection.rotation.lat'], 'projection.rotation.lat'); + expect(layoutOut.geo.lonaxis.range).withContext('lonaxis.range').toEqual(exp['lonaxis.range'], 'lonaxis.range'); + expect(layoutOut.geo.lataxis.range).withContext('lataxis.range').toEqual(exp['lataxis.range'], 'lataxis.range'); + } + + describe('- for scoped maps', function() { + it('fitbounds:false (base case)', function() { + layoutIn = { + geo: { + scope: 'europe', + fitbounds: false + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': 1, + 'center.lon': 15, + 'center.lat': 57.5, + 'projection.rotation.lon': 15, + 'projection.rotation.lat': 0, + 'lonaxis.range': [-30, 60], + 'lataxis.range': [30, 85] + }); + }); + + vals.forEach(function(v) { + it('fitbounds:' + v, function() { + layoutIn = { + geo: { + scope: 'europe', + fitbounds: v + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': undefined, + 'center.lon': undefined, + 'center.lat': undefined, + 'projection.rotation.lon': 15, + 'projection.rotation.lat': 0, + 'lonaxis.range': [-30, 60], + 'lataxis.range': [30, 85] + }); + }); + }); + }); + + describe('- for clipped projections', function() { + it('fitbounds:false (base case)', function() { + layoutIn = { + geo: { + projection: { + type: 'orthographic', + rotation: {lon: 20, lat: 20}, + scale: 2 + }, + fitbounds: false, + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': 2, + 'center.lon': 20, + 'center.lat': 20, + 'projection.rotation.lon': 20, + 'projection.rotation.lat': 20, + 'lonaxis.range': [-70, 110], + 'lataxis.range': [-70, 110] + }); + }); + + vals.forEach(function(v) { + it('fitbounds:' + v, function() { + layoutIn = { + geo: { + projection: { + type: 'orthographic', + rotation: {lon: 20, lat: 20}, + scale: 2 + }, + fitbounds: v + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': undefined, + 'center.lon': undefined, + 'center.lat': undefined, + 'projection.rotation.lon': undefined, + 'projection.rotation.lat': undefined, + 'lonaxis.range': undefined, + 'lataxis.range': undefined + }); + }); + }); + }); + + describe('- for non-clipped projections', function() { + it('fitbounds:false (base case)', function() { + layoutIn = { + geo: { + projection: { + type: 'natural earth', + rotation: {lon: 20}, + scale: 2 + }, + lonaxis: {range: [-90, 90]}, + lataxis: {range: [0, 80]}, + fitbounds: false, + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': 2, + 'center.lon': 20, + 'center.lat': 40, + 'projection.rotation.lon': 20, + 'projection.rotation.lat': 0, + 'lonaxis.range': [-90, 90], + 'lataxis.range': [0, 80] + }); + }); + + vals.forEach(function(v) { + it('fitbounds:' + v, function() { + layoutIn = { + geo: { + projection: { + type: 'natural earth', + rotation: {lon: 20}, + scale: 2 + }, + lonaxis: {range: [-90, 90]}, + lataxis: {range: [0, 80]}, + fitbounds: v, + } + }; + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + 'projection.scale': undefined, + 'center.lon': undefined, + 'center.lat': undefined, + 'projection.rotation.lon': undefined, + 'projection.rotation.lat': 0, + 'lonaxis.range': [-90, 90], + 'lataxis.range': [0, 80] + }); + }); + }); + }); + }); }); describe('geojson / topojson utils', function() { @@ -1192,6 +1352,7 @@ describe('Test geo interactions', function() { expect(geoLayout.lataxis.range).toEqual([-90, 90]); expect(geo.viewInitial).toEqual({ + 'fitbounds': false, 'projection.rotation.lon': 0, 'center.lon': 0, 'center.lat': 0, @@ -1303,6 +1464,7 @@ describe('Test geo interactions', function() { Plotly.react(gd, figWorld) .then(function() { _assertViewInitial('world scope', { + 'fitbounds': false, 'center.lon': 0, 'center.lat': 0, 'projection.scale': 1, @@ -1312,6 +1474,7 @@ describe('Test geo interactions', function() { .then(function() { return Plotly.react(gd, figUSA); }) .then(function() { _assertViewInitial('react to usa scope', { + 'fitbounds': false, 'center.lon': -96.6, 'center.lat': 38.7, 'projection.scale': 1 @@ -1320,6 +1483,7 @@ describe('Test geo interactions', function() { .then(function() { return Plotly.react(gd, figNA); }) .then(function() { _assertViewInitial('react to NA scope', { + 'fitbounds': false, 'center.lon': -112.5, 'center.lat': 45, 'projection.scale': 1 @@ -1328,6 +1492,7 @@ describe('Test geo interactions', function() { .then(function() { return Plotly.react(gd, figWorld); }) .then(function() { _assertViewInitial('react back to world scope', { + 'fitbounds': false, 'center.lon': 0, 'center.lat': 0, 'projection.scale': 1, @@ -1390,6 +1555,8 @@ describe('Test geo interactions', function() { .catch(failTest) .then(done); }); + + // TODO add test for scope:'none' }); }); @@ -1774,25 +1941,27 @@ describe('Test geo zoom/pan/drag interactions:', function() { }); } - it('should work for non-clipped projections', function(done) { - var fig = Lib.extendDeep({}, require('@mocks/geo_winkel-tripel')); - fig.layout.width = 700; - fig.layout.height = 500; - fig.layout.dragmode = 'pan'; + describe('should work for non-clipped projections', function() { + var fig; + + beforeEach(function() { + fig = Lib.extendDeep({}, require('@mocks/geo_winkel-tripel')); + fig.layout.width = 700; + fig.layout.height = 500; + fig.layout.dragmode = 'pan'; + }); function _assert(step, attr, proj, eventKeys) { var msg = '[' + step + '] '; var geoLayout = gd._fullLayout.geo; - var rotation = geoLayout.projection.rotation; - var center = geoLayout.center; + var rotation = geoLayout.projection.rotation || {}; + var center = geoLayout.center || {}; var scale = geoLayout.projection.scale; - expect(rotation.lon).toBeCloseTo(attr[0][0], 1, msg + 'rotation.lon'); - expect(rotation.lat).toBeCloseTo(attr[0][1], 1, msg + 'rotation.lat'); - expect(center.lon).toBeCloseTo(attr[1][0], 1, msg + 'center.lon'); - expect(center.lat).toBeCloseTo(attr[1][1], 1, msg + 'center.lat'); - expect(scale).toBeCloseTo(attr[2], 1, msg + 'zoom'); + expect([rotation.lon, rotation.lat]).toBeCloseToArray(attr[0], 1, msg + 'rotation.(lon|lat)'); + expect([center.lon, center.lat]).toBeCloseToArray(attr[1], 1, msg + 'center.(lon|lat)'); + expect(scale)[typeof scale === 'number' ? 'toBeCloseTo' : 'toBe'](attr[2], 1, msg + 'zoom'); var geo = geoLayout._subplot; var rotate = geo.projection.rotate(); @@ -1811,85 +1980,145 @@ describe('Test geo zoom/pan/drag interactions:', function() { assertEventData(msg, eventKeys); } - plot(fig).then(function() { - _assert('base', [ - [-90, 0], [-90, 0], 1 - ], [ - [90, 0], [350, 260], [0, 0], 101.9 - ], undefined); - return drag({path: [[350, 250], [400, 250]], noCover: true}); - }) - .then(function() { - _assert('after east-west drag', [ - [-124.4, 0], [-124.4, 0], 1 - ], [ - [124.4, 0], [350, 260], [0, 0], 101.9 - ], [ - 'geo.projection.rotation.lon', 'geo.center.lon' - ]); - return drag({path: [[400, 250], [400, 300]], noCover: true}); - }) - .then(function() { - _assert('after north-south drag', [ - [-124.4, 0], [-124.4, 28.1], 1 - ], [ - [124.4, 0], [350, 310], [0, 0], 101.9 - ], [ - 'geo.center.lat' - ]); - return scroll([200, 250], [-200, -200]); - }) - .then(function() { - _assert('after off-center scroll', [ - [-151.2, 0], [-151.2, 29.5], 1.3 - ], [ - [151.2, 0], [350, 329.2], [0, 0], 134.4 - ], [ - 'geo.projection.rotation.lon', - 'geo.center.lon', 'geo.center.lat', - 'geo.projection.scale' - ]); - return Plotly.relayout(gd, 'geo.showocean', false); - }) - .then(function() { - _assert('after some relayout call that causes a replot', [ - [-151.2, 0], [-151.2, 29.5], 1.3 - ], [ - // converts translate (px) to center (lonlat) - [151.2, 0], [350, 260], [0, 29.5], 134.4 - ], [ - 'geo.showocean' - ]); - return dblClick([350, 250]); - }) - .then(function() { - // resets to initial view - _assert('after double click', [ - [-90, 0], [-90, 0], 1 - ], [ - [90, 0], [350, 260], [0, 0], 101.9 - ], 'dblclick'); - }) - .catch(failTest) - .then(done); + it('- base case', function(done) { + plot(fig).then(function() { + _assert('base', [ + [-90, 0], [-90, 0], 1 + ], [ + [90, 0], [350, 260], [0, 0], 101.9 + ], undefined); + return drag({path: [[350, 250], [400, 250]], noCover: true}); + }) + .then(function() { + _assert('after east-west drag', [ + [-124.4, 0], [-124.4, 0], 1 + ], [ + [124.4, 0], [350, 260], [0, 0], 101.9 + ], [ + 'geo.projection.rotation.lon', 'geo.center.lon' + ]); + return drag({path: [[400, 250], [400, 300]], noCover: true}); + }) + .then(function() { + _assert('after north-south drag', [ + [-124.4, 0], [-124.4, 28.1], 1 + ], [ + [124.4, 0], [350, 310], [0, 0], 101.9 + ], [ + 'geo.center.lat' + ]); + return scroll([200, 250], [-200, -200]); + }) + .then(function() { + _assert('after off-center scroll', [ + [-151.2, 0], [-151.2, 29.5], 1.3 + ], [ + [151.2, 0], [350, 329.2], [0, 0], 134.4 + ], [ + 'geo.projection.rotation.lon', + 'geo.center.lon', 'geo.center.lat', + 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showocean', false); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + [-151.2, 0], [-151.2, 29.5], 1.3 + ], [ + // converts translate (px) to center (lonlat) + [151.2, 0], [350, 260], [0, 29.5], 134.4 + ], [ + 'geo.showocean' + ]); + return dblClick([350, 250]); + }) + .then(function() { + // resets to initial view + _assert('after double click', [ + [-90, 0], [-90, 0], 1 + ], [ + [90, 0], [350, 260], [0, 0], 101.9 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); + + it('- fitbounds case', function(done) { + fig.layout.geo.fitbounds = 'locations'; + + plot(fig).then(function() { + _assert('base', [ + [undefined, 0], [undefined, undefined], undefined + ], [ + [-180, -0], [350, 260], [0, 0], 114.59 + ], undefined); + return drag({path: [[350, 250], [400, 250]], noCover: true}); + }) + .then(function() { + _assert('after east-west drag', [ + [149.40, 0], [149.40, 0], 1.1249 + ], [ + [-149.40, 0], [350, 260], [0, 0], 114.59 + ], [ + 'geo.projection.rotation.lon', 'geo.center.lon', 'geo.center.lat', + 'geo.projection.scale', 'geo.fitbounds' + ]); + return scroll([200, 250], [-200, -200]); + }) + .then(function() { + _assert('after off-center scroll', [ + [127.176, 0], [127.176, 1.21], 1.484 + ], [ + [-127.176, 0], [350, 263.195], [0, 0], 151.20 + ], [ + 'geo.projection.rotation.lon', 'geo.center.lon', + 'geo.center.lat', 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showocean', false); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + // converts translate (px) to center (lonlat) + [127.176, 0], [127.176, 1.21], 1.484 + ], [ + [-127.176, 0], [350, 260], [0, 1.21], 151.20 + ], [ + 'geo.showocean' + ]); + return dblClick([350, 250]); + }) + .then(function() { + _assert('after double click', [ + [undefined, 0], [undefined, undefined], undefined + ], [ + [-180, -0], [350, 260], [0, 0], 114.59 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); }); - it('should work for clipped projections', function(done) { - var fig = Lib.extendDeep({}, require('@mocks/geo_orthographic')); - fig.layout.dragmode = 'pan'; + describe('should work for clipped projections', function() { + var fig; - // of layout width = height = 500 + beforeEach(function() { + fig = Lib.extendDeep({}, require('@mocks/geo_orthographic')); + fig.layout.dragmode = 'pan'; + + // of layout width = height = 500 + }); function _assert(step, attr, proj, eventKeys) { var msg = '[' + step + '] '; var geoLayout = gd._fullLayout.geo; - var rotation = geoLayout.projection.rotation; + var rotation = geoLayout.projection.rotation || []; var scale = geoLayout.projection.scale; - expect(rotation.lon).toBeCloseTo(attr[0][0], 0, msg + 'rotation.lon'); - expect(rotation.lat).toBeCloseTo(attr[0][1], 0, msg + 'rotation.lat'); - expect(scale).toBeCloseTo(attr[1], 1, msg + 'zoom'); + expect([rotation.lon, rotation.lat]).toBeCloseToArray(attr[0], -0.5, msg + 'rotation.(lon|lat)'); + expect(scale)[typeof scale === 'number' ? 'toBeCloseTo' : 'toBe'](attr[1], 1, msg + 'zoom'); var geo = geoLayout._subplot; var rotate = geo.projection.rotate(); @@ -1902,84 +2131,144 @@ describe('Test geo zoom/pan/drag interactions:', function() { assertEventData(msg, eventKeys); } - plot(fig).then(function() { - _assert('base', [ - [-75, 45], 1 - ], [ - [75, -45], 160 - ], undefined); - return drag({path: [[250, 250], [300, 250]], noCover: true}); - }) - .then(function() { - _assert('after east-west drag', [ - [-103.7, 49.3], 1 - ], [ - [103.7, -49.3], 160 - ], [ - 'geo.projection.rotation.lon', 'geo.projection.rotation.lat' - ]); - return drag({path: [[250, 250], [300, 300]], noCover: true}); - }) - .then(function() { - _assert('after NW-SE drag', [ - [-135.5, 73.8], 1 - ], [ - [135.5, -73.8], 160 - ], [ - 'geo.projection.rotation.lon', 'geo.projection.rotation.lat' - ]); - return scroll([300, 300], [-200, -200]); - }) - .then(function() { - _assert('after scroll', [ - [-126.2, 67.1], 1.3 - ], [ - [126.2, -67.1], 211.1 - ], [ - 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', - 'geo.projection.scale' - ]); - return Plotly.relayout(gd, 'geo.showocean', false); - }) - .then(function() { - _assert('after some relayout call that causes a replot', [ - [-126.2, 67.1], 1.3 - ], [ - [126.2, -67.1], 211.1 - ], [ - 'geo.showocean' - ]); - return dblClick([350, 250]); - }) - .then(function() { - // resets to initial view - _assert('after double click', [ - [-75, 45], 1 - ], [ - [75, -45], 160 - ], 'dblclick'); - }) - .catch(failTest) - .then(done); + it('- base case', function(done) { + plot(fig).then(function() { + _assert('base', [ + [-75, 45], 1 + ], [ + [75, -45], 160 + ], undefined); + return drag({path: [[250, 250], [300, 250]], noCover: true}); + }) + .then(function() { + _assert('after east-west drag', [ + [-103.7, 49.3], 1 + ], [ + [103.7, -49.3], 160 + ], [ + 'geo.projection.rotation.lon', 'geo.projection.rotation.lat' + ]); + return drag({path: [[250, 250], [300, 300]], noCover: true}); + }) + .then(function() { + _assert('after NW-SE drag', [ + [-135.5, 73.8], 1 + ], [ + [135.5, -73.8], 160 + ], [ + 'geo.projection.rotation.lon', 'geo.projection.rotation.lat' + ]); + return scroll([300, 300], [-200, -200]); + }) + .then(function() { + _assert('after scroll', [ + [-126.2, 67.1], 1.3 + ], [ + [126.2, -67.1], 211.1 + ], [ + 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', + 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showocean', false); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + [-126.2, 67.1], 1.3 + ], [ + [126.2, -67.1], 211.1 + ], [ + 'geo.showocean' + ]); + return dblClick([350, 250]); + }) + .then(function() { + // resets to initial view + _assert('after double click', [ + [-75, 45], 1 + ], [ + [75, -45], 160 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); + + it('- fitbounds case', function(done) { + fig.layout.geo.fitbounds = 'locations'; + + plot(fig).then(function() { + _assert('base', [ + [undefined, undefined], undefined + ], [ + [0.252, -19.8], 160 + ], undefined); + return drag({path: [[250, 250], [300, 250]], noCover: true}); + }) + .then(function() { + _assert('after east-west drag', [ + [-20.32, 21.226], 1 + ], [ + [20.32, -21.226], 160 + ], [ + 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', + 'geo.projection.scale', 'geo.fitbounds' + ]); + return scroll([300, 300], [-200, -200]); + }) + .then(function() { + _assert('after scroll', [ + [-15.19, 16.91], 1.319 + ], [ + [15.19, -16.91], 211.15 + ], [ + 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', + 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showocean', false); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + [-15.19, 16.91], 1.319 + ], [ + [15.19, -16.91], 211.15 + ], [ + 'geo.showocean' + ]); + return dblClick([350, 250]); + }) + .then(function() { + // resets to initial view + _assert('after double click', [ + [undefined, undefined], undefined + ], [ + [0.252, -19.8], 160 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); }); - it('should work for scoped projections', function(done) { - var fig = Lib.extendDeep({}, require('@mocks/geo_europe-bubbles')); - fig.layout.geo.resolution = 110; - fig.layout.dragmode = 'pan'; + describe('should work for scoped projections', function() { + var fig; - // of layout width = height = 500 + beforeEach(function() { + fig = Lib.extendDeep({}, require('@mocks/geo_europe-bubbles')); + fig.layout.geo.resolution = 110; + fig.layout.dragmode = 'pan'; + + // of layout width = height = 500 + }); function _assert(step, attr, proj, eventKeys) { var msg = '[' + step + '] '; var geoLayout = gd._fullLayout.geo; - var center = geoLayout.center; + var center = geoLayout.center || {}; var scale = geoLayout.projection.scale; - expect(center.lon).toBeCloseTo(attr[0][0], -0.5, msg + 'center.lon'); - expect(center.lat).toBeCloseTo(attr[0][1], -0.5, msg + 'center.lat'); - expect(scale).toBeCloseTo(attr[1], 1, msg + 'zoom'); + expect([center.lon, center.lat]).toBeCloseToArray(attr[0], -0.5, msg + 'center.(lon|lat)'); + expect(scale)[typeof scale === 'number' ? 'toBeCloseTo' : 'toBe'](attr[1], 1, msg + 'zoom'); var geo = geoLayout._subplot; var translate = geo.projection.translate(); @@ -1995,55 +2284,112 @@ describe('Test geo zoom/pan/drag interactions:', function() { assertEventData(msg, eventKeys); } - plot(fig).then(function() { - _assert('base', [ - [15, 57.5], 1, - ], [ - [247, 260], [0, 57.5], 292.2 - ], undefined); - return drag({path: [[250, 250], [200, 200]], noCover: true}); - }) - .then(function() { - _assert('after SW-NE drag', [ - [30.9, 46.2], 1 - ], [ - // changes translate(), but not center() - [197, 210], [0, 57.5], 292.2 - ], [ - 'geo.center.lon', 'geo.center.lon' - ]); - return scroll([300, 300], [-200, -200]); - }) - .then(function() { - _assert('after scroll', [ - [34.3, 43.6], 1.3 - ], [ - [164.1, 181.2], [0, 57.5], 385.5 - ], [ - 'geo.center.lon', 'geo.center.lon', 'geo.projection.scale' - ]); - return Plotly.relayout(gd, 'geo.showlakes', true); - }) - .then(function() { - _assert('after some relayout call that causes a replot', [ - [34.3, 43.6], 1.3 - ], [ - // changes are now reflected in 'center' - [247, 260], [19.3, 43.6], 385.5 - ], [ - 'geo.showlakes' - ]); - return dblClick([250, 250]); - }) - .then(function() { - _assert('after double click', [ - [15, 57.5], 1, - ], [ - [247, 260], [0, 57.5], 292.2 - ], 'dblclick'); - }) - .catch(failTest) - .then(done); + it('- base case', function(done) { + plot(fig).then(function() { + _assert('base', [ + [15, 57.5], 1, + ], [ + [247, 260], [0, 57.5], 292.2 + ], undefined); + return drag({path: [[250, 250], [200, 200]], noCover: true}); + }) + .then(function() { + _assert('after SW-NE drag', [ + [30.9, 46.2], 1 + ], [ + // changes translate(), but not center() + [197, 210], [0, 57.5], 292.2 + ], [ + 'geo.center.lon', 'geo.center.lon' + ]); + return scroll([300, 300], [-200, -200]); + }) + .then(function() { + _assert('after scroll', [ + [34.3, 43.6], 1.3 + ], [ + [164.1, 181.2], [0, 57.5], 385.5 + ], [ + 'geo.center.lon', 'geo.center.lon', 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showlakes', true); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + [34.3, 43.6], 1.3 + ], [ + // changes are now reflected in 'center' + [247, 260], [19.3, 43.6], 385.5 + ], [ + 'geo.showlakes' + ]); + return dblClick([250, 250]); + }) + .then(function() { + _assert('after double click', [ + [15, 57.5], 1, + ], [ + [247, 260], [0, 57.5], 292.2 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); + + it('- fitbounds case', function(done) { + fig.layout.geo.fitbounds = 'locations'; + + plot(fig).then(function() { + _assert('base', [ + [undefined, undefined], undefined, + ], [ + [247, 260], [5.7998, 49.29], 504.8559 + ], undefined); + return drag({path: [[250, 250], [200, 200]], noCover: true}); + }) + .then(function() { + _assert('after SW-NE drag', [ + [29.059, 42.38], 1.727 + ], [ + [197, 210], [5.7988, 49.29], 504.8559 + ], [ + 'geo.center.lon', 'geo.center.lon', + 'geo.projection.scale', 'geo.fitbounds' + ]); + return scroll([300, 300], [-200, -200]); + }) + .then(function() { + _assert('after scroll', [ + [31.027, 40.91], 2.28 + ], [ + [164.09, 181.24], [5.7988, 49.29], 666.16 + ], [ + 'geo.center.lon', 'geo.center.lon', + 'geo.projection.scale' + ]); + return Plotly.relayout(gd, 'geo.showlakes', true); + }) + .then(function() { + _assert('after some relayout call that causes a replot', [ + [31.027, 40.91], 2.28 + ], [ + // changes are now reflected in 'center' + [247, 260], [16.027, 40.91], 666.16 + ], [ + 'geo.showlakes' + ]); + return dblClick([250, 250]); + }) + .then(function() { + _assert('after double click', [ + [undefined, undefined], undefined, + ], [ + [247, 260], [5.7998, 49.29], 504.8559 + ], 'dblclick'); + }) + .catch(failTest) + .then(done); + }); }); it('should work for *albers usa* projections', function(done) { diff --git a/test/jasmine/tests/plot_api_react_test.js b/test/jasmine/tests/plot_api_react_test.js index e622f3bb175..1050c7225fa 100644 --- a/test/jasmine/tests/plot_api_react_test.js +++ b/test/jasmine/tests/plot_api_react_test.js @@ -1450,6 +1450,39 @@ describe('Plotly.react and uirevision attributes', function() { _run(fig, editView, checkOriginalView, checkEditedView).then(done); }); + it('preserves geo viewport changes using geo.uirevision (fitbounds case)', function(done) { + function fig(mainRev, geoRev) { + return { + data: [{ + type: 'scattergeo', lon: [0, -75], lat: [0, 45] + }], + layout: { + uirevision: mainRev, + geo: {uirevision: geoRev, fitbounds: 'locations'} + } + }; + } + + function attrs(original) { + return { + 'geo.fitbounds': original ? ['locations', 'locations'] : false, + 'geo.projection.scale': original ? [undefined, undefined] : 3, + 'geo.projection.rotation.lon': original ? [undefined, undefined] : -45, + 'geo.center.lat': original ? [undefined, undefined] : 22, + 'geo.center.lon': original ? [undefined, undefined] : -45 + }; + } + + function editView() { + return Registry.call('_guiRelayout', gd, attrs()); + } + + var checkOriginalView = checkState([], attrs(true)); + var checkEditedView = checkState([], attrs()); + + _run(fig, editView, checkOriginalView, checkEditedView).then(done); + }); + it('@gl preserves 3d camera changes using scene.uirevision', function(done) { function fig(mainRev, sceneRev) { return { From aeaa06d516a1bad7ea90937e5739210a2a5a168e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 10 Dec 2019 10:52:05 -0500 Subject: [PATCH 04/12] fix potential race condition in fetchTraceGeoData --- src/lib/geo_location_utils.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index bab4c491c0e..351987a6638 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -326,18 +326,39 @@ function fetchTraceGeoData(calcData) { } PlotlyGeoAssets[url] = d; - resolve(d); + return resolve(d); }); }); } + function wait(url) { + return new Promise(function(resolve, reject) { + var cnt = 0; + var interval = setInterval(function() { + if(PlotlyGeoAssets[url] && PlotlyGeoAssets[url] !== 'pending') { + clearInterval(interval); + return resolve(PlotlyGeoAssets[url]); + } + if(cnt > 100) { + clearInterval(interval); + return reject('Unexpected error while fetching from ' + url); + } + cnt++; + }, 50); + }); + } + for(var i = 0; i < calcData.length; i++) { var trace = calcData[i][0].trace; var url = trace.geojson; - if(typeof url === 'string' && !PlotlyGeoAssets[url]) { - PlotlyGeoAssets[url] = 'pending'; - promises.push(fetch(url)); + if(typeof url === 'string') { + if(!PlotlyGeoAssets[url]) { + PlotlyGeoAssets[url] = 'pending'; + promises.push(fetch(url)); + } else if(PlotlyGeoAssets[url] === 'pending') { + promises.push(wait(url)); + } } } From 98079a116711b561a396908912bcdd7be6ff37fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 10 Dec 2019 16:03:32 -0500 Subject: [PATCH 05/12] call resetViews once per-click NOT once per-subplot per-click --- src/components/modebar/buttons.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index bc9e259f1fc..57d13162bf0 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -479,10 +479,12 @@ function handleGeo(gd, ev) { var newScale = (val === 'in') ? 2 * scale : 0.5 * scale; Registry.call('_guiRelayout', gd, id + '.projection.scale', newScale); - } else if(attr === 'reset') { - resetView(gd, 'geo'); } } + + if(attr === 'reset') { + resetView(gd, 'geo'); + } } modeBarButtons.hoverClosestGl2d = { From 5854f6fb8d3733cf4e677c870de8ee3dfd5f9254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 10 Dec 2019 16:54:51 -0500 Subject: [PATCH 06/12] fix handling of locations[i] `0` ... in choropleth and scattergeo traces --- src/lib/geo_location_utils.js | 4 +- src/traces/scattergeo/calc.js | 13 +- .../image/baselines/geo_fitbounds-geojson.png | Bin 0 -> 26115 bytes test/image/mocks/geo_fitbounds-geojson.json | 180 ++++++++++++++++++ 4 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 test/image/baselines/geo_fitbounds-geojson.png create mode 100644 test/image/mocks/geo_fitbounds-geojson.json diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 351987a6638..e4cf956e203 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -213,7 +213,9 @@ function extractTraceFeature(calcTrace) { for(i = 0; i < trace._length; i++) { var cdi = calcTrace[i]; - if(cdi.loc) lookup[cdi.loc] = cdi; + if(cdi.loc || cdi.loc === 0) { + lookup[cdi.loc] = cdi; + } } function appendFeature(fIn) { diff --git a/src/traces/scattergeo/calc.js b/src/traces/scattergeo/calc.js index 537b0562307..c24e811e1c1 100644 --- a/src/traces/scattergeo/calc.js +++ b/src/traces/scattergeo/calc.js @@ -18,17 +18,28 @@ var calcSelection = require('../scatter/calc_selection'); var _ = require('../../lib')._; +function isNonBlankString(v) { + return v && typeof v === 'string'; +} + module.exports = function calc(gd, trace) { var hasLocationData = Array.isArray(trace.locations); var len = hasLocationData ? trace.locations.length : trace._length; var calcTrace = new Array(len); + var isValidLoc; + if(trace.geojson) { + isValidLoc = function(v) { return isNonBlankString(v) || isNumeric(v); }; + } else { + isValidLoc = isNonBlankString; + } + for(var i = 0; i < len; i++) { var calcPt = calcTrace[i] = {}; if(hasLocationData) { var loc = trace.locations[i]; - calcPt.loc = typeof loc === 'string' ? loc : null; + calcPt.loc = isValidLoc(loc) ? loc : null; } else { var lon = trace.lon[i]; var lat = trace.lat[i]; diff --git a/test/image/baselines/geo_fitbounds-geojson.png b/test/image/baselines/geo_fitbounds-geojson.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c565042adf241ac39fc5280104ae370108808d GIT binary patch literal 26115 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 Date: Tue, 10 Dec 2019 18:01:30 -0500 Subject: [PATCH 07/12] add `ct` key to choropleth* event data ... which makes `%{ct}` available to hovertemplate strings! --- src/traces/choropleth/event_data.js | 1 + test/jasmine/tests/choropleth_test.js | 4 ++-- test/jasmine/tests/choroplethmapbox_test.js | 4 ++-- test/jasmine/tests/geo_test.js | 6 +++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/traces/choropleth/event_data.js b/src/traces/choropleth/event_data.js index a5b037ddbd7..5f260bf39f7 100644 --- a/src/traces/choropleth/event_data.js +++ b/src/traces/choropleth/event_data.js @@ -17,6 +17,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { if(cdi.fIn && cdi.fIn.properties) { out.properties = cdi.fIn.properties; } + out.ct = cdi.ct; return out; }; diff --git a/test/jasmine/tests/choropleth_test.js b/test/jasmine/tests/choropleth_test.js index b452191c740..9aee3409e56 100644 --- a/test/jasmine/tests/choropleth_test.js +++ b/test/jasmine/tests/choropleth_test.js @@ -306,10 +306,10 @@ describe('Test choropleth hover:', function() { it('should include *properties* from input custom geojson', function(done) { var fig = Lib.extendDeep({}, require('@mocks/geo_custom-geojson.json')); fig.data = [fig.data[1]]; - fig.data[0].hovertemplate = '%{properties.name}'; + fig.data[0].hovertemplate = '%{properties.name}%{ct[0]:.1f} | %{ct[1]:.1f}'; fig.layout.geo.projection = {scale: 20}; - run([300, 200], fig, ['New York']).then(done); + run([300, 200], fig, ['New York', '-75.1 | 42.6']).then(done); }); }); diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index 74bb08aa969..dbb675a5635 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -622,11 +622,11 @@ describe('@noCI Test choroplethmapbox hover:', function() { fig.data = [fig.data[1]]; fig.data[0].locations = [100]; fig.data[0].geojson.id = 100; - fig.data[0].hovertemplate = '### %{location}%{location} ###'; + fig.data[0].hovertemplate = '### %{location}%{ct[0]:.1f} | %{ct[1]:.1f} ###'; return fig; }, nums: '### 100', - name: '100 ###', + name: '-86.7 | 32.0 ###', evtPts: [{location: 100, z: 10, pointNumber: 0, curveNumber: 0}] }]; diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index a5589516d05..79fe3dde677 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -861,7 +861,7 @@ describe('Test geo interactions', function() { it('should contain the correct fields', function() { expect(Object.keys(ptData)).toEqual([ 'data', 'fullData', 'curveNumber', 'pointNumber', 'pointIndex', - 'location', 'z' + 'location', 'z', 'ct' ]); }); @@ -889,7 +889,7 @@ describe('Test geo interactions', function() { it('should contain the correct fields', function() { expect(Object.keys(ptData)).toEqual([ 'data', 'fullData', 'curveNumber', 'pointNumber', 'pointIndex', - 'location', 'z' + 'location', 'z', 'ct' ]); }); @@ -921,7 +921,7 @@ describe('Test geo interactions', function() { it('should contain the correct fields', function() { expect(Object.keys(ptData)).toEqual([ 'data', 'fullData', 'curveNumber', 'pointNumber', 'pointIndex', - 'location', 'z' + 'location', 'z', 'ct' ]); }); From ef28e781b326ca785bc59a1deda9734b718116a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 11 Dec 2019 15:10:46 -0500 Subject: [PATCH 08/12] add two mocks to list of flaky test image mocks --- test/image/compare_pixels_test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/image/compare_pixels_test.js b/test/image/compare_pixels_test.js index 71973e3e86d..2ada885b019 100644 --- a/test/image/compare_pixels_test.js +++ b/test/image/compare_pixels_test.js @@ -101,7 +101,9 @@ if(allMock || argv.filter) { } var FLAKY_LIST = [ - 'treemap_textposition' + 'treemap_textposition', + 'trace_metatext', + 'gl3d_directions-streamtube1' ]; console.log(''); From 0e50599667c8350226c569b416ce631e01d5ed03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 18 Dec 2019 17:05:30 -0500 Subject: [PATCH 09/12] address minor PR comments - guard against empty subplot list in modebar button handlers - fix 'when' -> 'went' typo in error msg - guard against (potential) infinite fitbounds scales - improve `geojson` attr description - fixup `projection.rotation` fallback in an assertion wrapper --- src/components/modebar/buttons.js | 4 ++-- src/lib/geo_location_utils.js | 8 ++++---- src/plots/geo/geo.js | 7 ++++++- src/traces/choropleth/attributes.js | 6 +++--- src/traces/choroplethmapbox/attributes.js | 7 ++++--- src/traces/scattergeo/attributes.js | 6 +++--- test/jasmine/tests/choroplethmapbox_test.js | 2 +- test/jasmine/tests/geo_test.js | 2 +- 8 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index 57d13162bf0..a569748cbb4 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -303,7 +303,7 @@ function handleDrag3d(gd, ev) { var button = ev.currentTarget; var attr = button.getAttribute('data-attr'); var val = button.getAttribute('data-val') || true; - var sceneIds = gd._fullLayout._subplots.gl3d; + var sceneIds = gd._fullLayout._subplots.gl3d || []; var layoutUpdate = {}; var parts = attr.split('.'); @@ -468,7 +468,7 @@ function handleGeo(gd, ev) { var attr = button.getAttribute('data-attr'); var val = button.getAttribute('data-val') || true; var fullLayout = gd._fullLayout; - var geoIds = fullLayout._subplots.geo; + var geoIds = fullLayout._subplots.geo || []; for(var i = 0; i < geoIds.length; i++) { var id = geoIds[i]; diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index e4cf956e203..85840ee2658 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -187,14 +187,14 @@ function feature2polygons(feature) { } function getTraceGeojson(trace) { - var geojsonIn = typeof trace.geojson === 'string' ? - (window.PlotlyGeoAssets || {})[trace.geojson] : - trace.geojson; + var g = trace.geojson; + var PlotlyGeoAssets = window.PlotlyGeoAssets || {}; + var geojsonIn = typeof g === 'string' ? PlotlyGeoAssets[g] : g; // This should not happen, but just in case something goes // really wrong when fetching the GeoJSON if(!isPlainObject(geojsonIn)) { - loggers.error('Oops ... something when wrong when fetching ' + trace.geojson); + loggers.error('Oops ... something went wrong when fetching ' + g); return false; } diff --git a/src/plots/geo/geo.js b/src/plots/geo/geo.js index 56881f09987..9d4df261169 100644 --- a/src/plots/geo/geo.js +++ b/src/plots/geo/geo.js @@ -282,7 +282,12 @@ proto.updateProjection = function(geoCalcData, fullLayout) { (b[1][0] - b[0][0]) / (b2[1][0] - b2[0][0]), (b[1][1] - b[0][1]) / (b2[1][1] - b2[0][1]) ); - projection.scale(k2 * s); + + if(isFinite(k2)) { + projection.scale(k2 * s); + } else { + Lib.warn('Something went wrong during' + this.id + 'fitbounds computations.'); + } } else { // adjust projection to user setting projection.scale(projLayout.scale * s); diff --git a/src/traces/choropleth/attributes.js b/src/traces/choropleth/attributes.js index d9f741db649..e57d827760e 100644 --- a/src/traces/choropleth/attributes.js +++ b/src/traces/choropleth/attributes.js @@ -38,9 +38,9 @@ module.exports = extendFlat({ 'Sets optional GeoJSON data associated with this trace.', 'If not given, the features on the base map are used.', - 'Can be set as a valid GeoJSON object or as URL string', - 'Note that we only accept GeoJSON of type *FeatureCollection* and *Feature*', - 'with geometries of type *Polygon* and *MultiPolygon*.' + 'It can be set as a valid GeoJSON object or as a URL string.', + 'Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature*', + 'with geometries of type *Polygon* or *MultiPolygon*.' // TODO add topojson support with additional 'topojsonobject' attr? // https://github.com/topojson/topojson-specification/blob/master/README.md diff --git a/src/traces/choroplethmapbox/attributes.js b/src/traces/choroplethmapbox/attributes.js index 84ac117e404..3191cf8bf0d 100644 --- a/src/traces/choroplethmapbox/attributes.js +++ b/src/traces/choroplethmapbox/attributes.js @@ -45,9 +45,10 @@ module.exports = extendFlat({ editType: 'calc', description: [ 'Sets the GeoJSON data associated with this trace.', - 'Can be set as a valid GeoJSON object or as URL string', - 'Note that we only accept GeoJSON of type *FeatureCollection* and *Feature*', - 'with geometries of type *Polygon* and *MultiPolygon*.' + + 'It can be set as a valid GeoJSON object or as a URL string.', + 'Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature*', + 'with geometries of type *Polygon* or *MultiPolygon*.' ].join(' ') }, featureidkey: extendFlat({}, choroplethAttrs.featureidkey, { diff --git a/src/traces/scattergeo/attributes.js b/src/traces/scattergeo/attributes.js index efccbf328b0..0723ea4cfb6 100644 --- a/src/traces/scattergeo/attributes.js +++ b/src/traces/scattergeo/attributes.js @@ -62,9 +62,9 @@ module.exports = overrideAll({ 'Sets optional GeoJSON data associated with this trace.', 'If not given, the features on the base map are used when `locations` is set.', - 'Can be set as a valid GeoJSON object or as URL string', - 'Note that we only accept GeoJSON of type *FeatureCollection* and *Feature*', - 'with geometries of type *Polygon* and *MultiPolygon*.' + 'It can be set as a valid GeoJSON object or as a URL string.', + 'Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature*', + 'with geometries of type *Polygon* or *MultiPolygon*.' // TODO add topojson support with additional 'topojsonobject' attr? // https://github.com/topojson/topojson-specification/blob/master/README.md diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index dbb675a5635..1940e983e6f 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -158,7 +158,7 @@ describe('Test choroplethmapbox convert:', function() { geojson: 'url' }); - expect(loggers.error).toHaveBeenCalledWith('Oops ... something when wrong when fetching url'); + expect(loggers.error).toHaveBeenCalledWith('Oops ... something went wrong when fetching url'); expectBlank(opts); }); diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index 79fe3dde677..cffd11e8d86 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -2114,7 +2114,7 @@ describe('Test geo zoom/pan/drag interactions:', function() { var msg = '[' + step + '] '; var geoLayout = gd._fullLayout.geo; - var rotation = geoLayout.projection.rotation || []; + var rotation = geoLayout.projection.rotation || {}; var scale = geoLayout.projection.scale; expect([rotation.lon, rotation.lat]).toBeCloseToArray(attr[0], -0.5, msg + 'rotation.(lon|lat)'); From 2b5ddec0f9a0b75e3efa058a7f69155a0d47c73c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 20 Dec 2019 10:30:13 -0500 Subject: [PATCH 10/12] tweak scroll delta to fix machine-to-machine discrepancies --- test/jasmine/tests/geo_test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index cffd11e8d86..9affb31d9c4 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -2213,13 +2213,13 @@ describe('Test geo zoom/pan/drag interactions:', function() { 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', 'geo.projection.scale', 'geo.fitbounds' ]); - return scroll([300, 300], [-200, -200]); + return scroll([300, 300], [-100, -100]); }) .then(function() { _assert('after scroll', [ - [-15.19, 16.91], 1.319 + [-17.5597, 18.862], 1.1488 ], [ - [15.19, -16.91], 211.15 + [17.5597, -18.862], 183.818 ], [ 'geo.projection.rotation.lon', 'geo.projection.rotation.lat', 'geo.projection.scale' @@ -2228,9 +2228,9 @@ describe('Test geo zoom/pan/drag interactions:', function() { }) .then(function() { _assert('after some relayout call that causes a replot', [ - [-15.19, 16.91], 1.319 + [-17.5597, 18.862], 1.1488 ], [ - [15.19, -16.91], 211.15 + [17.5597, -18.862], 183.818 ], [ 'geo.showocean' ]); From 0909f339c0e481b2ba882491b3e544d5cc5eb47d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 20 Dec 2019 14:21:47 -0500 Subject: [PATCH 11/12] add geo.visible - which when set to false, overrides all the geo.show* defaults - add jasmine default test - add `geo.visible` to geo_featureidkey mock --- src/plots/geo/layout_attributes.js | 6 ++ src/plots/geo/layout_defaults.js | 23 ++++--- test/image/baselines/geo_featureidkey.png | Bin 20266 -> 16922 bytes test/image/mocks/geo_featureidkey.json | 3 +- test/jasmine/tests/geo_test.js | 78 +++++++++++++++++++++- 5 files changed, 98 insertions(+), 12 deletions(-) diff --git a/src/plots/geo/layout_attributes.js b/src/plots/geo/layout_attributes.js index 9a9c9e74d91..d21bded596d 100644 --- a/src/plots/geo/layout_attributes.js +++ b/src/plots/geo/layout_attributes.js @@ -200,6 +200,12 @@ var attrs = module.exports = overrideAll({ ].join(' ') } }, + visible: { + valType: 'boolean', + role: 'info', + dflt: true, + description: 'Sets the default visibility of the base layers.' + }, showcoastlines: { valType: 'boolean', role: 'info', diff --git a/src/plots/geo/layout_defaults.js b/src/plots/geo/layout_defaults.js index 450ac62ff9a..ce11017bceb 100644 --- a/src/plots/geo/layout_defaults.js +++ b/src/plots/geo/layout_defaults.js @@ -30,7 +30,6 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { var subplotData = getSubplotData(opts.fullData, 'geo', opts.id); var traceIndices = subplotData.map(function(t) { return t._expandedIndex; }); - var show; var resolution = coerce('resolution'); var scope = coerce('scope'); @@ -46,6 +45,9 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { var isConic = geoLayoutOut._isConic = projType.indexOf('conic') !== -1; var isClipped = geoLayoutOut._isClipped = !!constants.lonaxisSpan[projType]; + var visible = coerce('visible'); + var show; + for(var i = 0; i < axesNames.length; i++) { var axisName = axesNames[i]; var dtickDflt = [30, 10][i]; @@ -67,7 +69,7 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { coerce(axisName + '.tick0'); coerce(axisName + '.dtick', dtickDflt); - show = coerce(axisName + '.showgrid'); + show = coerce(axisName + '.showgrid', !visible ? false : undefined); if(show) { coerce(axisName + '.gridcolor'); coerce(axisName + '.gridwidth'); @@ -106,13 +108,13 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { coerce('projection.rotation.lat', dfltProjRotate[1]); coerce('projection.rotation.roll', dfltProjRotate[2]); - show = coerce('showcoastlines', !isScoped); + show = coerce('showcoastlines', !isScoped && visible); if(show) { coerce('coastlinecolor'); coerce('coastlinewidth'); } - show = coerce('showocean'); + show = coerce('showocean', !visible ? false : undefined); if(show) coerce('oceancolor'); } @@ -140,19 +142,19 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { coerce('projection.scale'); - show = coerce('showland'); + show = coerce('showland', !visible ? false : undefined); if(show) coerce('landcolor'); - show = coerce('showlakes'); + show = coerce('showlakes', !visible ? false : undefined); if(show) coerce('lakecolor'); - show = coerce('showrivers'); + show = coerce('showrivers', !visible ? false : undefined); if(show) { coerce('rivercolor'); coerce('riverwidth'); } - show = coerce('showcountries', isScoped && scope !== 'usa'); + show = coerce('showcountries', isScoped && scope !== 'usa' && visible); if(show) { coerce('countrycolor'); coerce('countrywidth'); @@ -162,14 +164,15 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { // Only works for: // USA states at 110m // USA states + Canada provinces at 50m - coerce('showsubunits', true); + // !! + coerce('showsubunits', visible); coerce('subunitcolor'); coerce('subunitwidth'); } if(!isScoped) { // Does not work in non-world scopes - show = coerce('showframe', true); + show = coerce('showframe', visible); if(show) { coerce('framecolor'); coerce('framewidth'); diff --git a/test/image/baselines/geo_featureidkey.png b/test/image/baselines/geo_featureidkey.png index a3dd23d869b735042fb5914340af6d2a32eb0dc7..34d2922a3d4907d2d8e46a25e3cd98d2dac2c5c3 100644 GIT binary patch literal 16922 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 literal 20266 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 OPZ_EqUwqg6+5ZB=f`CW> diff --git a/test/image/mocks/geo_featureidkey.json b/test/image/mocks/geo_featureidkey.json index 1d02619db7b..e9f5a52acc4 100644 --- a/test/image/mocks/geo_featureidkey.json +++ b/test/image/mocks/geo_featureidkey.json @@ -57,7 +57,8 @@ "layout": { "geo": { "center": { "lon": -86, "lat": 33 }, - "projection": {"scale": 30} + "projection": {"scale": 30}, + "visible": false }, "width": 600, "height": 400, diff --git a/test/jasmine/tests/geo_test.js b/test/jasmine/tests/geo_test.js index 9affb31d9c4..3828874767c 100644 --- a/test/jasmine/tests/geo_test.js +++ b/test/jasmine/tests/geo_test.js @@ -623,6 +623,69 @@ describe('Test Geo layout defaults', function() { }); }); }); + + describe('geo.visible should override show* defaults', function() { + var keys = [ + 'lonaxis.showgrid', + 'lataxis.showgrid', + 'showcoastlines', + 'showocean', + 'showland', + 'showlakes', + 'showrivers', + 'showcountries', + 'showsubunits', + 'showframe' + ]; + + function _assert(extra) { + var geo = layoutOut.geo; + keys.forEach(function(k) { + var actual = Lib.nestedProperty(geo, k).get(); + if(extra && k in extra) { + expect(actual).toBe(extra[k], k); + } else { + expect(actual).toBe(false, k); + } + }); + } + + it('- base case', function() { + layoutIn = { + geo: { visible: false } + }; + + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + showsubunits: undefined + }); + }); + + it('- scoped case', function() { + layoutIn = { + geo: { scope: 'europe', visible: false } + }; + + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + showframe: undefined, + showsubunits: undefined + }); + }); + + it('- scope:usa case', function() { + layoutIn = { + geo: { scope: 'usa', visible: false } + }; + + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + _assert({ + showframe: undefined, + showcoastlines: undefined, + showocean: undefined + }); + }); + }); }); describe('geojson / topojson utils', function() { @@ -1556,7 +1619,20 @@ describe('Test geo interactions', function() { .then(done); }); - // TODO add test for scope:'none' + it('- geo.visible:false', function(done) { + Plotly.plot(gd, [{ + type: 'scattergeo', + lon: [0], + lat: [0] + }], { + geo: {visible: false} + }) + .then(_assert(0)) + .then(function() { return Plotly.relayout(gd, 'geo.visible', true); }) + .then(_assert(1)) + .catch(failTest) + .then(done); + }); }); }); From b5b9484bc6760faf5b4a93ab7067927559632ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 20 Dec 2019 14:56:30 -0500 Subject: [PATCH 12/12] fix typo --- src/plots/geo/layout_defaults.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plots/geo/layout_defaults.js b/src/plots/geo/layout_defaults.js index ce11017bceb..c169b050009 100644 --- a/src/plots/geo/layout_defaults.js +++ b/src/plots/geo/layout_defaults.js @@ -164,7 +164,6 @@ function handleGeoDefaults(geoLayoutIn, geoLayoutOut, coerce, opts) { // Only works for: // USA states at 110m // USA states + Canada provinces at 50m - // !! coerce('showsubunits', visible); coerce('subunitcolor'); coerce('subunitwidth');