datainout
Version:
Import and reports data
87 lines (86 loc) • 2.1 kB
JavaScript
// src/common/core/EventHandler.ts
var ContextEventHook = class {
constructor() {
this.context = {};
}
after(callback) {
callback(this.context);
}
before(callback) {
callback(this.context);
return this;
}
};
var ContextEventHandler = class {
constructor() {
this.groupContext = {};
}
setEvent(key) {
const eventHook = new ContextEventHook();
if (!this.groupContext[key]) this.groupContext[key] = [];
this.groupContext[key].push(eventHook);
return eventHook;
}
get WorkBook() {
return this.setEvent("workBook");
}
get Sheet() {
return this.setEvent("sheet");
}
get Row() {
return this.setEvent("row");
}
get Header() {
return this.setEvent("header");
}
get Footer() {
return this.setEvent("footer");
}
get Error() {
return this.setEvent("error");
}
};
var HookProvider = class {
};
var EventHandler = class {
constructor() {
this.listEvents = {};
}
onFile(func) {
this.listEvents.workBook = func;
}
endFile(func) {
this.listEvents.endWorkBook = func;
}
begin(func) {
this.listEvents.sheet = func;
}
end(func) {
this.listEvents.endSheet = func;
}
error(func) {
this.listEvents.error = func;
}
buildHook() {
const that = this;
return new class extends HookProvider {
do(context) {
const workBookFunc = that.listEvents.workBook;
const endWorkBookFunc = that.listEvents.endWorkBook;
const sheetFunc = that.listEvents.sheet;
const endSheetFunc = that.listEvents.endSheet;
const errorFunc = that.listEvents.error;
if (workBookFunc) context.WorkBook.before((ctx) => workBookFunc());
if (endWorkBookFunc) context.WorkBook.after((ctx) => endWorkBookFunc());
if (sheetFunc) context.Sheet.before((ctx) => sheetFunc(ctx.sheetName));
if (endSheetFunc) context.Sheet.after((ctx) => endSheetFunc(ctx.sheetName));
if (errorFunc) context.Error.after((ctx) => errorFunc(ctx.error));
}
}();
}
};
export {
ContextEventHandler,
EventHandler,
HookProvider
};