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.array');
|
||||||
goog.require('goog.asserts');
|
goog.require('goog.asserts');
|
||||||
goog.require('goog.events');
|
goog.require('goog.events');
|
||||||
goog.require('goog.events.EventType');
|
|
||||||
goog.require('goog.math');
|
goog.require('goog.math');
|
||||||
goog.require('goog.object');
|
goog.require('goog.object');
|
||||||
goog.require('ol.Collection');
|
goog.require('ol.Collection');
|
||||||
goog.require('ol.CollectionEvent');
|
goog.require('ol.CollectionEvent');
|
||||||
goog.require('ol.CollectionEventType');
|
goog.require('ol.CollectionEventType');
|
||||||
goog.require('ol.Object');
|
goog.require('ol.Object');
|
||||||
|
goog.require('ol.ObjectEventType');
|
||||||
goog.require('ol.layer.Base');
|
goog.require('ol.layer.Base');
|
||||||
goog.require('ol.source.State');
|
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++) {
|
for (i = 0, ii = layersArray.length; i < ii; i++) {
|
||||||
layer = layersArray[i];
|
layer = layersArray[i];
|
||||||
this.listenerKeys_[goog.getUid(layer).toString()] =
|
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);
|
this.handleLayerChange_, false, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,7 +120,7 @@ ol.layer.Group.prototype.handleLayersChanged_ = function(event) {
|
|||||||
ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) {
|
ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) {
|
||||||
var layer = /** @type {ol.layer.Base} */ (collectionEvent.getElement());
|
var layer = /** @type {ol.layer.Base} */ (collectionEvent.getElement());
|
||||||
this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(
|
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);
|
||||||
this.dispatchChangeEvent();
|
this.dispatchChangeEvent();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ describe('ol.layer.Group', function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('change event', function() {
|
describe('generic change event', function() {
|
||||||
|
|
||||||
var layer, group, listener;
|
var layer, group, listener;
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
@@ -84,14 +84,14 @@ describe('ol.layer.Group', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('is dispatched by the group when layer opacity changes', 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);
|
layer.setOpacity(0.5);
|
||||||
expect(listener.calledOnce).to.be(true);
|
expect(listener.calledOnce).to.be(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('is dispatched by the group when layer visibility changes', function() {
|
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);
|
layer.setVisible(false);
|
||||||
expect(listener.callCount).to.be(1);
|
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() {
|
describe('constructor (options)', function() {
|
||||||
|
|
||||||
it('accepts options', function() {
|
it('accepts options', function() {
|
||||||
@@ -352,6 +391,7 @@ describe('ol.layer.Group', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
goog.require('goog.dispose');
|
goog.require('goog.dispose');
|
||||||
|
goog.require('goog.events.EventType');
|
||||||
goog.require('ol.ObjectEventType');
|
goog.require('ol.ObjectEventType');
|
||||||
goog.require('ol.layer.Layer');
|
goog.require('ol.layer.Layer');
|
||||||
goog.require('ol.layer.Group');
|
goog.require('ol.layer.Group');
|
||||||
|
|||||||
Reference in New Issue
Block a user