armisa-models
Version:
models of armisa!
178 lines (166 loc) • 4.83 kB
text/typescript
type Callback = (...args: any) => void;
export type PageEventType =
| 'gridView.wasLoaded-waitForKeyDown'
| 'gridView.onRowsChanged'
| 'gridView.onSelectCurrentCellChange'
| 'gridView.past.rows'
| 'gridView.show.summery.rows'
| 'gridView.show.formulaByCTRL'
| 'gridView.show.formulaByALT'
| 'gridView.columns.visibility.change'
| 'gridView.end.columns.prepare'
| 'gridView.copy.cell.value'
| 'gridView.formula.change'
| 'context.menu.end.items.prepare'
| 'form.F1Button'
| 'form.F2Button'
| 'form.F3Button'
| 'form.F4Button'
| 'form.F5Button'
| 'form.F6Button'
| 'form.F7Button'
| 'form.F8Button'
| 'form.F9Button'
| 'form.F10Button'
| 'form.F11Button'
| 'form.F12Button'
| 'form.acceptButton'
| 'form.spaceButton'
| 'form.cancelButton'
| 'form.newButton'
| 'form.editButton'
| 'form.viewButton'
| 'form.deleteButton'
| 'form.printButton'
| 'form.printCrystalButton'
| 'form.exportToExcelButton'
| 'form.deleteReport'
| 'form.addNewCustomReportButton'
| 'form.editCustomReportButton'
| 'form.deleteButtonRow'
| 'form.nextButton'
| 'form.backButton'
| 'form.select.columns'
| 'form.context.menu'
| 'form.goto.next.pageButton'
| 'form.goto.previous.pageButton'
| 'form.nextSameLevelButton'
| 'form.backSameLevelButton'
| 'form.waitLoading'
| 'form.wasLoaded'
| 'form.printwasLoaded'
| 'form.wasErrored'
| 'form.controlValueNotValid'
| 'form.control.new.add'
| 'form.disabled'
| 'form.enabled'
| 'form.getActive'
| 'form.fieldset.getActive'
| 'form.hasChangeOnTabs'
| 'form.change'
| 'form.reset.values'
| 'form.SuccessFullOtherCommand'
| 'form.SuccessFull'
| 'form.AutoFirstLoadSuccessFull'
| 'form.SaveSuccessFull'
| 'form.GetNewCodeSuccessFull'
| 'form.DeleteSuccessFull'
| 'change'
| 'stack.add.new'
| 'stack.get.active'
| 'stack.will.onmount'
| 'stack.closed'
| 'stack.icon.refresh'
| 'stack.header.text.refresh'
| 'StructuralCode.SaveSuccessFull'
| 'StructuralCode.GetNewCodeSuccessFull'
| 'StructuralCode.DeleteSuccessFull'
| 'SimpleCode.SaveSuccessFull'
| 'SimpleCode.GetNewCodeSuccessFull'
| 'SimpleCode.DeleteSuccessFull'
| 'message.AreYouSureToDeletThisCode'
| 'message.AreYouSureToDeletThisRow'
| 'message.ThereAreSomeErrorYouCanNotSaveForm'
| 'message.InvalidArgument'
| 'message.SomeThingWentWrong'
| 'message.ThereIsNotAnyChangeForSave'
| 'message.ThereIsSomeChangeBeforeCancel'
| 'message.AreYouSureToNewCode'
| 'message.SuccessFull'
| 'SuccessFull'
| 'SaveSuccessFull'
| 'SaveCommonFormSuccessFull'
| 'form.control.simulate.keyDown'
| 'key.down'
| 'key.down.space'
| 'field.set.will.onmount'
| 'field.set.mounted'
| 'factory.class.will.unmount'
| 'factory.class.filter.change'
;
export type IControlSimulateKey = 'ControlEnter' | 'Space' | 'AlphbetKeys';
export class Events {
events: { [key: string]: Callback[] } = {};
onSimulateKeyDown = <T>(
key: IControlSimulateKey,
propertyName: keyof T,
callBack: Callback
) => {
this.on(
('form.control.simulate.keyDown' + key.toString() + propertyName.toString()) as any,
callBack
);
};
removeOnSimulateKeyDown = <T>(
key: IControlSimulateKey,
propertyName: keyof T
): void => {
this.removeOn(
('form.control.simulate.keyDown' + key.toString() + propertyName.toString()) as any
);
};
SimulateKeyDown = <T>(
key: IControlSimulateKey,
propertyName: keyof T,
...args: any
) => {
this.trigger(
('form.control.simulate.keyDown' + key.toString() + propertyName.toString()) as any,
args
);
};
on = (eventName: PageEventType, callBack: Callback): void => {
const handlers = this.events[eventName] || [];
handlers.push(callBack);
this.events[eventName] = handlers;
};
removeOn = (eventName: PageEventType): void => {
this.events[eventName] = [];
};
onControl = (
eventName: PageEventType,
propertyName: any,
callBack: Callback
) => {
this.on((eventName + propertyName) as any, callBack);
};
triggerControl = (
eventName: PageEventType,
propertyName: any,
...args: any
) => {
this.trigger((eventName + propertyName) as any, args);
};
removeOnControl = (eventName: PageEventType, propertyName: any) => {
this.removeOn((eventName + propertyName) as any);
};
trigger = (eventName: PageEventType, ...args: any): void => {
const handlers = this.events[eventName];
if (!handlers || handlers.length === 0) {
return;
}
handlers.forEach((callback) => {
callback.apply(null, args);
});
};
}