From cd3f8192f24dc8692ee4273ee422422c12da4bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Tue, 18 Dec 2018 14:54:50 +0100 Subject: [PATCH] Categories emit events; re-emit events from OverpassLayer --- package.json | 1 + src/CategoryBase.js | 5 +++++ src/CategoryOverpass.js | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/package.json b/package.json index 692be057..0045bce3 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "babel-core": "^6.26.0", "babel-preset-env": "^1.6.1", "color-interpolate": "^1.0.2", + "event-emitter": "^0.3.5", "file-saver": "^2.0.0", "i18next-client": "^1.11.4", "ip-location": "^1.0.1", diff --git a/src/CategoryBase.js b/src/CategoryBase.js index 261767b2..277c560d 100644 --- a/src/CategoryBase.js +++ b/src/CategoryBase.js @@ -2,6 +2,7 @@ /* eslint camelcase: 0 */ var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader') var tabs = require('modulekit-tabs') +const ee = require('event-emitter') function CategoryBase (options, data) { if (typeof options === 'string') { @@ -133,6 +134,7 @@ CategoryBase.prototype.open = function () { this.isOpen = true call_hooks('categoryOpen', this) + this.emit('open') } CategoryBase.prototype.close = function () { @@ -145,6 +147,7 @@ CategoryBase.prototype.close = function () { this.isOpen = false call_hooks('categoryClose', this) + this.emit('close') } CategoryBase.prototype.toggle = function () { @@ -208,4 +211,6 @@ CategoryBase.prototype.allMapFeatures = function (callback) { callback(null, []) } +ee(CategoryBase.prototype) + module.exports = CategoryBase diff --git a/src/CategoryOverpass.js b/src/CategoryOverpass.js index 35e79922..bb5709e5 100644 --- a/src/CategoryOverpass.js +++ b/src/CategoryOverpass.js @@ -99,7 +99,12 @@ function CategoryOverpass (options, data) { if (document.getElementById('content').className === 'details open') { showDetails(ob, this) } + + this.emit('update', object, ob) }.bind(this)) + this.layer.on('add', (ob, data) => this.emit('add', ob, data)) + this.layer.on('remove', (ob, data) => this.emit('remove', ob, data)) + this.layer.on('zoomChange', (ob, data) => this.emit('remove', ob, data)) p = document.createElement('div') p.className = 'loadingIndicator'