Skip to content

Commit 7a205ce

Browse files
committed
v1.18.1
2 parents 32f3a0b + 91151c7 commit 7a205ce

7 files changed

+98
-8
lines changed

dist/angular-openlayers-directive.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2324,16 +2324,19 @@ angular.module('openlayers-directive').factory('olHelpers', ["$q", "$log", "$htt
23242324
while (layers.getLength() < index) {
23252325
var nullLayer = new ol.layer.Image();
23262326
nullLayer.index = layers.getLength(); // add index which will be equal to the length in this case
2327+
nullLayer.name = '(null-layer)'; // we need a marker somehow
23272328
layers.push(nullLayer);
23282329
}
23292330
layer.index = index;
23302331
layers.push(layer);
23312332
} else {
23322333
layer.index = index;
23332334
layers.insertAt(layer.index, layer);
2335+
2336+
// remove eventual null layers
23342337
for (var i = index + 1; i < layers.getLength(); i++) {
23352338
var l = layers.item(i);
2336-
if (l === null) {
2339+
if (l.name === '(null-layer)') {
23372340
layers.removeAt(i);
23382341
break;
23392342
} else {

dist/angular-openlayers-directive.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-openlayers-directive.min.no-header.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/angular-openlayers-directive.pre.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2324,16 +2324,19 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
23242324
while (layers.getLength() < index) {
23252325
var nullLayer = new ol.layer.Image();
23262326
nullLayer.index = layers.getLength(); // add index which will be equal to the length in this case
2327+
nullLayer.name = '(null-layer)'; // we need a marker somehow
23272328
layers.push(nullLayer);
23282329
}
23292330
layer.index = index;
23302331
layers.push(layer);
23312332
} else {
23322333
layer.index = index;
23332334
layers.insertAt(layer.index, layer);
2335+
2336+
// remove eventual null layers
23342337
for (var i = index + 1; i < layers.getLength(); i++) {
23352338
var l = layers.item(i);
2336-
if (l === null) {
2339+
if (l.name === '(null-layer)') {
23372340
layers.removeAt(i);
23382341
break;
23392342
} else {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,5 @@
6565
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
6666
},
6767
"main": "dist/angular-openlayers-directive",
68-
"version": "1.18.0"
68+
"version": "1.18.1"
6969
}

src/services/olHelpers.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1108,16 +1108,19 @@ angular.module('openlayers-directive').factory('olHelpers', function($q, $log, $
11081108
while (layers.getLength() < index) {
11091109
var nullLayer = new ol.layer.Image();
11101110
nullLayer.index = layers.getLength(); // add index which will be equal to the length in this case
1111+
nullLayer.name = '(null-layer)'; // we need a marker somehow
11111112
layers.push(nullLayer);
11121113
}
11131114
layer.index = index;
11141115
layers.push(layer);
11151116
} else {
11161117
layer.index = index;
11171118
layers.insertAt(layer.index, layer);
1119+
1120+
// remove eventual null layers
11181121
for (var i = index + 1; i < layers.getLength(); i++) {
11191122
var l = layers.item(i);
1120-
if (l === null) {
1123+
if (l.name === '(null-layer)') {
11211124
layers.removeAt(i);
11221125
break;
11231126
} else {

test/unit/layersSpec.js

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,4 +405,85 @@ describe('Directive: openlayers layers', function() {
405405
expect(otherLayer.getLayers().getArray()[0].get('group')).toEqual('Other');
406406

407407
});
408+
409+
describe('when setting the index', function() {
410+
411+
it('should correctly fill up the layer collection with null layers', function() {
412+
scope.layers = [
413+
{
414+
index: 2,
415+
name: 'Spain',
416+
source: {
417+
type: 'GeoJSON',
418+
url: 'json/ESP.geo.json'
419+
}
420+
}
421+
];
422+
423+
var element = angular
424+
.element('<openlayers custom-layers="true">' +
425+
'<ol-layer ol-layer-properties="layer" ng-repeat="layer in layers"></ol-layer>' +
426+
'</openlayers>');
427+
element = $compile(element)(scope);
428+
429+
var layers;
430+
olData.getMap().then(function(olMap) {
431+
layers = olMap.getLayers();
432+
});
433+
434+
scope.$digest();
435+
expect(layers.getLength()).toBe(3);
436+
437+
expect(layers.item(2).getSource() instanceof ol.source.Vector).toBeTruthy();
438+
});
439+
440+
it('should correctly populate the layer collection with when layers are provided in random order', function() {
441+
scope.layers = [
442+
{
443+
index: 1,
444+
name: 'Spain',
445+
source: {
446+
type: 'GeoJSON',
447+
url: 'json/ESP.geo.json'
448+
}
449+
},
450+
{
451+
index: 2,
452+
name: 'Italy',
453+
source: {
454+
type: 'GeoJSON',
455+
url: 'json/ESP.geo.json'
456+
}
457+
},
458+
{
459+
index: 0,
460+
name: 'Germany',
461+
source: {
462+
type: 'GeoJSON',
463+
url: 'json/ESP.geo.json'
464+
}
465+
}
466+
];
467+
468+
var element = angular
469+
.element('<openlayers custom-layers="true">' +
470+
'<ol-layer ol-layer-properties="layer" ng-repeat="layer in layers"></ol-layer>' +
471+
'</openlayers>');
472+
element = $compile(element)(scope);
473+
474+
var layers;
475+
olData.getMap().then(function(olMap) {
476+
layers = olMap.getLayers();
477+
});
478+
479+
scope.$digest();
480+
expect(layers.getLength()).toBe(3);
481+
482+
expect(layers.item(0).get('name')).toBe('Germany');
483+
expect(layers.item(1).get('name')).toBe('Spain');
484+
expect(layers.item(2).get('name')).toBe('Italy');
485+
});
486+
487+
});
488+
408489
});

0 commit comments

Comments
 (0)