/**
* Created by lomteva.aa on 24.10.2017.
*/
class AbstractInteraction {
constructor(params) {
this.events = {};
this.interaction = params.interaction;
this.type = "";
this.id = params.id || params.layerId;
this.initEvents();
}
initEvents() {
let self = this;
self.interaction.on("modifyend", (data) => {
self.emit("modifyend", data);
});
}
/**
* Подписка на события
* @param eventName
* @param listener
*/
on(eventName, listener) {
let self = this;
let eventStore = self.events;
eventStore[eventName] = listener;
}
/**
* Выключение подписки на событие
* @param eventName
*/
off(eventName) {
let self = this;
let eventStore = self.events;
if (eventStore[eventName]) delete eventStore[eventName];
}
/**
* Инициация события с контекстом
* @param eventName
* @param context
*/
emit(eventName, context) {
let self = this;
let eventStore = self.events;
let listener = eventStore[eventName];
if (listener && typeof listener === "function") {
listener(context);
}
}
}
module.exports = AbstractInteraction;