ucbuilder
Version:
For Developing Applications with multiple form/usercontrols etc.. In Single BrowserWindow...
78 lines (77 loc) • 2.37 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CommonEvent = void 0;
const common_1 = require("ucbuilder/build/common");
const eventRecord = {
callback: () => { },
stamp: ''
};
const resultCallback = (returnedValue) => false;
class CommonEvent {
constructor(isSingleEvent = false) {
this.isSingleEvent = false;
this.Events = {
onChangeEventList: () => { },
afterFireCallbacks: () => { }
};
this._eventList = [];
this._onCounter = 0;
this.isSingleEvent = isSingleEvent;
}
get onCounter() {
return this._onCounter;
}
set onCounter(value) {
this._onCounter = value;
}
on(callback, stamp = common_1.uniqOpt.guid) {
if (this.isSingleEvent)
this._eventList = [];
this.onCounter++;
//let row: EventRecord = objectOpt.clone(eventRecord);
this._eventList.push({
callback: callback,
stamp: stamp
});
this.Events.onChangeEventList();
return stamp;
}
removeByStamp(stamp) {
let fIndex = this._eventList.findIndex(s => s.stamp === stamp);
if (fIndex != -1) {
common_1.arrayOpt.removeAt(this._eventList, fIndex);
this.Events.onChangeEventList();
}
}
off(callback) {
let fIndex = this._eventList.findIndex(s => s.callback === callback);
if (fIndex != -1) {
common_1.arrayOpt.removeAt(this._eventList, fIndex);
this.Events.onChangeEventList();
}
}
get length() {
return this._eventList.length;
}
fire(args) {
this._eventList.forEach(s => {
s.callback.apply(this, args);
});
this.Events.afterFireCallbacks();
}
fireWithResult(_resultCallback = resultCallback) {
let ar = Array.from(arguments);
ar.shift();
for (let i = 0; i < this._eventList.length; i++) {
let s = this._eventList[i];
if (_resultCallback(s.callback(...ar)) === true)
return true;
}
return false;
}
clear() {
this._eventList = [];
this.Events.onChangeEventList();
}
}
exports.CommonEvent = CommonEvent;