fixed selection handler befor/after transactions

This commit is contained in:
Kevin Jahns
2017-10-28 23:02:48 +02:00
parent c619aa33d9
commit c545118637
13 changed files with 177 additions and 95 deletions

View File

@@ -1,26 +1,31 @@
export default class NamedEventHandler {
constructor () {
this._eventListener = {}
this._eventListener = new Map()
}
on (name, f) {
if (this._eventListener[name] == null) {
this._eventListener[name] = []
let fSet = this._eventListener.get(name)
if (fSet === undefined) {
fSet = new Set()
this._eventListener.set(name, fSet)
}
this._eventListener[name].push(f)
fSet.add(f)
}
off (name, f) {
if (name == null || f == null) {
throw new Error('You must specify event name and function!')
}
let listener = this._eventListener[name] || []
this._eventListener[name] = listener.filter(e => e !== f)
}
emit (name, value) {
let listener = this._eventListener[name] || []
if (name === 'error' && listener.length === 0) {
console.error(value)
const listener = this._eventListener.get(name)
if (listener !== undefined) {
listener.remove(f)
}
}
emit (name, ...args) {
const listener = this._eventListener.get(name)
if (listener !== undefined) {
listener.forEach(f => f.apply(null, args))
} else if (name === 'error') {
console.error(args[0])
}
listener.forEach(l => l(value))
}
destroy () {
this._eventListener = null