Listen for property changes in layer group
This avoids a future bug when the ol.ObjectEventType.CHANGE value becomes something different than the goog.events.EventType.CHANGE value.
This commit is contained in:
@@ -3,13 +3,13 @@ goog.provide('ol.layer.Group');
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.math');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Collection');
|
||||
goog.require('ol.CollectionEvent');
|
||||
goog.require('ol.CollectionEventType');
|
||||
goog.require('ol.Object');
|
||||
goog.require('ol.ObjectEventType');
|
||||
goog.require('ol.layer.Base');
|
||||
goog.require('ol.source.State');
|
||||
|
||||
@@ -104,7 +104,7 @@ ol.layer.Group.prototype.handleLayersChanged_ = function(event) {
|
||||
for (i = 0, ii = layersArray.length; i < ii; i++) {
|
||||
layer = layersArray[i];
|
||||
this.listenerKeys_[goog.getUid(layer).toString()] =
|
||||
goog.events.listen(layer, goog.events.EventType.CHANGE,
|
||||
goog.events.listen(layer, ol.ObjectEventType.CHANGE,
|
||||
this.handleLayerChange_, false, this);
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,7 @@ ol.layer.Group.prototype.handleLayersChanged_ = function(event) {
|
||||
ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) {
|
||||
var layer = /** @type {ol.layer.Base} */ (collectionEvent.getElement());
|
||||
this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(
|
||||
layer, goog.events.EventType.CHANGE, this.handleLayerChange_, false,
|
||||
layer, ol.ObjectEventType.CHANGE, this.handleLayerChange_, false,
|
||||
this);
|
||||
this.dispatchChangeEvent();
|
||||
};
|
||||
|
||||
@@ -63,7 +63,7 @@ describe('ol.layer.Group', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('change event', function() {
|
||||
describe('generic change event', function() {
|
||||
|
||||
var layer, group, listener;
|
||||
beforeEach(function() {
|
||||
@@ -84,14 +84,14 @@ describe('ol.layer.Group', function() {
|
||||
});
|
||||
|
||||
it('is dispatched by the group when layer opacity changes', function() {
|
||||
group.on(ol.ObjectEventType.CHANGE, listener);
|
||||
group.on(goog.events.EventType.CHANGE, listener);
|
||||
|
||||
layer.setOpacity(0.5);
|
||||
expect(listener.calledOnce).to.be(true);
|
||||
});
|
||||
|
||||
it('is dispatched by the group when layer visibility changes', function() {
|
||||
group.on(ol.ObjectEventType.CHANGE, listener);
|
||||
group.on(goog.events.EventType.CHANGE, listener);
|
||||
|
||||
layer.setVisible(false);
|
||||
expect(listener.callCount).to.be(1);
|
||||
@@ -102,6 +102,45 @@ describe('ol.layer.Group', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('property change event', function() {
|
||||
|
||||
var layer, group, listener;
|
||||
beforeEach(function() {
|
||||
layer = new ol.layer.Layer({
|
||||
source: new ol.source.Source({
|
||||
projection: 'EPSG:4326'
|
||||
})
|
||||
});
|
||||
group = new ol.layer.Group({
|
||||
layers: [layer]
|
||||
});
|
||||
listener = sinon.spy();
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
goog.dispose(group);
|
||||
goog.dispose(layer);
|
||||
});
|
||||
|
||||
it('is dispatched by the group when group opacity changes', function() {
|
||||
group.on(ol.ObjectEventType.CHANGE, listener);
|
||||
|
||||
group.setOpacity(0.5);
|
||||
expect(listener.calledOnce).to.be(true);
|
||||
});
|
||||
|
||||
it('is dispatched by the group when group visibility changes', function() {
|
||||
group.on(ol.ObjectEventType.CHANGE, listener);
|
||||
|
||||
group.setVisible(false);
|
||||
expect(listener.callCount).to.be(1);
|
||||
|
||||
group.setVisible(true);
|
||||
expect(listener.callCount).to.be(2);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('constructor (options)', function() {
|
||||
|
||||
it('accepts options', function() {
|
||||
@@ -352,6 +391,7 @@ describe('ol.layer.Group', function() {
|
||||
});
|
||||
|
||||
goog.require('goog.dispose');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('ol.ObjectEventType');
|
||||
goog.require('ol.layer.Layer');
|
||||
goog.require('ol.layer.Group');
|
||||
|
||||
Reference in New Issue
Block a user