Skip to content

Commit f7b5edf

Browse files
committed
v1.19.3
2 parents a0f2f33 + a2b8ff7 commit f7b5edf

File tree

7 files changed

+95
-10
lines changed

7 files changed

+95
-10
lines changed

dist/angular-openlayers-directive.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,13 @@ angular.module('openlayers-directive').directive('olLayer', ["$log", "$q", "olMa
510510
// set visibility
511511
if (isDefined(oldProperties) &&
512512
isBoolean(properties.visible) &&
513-
properties.visible !== oldProperties.visible || isNewLayer(olLayer)) {
513+
(
514+
properties.visible !== oldProperties.visible ||
515+
isNewLayer(olLayer) ||
516+
// to make sure the underlying ol3 object is always synched
517+
olLayer.getVisible() !== properties.visible
518+
)
519+
) {
514520
olLayer.setVisible(properties.visible);
515521
}
516522

dist/angular-openlayers-directive.min.js

Lines changed: 3 additions & 3 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: 3 additions & 3 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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,13 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o
510510
// set visibility
511511
if (isDefined(oldProperties) &&
512512
isBoolean(properties.visible) &&
513-
properties.visible !== oldProperties.visible || isNewLayer(olLayer)) {
513+
(
514+
properties.visible !== oldProperties.visible ||
515+
isNewLayer(olLayer) ||
516+
// to make sure the underlying ol3 object is always synched
517+
olLayer.getVisible() !== properties.visible
518+
)
519+
) {
514520
olLayer.setVisible(properties.visible);
515521
}
516522

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,12 @@
5959
},
6060
"scripts": {
6161
"test": "grunt build && grunt karma:unit",
62+
"test.watch": "grunt build && grunt karma:dev",
6263
"build": "grunt build",
6364
"prepublish": "npm run build",
6465
"postpublish": "publish-latest",
6566
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
6667
},
6768
"main": "dist/angular-openlayers-directive",
68-
"version": "1.19.2"
69+
"version": "1.19.3"
6970
}

src/directives/layer.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ angular.module('openlayers-directive').directive('olLayer', function($log, $q, o
187187
// set visibility
188188
if (isDefined(oldProperties) &&
189189
isBoolean(properties.visible) &&
190-
properties.visible !== oldProperties.visible || isNewLayer(olLayer)) {
190+
(
191+
properties.visible !== oldProperties.visible ||
192+
isNewLayer(olLayer) ||
193+
// to make sure the underlying ol3 object is always synched
194+
olLayer.getVisible() !== properties.visible
195+
)
196+
) {
191197
olLayer.setVisible(properties.visible);
192198
}
193199

test/unit/layersSpec.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,4 +486,70 @@ describe('Directive: openlayers layers', function() {
486486

487487
});
488488

489+
describe('when updating the visibility', function() {
490+
beforeEach(function() {
491+
scope.layers = [
492+
{
493+
identifier: 'LAYER-SPAIN',
494+
name: 'Spain',
495+
visible: true,
496+
source: {
497+
type: 'GeoJSON',
498+
url: 'json/ESP.geo.json'
499+
}
500+
}
501+
];
502+
503+
var element = angular
504+
.element('<openlayers custom-layers="true">' +
505+
'<ol-layer ol-layer-properties="layer" ng-repeat="layer in layers"></ol-layer>' +
506+
'</openlayers>');
507+
element = $compile(element)(scope);
508+
scope.$digest();
509+
});
510+
511+
it('the layer should be set to visible', function() {
512+
olData.getMap().then(function(olMap) {
513+
var layers = olMap.getLayers().getArray();
514+
expect(layers[0].getVisible()).toBeTruthy();
515+
});
516+
});
517+
518+
it('should correctly set the layer to visible false', function() {
519+
// act
520+
scope.layers[0].visible = false;
521+
scope.$digest();
522+
523+
// assert
524+
olData.getMap().then(function(olMap) {
525+
var layers = olMap.getLayers().getArray();
526+
expect(layers[0].getVisible()).toBeFalsy();
527+
});
528+
529+
});
530+
531+
it('should sync visibility of the underlying OL3 object if not aligned', function() {
532+
// assume our object is set to visible false
533+
scope.layers[0].visible = false;
534+
scope.$digest();
535+
536+
olData.getMap().then(function(olMap) {
537+
var layers = olMap.getLayers().getArray();
538+
// set visibility on the underlying ol3 object
539+
layers[0].setVisible(true);
540+
});
541+
542+
scope.layers[0].name = 'Bla bla'; // just to kick on change detection
543+
scope.$digest();
544+
545+
// assert
546+
olData.getMap().then(function(olMap) {
547+
var layers = olMap.getLayers().getArray();
548+
expect(layers[0].getVisible()).toBeFalsy();
549+
});
550+
551+
});
552+
553+
});
554+
489555
});

0 commit comments

Comments
 (0)