Add hasListener check around dispatchEvent calls

This commit is contained in:
Maximilian Krög
2022-02-09 22:05:18 +01:00
parent d35d1cc8ad
commit ac0b8ff4a4
3 changed files with 20 additions and 16 deletions
+4
View File
@@ -172,10 +172,14 @@ class BaseObject extends Observable {
notify(key, oldValue) { notify(key, oldValue) {
let eventType; let eventType;
eventType = `change:${key}`; eventType = `change:${key}`;
if (this.hasListener(eventType)) {
this.dispatchEvent(new ObjectEvent(eventType, key, oldValue)); this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));
}
eventType = ObjectEventType.PROPERTYCHANGE; eventType = ObjectEventType.PROPERTYCHANGE;
if (this.hasListener(eventType)) {
this.dispatchEvent(new ObjectEvent(eventType, key, oldValue)); this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));
} }
}
/** /**
* @param {string} key Key name. * @param {string} key Key name.
+8 -10
View File
@@ -240,27 +240,25 @@ class ImageSource extends Source {
*/ */
handleImageChange(event) { handleImageChange(event) {
const image = /** @type {import("../Image.js").default} */ (event.target); const image = /** @type {import("../Image.js").default} */ (event.target);
let type;
switch (image.getState()) { switch (image.getState()) {
case ImageState.LOADING: case ImageState.LOADING:
this.loading = true; this.loading = true;
this.dispatchEvent( type = ImageSourceEventType.IMAGELOADSTART;
new ImageSourceEvent(ImageSourceEventType.IMAGELOADSTART, image)
);
break; break;
case ImageState.LOADED: case ImageState.LOADED:
this.loading = false; this.loading = false;
this.dispatchEvent( type = ImageSourceEventType.IMAGELOADEND;
new ImageSourceEvent(ImageSourceEventType.IMAGELOADEND, image)
);
break; break;
case ImageState.ERROR: case ImageState.ERROR:
this.loading = false; this.loading = false;
this.dispatchEvent( type = ImageSourceEventType.IMAGELOADERROR;
new ImageSourceEvent(ImageSourceEventType.IMAGELOADERROR, image)
);
break; break;
default: default:
// pass return;
}
if (this.hasListener(type)) {
this.dispatchEvent(new ImageSourceEvent(type, image));
} }
} }
} }
+2
View File
@@ -457,12 +457,14 @@ class VectorSource extends Source {
this.featuresRtree_.load(extents, geometryFeatures); this.featuresRtree_.load(extents, geometryFeatures);
} }
if (this.hasListener(VectorEventType.ADDFEATURE)) {
for (let i = 0, length = newFeatures.length; i < length; i++) { for (let i = 0, length = newFeatures.length; i < length; i++) {
this.dispatchEvent( this.dispatchEvent(
new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures[i]) new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures[i])
); );
} }
} }
}
/** /**
* @param {!Collection<import("../Feature.js").default<Geometry>>} collection Collection. * @param {!Collection<import("../Feature.js").default<Geometry>>} collection Collection.