@dewesoft-web/grid2
Version:
Dewesoft WebUI Grid
34 lines (25 loc) • 1.03 kB
text/typescript
import { EventArguments } from "@dewesoft-web/ui/events";
export type EventHandler<T> = (control : EventEmitter<T>, event : T, args : EventArguments, onSuccess? : Function, onFailure? : Function) => void;
export class EventEmitter<T> {
private eventHandlers : EventHandler<T>[];
constructor() {
this.eventHandlers = [];
}
addEventHandler(handler : EventHandler<T>) {
if (!handler) {
throw new Error("Event handler must be valid function");
}
this.eventHandlers.push(handler);
}
removeEventHandler(handler : EventHandler<T>) {
const index = this.eventHandlers.indexOf(handler);
if (index !== -1) {
this.eventHandlers.splice(index, 1);
}
}
protected triggerEvent(event : T, args : EventArguments, onSuccess? : Function, onFailure? : Function) {
for (const handler of this.eventHandlers) {
handler(this, event, args, onSuccess, onFailure);
}
}
}