@@ -1551,45 +1551,6 @@ describe('@noCI, mapbox plots', function() {
15511551 } ) ;
15521552 } ) ;
15531553
1554- function getMapInfo ( gd ) {
1555- var subplot = gd . _fullLayout . mapbox . _subplot ;
1556- var map = subplot . map ;
1557-
1558- var sources = map . style . sourceCaches ;
1559- var layers = map . style . _layers ;
1560- var uid = subplot . uid ;
1561-
1562- var traceSources = Object . keys ( sources ) . filter ( function ( k ) {
1563- return k . indexOf ( 'source-' ) === 0 ;
1564- } ) ;
1565-
1566- var traceLayers = Object . keys ( layers ) . filter ( function ( k ) {
1567- return k . indexOf ( 'plotly-trace-layer-' ) === 0 ;
1568- } ) ;
1569-
1570- var layoutSources = Object . keys ( sources ) . filter ( function ( k ) {
1571- return k . indexOf ( uid ) !== - 1 ;
1572- } ) ;
1573-
1574- var layoutLayers = Object . keys ( layers ) . filter ( function ( k ) {
1575- return k . indexOf ( uid ) !== - 1 ;
1576- } ) ;
1577-
1578- return {
1579- map : map ,
1580- div : subplot . div ,
1581- sources : sources ,
1582- layers : layers ,
1583- traceSources : traceSources ,
1584- traceLayers : traceLayers ,
1585- layoutSources : layoutSources ,
1586- layoutLayers : layoutLayers ,
1587- center : map . getCenter ( ) ,
1588- zoom : map . getZoom ( ) ,
1589- style : map . getStyle ( )
1590- } ;
1591- }
1592-
15931554 function countVisibleTraces ( gd , modes ) {
15941555 var mapInfo = getMapInfo ( gd ) ;
15951556 var cnts = [ ] ;
@@ -1683,6 +1644,83 @@ describe('@noCI, mapbox plots', function() {
16831644 }
16841645} ) ;
16851646
1647+ describe ( '@noCI, mapbox react' , function ( ) {
1648+ var gd ;
1649+
1650+ beforeEach ( function ( ) {
1651+ gd = createGraphDiv ( ) ;
1652+ } ) ;
1653+
1654+ afterEach ( function ( ) {
1655+ Plotly . purge ( gd ) ;
1656+ destroyGraphDiv ( ) ;
1657+ } ) ;
1658+
1659+ it ( '@gl should be able to react to new tiles' , function ( done ) {
1660+ function assertTile ( link ) {
1661+ var mapInfo = getMapInfo ( gd ) ;
1662+ expect ( mapInfo . style . sources . REF . tiles [ 0 ] ) . toEqual ( link ) ;
1663+ }
1664+
1665+ var firstLink = 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png' ;
1666+ var secondLink = 'https://a.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg' ;
1667+
1668+ var fig = {
1669+ data : [
1670+ {
1671+ type : 'scattermapbox' ,
1672+ lon : [ 10 , 20 ] ,
1673+ lat : [ 20 , 10 ]
1674+ }
1675+ ] ,
1676+ layout : {
1677+ mapbox : {
1678+ style : {
1679+ version : 8 ,
1680+ sources : {
1681+ REF : {
1682+ type : 'raster' ,
1683+ tileSize : 256 ,
1684+ tiles : [ firstLink ]
1685+ }
1686+ } ,
1687+ layers : [ {
1688+ id : 'REF' ,
1689+ source : 'REF' ,
1690+ type : 'raster'
1691+ } ] ,
1692+ }
1693+ }
1694+ }
1695+ } ;
1696+
1697+ Plotly . newPlot ( gd , fig )
1698+ . then ( function ( ) {
1699+ assertTile ( firstLink ) ;
1700+
1701+ // copy figure
1702+ var newFig = JSON . parse ( JSON . stringify ( fig ) ) ;
1703+
1704+ // new figure
1705+ newFig . layout . mapbox . style . sources = {
1706+ REF : {
1707+ type : 'raster' ,
1708+ tileSize : 256 ,
1709+ tiles : [ secondLink ]
1710+ }
1711+ } ;
1712+
1713+ // update
1714+ Plotly . react ( gd , newFig ) ;
1715+ } )
1716+ . then ( function ( ) {
1717+ assertTile ( secondLink ) ;
1718+ } )
1719+ . catch ( failTest )
1720+ . then ( done ) ;
1721+ } , LONG_TIMEOUT_INTERVAL ) ;
1722+ } ) ;
1723+
16861724describe ( '@noCI test mapbox trace/layout *below* interactions' , function ( ) {
16871725 var gd ;
16881726
@@ -2088,3 +2126,42 @@ describe('@noCI, mapbox toImage', function() {
20882126 . then ( done ) ;
20892127 } , LONG_TIMEOUT_INTERVAL ) ;
20902128} ) ;
2129+
2130+ function getMapInfo ( gd ) {
2131+ var subplot = gd . _fullLayout . mapbox . _subplot ;
2132+ var map = subplot . map ;
2133+
2134+ var sources = map . style . sourceCaches ;
2135+ var layers = map . style . _layers ;
2136+ var uid = subplot . uid ;
2137+
2138+ var traceSources = Object . keys ( sources ) . filter ( function ( k ) {
2139+ return k . indexOf ( 'source-' ) === 0 ;
2140+ } ) ;
2141+
2142+ var traceLayers = Object . keys ( layers ) . filter ( function ( k ) {
2143+ return k . indexOf ( 'plotly-trace-layer-' ) === 0 ;
2144+ } ) ;
2145+
2146+ var layoutSources = Object . keys ( sources ) . filter ( function ( k ) {
2147+ return k . indexOf ( uid ) !== - 1 ;
2148+ } ) ;
2149+
2150+ var layoutLayers = Object . keys ( layers ) . filter ( function ( k ) {
2151+ return k . indexOf ( uid ) !== - 1 ;
2152+ } ) ;
2153+
2154+ return {
2155+ map : map ,
2156+ div : subplot . div ,
2157+ sources : sources ,
2158+ layers : layers ,
2159+ traceSources : traceSources ,
2160+ traceLayers : traceLayers ,
2161+ layoutSources : layoutSources ,
2162+ layoutLayers : layoutLayers ,
2163+ center : map . getCenter ( ) ,
2164+ zoom : map . getZoom ( ) ,
2165+ style : map . getStyle ( )
2166+ } ;
2167+ }
0 commit comments