@@ -1551,45 +1551,6 @@ describe('@noCI, mapbox plots', function() {
1551
1551
} ) ;
1552
1552
} ) ;
1553
1553
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
-
1593
1554
function countVisibleTraces ( gd , modes ) {
1594
1555
var mapInfo = getMapInfo ( gd ) ;
1595
1556
var cnts = [ ] ;
@@ -1683,6 +1644,83 @@ describe('@noCI, mapbox plots', function() {
1683
1644
}
1684
1645
} ) ;
1685
1646
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
+
1686
1724
describe ( '@noCI test mapbox trace/layout *below* interactions' , function ( ) {
1687
1725
var gd ;
1688
1726
@@ -2088,3 +2126,42 @@ describe('@noCI, mapbox toImage', function() {
2088
2126
. then ( done ) ;
2089
2127
} , LONG_TIMEOUT_INTERVAL ) ;
2090
2128
} ) ;
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