From d43cfca00a207f2e104d69134dbd1706254d314b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 4 Aug 2016 13:44:53 -0400 Subject: [PATCH] mapbox: skip over non-object layer containers - and keep track of input index with '_index' --- src/plots/mapbox/layout_defaults.js | 5 ++++- test/jasmine/tests/mapbox_test.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plots/mapbox/layout_defaults.js b/src/plots/mapbox/layout_defaults.js index 59c91057f31..6772c1786c7 100644 --- a/src/plots/mapbox/layout_defaults.js +++ b/src/plots/mapbox/layout_defaults.js @@ -50,9 +50,11 @@ function handleLayerDefaults(containerIn, containerOut) { } for(var i = 0; i < layersIn.length; i++) { - layerIn = layersIn[i] || {}; + layerIn = layersIn[i]; layerOut = {}; + if(!Lib.isPlainObject(layerIn)) continue; + var sourceType = coerce('sourcetype'); coerce('source'); @@ -86,6 +88,7 @@ function handleLayerDefaults(containerIn, containerOut) { coerce('symbol.textposition'); } + layerOut._index = i; layersOut.push(layerOut); } } diff --git a/test/jasmine/tests/mapbox_test.js b/test/jasmine/tests/mapbox_test.js index 40b97b7fa20..29df105616f 100644 --- a/test/jasmine/tests/mapbox_test.js +++ b/test/jasmine/tests/mapbox_test.js @@ -80,6 +80,20 @@ describe('mapbox defaults', function() { expect(layoutOut.mapbox.layers[1].sourcetype).toEqual('geojson'); }); + it('should skip over non-object layer containers', function() { + layoutIn = { + mapbox: { + layers: [{}, null, 'remove', {}] + } + }; + + supplyLayoutDefaults(layoutIn, layoutOut, fullData); + expect(layoutOut.mapbox.layers[0].sourcetype).toEqual('geojson'); + expect(layoutOut.mapbox.layers[0]._index).toEqual(0); + expect(layoutOut.mapbox.layers[1].sourcetype).toEqual('geojson'); + expect(layoutOut.mapbox.layers[1]._index).toEqual(3); + }); + it('should coerce \'sourcelayer\' only for *vector* \'sourcetype\'', function() { layoutIn = { mapbox: {