@magic-xpa/angular 4.1200.0-dev4120.4 → 4.1200.0-dev4120.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/magic-xpa-angular.mjs +1783 -192
- package/fesm2022/magic-xpa-angular.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/package.json +6 -8
- package/src/controls.metadata.model.d.ts +16 -0
- package/src/interfaces/sub-form-definition.iterface.d.ts +6 -0
- package/src/magic.core.module.d.ts +5 -3
- package/src/services/OverlayWindowService.d.ts +19 -0
- package/src/services/StylesMapManager.d.ts +3 -0
- package/src/services/accessor.magic.service.d.ts +243 -3
- package/src/services/commands-collector.magic.service.d.ts +3 -0
- package/src/services/component-list.magic.service.d.ts +27 -0
- package/src/services/confirmation.components.magic.provider.d.ts +16 -0
- package/src/services/engine.magic.service.d.ts +3 -0
- package/src/services/exit.magic.service.d.ts +6 -0
- package/src/services/magic-color.service.d.ts +6 -0
- package/src/services/magic.providers.d.ts +3 -0
- package/src/services/magic.services.d.ts +6 -0
- package/src/services/router-commands.magic.service.d.ts +6 -0
- package/src/services/subform.magic.service.d.ts +28 -0
- package/src/services/table.magic.service.d.ts +56 -0
- package/src/services/task.magics.service.d.ts +300 -0
- package/src/services/title.magic.service.d.ts +11 -0
- package/src/ui/GuiInteractiveExecutor.d.ts +3 -0
- package/src/ui/components/base-magic-alert.component.d.ts +16 -0
- package/src/ui/components/base-magic-confirm.component.d.ts +18 -0
- package/src/ui/components/magic-alert.component.d.ts +3 -0
- package/src/ui/components/magic-confirmation-box.component.d.ts +3 -0
- package/src/ui/directives/NonMagicControlDirective.d.ts +41 -0
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +6 -0
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +12 -0
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +9 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +6 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +13 -0
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +6 -0
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +6 -0
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +3 -0
- package/src/ui/directives/magic/row.magic.directive.d.ts +15 -0
- package/src/ui/directives/magic-focus.directive.d.ts +3 -0
- package/src/ui/directives/magic.directive.d.ts +82 -0
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +3 -0
- package/src/ui/directives/mgformat.magic.directive.d.ts +44 -0
- package/src/ui/directives/range-validator.magic.directive.d.ts +16 -0
- package/src/ui/magic-confirmationBox.d.ts +19 -0
- package/src/ui/magic-modal/base-magic-overlay-container.d.ts +9 -0
- package/src/ui/magic-modal/magic-modal-form.d.ts +3 -0
- package/src/ui/magic-modal/magic-modal-interface.d.ts +27 -0
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +20 -0
- package/src/ui/magic-modal/magic-overlay-container.d.ts +51 -0
- package/src/ui/magic-root.component.d.ts +42 -0
- package/src/ui/mgerror.magic.component.d.ts +19 -0
- package/src/ui/pipes/date.magic.pipe.d.ts +6 -0
- package/src/ui/pipes/time.magic.pipe.d.ts +3 -0
- package/src/ui/router-container.magic.component.d.ts +19 -0
- package/src/ui/subform.magic.component.d.ts +21 -0
- package/src/ui/task-base.magic.component.d.ts +78 -0
- package/src/ui/utils.d.ts +3 -0
- package/esm2022/index.mjs +0 -59
- package/esm2022/magic-xpa-angular.mjs +0 -2
- package/esm2022/src/controls.metadata.model.mjs +0 -183
- package/esm2022/src/interfaces/sub-form-definition.iterface.mjs +0 -2
- package/esm2022/src/magic.core.module.mjs +0 -159
- package/esm2022/src/services/ISubformMagicService.mjs +0 -2
- package/esm2022/src/services/OverlayWindowService.mjs +0 -245
- package/esm2022/src/services/StylesMapManager.mjs +0 -28
- package/esm2022/src/services/accessor.magic.service.mjs +0 -358
- package/esm2022/src/services/commands-collector.magic.service.mjs +0 -47
- package/esm2022/src/services/component-list.magic.service.mjs +0 -45
- package/esm2022/src/services/confirmation.components.magic.provider.mjs +0 -21
- package/esm2022/src/services/engine.magic.service.mjs +0 -80
- package/esm2022/src/services/exit.magic.service.mjs +0 -13
- package/esm2022/src/services/magic-color.service.mjs +0 -101
- package/esm2022/src/services/magic.lazy.loader.service.mjs +0 -16
- package/esm2022/src/services/magic.providers.mjs +0 -25
- package/esm2022/src/services/magic.services.mjs +0 -36
- package/esm2022/src/services/mg-date-adapter.mjs +0 -108
- package/esm2022/src/services/overlay.conainer.magic.provider.mjs +0 -14
- package/esm2022/src/services/router-commands.magic.service.mjs +0 -31
- package/esm2022/src/services/subform.magic.service.mjs +0 -195
- package/esm2022/src/services/table.magic.service.mjs +0 -81
- package/esm2022/src/services/task.magics.service.mjs +0 -648
- package/esm2022/src/services/title.magic.service.mjs +0 -19
- package/esm2022/src/ui/GuiInteractiveExecutor.mjs +0 -114
- package/esm2022/src/ui/components/base-magic-alert.component.mjs +0 -24
- package/esm2022/src/ui/components/base-magic-confirm.component.mjs +0 -24
- package/esm2022/src/ui/components/magic-alert.component.mjs +0 -36
- package/esm2022/src/ui/components/magic-confirmation-box.component.mjs +0 -42
- package/esm2022/src/ui/directives/NonMagicControlDirective.mjs +0 -58
- package/esm2022/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +0 -29
- package/esm2022/src/ui/directives/magic/checkbox.magic.directive.mjs +0 -100
- package/esm2022/src/ui/directives/magic/combobox.magic.directive.mjs +0 -37
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +0 -27
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +0 -85
- package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +0 -32
- package/esm2022/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +0 -28
- package/esm2022/src/ui/directives/magic/nocontrol.magic.directive.mjs +0 -193
- package/esm2022/src/ui/directives/magic/row.magic.directive.mjs +0 -62
- package/esm2022/src/ui/directives/magic-focus.directive.mjs +0 -20
- package/esm2022/src/ui/directives/magic.directive.mjs +0 -232
- package/esm2022/src/ui/directives/magicViewContainerRef.directive.mjs +0 -20
- package/esm2022/src/ui/directives/mgformat.magic.directive.mjs +0 -579
- package/esm2022/src/ui/directives/range-validator.magic.directive.mjs +0 -60
- package/esm2022/src/ui/magic-confirmationBox.mjs +0 -42
- package/esm2022/src/ui/magic-modal/base-magic-overlay-container.mjs +0 -22
- package/esm2022/src/ui/magic-modal/magic-modal-form.mjs +0 -6
- package/esm2022/src/ui/magic-modal/magic-modal-interface.mjs +0 -2
- package/esm2022/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +0 -125
- package/esm2022/src/ui/magic-modal/magic-overlay-container.mjs +0 -162
- package/esm2022/src/ui/magic-root.component.mjs +0 -236
- package/esm2022/src/ui/mgerror.magic.component.mjs +0 -125
- package/esm2022/src/ui/pipes/date.magic.pipe.mjs +0 -106
- package/esm2022/src/ui/pipes/time.magic.pipe.mjs +0 -52
- package/esm2022/src/ui/pipes/time24.magic.pipe.mjs +0 -35
- package/esm2022/src/ui/router-container.magic.component.mjs +0 -115
- package/esm2022/src/ui/subform.magic.component.mjs +0 -56
- package/esm2022/src/ui/task-base.magic.component.mjs +0 -91
- package/esm2022/src/ui/utils.mjs +0 -54
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"magic-xpa-angular.mjs","sources":["../../../../projects/angular/src/controls.metadata.model.ts","../../../../projects/angular/src/services/StylesMapManager.ts","../../../../projects/angular/src/services/engine.magic.service.ts","../../../../projects/angular/src/services/component-list.magic.service.ts","../../../../projects/angular/src/services/commands-collector.magic.service.ts","../../../../projects/angular/src/services/router-commands.magic.service.ts","../../../../projects/angular/src/services/magic.lazy.loader.service.ts","../../../../projects/angular/src/services/subform.magic.service.ts","../../../../projects/angular/src/ui/router-container.magic.component.ts","../../../../projects/angular/src/ui/GuiInteractiveExecutor.ts","../../../../projects/angular/src/ui/magic-modal/base-magic-overlay-container.ts","../../../../projects/angular/src/ui/directives/magicViewContainerRef.directive.ts","../../../../projects/angular/src/ui/magic-modal/magic-overlay-container.ts","../../../../projects/angular/src/services/overlay.conainer.magic.provider.ts","../../../../projects/angular/src/ui/components/base-magic-confirm.component.ts","../../../../projects/angular/src/ui/components/base-magic-alert.component.ts","../../../../projects/angular/src/ui/directives/magic-focus.directive.ts","../../../../projects/angular/src/ui/magic-modal/magic-overlay-container-wrapper.ts","../../../../projects/angular/src/ui/components/magic-alert.component.ts","../../../../projects/angular/src/ui/components/magic-confirmation-box.component.ts","../../../../projects/angular/src/services/confirmation.components.magic.provider.ts","../../../../projects/angular/src/ui/magic-confirmationBox.ts","../../../../projects/angular/src/services/OverlayWindowService.ts","../../../../projects/angular/src/services/task.magics.service.ts","../../../../projects/angular/src/services/table.magic.service.ts","../../../../projects/angular/src/services/title.magic.service.ts","../../../../projects/angular/src/services/magic-color.service.ts","../../../../projects/angular/src/services/accessor.magic.service.ts","../../../../projects/angular/src/services/magic.services.ts","../../../../projects/angular/src/ui/task-base.magic.component.ts","../../../../projects/angular/src/ui/directives/magic/row.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/nocontrol.magic.directive.ts","../../../../projects/angular/src/ui/pipes/date.magic.pipe.ts","../../../../projects/angular/src/ui/directives/mgformat.magic.directive.ts","../../../../projects/angular/src/ui/pipes/time.magic.pipe.ts","../../../../projects/angular/src/ui/directives/range-validator.magic.directive.ts","../../../../projects/angular/src/ui/subform.magic.component.ts","../../../../projects/angular/src/ui/mgerror.magic.component.ts","../../../../projects/angular/src/ui/directives/magic/checkbox.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/combobox.magic.directive.ts","../../../../projects/angular/src/services/exit.magic.service.ts","../../../../projects/angular/src/ui/magic-root.component.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.ts","../../../../projects/angular/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/input.noformcontrol.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.ts","../../../../projects/angular/src/ui/directives/NonMagicControlDirective.ts","../../../../projects/angular/src/ui/pipes/time24.magic.pipe.ts","../../../../projects/angular/src/magic.core.module.ts","../../../../projects/angular/src/services/mg-date-adapter.ts","../../../../projects/angular/src/services/magic.providers.ts","../../../../projects/angular/src/ui/utils.ts","../../../../projects/angular/src/ui/magic-modal/magic-modal-form.ts"],"sourcesContent":["import {StorageAttribute} from \"@magic-xpa/utils\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\nimport {HtmlProperties, CustomValidator} from \"@magic-xpa/gui\";\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class ControlMetadata {\r\n controlType: string;\r\n dataType: StorageAttribute;\r\n properties: Map<HtmlProperties, any> = new Map();\r\n classesMap: Map<HtmlClasses, any> = new Map();\r\n stylesMap: Map<HtmlClasses, any> = new Map();\r\n removedClass: string;\r\n classes: string ;\r\n rangeValidator: boolean;\r\n\r\n // user properties\r\n userProperties: Map<string, any> = new Map();\r\n\r\n customValidators: Map<string, CustomValidator> = new Map();\r\n\r\n setClass(key, value) {\r\n // for no-control - hold the name of the class to be removed later\r\n if(this.classesMap.has(key)) {\r\n this.removedClass = this.classesMap.get(key);\r\n }\r\n\r\n this.classesMap.set(key, value);\r\n let result = '';\r\n\r\n for (let value of this.classesMap) {\r\n result += value + ' ';\r\n }\r\n this.classes = result;\r\n\r\n }\r\n\r\n setStyle(key, value) {\r\n this.stylesMap.set(key, value);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class ControlsMetadata {\r\n\r\n //values of control\r\n values: Map<string, string> = new Map();\r\n // dictionary of controls with there properties\r\n ControlsProperties: Map<string, ControlMetadata> = new Map();\r\n\r\n rowId: string;\r\n isCreated = false;\r\n isEditing = false;\r\n\r\n get Values(){\r\n return this.values;\r\n }\r\n\r\n getControlMetadata(controlId: string) {\r\n if (!this.ControlsProperties.has(controlId))\r\n this.ControlsProperties.set(controlId, new ControlMetadata());\r\n return this.ControlsProperties.get(controlId);\r\n }\r\n\r\n\r\n\r\n update(obj:any) {\r\n //should we keep the values here ?\r\n //this.values = obj.ControlsValues;\r\n let props: { [id: string]: { [id: string]: string; } } = obj.ControlsMetaData;\r\n for (let controlName in props) {\r\n if (!this.ControlsProperties.has(controlName))\r\n this.ControlsProperties.set(controlName, new ControlMetadata());\r\n let controlMetaData: ControlMetadata = this.ControlsProperties.get(controlName);\r\n for (let property in obj.ControlsMetaData[controlName].Properties)\r\n controlMetaData[property] = obj.ControlsMetaData[controlName].Properties[property];\r\n controlMetaData.controlType = obj.ControlsMetaData[controlName].Type;\r\n }\r\n for (let controlName in obj.ControlsValues) {\r\n this.setValue(controlName, obj.ControlsValues[controlName]);\r\n }\r\n }\r\n\r\n setValue(controlName: string, value: any): void {\r\n this.values.set(controlName, value);\r\n }\r\n\r\n getProperty(controlId: string, prop: HtmlProperties) {\r\n if (this.ControlsProperties.has(controlId)) {\r\n if (this.ControlsProperties.get(controlId).properties.has(prop)) {\r\n return this.ControlsProperties.get(controlId).properties.get(prop);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n getValue(controlName: string){\r\n return this.values.get(controlName);\r\n }\r\n\r\n\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class Records {\r\n data: Map<number, ControlsMetadata> = new Map();\r\n list: ControlsMetadata[] = []; //used for sequential access in table\r\n includesFirst: boolean;\r\n includesLast: boolean;\r\n guiTopIndex: number;\r\n recordsBeforeCurrentView: number = 0;\r\n isEmptyDataView: boolean = false;\r\n sizeUpdated: boolean = false; //used for evaluating the RecordsSizeChange.\r\n\r\n getRow(dvRowId: number): ControlsMetadata {\r\n return this.list[dvRowId + this.recordsBeforeCurrentView];\r\n }\r\n\r\n markRowAsCreated(guiRowId: number): void {\r\n if (guiRowId < this.list.length) {\r\n this.addRow(guiRowId);\r\n this.data.get(guiRowId).isCreated = true;\r\n }\r\n }\r\n\r\n markRowAsNotCreated(guiRowId: number): void {\r\n if (guiRowId < this.list.length)\r\n this.data.get(guiRowId).isCreated = false;\r\n }\r\n\r\n\r\n isRowCreated(guiRowId: number): boolean {\r\n if (guiRowId < this.list.length) {\r\n if (!this.data.has(guiRowId) || isNullOrUndefined(this.data.get(guiRowId)))\r\n return false;\r\n else\r\n return this.data.get(guiRowId).isCreated;\r\n }\r\n return false;\r\n }\r\n\r\n /*\r\n * for row editing\r\n * */\r\n startRowEditing(guiRowId: number): void {\r\n if (guiRowId < this.list.length && this.data.has(guiRowId))\r\n this.data.get(guiRowId).isEditing = true;\r\n }\r\n\r\n /*\r\n * stop row editing on row Id\r\n * */\r\n stopRowEditing(guiRowId: number): void {\r\n if (guiRowId < this.list.length && this.data.has(guiRowId))\r\n this.data.get(guiRowId).isEditing = false;\r\n }\r\n\r\n /*\r\n * return if row is in editing\r\n * Called by the HTML code, so parameter is a string, not a numebr\r\n * */\r\n isRowInRowEditing(guiRowId: string): boolean {\r\n if (+guiRowId < this.list.length) {\r\n if (!this.data.has(+guiRowId) || isNullOrUndefined(this.data.get(+guiRowId)))\r\n return false;\r\n else\r\n return this.data.get(+guiRowId).isEditing;\r\n }\r\n return false;\r\n }\r\n\r\n update(obj) {\r\n\r\n if (obj.fullRefresh && obj.rows.length != this.list.length) {\r\n this.data = new Map();\r\n this.list = new Array<ControlsMetadata>();\r\n }\r\n for (let rowId in obj.rows) {\r\n if (!this.data.has(+rowId) || this.data.get(+rowId) === null)\r\n this.data.set(+rowId, new ControlsMetadata());\r\n let controlsData: ControlsMetadata = this.data.get(+rowId);\r\n controlsData.update(obj.rows[rowId]);\r\n controlsData.rowId = rowId;\r\n }\r\n for (var [key, value] of this.data) {\r\n this.list[key] = value;\r\n }\r\n\r\n }\r\n\r\n updateSize(len: number) {\r\n if (this.list.length != len) {\r\n if (len < this.list.length) {\r\n //remove rows\r\n for (let i = len; i < this.list.length; i++) {\r\n this.data.delete(i);\r\n }\r\n\r\n }\r\n this.list.length = len;\r\n this.sizeUpdated = true;\r\n\r\n }\r\n }\r\n\r\n\r\n /**\r\n * crears data for the first record\r\n * @param template\r\n */\r\n clearFirstTableRecord(template: { [id: string]: string; }) {\r\n if (this.list.length >= 1) {\r\n for (const key in template) {\r\n if (template[key] == '1' && this.list[0].ControlsProperties.has(key)) {\r\n this.list[0].ControlsProperties.get(key).properties = new Map() ;\r\n }\r\n }\r\n }\r\n }\r\n\r\n addRow(guiRowId: number) {\r\n if (guiRowId !== 0 || !this.data.has(guiRowId) || isNullOrUndefined(this.data.get(guiRowId))) {\r\n this.data.set(guiRowId, new ControlsMetadata());\r\n this.data.get(guiRowId).rowId = \"\"+guiRowId;\r\n this.list[guiRowId] = this.data.get(guiRowId);\r\n }\r\n }\r\n\r\n createFirst() {\r\n this.addRow(0);\r\n }\r\n\r\n fromJson(data: string) {\r\n var obj = JSON.parse(data);\r\n this.update(obj);\r\n }\r\n\r\n setGuiTopIndex(topIndex: number) {\r\n this.guiTopIndex = topIndex;\r\n }\r\n\r\n getGuiTopIndex(): number {\r\n return this.guiTopIndex;\r\n }\r\n\r\n}\r\n\r\n /**\r\n * @ignore\r\n */\r\nexport enum HtmlClasses {\r\n Color = \"color\",\r\n font = \"font\",\r\n FocusColor=\"focuscolor\",\r\n HintColor=\"hintcolor\",\r\n}\r\n","import {MagicProperties} from \"@magic-xpa/utils\"\r\nimport {NString, isNullOrUndefined} from \"@magic-xpa/mscorelib\"\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class StylesMapManager {\r\n static StylesMap: Map<string, any> = new Map<string, any>(\r\n [\r\n [MagicProperties.LineDivider, new Map<any, any>([[true, \"solid\"], [false, \"hidden\"]])],\r\n [MagicProperties.ImageFile, \"url('\\{0}\\')\"],\r\n [MagicProperties.Wallpaper, \"url('\\{0}\\')\"]\r\n ]\r\n );\r\n\r\n static MagicPropertyToHtmlAttributeMap: Map<string, string> = new Map<string, string>(\r\n [\r\n [MagicProperties.LineDivider, \"border-bottom-style\"],\r\n [MagicProperties.ImageFile, \"background-image\"],\r\n [MagicProperties.Wallpaper, \"background-image\"]\r\n ]\r\n );\r\n\r\n static magicValueGetStyle(styleName: string, magicValue: any): string {\r\n let style: string = \"\";\r\n\r\n if (!isNullOrUndefined(magicValue)) {\r\n let value = StylesMapManager.StylesMap.get(styleName);\r\n if (value.constructor === Map) {\r\n style = value.get(magicValue);\r\n }\r\n else if (value.constructor === String) {\r\n style = NString.Format(value.toString(), magicValue);\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\n\r\nimport {IGuiEvent, MagicBridge} from \"@magic-xpa/engine\";\r\nimport {GuiCommand, GuiInteractive} from \"@magic-xpa/gui\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EngineMagicService {\r\n magicBridge = MagicBridge;\r\n isStub = false;\r\n // true when user is logged in magic\r\n isLoggedIn = false;\r\n //TODO - unregister\r\n refreshDom: Subject<GuiCommand> = new Subject();\r\n interactiveCommands: Subject<GuiInteractive> = new Subject();\r\n\r\n startMagicEngine(httpClient: HttpClient, args: Map<string, string>) {\r\n this.magicBridge.registerExecuteCommandsCallback(data => {\r\n if (!this.isStub) {\r\n try {\r\n const list = data as GuiCommand[];\r\n for (let c of list) {\r\n this.refreshDom.next(c);\r\n }\r\n }\r\n catch (e) {\r\n console.dir(e);\r\n console.log('magic engine not found');\r\n console.log('moving to stub mode');\r\n this.isStub = true;\r\n }\r\n }\r\n });\r\n\r\n this.magicBridge.registerInteractiveCallback(data => {\r\n if (!this.isStub) {\r\n this.interactiveCommands.next(data);\r\n }\r\n });\r\n\r\n this.magicBridge.Initialize(httpClient, args);\r\n }\r\n\r\n async terminateMagic(): Promise<void> {\r\n await this.magicBridge.TerminateMagic();\r\n }\r\n\r\n insertEvent(guiEvent: IGuiEvent): void {\r\n if (!this.isStub)\r\n this.magicBridge.insertEvent(guiEvent);\r\n }\r\n\r\n GetRangedValue(taskId: string, controlName: string, value: string): string {\r\n return this.magicBridge.GetRangedValue(taskId, controlName, value);\r\n }\r\n\r\n GetControlPictureMask(taskId: string, controlName: string): any {\r\n return this.magicBridge.GetControlPictureMask(taskId, controlName);\r\n }\r\n\r\n GetFormattedValue(taskId: string, controlName: string, value: any, rowId?: string): any {\r\n return this.magicBridge.GetFormattedValue(taskId, controlName, value, rowId);\r\n }\r\n\r\n ValidateControlValue(taskId: string, controlName: string, value: any): string {\r\n return this.magicBridge.ValidateControlValue(taskId, controlName, value);\r\n }\r\n\r\n GetFldRanges(taskId: string, controlName: string): string {\r\n return this.magicBridge.GetFldRanges(taskId, controlName);\r\n }\r\n\r\n saveData(data:string)\r\n {\r\n //this.magicBridge.saveData(data);\r\n }\r\n\r\n getIsLoggedIn():boolean{\r\n return this.isLoggedIn;\r\n }\r\n\r\n setIsLoggedIn(setIsLoggedIn: boolean){\r\n this.isLoggedIn = setIsLoggedIn;\r\n }\r\n\r\n TransCacheExists(): boolean {\r\n return this.magicBridge.TransCacheExists();\r\n }\r\n\r\n TerminateContextUsingFetchAPI(): void {\r\n this.magicBridge.TerminateContextUsingFetchAPI();\r\n }\r\n}\r\n","import { Injectable, NgModuleRef } from '@angular/core';\r\n\r\n\r\nexport interface ComponentData {\r\n component:any;\r\n moduleRef:NgModuleRef<any>;\r\n}\r\n\r\nexport interface ModuleData {\r\n moduleName: string;\r\n modulePath: string;\r\n}\r\n\r\n/**\r\n * Manages the list of components in a project, and the project title\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ComponentListMagicService{\r\n\r\n /**\r\n * Map of project components\r\n */\r\n components = new Map<string,ComponentData>();\r\n /**\r\n * Map of project dialogs\r\n */\r\n dialogs = new Map<string,any>();\r\n\r\n lazyLoadModulesMap = null;\r\n\r\n getData(name:string, mustHaveData: boolean){\r\n let data :ComponentData= null;\r\n\r\n let haveData: boolean =this.components.has(name);\r\n if (!haveData && mustHaveData) {\r\n console.log(\"Error: Component: \" + name + \" does not exist in components map\");\r\n }\r\n\r\n if (haveData)\r\n data = this.components.get(name)\r\n\r\n return data;\r\n }\r\n\r\n\r\n /**\r\n * Return a component according to name\r\n * @param name Name of requested component\r\n * @returns The requested component\r\n */\r\n getComponent(name:string, mustHaveData:boolean = true){\r\n let data: ComponentData = this.getData(name, mustHaveData)\r\n return data ? data.component : null;\r\n }\r\n\r\n addComponents(componentList:any , modulRef?:NgModuleRef<any>){\r\n for(let key in componentList){\r\n let data :ComponentData = {moduleRef:modulRef, component:componentList[key]};\r\n this.components.set(key,data);\r\n }\r\n }\r\n\r\n /**\r\n * Return a component according to name\r\n * @param name Name of requested component\r\n * @returns The requested component\r\n */\r\n getModuleRef (name:string){\r\n let data: ComponentData = this.getData(name, false)\r\n return data ? data.moduleRef : null;;\r\n }\r\n\r\n /**\r\n * Return the lazy load module details of the specified component\r\n * @param name: Name of requested component\r\n * @returns: lazy load module details\r\n */\r\n getLazyLoadModuleData (name:string): ModuleData {\r\n return (this.lazyLoadModulesMap != null && this.lazyLoadModulesMap.hasOwnProperty(name)) ? this.lazyLoadModulesMap[name] : null;\r\n }\r\n\r\n/**\r\n * Project title\r\n */\r\n title : string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EngineMagicService } from './engine.magic.service';\r\nimport { GuiCommand } from '@magic-xpa/gui';\r\nimport { List } from '@magic-xpa/mscorelib';\r\nimport { Logger } from '@magic-xpa/utils';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommandsCollectorMagicService {\r\n private count: number = 0;\r\n private commands: List<GuiCommand> = new List<GuiCommand>();\r\n private subscription: Subscription = null;\r\n\r\n constructor(protected magic: EngineMagicService) {\r\n }\r\n\r\n startCollecting() {\r\n this.count++;\r\n Logger.Instance.WriteDevToLog(\"CommandsCollectorMagicService.startCollecting() --- \" + this.count);\r\n\r\n if (this.subscription === null) {\r\n this.subscription = this.magic.refreshDom\r\n .subscribe(command => {\r\n this.commands.push(command);\r\n });\r\n }\r\n }\r\n\r\n stopCollecting() {\r\n this.count--;\r\n Logger.Instance.WriteDevToLog(\"CommandsCollectorMagicService.stopCollecting() --- \" + this.count);\r\n\r\n if (this.count === 0) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n }\r\n\r\n GetCommands(taskId: string): GuiCommand[] {\r\n const commands: GuiCommand[] = this.commands.filter( (command: GuiCommand) => command.TaskTag === taskId);\r\n commands.forEach(command => { this.commands.Remove(command); });\r\n\r\n return commands;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { List,isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport { ISubformMagicService } from './ISubformMagicService';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class RouteCommand {\r\n callerMgSubformServiceRef: ISubformMagicService;\r\n routerOutletName: string;\r\n formName: string;\r\n parameters: any;\r\n routeParams: List<any>;\r\n}\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouterCommandsMagicService {\r\n private pendingRouteCommands: RouteCommand[] = [];\r\n\r\n AddRouteCommand (routeCommand: RouteCommand) {\r\n this.pendingRouteCommands.push(routeCommand);\r\n }\r\n\r\n ExecuteNextCommand() {\r\n let pendingRouteCommand: RouteCommand = this.pendingRouteCommands.shift();\r\n\r\n if (!isNullOrUndefined(pendingRouteCommand)) {\r\n pendingRouteCommand.callerMgSubformServiceRef.ExecuteRouteCommand(pendingRouteCommand);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn : 'root'\r\n})\r\nexport class MagicLazyLoaderService {\r\n Load(path: string): Promise<any> {\r\n return Promise.reject('error in loading module :' + path);\r\n }\r\n}\r\n","import { Compiler, Component, Injectable, Injector, NgModuleRef } from '@angular/core';\nimport { TaskMagicService } from './task.magics.service';\nimport { List, isNullOrUndefined } from '@magic-xpa/mscorelib';\nimport { GuiCommand } from '@magic-xpa/gui';\nimport {ComponentListMagicService, ModuleData} from './component-list.magic.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CommandsCollectorMagicService } from './commands-collector.magic.service';\nimport { RouteDefinition } from '../interfaces/sub-form-definition.iterface';\nimport { RouteCommand, RouterCommandsMagicService } from '../services/router-commands.magic.service';\nimport { ISubformMagicService } from './ISubformMagicService';\nimport { RouterContainerMagicComponent } from '../ui/router-container.magic.component';\nimport { MagicLazyLoaderService } from './magic.lazy.loader.service';\n\n\n/**\n * Service for managing subforms and routing\n */\n@Injectable()\nexport class SubformMagicService implements ISubformMagicService{\n\n subformsDict /*:{ [x: string]: SubformDefinition }*/ = {};\n routesDict: { [x: string]: string } = {}; // dictionary of router outlet to router path\n currentRouteDefinition: RouteDefinition = null;\n\n static currentCallerMgSubformServiceRef: any = null;\n\n static routerContainers: Array<RouterContainerMagicComponent> = new Array();\n\n constructor(private task: TaskMagicService,\n protected activatedRoute: ActivatedRoute,\n protected componentList: ComponentListMagicService,\n protected pendingCommandsCollector: CommandsCollectorMagicService,\n protected router: Router,\n protected routerCommandsMagicService: RouterCommandsMagicService,\n private componentListMagicService: ComponentListMagicService,\n private loader: MagicLazyLoaderService,\n private injector: Injector,\n private compiler: Compiler) {\n }\n\n /**\n * Finds and returns the component according to the subform name\n * @param subformName\n * @returns\n */\n mgGetComp(subformName: string): Component {\n if (subformName in this.subformsDict) {\n let formName: string = this.subformsDict[subformName].formName;\n if (formName)\n return this.componentList.getComponent(formName);\n }\n return null;\n }\n\n /**\n * Returns the parameters of the subform\n * @param subformName\n * @returns\n */\n mgGetParameters(subformName: string): any {\n if (subformName in this.subformsDict) {\n return this.subformsDict[subformName].parameters;\n }\n else\n return '';\n }\n\n /**\n * @ignore\n */\n deleteSubformComp (subformControlName: string, formName: string) {\n\n if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0)\n {\n if (this.subformsDict[subformControlName].formName === formName) {\n\n this.subformsDict[subformControlName] = {};\n this.task.refreshView();\n }\n }\n }\n\n /**\n * @ignore\n */\n addSubformComp (subformControlName: string, formName: string, taskId: string, taskDescription: any, routerPath: string, params: List<any>, inDefaultOutlet: boolean) {\n this.pendingCommandsCollector.startCollecting();\n\n let refreshNeeded = false;\n if (isNullOrUndefined(routerPath)) { // call in destination subform\n if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0)\n {\n if (this.subformsDict[subformControlName].formName === formName) {\n\n this.subformsDict[subformControlName] = {};\n this.task.refreshView();\n }\n }\n\n // Load the lazy load module, if needed\n let moduleRef: NgModuleRef<any> = this.componentListMagicService.getModuleRef(formName);\n\n if (moduleRef == null) {\n let lazyLoadModule: ModuleData = this.componentListMagicService.getLazyLoadModuleData(formName);\n\n if (lazyLoadModule != null) {\n const Magic: string = 'Magic';\n const Module: string = 'Module';\n\n // extract name of module(XX) from 'MagicXXModule'\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\n this.loader.Load(moduleName).then( m => {\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\n moduleRef = compiled.ngModuleFactory.create(this.injector);\n this.subformsDict[subformControlName] = {\n formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription}\n };\n this.task.refreshView();\n });\n }\n }\n else {\n this.subformsDict[subformControlName] = {\n formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription}\n };\n //this.ref.detectChanges();\n refreshNeeded = true;\n }\n }\n else { // call route\n if (inDefaultOutlet)\n subformControlName = 'primary';\n\n let routeParams: List<any> = new List();\n routeParams.push(routerPath);\n if (params !== null) {\n routeParams = <List<any>>routeParams.concat(params);\n }\n\n let routeCommand: RouteCommand = {\n callerMgSubformServiceRef: this,\n routerOutletName: subformControlName,\n formName: formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription},\n routeParams: routeParams\n };\n\n // If SubformMagicService.currentCallerMgSubformServiceRef !== null means that router.navigate() is already\n // called once, but angular has not yet executed it (ngOnInit of the new component is not called).\n // In such a case, do not executed router.navigate() again. Because, angular ignores the previous one.\n // So, put a command in the queue which will be executed after the first one is executed.\n if (SubformMagicService.currentCallerMgSubformServiceRef === null)\n this.ExecuteRouteCommand(routeCommand);\n else\n this.routerCommandsMagicService.AddRouteCommand(routeCommand);\n }\n if ( refreshNeeded)\n this.task.refreshView();\n }\n\n /**\n * Open the subform using a route command\n */\n ExecuteRouteCommand(routeCommand: RouteCommand)\n {\n let currentSubformMagicService: SubformMagicService = <SubformMagicService>routeCommand.callerMgSubformServiceRef;\n let relativeRoute = SubformMagicService.getRelativeRoute(currentSubformMagicService.activatedRoute);\n\n if (currentSubformMagicService.routesDict[routeCommand.routerOutletName] === routeCommand.routeParams[0])\n {\n // If the specified router outlet already hosts the same router path, router.navigate() doesn't actually navigate.\n // So, first clear the outlet (passing null route params, clears the outlet) and then navigate again.\n currentSubformMagicService.router.navigate([{outlets: {[routeCommand.routerOutletName]: null}}], {relativeTo: relativeRoute})\n .then((result:boolean) => {\n SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;\n currentSubformMagicService.currentRouteDefinition = {\n formName: routeCommand.formName,\n parameters: routeCommand.parameters\n };\n\n currentSubformMagicService.PerformRouterNavigate(routeCommand.routerOutletName, routeCommand.routeParams);\n });\n }\n else {\n SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;\n currentSubformMagicService.currentRouteDefinition = {\n formName: routeCommand.formName,\n parameters: routeCommand.parameters\n };\n\n if (SubformMagicService.routerContainers.length > 0) {\n let routeContainer = SubformMagicService.routerContainers[0];\n SubformMagicService.routerContainers.shift();\n routeContainer.initializeComponent();\n }\n else {\n currentSubformMagicService.PerformRouterNavigate(routeCommand.routerOutletName, routeCommand.routeParams);\n }\n }\n }\n\n private PerformRouterNavigate(routerOutletName: string, routeParams: List<any>)\n {\n let relativeRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\n\n this.router.navigate([{ outlets: { [routerOutletName]: routeParams } }], { relativeTo: relativeRoute })\n .then((result:boolean)=> {\n if (result !== null && !result) {\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\n subformMagicService.currentRouteDefinition = null;\n\n SubformMagicService.currentCallerMgSubformServiceRef = null;\n subformMagicService.pendingCommandsCollector.stopCollecting();\n subformMagicService.routerCommandsMagicService.ExecuteNextCommand();\n }\n }\n );\n }\n\n /**\n * @ignore\n */\n init()\n {\n // If commands were issued for this task before ngOnInit(), they were not executed because task had not registered for them.\n // So, execute them now.\n const pendingCommands: GuiCommand[] = this.pendingCommandsCollector.GetCommands(this.task.taskId);\n if (pendingCommands.length > 0) {\n pendingCommands.forEach(command => {this.task.executeCommand(command);});\n this.task.refreshView();\n }\n\n this.pendingCommandsCollector.stopCollecting();\n }\n\n /**\n * @ignore\n */\n refreshView() {\n this.task.refreshView();\n }\n\n ///\n // return the relative route\n //\n static getRelativeRoute(sendActivatedRoute: ActivatedRoute){\n let currentActiveRoute = sendActivatedRoute;\n if (currentActiveRoute.snapshot.routeConfig !== null && currentActiveRoute.snapshot.routeConfig.path === '') {\n currentActiveRoute = currentActiveRoute.parent;\n if (!currentActiveRoute.snapshot.routeConfig.loadChildren)\n console.log('getRelativeRoute(): both path and currentActiveRoute.snapshot.routeConfig.loadChildren are empty.');\n }\n return currentActiveRoute;\n }\n}\n","import { Component, OnInit, ViewContainerRef } from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport { TaskBaseMagicComponent } from './task-base.magic.component';\r\nimport { EngineMagicService } from '../services/engine.magic.service';\r\nimport { getGuiEventObj, IGuiEvent } from '@magic-xpa/engine';\r\nimport { List } from '@magic-xpa/mscorelib';\r\nimport { StrUtil } from '@magic-xpa/utils';\r\nimport { ComponentListMagicService } from '../services/component-list.magic.service';\r\nimport { SubformMagicService } from '../services/subform.magic.service';\r\nimport { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';\r\nimport { RouterCommandsMagicService } from '../services/router-commands.magic.service';\r\nimport { TaskMagicService } from '../services/task.magics.service';\r\n\r\n/**\r\n * Mock component, implements routing by connecting the requested URL with the appropriate Magic task\r\n */\r\n@Component({\r\n selector: 'magic-route-outlet',\r\n template: `\r\n `\r\n})\r\nexport class RouterContainerMagicComponent implements OnInit {\r\n private componentRef = null;\r\n private parentMgSubformService: SubformMagicService = null;\r\n private static lastRoute: string = \"/\";\r\n\r\n static get LastRoute(): string {\r\n return RouterContainerMagicComponent.lastRoute;\r\n }\r\n\r\n /**\r\n *\r\n * @param changeDetectorRef\r\n * @param activatedRoute\r\n * @param magic\r\n * @param componentFactoryResolver\r\n * @param viewContainerRef\r\n * @param componentList\r\n * @param pendingCommandsCollector\r\n */\r\n constructor(private activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected magic: EngineMagicService,\r\n private containerTaskService: TaskMagicService,\r\n private viewContainerRef: ViewContainerRef,\r\n private componentList: ComponentListMagicService,\r\n protected pendingCommandsCollector: CommandsCollectorMagicService,\r\n protected routerCommandsMagicService: RouterCommandsMagicService) {}\r\n\r\n /**\r\n * Initialization\r\n */\r\n ngOnInit() {\r\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\r\n\r\n let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n\r\n RouterContainerMagicComponent.lastRoute = this.router.url;\r\n\r\n if (subformMagicService == null || subformMagicService.currentRouteDefinition === null) {\r\n this.insertRouteEvent(currentActiveRoute);\r\n\r\n SubformMagicService.routerContainers.push(this);\r\n }\r\n else {\r\n this.initializeComponent();\r\n }\r\n }\r\n\r\n private insertRouteEvent(currentActiveRoute: ActivatedRoute) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('RouterNavigate', null, 0);\r\n guiEvent.RouterPath = currentActiveRoute.snapshot.routeConfig.path;\r\n\r\n if (currentActiveRoute.snapshot.outlet !== 'primary')\r\n guiEvent.RouterOutletName = currentActiveRoute.snapshot.outlet;\r\n\r\n\r\n // if this is LoadOnDemandModuleMagicComponent it's mean that this is load on demand module and we\r\n // need to take the path form routeConfig.path\r\n\r\n let calcRouterPath: string = currentActiveRoute.routeConfig.path;\r\n // add the RouterPath only if exist\r\n if (calcRouterPath.length > 0)\r\n {\r\n let routerPath: string = calcRouterPath;\r\n let tokens: string[] = StrUtil.tokenize(routerPath, \"/:\");\r\n guiEvent.RouterPath = tokens[0];\r\n\r\n guiEvent.RouterParams = new List();\r\n for (let i = 1; i < tokens.length; i++) {\r\n guiEvent.RouterParams.push(currentActiveRoute.snapshot.params[tokens[i]]);\r\n }\r\n }\r\n\r\n this.containerTaskService.insertEvent(guiEvent);\r\n }\r\n\r\n initializeComponent() {\r\n // re-init subformMagicService since it may change after executing \"RouterNavigate\" event.\r\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\r\n if (subformMagicService.currentRouteDefinition !== null) {\r\n let comp = this.componentList.getComponent(subformMagicService.currentRouteDefinition.formName);\r\n this.componentRef = this.viewContainerRef.createComponent(comp);\r\n Object.assign(this.componentRef.instance, subformMagicService.currentRouteDefinition.parameters);\r\n\r\n\r\n let myActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n\r\n let routeParams: string[] = StrUtil.tokenize(myActiveRoute.snapshot.routeConfig.path, \"/:\");\r\n subformMagicService.routesDict[myActiveRoute.snapshot.outlet] = routeParams[0];\r\n\r\n this.parentMgSubformService = subformMagicService;\r\n subformMagicService.currentRouteDefinition = null;\r\n SubformMagicService.currentCallerMgSubformServiceRef = null;\r\n\r\n //When the component is initialized, then also we get the notification for paramMap subscription.\r\n //But in this case, we do not have to raise the event, because magic engine itself has initiated the route with the same parameters.\r\n //So, control it via ignoreParamChange flag.\r\n let ignoreParamChange = true;\r\n myActiveRoute.paramMap.subscribe(params => {\r\n if (!ignoreParamChange)\r\n this.insertRouteEvent(myActiveRoute);\r\n ignoreParamChange = false;\r\n });\r\n\r\n this.parentMgSubformService.refreshView();\r\n\r\n this.routerCommandsMagicService.ExecuteNextCommand();\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy() {\r\n // TODO Routing: Call close() only if the task is not already closed.\r\n // Task can be closed when a router is overlayed by another task via call operation.\r\n if (this.componentRef != null)\r\n {\r\n (<TaskBaseMagicComponent>this.componentRef.instance).task.close();\r\n\r\n let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n this.parentMgSubformService.routesDict[currentActiveRoute.outlet] = \"\";\r\n\r\n RouterContainerMagicComponent.lastRoute = this.router.url;\r\n }\r\n }\r\n\r\n}\r\n","import {GuiInteractive, HtmlProperties, InteractiveCommandType} from '@magic-xpa/gui';\r\nimport {TaskBaseMagicComponent} from './task-base.magic.component';\r\nimport {isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport {TaskMagicService} from '../services/task.magics.service';\r\nimport {OverlayWindowService} from '../services/OverlayWindowService';\r\nimport {RouterContainerMagicComponent} from \"./router-container.magic.component\";\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class GuiInteractiveExecutor {\r\n command: GuiInteractive;\r\n component: TaskBaseMagicComponent;\r\n task: TaskMagicService;\r\n overlayService: OverlayWindowService;\r\n\r\n\r\n Run(): void {\r\n // Sets the currentContextID\r\n try {\r\n switch (this.command._commandType) {\r\n\r\n case InteractiveCommandType.GET_VALUE:\r\n this.onValue();\r\n break;\r\n\r\n case InteractiveCommandType.GET_ROWS_IN_PAGE:\r\n this.onGetRowsInPage();\r\n break;\r\n case InteractiveCommandType.GET_MAX_ROWS_IN_PAGINATED_TABLE:\r\n this.onGetMaxRowsInPaginatedTable();\r\n break;\r\n case InteractiveCommandType.MESSAGE_BOX:\r\n this.OnMessageBox();\r\n break;\r\n case InteractiveCommandType.GET_TOP_INDEX:\r\n this.OnGetTopIndex();\r\n break;\r\n case InteractiveCommandType.GET_IS_ROW_EDITING:\r\n this.OnGetIsRowEditing();\r\n break;\r\n case InteractiveCommandType.SET_TITLE:\r\n this.OnSetTitle();\r\n break;\r\n case InteractiveCommandType.REFRESH_PAGE:\r\n this.OnRefreshPage();\r\n break;\r\n case InteractiveCommandType.GET_LAST_ROUTE:\r\n this.OnGetLastRoute();\r\n break;\r\n case InteractiveCommandType.OPEN_FORM:\r\n this.OnOpenForm();\r\n break;\r\n }\r\n } catch (ex) {\r\n throw ex;\r\n //want to see all the exceptions for now\r\n }\r\n }\r\n\r\n\r\n public static executeInteractiveCommand(task: TaskMagicService, guiIntactiveCommand: GuiInteractive, overlayService: OverlayWindowService) {\r\n let executor = new GuiInteractiveExecutor();\r\n executor.task = task;\r\n executor.command = guiIntactiveCommand;\r\n executor.overlayService = overlayService;\r\n executor.Run();\r\n }\r\n\r\n private onValue(): void {\r\n let guiRowId: number = this.task.getGuiRowId(+this.command._line, this.task.isTableControl(this.command.controlName) || this.command._obj2.IsTableChild);\r\n let result = this.task.getFormControl(guiRowId.toString(), this.command.controlName);\r\n let val: any;\r\n if (!isNullOrUndefined(result)) {\r\n val = result.value;\r\n } else if (this.task.isTableControl(this.command.controlName))\r\n val = this.task.getValue(this.command.controlName, guiRowId.toString());\r\n\r\n // If this is Three State Checkbox, then check if value is indeterminate.\r\n if(this.command._boolVal){\r\n const indeterminate = this.task.getProperty(this.command.controlName,HtmlProperties.CheckBoxIndeterminate,guiRowId.toString());\r\n if(indeterminate)\r\n val = null;\r\n }\r\n\r\n val = this.task.ConvertValToNative(this.command.controlName, guiRowId, val);\r\n\r\n this.command._mgValue.obj = val;\r\n }\r\n\r\n private onGetRowsInPage(): void {\r\n this.command._intVal1 = this.task.tableService.getPageSize();\r\n if (this.task.oldPageSize == 0)\r\n this.task.oldPageSize = this.command._intVal1;\r\n }\r\n\r\n private onGetMaxRowsInPaginatedTable(): void {\r\n this.command._intVal1 = this.task.tableService.getMaxRowsInTable();\r\n }\r\n\r\n private OnMessageBox() {\r\n this.overlayService.openConfirmationBox(this.command._mgValue.title, this.command._mgValue.str, this.command._mgValue.style);\r\n }\r\n\r\n private OnOpenForm(): void {\r\n if (this.command._boolVal)\r\n this.overlayService.loadAndOpenModule(this.command.controlName, this.command._mgValue.str, this.command._mgValue.path);\r\n }\r\n\r\n private OnSetTitle() {\r\n this.task.setTitle(this.command._mgValue.title);\r\n }\r\n\r\n private OnRefreshPage() {\r\n let navigateToRootRoute = this.command._boolVal;\r\n let initialUrl:string = this.command._obj1;\r\n if (navigateToRootRoute)\r\n window.location.replace (initialUrl);\r\n else\r\n window.location.reload();\r\n }\r\n\r\n private OnGetTopIndex(): void {\r\n this.command._intVal1 = this.task.tableService.getTableTopIndex();\r\n }\r\n\r\n private OnGetIsRowEditing(): void {\r\n let dvRowIndex: number = this.command._intVal1;\r\n let guiRowIndex: number = this.task.getGuiRowId(dvRowIndex, true);\r\n let isLineMode: boolean = this.command._boolVal;\r\n\r\n if (isLineMode && (isNullOrUndefined(guiRowIndex) || isNullOrUndefined(this.task.Records.list[guiRowIndex])))\r\n this.command._boolVal = false;\r\n else\r\n this.command._boolVal = this.task.Records.list[guiRowIndex].isEditing;\r\n }\r\n\r\n private OnGetLastRoute(): void {\r\n this.command.resultString = RouterContainerMagicComponent.LastRoute;\r\n }\r\n}\r\n","import { Input, Output } from \"@angular/core\";\r\n@Input()\r\n@Output()\r\nexport abstract class BaseMagicOverlayContainer {\r\n /**\r\n *\r\n */\r\n @Input() abstract ModalComp;\r\n\r\n /**\r\n *\r\n */\r\n @Input() abstract ModalCompParameters: any;\r\n\r\n /**\r\n *\r\n */\r\n @Output() abstract onClose;\r\n}\r\n","import { Directive, ViewContainerRef } from \"@angular/core\";\nimport { IMagicViewContainerRef } from \"../../interfaces/sub-form-definition.iterface\";\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\n\n/**\n * Directive for setting ViewContainerRef on element\n */\n@Directive({\n selector: '[magicViewContainerRef]',\n})\nexport class MagicViewContainerRef {\n constructor(private vcRef: ViewContainerRef) {\n // For angular 10 - find the component from the views\n let comp = ((<any>this.vcRef)._hostLView).find(v => v as IMagicViewContainerRef != null && !isNullOrUndefined((v as IMagicViewContainerRef).setViewContainerRef));\n comp.setViewContainerRef(vcRef);\n }\n}\n\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MagicModalInterface } from './magic-modal-interface';\r\nimport { isNullOrUndefined } from '@magic-xpa/mscorelib';\r\nimport { BaseMagicOverlayContainer } from './base-magic-overlay-container';\r\nimport { IMagicViewContainerRef } from '../../..';\r\n\r\n/**\r\n * Creates a modal window for Magic modal window components\r\n */\r\n@Component({\r\n selector: 'app-magic-overlay-container',\r\n template: `\r\n <div>\r\n <div class=\"modal-background\" (click)=\"OnBackgroundClick()\">\r\n <button (click)=\"OnClose()\" tabindex=\"-1\" style=\"float:right; border: none; background-color: transparent; outline: none; color: white\" *ngIf=\"!getShowTitleBar()\">X</button>\r\n </div>\r\n <div #modalForeground class=\"modal-foreground\" [ngStyle]=\"getStyle()\">\r\n <div #modalheader class=\"modal-header\" *ngIf=\"getShowTitleBar()\">\r\n {{getText()}}\r\n <button (click)=\"OnClose()\" style=\"float:right\" tabindex=\"-1\">X</button>\r\n </div>\r\n <div [ngStyle]=\"getClientAreaStyles()\">\r\n <div #modalbody magicViewContainerRef>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['./magic-overlay-container.css']\r\n})\r\nexport class MagicOverlayContainer extends BaseMagicOverlayContainer implements OnInit , IMagicViewContainerRef{\r\n /**\r\n * HTML to be displayed in the modal window\r\n */\r\n modalbodyViewContainerRef : ViewContainerRef;\r\n\r\n /**\r\n * Header of the modal window\r\n */\r\n @ViewChild('modalheader', { static: false }) headerElementRef: ElementRef;\r\n /**\r\n * Foreground of the modal window\r\n */\r\n @ViewChild('modalForeground', { static: false }) foregroundElementRef: ElementRef;\r\n\r\n /**\r\n *\r\n */\r\n @Input() ModalComp = null;\r\n /**\r\n *\r\n */\r\n @Input() ModalCompParameters: any = {};\r\n\r\n @Output() onClose = new EventEmitter<void>();\r\n\r\n /**\r\n *\r\n */\r\n private componentRef = null;\r\n\r\n /**\r\n *\r\n * @param injector\r\n * @param componentFactoryResolver\r\n */\r\n constructor(\r\n\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n this.componentRef = this.modalbodyViewContainerRef.createComponent(this.ModalComp);\r\n Object.assign(this.componentRef.instance, this.ModalCompParameters);\r\n }\r\n\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.modalbodyViewContainerRef = vcRef;\r\n }\r\n\r\n\r\n /**\r\n * Returns the form name\r\n * @returns\r\n */\r\n getText() {\r\n if (this.componentRef !== null) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n return comp.FormName();\r\n }\r\n else\r\n return '';\r\n }\r\n\r\n /**\r\n * Returns CSS styles for the window\r\n * @returns\r\n */\r\n getStyle() {\r\n let styles = {};\r\n if (this.componentRef != undefined) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n\r\n styles['width'] = comp.Width();\r\n styles['height'] = comp.Height();\r\n\r\n if (comp.IsCenteredToWindow()) {\r\n styles['margin'] = 'auto';\r\n }\r\n else {\r\n styles['margin-left'] = comp.X() + 'px';\r\n styles['margin-top'] = comp.Y() + 'px';\r\n }\r\n }\r\n return styles;\r\n }\r\n\r\n /**\r\n * Returns the CSS styles for the client area\r\n * @returns\r\n */\r\n getClientAreaStyles() {\r\n let styles = {};\r\n if (this.componentRef != undefined) {\r\n const headerHeight = this.getShowTitleBar() && !isNullOrUndefined(this.headerElementRef) ? (this.headerElementRef.nativeElement.offsetHeight + 1) : 0;\r\n if (!isNullOrUndefined(this.foregroundElementRef)) {\r\n const foregroundHeight = this.foregroundElementRef.nativeElement.offsetHeight;\r\n styles['height'] = (foregroundHeight - headerHeight) + 'px';\r\n\r\n const foregroundWidth = this.foregroundElementRef.nativeElement.offsetWidth;\r\n styles['width'] = (foregroundWidth) + 'px';\r\n }\r\n styles['overflow'] = 'auto';\r\n }\r\n return styles;\r\n }\r\n\r\n /**\r\n * Should the title bar be displayed\r\n * @returns\r\n */\r\n getShowTitleBar() {\r\n if (this.componentRef != undefined) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n return comp.ShowTitleBar();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n */\r\n OnClose() {\r\n this.onClose.emit();\r\n }\r\n\r\n /**\r\n * Handles click in the background window\r\n */\r\n OnBackgroundClick() {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n\r\n if (comp.ShouldCloseOnBackgroundClick())\r\n this.OnClose();\r\n }\r\n}\r\n","/**\r\n * Service managing overlay windows\r\n * This is Magic's default provider\r\n */\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MagicOverlayContainer } from \"../ui/magic-modal/magic-overlay-container\";\r\n\r\n@Injectable()\r\nexport class OverlayContainerMagicProvider {\r\n getComponent() {\r\n return MagicOverlayContainer;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n\n/**\n * This is a base class for the magic confirm components\n */\n@Component({\n selector: 'mg-base-confirm',\n template: '',\n styles: ['']\n})\nexport class BaseMagicConfirmComponent {\n\n /**\n * title of the component\n */\n @Input() title: string;\n\n /**\n * message of the component\n */\n @Input() message: string;\n\n /**\n * onClose Event - to be raised when the component is closed\n * should pass true when OK is pressed and false when cancel is pressed\n */\n @Output() onClose = new EventEmitter<boolean>();\n\n\n /**\n * raises close Event\n * @param result true when OK is pressed and false when cancel is pressed\n *\n */\n OnClose(result) {\n this.onClose.emit(result);\n }\n}\n","\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\n\n/**\n * This is a base class for the magic alert components\n */\n@Component({\n selector: 'mg-base-alert',\n template: '',\n styles: ['']\n})\nexport class BaseMagicAlertComponent {\n\n\n /**\n * title of the component\n */\n @Input() title: string;\n\n /**\n * message of the component\n */\n @Input() message: string;\n\n /**\n * onClose Event - to be raised when the component is closed\n\n */\n @Output() onClose = new EventEmitter<void>();\n\n\n\n /**\n * close magic alert\n */\n OnClose() {\n this.onClose.emit();\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\n\n/**\n * Directive for setting focus on element\n */\n@Directive({\n selector: '[magicFocus]'\n})\nexport class MagicFocusDirective {\n\n constructor(private hostElement: ElementRef) {}\n ngAfterViewInit() {\n this.hostElement.nativeElement.focus();\n }\n\n}\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n ElementRef, NgModuleRef,\r\n Injector, ChangeDetectorRef, Compiler\r\n} from '@angular/core';\r\nimport { BaseMagicOverlayContainer } from \"./base-magic-overlay-container\";\r\nimport { BaseMagicConfirmComponent } from \"../components/base-magic-confirm.component\";\r\nimport { BaseMagicAlertComponent } from \"../components/base-magic-alert.component\";\r\nimport { OverlayType } from \"@magic-xpa/gui\";\r\nimport { ComponentListMagicService, ModuleData } from \"../../services/component-list.magic.service\";\r\nimport { IMagicViewContainerRef } from \"../../..\";\r\nimport {isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport { MagicLazyLoaderService } from '../../services/magic.lazy.loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-magic-overlay-container-wrapper',\r\n template: `\r\n <div>\r\n <div class=\"overlay-container-wrapper-background\" tabIndex=\"0\" style=\"width: 0px; height: 0px;\" magicFocus></div>\r\n <div class=\"overlay-container-wrapper-background\" #overlayContainerWrapper>\r\n <div #overlayContent magicViewContainerRef>\r\n </div>\r\n </div>\r\n <div class=\"overlay-container-wrapper-background\" tabIndex=\"0\" style=\"width: 0px; height: 0px;\" ></div>\r\n </div>\r\n `,\r\n styles: [`\r\n .overlay-container-wrapper-background {\r\n /* modal background fixed across whole screen */\r\n position: fixed;\r\n top: 0;\r\n z-index: 999;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n }\r\n `]\r\n})\r\nexport class MagicOverlayContainerWrapper implements IMagicViewContainerRef {\r\n /**\r\n *\r\n */\r\n @Input() public Component = null;\r\n /**\r\n *\r\n */\r\n @Input() public Parameters: any = {};\r\n\r\n @Input() private OverlayTypeParam: OverlayType;\r\n\r\n @Output() private onClose = new EventEmitter<void>();\r\n\r\n /**\r\n * HTML to be displayed in the modal window\r\n */\r\n overlayContentViewContainerRef: ViewContainerRef;\r\n\r\n @ViewChild('overlayContainerWrapper', { static: true }) overlayContainerWrapperElementRef: ElementRef;\r\n\r\n /**\r\n * @ignore\r\n * contais data of allowed base components to use\r\n */\r\n static allowedBaseComps = new Map<number, {comp: any, error: string}>([\r\n [OverlayType.Overlay, {comp: BaseMagicOverlayContainer, error:'BaseMagicOverlayContainer . Overlay '}],\r\n [OverlayType.Alert, {comp: BaseMagicAlertComponent, error:'BaseMagicAlertComponent. Alert '}],\r\n [OverlayType.ConfirmationBox, {comp: BaseMagicConfirmComponent, error :'BaseMagicConfirmComponent. Confirmation '}]\r\n ]);\r\n /**\r\n *\r\n * @param componentFactoryResolver\r\n */\r\n constructor(private componentListMagicService: ComponentListMagicService,\r\n private magicLazyModuleLoader: MagicLazyLoaderService,\r\n private injector: Injector,\r\n private changeDetectorRef:ChangeDetectorRef,\r\n private compiler: Compiler) {\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n let moduleRef: NgModuleRef<any> = this.componentListMagicService.getModuleRef(this.Parameters.MagicFormName);\r\n\r\n if (moduleRef == null) {\r\n let lazyLoadModule: ModuleData = this.componentListMagicService.getLazyLoadModuleData(this.Parameters.MagicFormName);\r\n\r\n if (lazyLoadModule != null) {\r\n const Magic: string = 'Magic';\r\n const Module: string = 'Module';\r\n\r\n // extract name of module(XX) from 'MagicXXModule'\r\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\r\n this.magicLazyModuleLoader.Load(moduleName).then(m => {\r\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\r\n moduleRef = compiled.ngModuleFactory.create(this.injector);\r\n this.loadComponent(moduleRef);\r\n });\r\n }\r\n else {\r\n this.loadComponent(null);\r\n }\r\n } else\r\n this.loadComponent(moduleRef);\r\n }\r\n\r\n private loadComponent(moduleRef: NgModuleRef<any>) {\r\n this.Parameters.ModalComp = this.componentListMagicService.getComponent(this.Parameters.MagicFormName, !isNullOrUndefined(this.Parameters.MagicFormName));\r\n\r\n\r\n let componentRef = this.overlayContentViewContainerRef.createComponent(this.Component);\r\n let allowedBaseComp = MagicOverlayContainerWrapper.allowedBaseComps.get(this.OverlayTypeParam);\r\n\r\n\r\n if (componentRef.instance instanceof allowedBaseComp.comp) {\r\n Object.assign(componentRef.instance, this.Parameters);\r\n (<any>componentRef.instance).onClose.subscribe((res) => {\r\n this.onClose.emit(res);\r\n });\r\n } else {\r\n let msg = \"Provided window container should subclass of : \" + allowedBaseComp.error + \"window will not work properly.\";\r\n alert(msg);\r\n }\r\n }\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.overlayContentViewContainerRef = vcRef;\r\n }\r\n\r\n GetRootElement(): HTMLElement {\r\n return this.overlayContainerWrapperElementRef.nativeElement;\r\n }\r\n\r\n DetectChanges()\r\n {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { BaseMagicAlertComponent } from './base-magic-alert.component';\n\n\n/***\n * This is sample component for the alert message\n */\n@Component({\n selector: 'sample-magic-alert-component',\n template: `<div>\n <div class=\"mg-message-background\">\n <h2> {{title}}</h2>\n <p>{{message}} </p>\n\n <button (click)=\"OnClose()\">OK</button>\n </div>\n </div>`,\n styles: [`\n .mg-message-background {\n background-color: #F5F5F5;\n text-align: center;\n width: 40%;\n font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding: 17px;\n border-radius: 5px;\n text-align: center;\n margin-top: 10% ;\n margin-left: auto;\n margin-right: auto;\n border: 1px solid gray;\n }\n\n button {\n background-color: #8CD4F5;\n color: white;\n border: none;\n box-shadow: none;\n font-size: 17px;\n font-weight: 500;\n -webkit-border-radius: 4px;\n border-radius: 5px;\n padding: 10px 32px;\n margin: 26px 5px 0 5px;\n cursor: pointer;\n }\n `]\n})\nexport class MagicAlertComponent extends BaseMagicAlertComponent{\n\n}\n","import { Component } from '@angular/core';\nimport { BaseMagicConfirmComponent } from './base-magic-confirm.component';\n\n/***\n * This is sample component for the confirmation box\n */\n@Component({\n selector: 'sample-magic-confirmation-box',\n template: `<div>\n <div class=\"mg-message-background\">\n <h2> {{title}}</h2>\n {{message}}\n <br>\n <br>\n\n <button (click)=\"OnClose(true)\">OK</button>\n <button class=\"cancel\" (click)=\"OnClose(false)\">Cancel</button>\n </div>\n </div>`,\n styles: [`\n .mg-message-background {\n background-color: #F5F5F5;\n text-align: center;\n width: 40%;\n font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding: 17px;\n border-radius: 5px;\n text-align: center;\n margin-top: 10% ;\n margin-left: auto;\n margin-right: auto;\n border: 1px solid gray;\n }\n\n button {\n background-color: #8CD4F5;\n color: white;\n border: none;\n box-shadow: none;\n font-size: 17px;\n font-weight: 500;\n -webkit-border-radius: 4px;\n border-radius: 5px;\n padding: 10px 32px;\n margin: 26px 5px 0 5px;\n cursor: pointer;\n }\n \n button.cancel {\n background-color: #C1C1C1;\n }\n `]\n})\nexport class MagicConfirmationBoxComponent extends BaseMagicConfirmComponent {\n\n}\n","/**\r\n * Service managing overlay windows\r\n * This is Magic's default provider\r\n */\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MagicAlertComponent } from '../ui/components/magic-alert.component';\r\nimport { MagicConfirmationBoxComponent } from \"../ui/components/magic-confirmation-box.component\";\r\n\r\n/**\r\n * Service managing alert and confirmation windows\r\n * This is Magic's default provider\r\n */\r\n@Injectable()\r\nexport class ConfirmationComponentsMagicProvider {\r\n\r\n /**\r\n * Return true when use default javascript alert and confirmation or return false to provide custom components\r\n * @returns true is we want to use default javascript alert and confirmation\r\n */\r\n showDefaultConfirmations():boolean{\r\n return true; \r\n }\r\n\r\n /**\r\n * Returns component that will replace javascript alert. The component will be used only if showDefaultConfirmations = false\r\n * @returns component that will replace javascript Alert\r\n */\r\n getAlertComponent() : any {\r\n return MagicAlertComponent;\r\n }\r\n\r\n /**\r\n * Returns component that will replace javascript confirmation box. The component will be used only if showDefaultConfirmations = false\r\n * @returns component that will replace javascript confirmation box\r\n */\r\n getConfirmtionComponent() : any {\r\n return MagicConfirmationBoxComponent;\r\n }\r\n\r\n\r\n\r\n}\r\n","import {Styles} from \"@magic-xpa/gui\";\r\n\r\n/**\r\n * Displays a message-box\r\n */\r\nexport class confirmationBox {\r\n\r\n /**\r\n * @ignore\r\n */\r\n public static isConfirmBox(style : Styles): Boolean{\r\n\r\n // button format mask is in first nibble from right\r\n let buttonMode = <number>style & 0x0F;\r\n\r\n var isConfirm = (buttonMode === Styles.MSGBOX_BUTTON_OK_CANCEL) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_YES_NO_CANCEL) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_YES_NO) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_RETRY_CANCEL);\r\n\r\n return (isConfirm);\r\n }\r\n\r\n /**\r\n * Converts the result from the HTML window to the expected result type\r\n * @param style Result received from HTML window\r\n * @param okWasPressed Was the \"OK\" pressed\r\n * @returns MessageBox result type\r\n */\r\n public static convertToExcpectedResultBox (style: Styles, okWasPressed: Boolean ): Styles{\r\n\r\n // button format mask is in first nibble from right\r\n let buttonMode = <number>style & 0x0F;\r\n\r\n let retValue = Styles.MSGBOX_RESULT_OK;\r\n\r\n if (buttonMode === Styles.MSGBOX_BUTTON_OK)\r\n retValue = Styles.MSGBOX_RESULT_OK;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_OK_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_OK : Styles.MSGBOX_RESULT_CANCEL;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_ABORT : Styles.MSGBOX_RESULT_RETRY;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_YES_NO_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_YES : Styles.MSGBOX_RESULT_NO;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_YES_NO)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_YES : Styles.MSGBOX_RESULT_NO;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_RETRY_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_RETRY : Styles.MSGBOX_RESULT_CANCEL;\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * Show a message box as an HTML window\r\n * @param title Title of the message box\r\n * @param message Message that will be display in the message box\r\n * @param style Style that include buttons \\ Icons\r\n * @returns MessageBox result\r\n */\r\n public static showConfirmationBox(title: string, message: string, style: Styles): boolean {\r\n\r\n let okWasPressed = false;\r\n// check if it is confirmation box\r\n let isConfirm = this.isConfirmBox(style);\r\n\r\n // the title will be added to the string and we will add new line after the title\r\n let titleAndString = title + '\\n'+ '\\n' + message;\r\n\r\n if (isConfirm)\r\n okWasPressed = confirm(titleAndString);\r\n else {\r\n alert(titleAndString);\r\n okWasPressed = true;\r\n }\r\n\r\n // return the result from the user\r\n return okWasPressed; \r\n }\r\n}\r\n","import { Component, ComponentRef, Injectable, Injector, ChangeDetectorRef, Compiler,\r\n NgModuleRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {ComponentListMagicService, ModuleData} from \"./component-list.magic.service\";\r\nimport {EngineMagicService} from \"./engine.magic.service\";\r\nimport {IGuiEvent, getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport { OverlayContainerMagicProvider } from \"./overlay.conainer.magic.provider\";\r\nimport { MagicOverlayContainerWrapper } from \"../ui/magic-modal/magic-overlay-container-wrapper\";\r\nimport { ConfirmationComponentsMagicProvider } from \"./confirmation.components.magic.provider\";\r\nimport { OverlayType, Styles } from \"@magic-xpa/gui\";\r\nimport { confirmationBox } from \"../ui/magic-confirmationBox\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\nimport {MagicLazyLoaderService} from \"./magic.lazy.loader.service\";\r\n\r\n\r\n\r\n\r\n/**\r\n * Service managing overlay windows\r\n */\r\n@Injectable({\r\n providedIn:'root'\r\n})\r\nexport class OverlayWindowService {\r\n\r\n constructor(\r\n protected componentList:ComponentListMagicService,\r\n protected engineMagicService: EngineMagicService,\r\n private magicLazyModuleLoader: MagicLazyLoaderService,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private overlayContainerMagicProvider: OverlayContainerMagicProvider,\r\n private confirmationComponentsMagicProvider: ConfirmationComponentsMagicProvider) {\r\n }\r\n\r\n // The view reference of container of overlay window\r\n private overlayWindowsContainerViewRef: ViewContainerRef;\r\n\r\n private overlayWindowFocusManager: OverlayWindowFocusManager = null;\r\n\r\n private changeDetectorRef: ChangeDetectorRef = null;\r\n\r\n init(overlayWindowsContainerViewRef: ViewContainerRef, rootMagicElement: Element, changeDetectorRef: ChangeDetectorRef) {\r\n this.overlayWindowsContainerViewRef = overlayWindowsContainerViewRef;\r\n this.overlayWindowFocusManager = new OverlayWindowFocusManager(rootMagicElement);\r\n this.changeDetectorRef = changeDetectorRef;\r\n }\r\n\r\n loadAndOpenModule (formName: string, taskId: string, taskDescription: string): void {\r\n let moduleRef: NgModuleRef<any> = this.componentList.getModuleRef(formName);\r\n\r\n if (moduleRef == null) {\r\n let lazyLoadModule: ModuleData = this.componentList.getLazyLoadModuleData(formName);\r\n\r\n if (lazyLoadModule != null) {\r\n const Magic: string = 'Magic';\r\n const Module: string = 'Module';\r\n\r\n // extract name of module(XX) from 'MagicXXModule'\r\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\r\n this.magicLazyModuleLoader.Load(moduleName).then(m => {\r\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\r\n moduleRef = compiled.ngModuleFactory.create(this.injector);\r\n this.open(formName, taskId, taskDescription);\r\n this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);\r\n });\r\n }\r\n }\r\n else {\r\n this.open(formName, taskId, taskDescription);\r\n this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);\r\n }\r\n }\r\n\r\n open(formName: string, taskId: string, taskDescription: string) {\r\n\r\n // for overlay which are lazy loaded don't find data in component-list\r\n let comp = this.componentList.lazyLoadModulesMap != null && this.componentList.lazyLoadModulesMap.hasOwnProperty(formName) ? null :this.componentList.getComponent(formName);\r\n let parameters = { taskIdParam: taskId, taskDescription: taskDescription };\r\n\r\n let componentRef = this.createModalComponent({ MagicFormName: formName, ModalComp: comp, ModalCompParameters: parameters}, <Component>this.overlayContainerMagicProvider.getComponent(), OverlayType.Overlay);\r\n\r\n componentRef.instance.onClose.subscribe(() => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"close\", null, 0);\r\n guiEvent.TaskID = taskId;\r\n this.engineMagicService.insertEvent(guiEvent);\r\n });\r\n\r\n //using the same changeDetectorRef from root-component\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n close(commandStr: string) {\r\n // Close the overlay by removing the overlay window from its container\r\n this.overlayWindowsContainerViewRef.remove();\r\n this.overlayWindowFocusManager.popDialog();\r\n\r\n let guiEvent1: IGuiEvent = getGuiEventObj(\"dispose\", null, 0);\r\n guiEvent1.TaskID = commandStr;\r\n this.engineMagicService.insertEvent(guiEvent1);\r\n }\r\n\r\n\r\n /**\r\n * Open Confirmation box\r\n * @param title title of the box\r\n * @param msg message\r\n * @param style Magic style\r\n */\r\n openConfirmationBox( title: string, msg: string, style: Styles) {\r\n\r\n //show default confirmations\r\n if (this.confirmationComponentsMagicProvider.showDefaultConfirmations())\r\n {\r\n let res = confirmationBox.showConfirmationBox(title, msg, style);\r\n this.finishConfirmation( style, res);\r\n\r\n }\r\n else\r\n {\r\n //show custom confirmations\r\n let comp = confirmationBox.isConfirmBox(style) ? this.confirmationComponentsMagicProvider.getConfirmtionComponent() :this.confirmationComponentsMagicProvider.getAlertComponent() ;\r\n let overlayType = confirmationBox.isConfirmBox(style)? OverlayType.ConfirmationBox : OverlayType.Alert;\r\n let componentRef = this.createModalComponent({ title: title, message: msg }, comp, overlayType);\r\n\r\n componentRef.instance.onClose.subscribe((res : boolean) => {\r\n this.overlayWindowsContainerViewRef.remove();\r\n this.overlayWindowFocusManager.popDialog();\r\n this.finishConfirmation( style, res);\r\n });\r\n }\r\n }\r\n /**\r\n * This method is called on close of the confirmation\r\n * @param style Magic style\r\n * @param result\r\n */\r\n finishConfirmation(style: Styles, result: boolean ) {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"confirmationClosed\", null, 0);\r\n guiEvent.keyCode = <number>confirmationBox.convertToExcpectedResultBox(style, result);\r\n this.engineMagicService.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * creates a modal component. Can be used for overlay, message box or confirmation box\r\n * @param parameters component's parameters\r\n * @param component components to create\r\n */\r\n private createModalComponent(parameters: any, component: Component, overlayType: OverlayType): ComponentRef<any> {\r\n let componentRef;\r\n let magicModalContainerParameters = {\r\n Component: component,\r\n Parameters: parameters,\r\n OverlayTypeParam: overlayType\r\n\r\n };\r\n\r\n // Create the UI component of modal window\r\n let viewCRef : ViewContainerRef = <ViewContainerRef>this.overlayWindowsContainerViewRef;\r\n componentRef = viewCRef.createComponent(MagicOverlayContainerWrapper);\r\n\r\n // Set the data to newly created component\r\n Object.assign(componentRef.instance, magicModalContainerParameters);\r\n\r\n this.overlayWindowFocusManager.pushDialog(componentRef.instance.GetRootElement());\r\n\r\n componentRef.instance.DetectChanges();\r\n\r\n return componentRef;\r\n }\r\n}\r\n\r\nclass OverlayWindowFocusManager\r\n{\r\n private rootMagicElement: Element = null;\r\n private openDialogList: Array<DialogInfo> = new Array(0);\r\n private ignoreUtilFocusChanges: boolean = false;\r\n private lastFocus = null;\r\n private focusListener = null;\r\n\r\n constructor (rootMagicElement: Element) {\r\n this.rootMagicElement = rootMagicElement;\r\n }\r\n\r\n pushDialog(rootElement: HTMLElement) {\r\n if (this.openDialogList.length === 0) {\r\n this.focusListener = this.trapFocus.bind(this);\r\n document.addEventListener('focus', this.focusListener, true);\r\n }\r\n\r\n this.openDialogList.push(new DialogInfo(rootElement, (document.activeElement instanceof HTMLElement ? <HTMLElement>document.activeElement : null)));\r\n }\r\n\r\n popDialog() {\r\n const dialogInfo = this.openDialogList.pop();\r\n this.attemptFocus(dialogInfo.FocusElementOnClose);\r\n\r\n if (this.openDialogList.length === 0) {\r\n document.removeEventListener('focus', this.focusListener, true);\r\n this.focusListener = null;\r\n }\r\n }\r\n\r\n trapFocus (event) {\r\n if (this.ignoreUtilFocusChanges) {\r\n return;\r\n }\r\n\r\n if (this.openDialogList.length > 0) {\r\n var currentDialog = this.openDialogList[this.openDialogList.length - 1].RootElement;\r\n if (currentDialog.contains(event.target)) {\r\n this.lastFocus = event.target;\r\n }\r\n else {\r\n if (this.rootMagicElement.contains(event.target)) {\r\n this.focusFirstDescendant(currentDialog);\r\n if (this.lastFocus == document.activeElement) {\r\n this.focusLastDescendant(currentDialog);\r\n }\r\n }\r\n this.lastFocus = document.activeElement;\r\n }\r\n }\r\n }\r\n\r\n private focusFirstDescendant (element) {\r\n for (var i = 0; i < element.childNodes.length; i++) {\r\n var child = element.childNodes[i];\r\n if (this.attemptFocus(child) ||\r\n this.focusFirstDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private focusLastDescendant (element) {\r\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\r\n var child = element.childNodes[i];\r\n if (this.attemptFocus(child) ||\r\n this.focusLastDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private attemptFocus (element) {\r\n if (!this.isFocusable(element)) {\r\n return false;\r\n }\r\n\r\n this.ignoreUtilFocusChanges = true;\r\n try {\r\n element.focus();\r\n }\r\n catch (e) {\r\n }\r\n this.ignoreUtilFocusChanges = false;\r\n return (document.activeElement === element);\r\n };\r\n\r\n private isFocusable (element) {\r\n if (isNullOrUndefined(element))\r\n return false;\r\n\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\r\n return true;\r\n }\r\n else if (element.tabIndex < 0)\r\n return false;\r\n\r\n if (element.disabled) {\r\n return false;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'A':\r\n return !!element.href && element.rel != 'ignore';\r\n case 'INPUT':\r\n return element.type != 'hidden' && element.type != 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nclass DialogInfo\r\n{\r\n private rootElement: HTMLElement;\r\n private focusElementOnClose: HTMLElement;\r\n\r\n constructor(rootElement: HTMLElement, focusElementOnClose: HTMLElement) {\r\n this.rootElement = rootElement;\r\n this.focusElementOnClose = focusElementOnClose;\r\n }\r\n\r\n get RootElement(): HTMLElement {\r\n return this.rootElement;\r\n }\r\n\r\n get FocusElementOnClose(): HTMLElement {\r\n return this.focusElementOnClose;\r\n }\r\n}\r\n\r\n\r\n","import {EventEmitter, Injectable} from '@angular/core';\r\nimport {AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn} from '@angular/forms';\r\nimport {filter} from 'rxjs/operators';\r\nimport {Subject, Subscription, EMPTY} from 'rxjs';\r\n\r\nimport {isNullOrUndefined, isUndefined} from '@magic-xpa/mscorelib';\r\nimport {StylesMapManager} from './StylesMapManager';\r\n\r\nimport {EngineMagicService} from './engine.magic.service';\r\nimport {ControlMetadata, Records} from '../controls.metadata.model';\r\nimport {CommandType, CustomValidator, GuiCommand, GuiConstants, GuiInteractive, HtmlProperties} from '@magic-xpa/gui';\r\n\r\nimport {NString, StringBuilder} from '@magic-xpa/mscorelib';\r\nimport {StorageAttribute} from '@magic-xpa/utils';\r\nimport {getGuiEventObj, IGuiEvent} from '@magic-xpa/engine';\r\nimport {SubformMagicService} from './subform.magic.service';\r\nimport {TitleMagicService} from './title.magic.service';\r\nimport {AccessorMagicService} from './accessor.magic.service';\r\nimport {GuiInteractiveExecutor} from '../ui/GuiInteractiveExecutor';\r\nimport {OverlayWindowService} from './OverlayWindowService';\r\n\r\n/**\r\n * Main service to connect the UI with the Magic WebCLient\r\n */\r\n@Injectable()\r\nexport class TaskMagicService {\r\n\r\n /**\r\n * Service to provide table-related functionalities\r\n */\r\n public tableService: any;\r\n /**\r\n * Collection of data for all controls\r\n */\r\n Records: any = new Records();\r\n /**\r\n * FormGroup collection for line mode\r\n */\r\n formGroups: Array<FormGroup> = [];\r\n /**\r\n * FormGroup for all controls in screen mode\r\n */\r\n ScreenModeControls: FormGroup;\r\n /**\r\n * @ignore\r\n */\r\n refreshDom: Subject<GuiCommand> = new Subject();\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n /**\r\n * @ignore\r\n */\r\n detectChanges: Subject<any> = new Subject();\r\n /**\r\n * @ignore\r\n */\r\n subscribeInteractiveCommands: Subscription;\r\n\r\n /**\r\n * @ignore\r\n */\r\n interactiveCommands: Subject<GuiInteractive>= new Subject();\r\n\r\n /**\r\n * @ignore\r\n * This event is emitted when the selected row in a table changes.\r\n */\r\n OnSelectedRowChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * @ignore\r\n */\r\n customPropertiesSubject: Subject<any> = new Subject();\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n recordsCountChangeSubject: Subject<any> = new Subject();\r\n\r\n mgLoadSubject: Subject<any> = new Subject();\r\n\r\n /**\r\n * @ignore\r\n */\r\n public template: { [id: string]: string; };\r\n /**\r\n * Service to provide subform-related functionalities\r\n */\r\n public mgSubformService: SubformMagicService;\r\n /**\r\n * Service to provide the title-change functionality\r\n */\r\n public mgTitleService: TitleMagicService;\r\n /**\r\n * Service which enables getting/setting values from/to the Magic WebClient engine\r\n */\r\n public mgAccessorService: AccessorMagicService;\r\n\r\n public mgInputDateFormat;\r\n\r\n /**\r\n * @ignore\r\n */\r\n oldPageSize = 0;\r\n\r\n /**\r\n *\r\n * @param magic\r\n */\r\n constructor(protected magic: EngineMagicService, private overlayWindowService: OverlayWindowService) {\r\n this.Records.setGuiTopIndex(0);\r\n this.mgInputDateFormat = null;\r\n }\r\n\r\n /**\r\n * returns true if used is logged in\r\n * @returns\r\n */\r\n public getIsLoggenIn(): boolean {\r\n return this.magic.getIsLoggedIn();\r\n }\r\n\r\n /**\r\n * Id of task to which this service refers\r\n */\r\n _taskId: string;\r\n\r\n /**\r\n * returns the task Id\r\n * @returns\r\n */\r\n get taskId() {\r\n return this._taskId;\r\n }\r\n\r\n /**\r\n * Sets the task Id\r\n * @param value the task id to set\r\n */\r\n set taskId(value) {\r\n // debugger;\r\n this._taskId = value;\r\n }\r\n\r\n /**\r\n * Returns the task's data in Screen mode\r\n * @returns\r\n */\r\n get ScreenControlsData() {\r\n return this.Records.list['0'];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n settemplate(value: any) {\r\n this.template = value;\r\n }\r\n\r\n\r\n /**\r\n * Builds the FormControl for each and every control\r\n */\r\n buildScreenModeControls() {\r\n const group: FormGroup = new FormGroup({});\r\n for (const key in this.template) {\r\n\r\n if (this.template[key] == '0') {\r\n let fc = new FormControl('');\r\n this.setStubValue(0, fc, key);\r\n group.addControl(key, fc);\r\n }\r\n }\r\n\r\n this.ScreenModeControls = group;\r\n }\r\n\r\n /**\r\n * Is the control a table control\r\n * @param id Id of the control\r\n * @returns\r\n */\r\n isTableControl(id: string): boolean {\r\n return this.template[id] == '1';\r\n }\r\n\r\n getMgInputDateFormat(): string {return this.mgInputDateFormat;}\r\n\r\n /**\r\n * Returns the FormControl of a control\r\n * @param guiRowid Id of the requested row\r\n * @param id Id of the control\r\n * @returns\r\n */\r\n getFormControl(guiRowid: string, id: string): AbstractControl {\r\n let c: AbstractControl;\r\n let group: FormGroup = this.isTableControl(id) ? this.formGroups[guiRowid] : this.ScreenModeControls;\r\n if (!isNullOrUndefined(group)) {\r\n group.get(id);\r\n c = group.controls[id];\r\n }\r\n return c;\r\n }\r\n\r\n /**\r\n * handle the change of text for input control inside table\r\n * @param guiRowId Id of the row for which the FormControls are built\r\n * set the new value of the formcontrol\r\n */\r\n setInputTextValue(controlId: string, guiRowid: string, val: any) {\r\n this.setValue(controlId, guiRowid, this.ConvertValToNative(controlId, 0, val));\r\n\r\n const fc = this.getFormControl(guiRowid, controlId);\r\n if (!isNullOrUndefined(val))\r\n fc.setValue(val);\r\n }\r\n\r\n /**\r\n * Build the FormControls for a table row\r\n * @param guiRowId Id of the row for which the FormControls are built\r\n */\r\n buildTableRowControls(guiRowId: number) {\r\n\r\n const group: FormGroup = new FormGroup({});\r\n\r\n for (const key in this.template) {\r\n\r\n if (this.template[key] == '1') {\r\n let fc = new FormControl('');\r\n this.setStubValue(guiRowId, fc, key);\r\n group.addControl(key, fc);\r\n }\r\n }\r\n this.formGroups[guiRowId] = group;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @ignore\r\n */\r\n updateRecordsBeforeCurrentView(value: number) {\r\n this.Records.recordsBeforeCurrentView = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIncludesFirst(value: boolean): void {\r\n this.Records.includesFirst = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIncludesLast(value: boolean): void {\r\n this.Records.includesLast = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n markRowAsCreated(guiRowId: number): void {\r\n this.Records.markRowAsCreated(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n markRowAsNotCreated(guiRowId: number): void {\r\n this.Records.markRowAsNotCreated(guiRowId);\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n startRowEditing(guiRowId: number): void {\r\n this.Records.startRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n stopRowEditing(guiRowId: number): void {\r\n this.Records.stopRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isRowInRowEditing(guiRowId: string): boolean {\r\n return this.Records.isRowInRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIsEmptyDataView(isEmpty: boolean) {\r\n if (this.Records.isEmptyDataView !== isEmpty) {\r\n\r\n if (isEmpty)\r\n this.recordsCountChangeSubject.next(0);\r\n\r\n this.Records.isEmptyDataView = isEmpty;\r\n this.tableService.refreshDataSource();\r\n this.refreshView();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize the service to work with the task\r\n * @param taskId Id of the task\r\n * @param taskDescription\r\n */\r\n initTask(taskId, taskDescription) {\r\n this.Records.createFirst();\r\n this.oldPageSize = 0;\r\n if (this.IsStub()) {\r\n this.loadData();\r\n } else {\r\n this.taskId = taskId;\r\n this.settemplate(taskDescription);\r\n }\r\n this.buildScreenModeControls();\r\n\r\n // remove previous subscriptions\r\n if(!isNullOrUndefined(this.subscribeRefreshDom))\r\n this.subscribeRefreshDom.unsubscribe();\r\n if(!isNullOrUndefined(this.subscribeInteractiveCommands))\r\n this.subscribeInteractiveCommands.unsubscribe();\r\n\r\n this.subscribeRefreshDom = this.magic.refreshDom.pipe(filter(command => command.TaskTag === this.taskId))\r\n .subscribe(command => {\r\n // console.log(\"Task \" + command.TaskTag + \"command \" + command.CommandType);\r\n this.executeCommand(command);\r\n });\r\n this.subscribeInteractiveCommands = this.magic.interactiveCommands\r\n .pipe(filter(command => command.TaskTag === this.taskId))\r\n .subscribe(command => {\r\n // console.log(\"Task \" + command.TaskTag + \"command \" + command.CommandType);\r\n this.executeInteractiveCommand(command);\r\n });\r\n\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n refreshView() {\r\n this.detectChanges.next('');\r\n }\r\n\r\n /**\r\n * Insert an event to the Magic WebClient event queue\r\n * @param guiEvent The event to insert\r\n */\r\n insertEvent(guiEvent: IGuiEvent): void {\r\n guiEvent.TaskID = this.taskId;\r\n this.magic.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetControlPictureMask(controlName: string): any {\r\n return this.magic.GetControlPictureMask(this.taskId, controlName);\r\n }\r\n\r\n /**\r\n * Validates the control value, using the Magic WebClient\r\n * @param controlName Id of validated control\r\n * @param value value to be validated\r\n * @returns If validation fails, returns error message, else returns null\r\n */\r\n ValidateControlValue(controlName: string, value: any): string {\r\n return this.magic.ValidateControlValue(this.taskId, controlName, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetRangedValue(controlName: string, value: string): string {\r\n return this.magic.GetRangedValue(this.taskId, controlName, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetFldRanges(controlName: string): string {\r\n return this.magic.GetFldRanges(this.taskId, controlName);\r\n }\r\n\r\n /**\r\n * returns the value of a property of the control\r\n * @param controlId Id of control\r\n * @param prop Property\r\n * @param guiRowId Row Id, if applicable\r\n * @returns Property value\r\n */\r\n getProperty(controlId: string, prop: HtmlProperties, guiRowId?: string) {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n if (this.IsStub())\r\n return this.getPropertyStub(this.Records.list[guiRowId], controlId, prop);\r\n else {\r\n let rec = this.Records.list[guiRowId];\r\n if (isNullOrUndefined(rec))\r\n debugger;\r\n else\r\n return this.Records.list[guiRowId].getProperty(controlId, prop);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getPropertyStub(ControlsProperties: any, controlId, prop) {\r\n ControlsProperties = ControlsProperties.ControlsProperties;\r\n if (controlId in ControlsProperties) {\r\n if (prop in ControlsProperties[controlId].properties) {\r\n return ControlsProperties[controlId].properties[prop];\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getStyleStub(ControlsProperties: any, controlId, styleName: string) {\r\n ControlsProperties = ControlsProperties.ControlsProperties;\r\n return ControlsProperties[controlId].stylesMap.get(styleName);\r\n }\r\n\r\n /**\r\n * Return the CSS classes used for this control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns String containing the classes currently defined for this control\r\n */\r\n getClasses(controlId: string, guiRowId?: string): string {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n return this.Records.list[guiRowId].getControlMetadata(controlId).classes;\r\n\r\n }\r\n\r\n /**\r\n * Return the value of a style used for a control\r\n * @param controlId Id of control\r\n * @param styleName Name of style\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of style of the control\r\n */\r\n getStyle(controlId: string, styleName: string, guiRowId?: string): string {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n if (this.IsStub())\r\n return this.getStyleStub(this.Records.list[guiRowId], controlId, styleName);\r\n else {\r\n let magicValue = this.Records.list[guiRowId].getControlMetadata(controlId).stylesMap.get(styleName);\r\n return StylesMapManager.magicValueGetStyle(styleName, magicValue);\r\n }\r\n }\r\n\r\n /**\r\n * Return the value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of the control\r\n */\r\n getValue(controlId: string, guiRowId?: string) {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n return this.Records.list.length > +guiRowId ? this.Records.list[guiRowId].values[controlId] : '';\r\n\r\n }\r\n\r\n /**\r\n * Return the formatted value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of the control\r\n */\r\n getFormattedValue(controlName: string, val: any, rowId?: string): string {\r\n\r\n return this.magic.GetFormattedValue(this.taskId, controlName, val, rowId);\r\n }\r\n\r\n /**\r\n * Sets the value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @param value Value to set\r\n */\r\n setValue(controlId: string, guiRowId: string, value: any): void {\r\n return this.Records.list[guiRowId].setValue(controlId, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n protected executeInteractiveCommand(guiInteractiveCommand: GuiInteractive)\r\n {\r\n GuiInteractiveExecutor.executeInteractiveCommand(this, guiInteractiveCommand, this.overlayWindowService);\r\n this.interactiveCommands.next(guiInteractiveCommand)\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n handleSetProperty(command: GuiCommand, isTableChild: boolean): void {\r\n let controlId = command.CtrlName;\r\n let dvRowId: number = (command.line || 0);\r\n let guiRowId: number = this.getGuiRowId(dvRowId, isTableChild);\r\n let properties: ControlMetadata;\r\n\r\n if (command.Operation === HtmlProperties.SelectedRow) {\r\n if (command.obj1 !== GuiConstants.NO_ROW_SELECTED) {\r\n guiRowId = this.getGuiRowId(command.obj1, true);\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(command.Operation, command.line);\r\n this.tableService.selectRow(guiRowId.toString());\r\n this.OnSelectedRowChanged.emit(guiRowId.toString());\r\n }\r\n } else if (command.Operation === HtmlProperties.Enabled) {\r\n let c = this.getFormControl(guiRowId.toString(), controlId);\r\n if (!isNullOrUndefined(c)) {\r\n if (command.obj1)\r\n c.enable();\r\n else\r\n c.disable();\r\n }\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(command.Operation, command.obj1);\r\n } else {\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(<HtmlProperties>command.Operation, command.obj1);\r\n }\r\n }\r\n\r\n\r\n executeCommand(command: GuiCommand): void {\r\n let dvRowId: number = (command.line || 0);\r\n let guiRowId: number = 0;\r\n let controlId = command.CtrlName;\r\n let properties: ControlMetadata;\r\n let isTableChild: boolean = this.isTableControl(controlId);\r\n\r\n // For non-input type controls on table.\r\n if (command.obj !== null)\r\n isTableChild = isTableChild || command.obj.IsTableChild;\r\n\r\n guiRowId = this.getGuiRowId(dvRowId, isTableChild);\r\n\r\n switch (command.CommandType) {\r\n case CommandType.SET_IS_LOGGED_IN:\r\n break;\r\n\r\n case CommandType.SET_TABLE_TOP_INDEX:\r\n this.tableService.setTableTopIndex(command.number);\r\n break;\r\n case CommandType.REFRESH_TASK:\r\n this.tableService.refreshDataSource();\r\n this.refreshView();\r\n\r\n break;\r\n case CommandType.SET_TABLE_ITEMS_COUNT:\r\n if (!isUndefined(command.number)) {\r\n this.tableService.updateTableSize(command.number);\r\n\r\n if (command.number > 0 && this.Records.sizeUpdated &&\r\n !this.Records.isEmptyDataView) {\r\n this.recordsCountChangeSubject.next(command.number);\r\n this.Records.sizeUpdated = false;\r\n }\r\n }\r\n break;\r\n case CommandType.SET_CHUNK_SIZE:\r\n if (!isUndefined(command.number)) {\r\n this.tableService.setChunkSize(command.number);\r\n }\r\n break;\r\n case CommandType.SET_RECORDS_BEFORE_CURRENT_VIEW:\r\n this.updateRecordsBeforeCurrentView(command.number);\r\n break;\r\n\r\n case CommandType.CREATE_TABLE_ROW:\r\n guiRowId = this.getGuiRowId(command.number, true);\r\n this.buildTableRowControls(guiRowId);\r\n this.markRowAsCreated(guiRowId);\r\n break;\r\n\r\n case CommandType.SET_IS_ROW_EDITING:\r\n guiRowId = this.getGuiRowId(command.line, command.value);\r\n this.startRowEditing(guiRowId);\r\n break;\r\n\r\n case CommandType.SET_NOT_IS_ROW_EDITING:\r\n guiRowId = this.getGuiRowId(command.line, command.value);\r\n this.stopRowEditing(guiRowId);\r\n break;\r\n\r\n\r\n case CommandType.UNDO_CREATE_TABLE_ROW:\r\n this.markRowAsNotCreated(this.getGuiRowId(command.number, true));\r\n break;\r\n\r\n\r\n case CommandType.SET_TABLE_INCLUDES_FIRST:\r\n this.setIncludesFirst(command.Bool1);\r\n break;\r\n case CommandType.SET_TABLE_INCLUDES_LAST:\r\n this.setIncludesLast(command.Bool1);\r\n break;\r\n\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command, isTableChild);\r\n if (command.Operation == HtmlProperties.ReadOnly ||\r\n command.Operation == HtmlProperties.ItemsList ||\r\n command.Operation == HtmlProperties.CheckBoxIndeterminate)\r\n this.refreshDom.next(command);\r\n break;\r\n\r\n case CommandType.PROP_SET_USER_PROPERTY:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n // if the property has changed, set the property and raise the subject\r\n if(properties.userProperties.get(command.Operation)!== command.obj1) {\r\n properties.userProperties.set(command.Operation, command.obj1);\r\n // the property name is of format <controlName>~<propertyName>\r\n this.customPropertiesSubject.next({ propertyName: controlId + '~' + command.Operation, value: command.obj1, rowId: guiRowId });\r\n }\r\n break;\r\n\r\n case CommandType.PROP_SET_CUSTOM_VALIDATOR: {\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n\r\n let control = this.getFormControl(guiRowId.toString(), controlId);\r\n if (control != null) {\r\n properties.customValidators.set(command.Operation, command.obj1);\r\n if (control.validator != null)\r\n control.setValidators([control.validator, this.customValidator(guiRowId.toString(), controlId)]);\r\n else\r\n control.setValidators(this.customValidator(guiRowId.toString(), controlId));\r\n\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n break;\r\n\r\n case CommandType.SET_CLASS:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.setClass(command.Operation, command.obj1);\r\n break;\r\n\r\n case CommandType.SET_STYLE:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.setStyle(command.Operation, command.obj1);\r\n break;\r\n\r\n case CommandType.SET_ATTRIBUTE:\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n properties.dataType = <StorageAttribute>String.fromCharCode(command.number);\r\n break;\r\n\r\n case CommandType.SET_VALUE:\r\n this.Records.list[guiRowId].values[controlId] = command.value;\r\n let c = this.getFormControl(guiRowId.toString(), controlId);\r\n if (!isNullOrUndefined(c)) {\r\n c.setValue(this.ConvertValFromNative(controlId, command.line, command.value));\r\n }\r\n\r\n break;\r\n\r\n case CommandType.CREATE_SUB_FORM:\r\n this.mgSubformService.addSubformComp(command.CtrlName, command.userDropFormat.toString(), command.str, command.fileName, command.contextID, command.params, command.Bool1);\r\n break;\r\n\r\n case CommandType.CLOSE_SUB_FORM:\r\n this.mgSubformService.deleteSubformComp(command.CtrlName, command.userDropFormat.toString());\r\n break;\r\n\r\n case CommandType.SET_EMPTY_DATAVIEW:\r\n this.setIsEmptyDataView(command.Bool1);\r\n break;\r\n\r\n case CommandType.SET_FOCUS:\r\n this.refreshDom.next(command);\r\n break;\r\n\r\n case CommandType.SET_WC_IDLE:\r\n this.mgLoadSubject.next(EMPTY);\r\n break;\r\n }\r\n\r\n }\r\n\r\n /**\r\n custom validator\r\n */\r\n customValidator(rowid: string, id: string): ValidatorFn {\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n let controlMetadata: ControlMetadata;\r\n controlMetadata = this.Records.list[rowid].getControlMetadata(id);\r\n for (let key of controlMetadata.customValidators.keys()) {\r\n let validator = controlMetadata.customValidators.get(key);\r\n if (!(<CustomValidator>validator).isValid()) {\r\n return { [key]: true };\r\n }\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n /**\r\n * COnvert a value from Magic format to native format\r\n * @param controlId Id of control\r\n * @param rowId Row Id, if applicable\r\n * @param val Value to convert\r\n * @returns Converted value\r\n */\r\n ConvertValToNative(controlId: string, rowId: number, val: any): any {\r\n\r\n let properties: ControlMetadata;\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n\r\n switch (properties.dataType) {\r\n\r\n case StorageAttribute.BOOLEAN: {\r\n if (typeof val === 'string') {\r\n let ranges: string = this.GetFldRanges(controlId);\r\n let found: number = ranges.indexOf(',');\r\n let trueOption: string = ranges.substr(0, found);\r\n let falseOption: string = ranges.substr(found + 1);\r\n if (NString.Equals(val, trueOption, true))\r\n return true;\r\n else if (NString.Equals(val, falseOption, true))\r\n return false;\r\n else\r\n return val;\r\n } else\r\n return val;\r\n }\r\n\r\n case StorageAttribute.TIME: {\r\n if (typeof val === 'string'){\r\n let idx = val.indexOf(':',0);\r\n let hours: number = +val.substr(0, idx);\r\n let minutes: number = +val.substr(idx+1, 2);\r\n let seconds = 0;\r\n if (val.length > 5) {\r\n idx = val.indexOf(':', idx + 1);\r\n if (idx >= 0)\r\n seconds = +val.substr(idx + 1, 2);\r\n }\r\n if (val.indexOf('PM')>0)\r\n hours += 12;\r\n let dt: Date = new Date();\r\n dt.setHours(hours);\r\n dt.setMinutes(minutes);\r\n dt.setSeconds(seconds);\r\n\r\n\r\n return dt;\r\n } else\r\n return val;\r\n }\r\n\r\n case StorageAttribute.NUMERIC:\r\n if (isUndefined(val))\r\n return val;\r\n else return (val != null) ? (typeof val === 'string') ? val : +val : null;\r\n default:\r\n return val;\r\n }\r\n }\r\n\r\n /**\r\n * Convert a value from native to Magic format\r\n * @param controlId Id of control\r\n * @param rowId Row Id, if applicable\r\n * @param val Value to convert\r\n * @returns Converted value\r\n */\r\n ConvertValFromNative(controlId: string, rowId: number, val: any): any {\r\n\r\n let properties: ControlMetadata;\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n\r\n switch (properties.dataType) {\r\n\r\n case StorageAttribute.TIME: {\r\n if (val instanceof Date) {\r\n let str: StringBuilder = new StringBuilder();\r\n let format: string = val.getHours() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getHours().toString());\r\n str.Append(':');\r\n format = val.getMinutes() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getMinutes().toString());\r\n if ( val.getSeconds() > 0) {\r\n str.Append(':');\r\n format = val.getSeconds() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getSeconds().toString());\r\n }\r\n return str.ToString();\r\n } else\r\n return val;\r\n }\r\n case StorageAttribute.BOOLEAN: {\r\n let properties: ControlMetadata;\r\n properties = this.Records.list['0'].getControlMetadata(controlId);\r\n if (typeof val === 'boolean' && properties.rangeValidator) {\r\n let ranges: string = this.GetFldRanges(controlId);\r\n let found: number = ranges.indexOf(',');\r\n let trueOption: string = ranges.substr(0, found);\r\n let falseOption: string = ranges.substr(found + 1);\r\n if (val)\r\n return trueOption;\r\n else\r\n return falseOption;\r\n } else\r\n return val;\r\n }\r\n\r\n default:\r\n return val;\r\n }\r\n }\r\n\r\n /**\r\n * Handle resize and also fetch chunk of records if having an empty view.\r\n * @ignore\r\n * @param pageSize : PageSize\r\n * @param topGuiRowId : GuiRowId of first record in view.\r\n */\r\n resize(pageSize: number, topGuiRowId: number): void {\r\n let guiEvent: IGuiEvent = getGuiEventObj('resize', 'table', 0);\r\n guiEvent.PageSize = pageSize;\r\n\r\n //As 'getRows' event also gets executed, set the guiEvent.Line parameter.\r\n guiEvent.Line = topGuiRowId;\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Fetches data for new table rows when scrolling done\r\n */\r\n onScrollDown() {\r\n if (!this.Records.includesLast) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('getRows', '', 0);\r\n guiEvent.Line = this.formGroups.length;\r\n this.insertEvent(guiEvent);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the new browser window title\r\n * @param newTitle New window title\r\n */\r\n setTitle(newTitle: string) {\r\n this.mgTitleService.setTitle(newTitle);\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n getGuiRowId(dvRowId: number, isTableControl: boolean): number {\r\n return (isTableControl ? dvRowId + this.Records.recordsBeforeCurrentView : 0);\r\n }\r\n\r\n /**\r\n *\r\n * @ignore\r\n */\r\n getDvRowId(guiRowId: number): number {\r\n return (guiRowId - this.Records.recordsBeforeCurrentView);\r\n }\r\n\r\n /**\r\n * Clean up the service when it is no longer needed\r\n */\r\n dispose() {\r\n this.refreshDom.complete();\r\n this.detectChanges.complete();\r\n this.subscribeInteractiveCommands.unsubscribe();\r\n this.subscribeRefreshDom.unsubscribe();\r\n this.interactiveCommands.complete();\r\n this.customPropertiesSubject.complete();\r\n this.OnSelectedRowChanged.complete();\r\n }\r\n\r\n ///////////////////////////////\r\n //Events:\r\n\r\n /**\r\n * Handle the Combobox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n * @param line Row Id, if applicable\r\n */\r\n onComboboxSelectionChanged(event: Event, idx: string, line: number) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, line);\r\n\r\n if (typeof (event) == 'number') {\r\n guiEvent.Value = event;\r\n }\r\n else {\r\n if (!isNullOrUndefined(event.target)) {\r\n let indexes: number[] = new Array<number>((<any>event.target).selectedOptions.length);\r\n for (let i = 0; i < (<any>event.target).selectedOptions.length; i++) {\r\n indexes[i] = (<HTMLOptionElement>(<any>event.target).selectedOptions[i]).index;\r\n }\r\n guiEvent.Value = indexes.join(',');\r\n } else\r\n guiEvent.Value = (<any>event).value;\r\n }\r\n\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle the Listbox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n */\r\n onListBoxSelectionChanged(event: Event, idx: string) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n\r\n let selectedOptions;\r\n if (!isNullOrUndefined(event.target))\r\n selectedOptions = (<any>event.target).selectedOptions;\r\n else\r\n selectedOptions = (<any>event).source.selectedOptions.selected;\r\n\r\n let length = selectedOptions.length;\r\n let indexes: number[] = new Array<number>(length);\r\n\r\n for (let i = 0; i < length; i++) {\r\n if (!isNullOrUndefined(event.target))\r\n indexes[i] = (selectedOptions[i]).index;\r\n else\r\n indexes[i] = (selectedOptions[i]).value;\r\n }\r\n guiEvent.Value = <any>indexes; // TODO: fix\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle the Checkbox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n * @param rowId Row Id, if applicable\r\n */\r\n onCheckChanged(event: Event, idx: string, rowId: number) {\r\n if (typeof rowId === 'undefined')\r\n rowId = 0;\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, rowId);\r\n\r\n if (typeof (event) == 'boolean') {\r\n guiEvent.Value = event;\r\n }\r\n else if(typeof (event) == 'string') {\r\n if(event == \"unchecked\")\r\n { // @ts-ignore\r\n guiEvent.Value = false;\r\n }\r\n else if( event == 'indeterminate')\r\n guiEvent.Value = null;\r\n else if(event == 'checked')\r\n { // @ts-ignore\r\n guiEvent.Value = true;\r\n }\r\n }\r\n else {\r\n if (typeof event.target === 'undefined')\r\n guiEvent.Value = (<any>(event)).checked;\r\n else\r\n guiEvent.Value = (<any>(event.target)).checked;\r\n }\r\n\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle tab selection change, caused by UI events\r\n * @param idx Id of the control raising the event\r\n * @param layer Id of selected tabpage\r\n */\r\n mgOnTabSelectionChanged(idx: string, layer: number) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n guiEvent.Value = layer.toString();\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n\r\n /**\r\n * Handle the Radio button \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n */\r\n mgOnRadioSelectionChanged(idx: string) {\r\n let result = this.getFormControl('0', idx);\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n if(typeof result.value !== 'number')\r\n guiEvent.Value = result.value.index;\r\n else\r\n guiEvent.Value = result.value.toString();\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Inserts the \"close\" event to the magic WebClient event queue\r\n */\r\n close() {\r\n this.insertEvent(getGuiEventObj('close', null, 0));\r\n }\r\n\r\n\r\n ///////////////////////////////\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n IsStub(): boolean {\r\n return this.magic.isStub;\r\n\r\n }\r\n\r\n //////////////////////////////////////////////////////////////\r\n ///Stub handling\r\n /**\r\n * @ignore\r\n */\r\n jsonData: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n saveData(data: string) {\r\n this.magic.saveData(data);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public createData() {\r\n let myData = {\r\n records: this.Records,\r\n template: this.template\r\n };\r\n let text: string = 'loadData():any {\\n' +\r\n ' let stubData = ' + JSON.stringify(myData) + ';\\n' +\r\n ' this.loadStubData(stubData);}';\r\n console.log(text);\r\n this.saveData(text);\r\n\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public loadStubData(stubData: any) {\r\n\r\n this.Records = stubData.records;\r\n this.settemplate(stubData.template);\r\n this.taskId = '1';\r\n for (let i = 0; i < this.Records.list.length; i++)\r\n this.buildTableRowControls(i);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public loadData() {\r\n alert('Please, overwrite method loadData');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setStubValue(guiRowId: number, fc: FormControl, name: string) {\r\n if (this.IsStub()) {\r\n try {\r\n let val = this.Records.list[guiRowId].values[name];\r\n fc.setValue(val);\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n\r\n // End of stub handlin\r\n /////////////////////////////////////////////////////////////////\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\nimport { TaskMagicService } from \"./task.magics.service\";\nimport { ComponentListMagicService } from \"./component-list.magic.service\";\n\n/**\n * Implements various table-related functionalities\n */\n@Injectable()\nexport class TableMagicService {\n\n selectedItem : any;\n private chunkSize: number;\n\n /**\n *\n * @param componentList Component-mapping service\n * @param task Magic task service\n */\n constructor( protected componentList: ComponentListMagicService, protected task: TaskMagicService) {\n }\n\n public shouldOpenFieldTextEditor: boolean = true;\n\n /**\n * Refreshes the DataSource\n */\n refreshDataSource(): void {\n }\n\n /**\n * Returns the table page size\n * chunkSize as default value for non-paginated tables.\n */\n getPageSize(): number {\n return this.chunkSize;\n }\n\n setChunkSize(size: number): void{\n this.chunkSize = size;\n }\n\n /**\n * Returns max no of rows in the table.\n */\n getMaxRowsInTable(): number{\n return this.task.Records.list.length;\n }\n\n /**\n * Selects the specified row\n * @param rowId The row to select\n */\n selectRow(rowId: string): void {\n this.selectedItem = rowId;\n }\n\n getSelectedRow() : any{\n return this.selectedItem;\n }\n\n /**\n * Returns the selected row\n */\n selectedRow(): any {\n return null;\n }\n\n /**\n * Selects the specified page\n * @param pageId The page to select\n */\n selectPage(pageId: number): void {\n }\n\n /**\n * Returns whether a dialog should be opened for the HTML element\n * @param element The HTML element for which a dialog may be needed\n * @returns\n */\n OpenDialogForControl(element: HTMLElement): boolean\n {\n if (element.tagName === \"MAT-SELECT\" || element.tagName === \"MAT-CHECKBOX\" ||\n element.tagName === \"INPUT\" ||\n element.tagName === \"SELECT\")\n return false;\n return true;\n }\n\n /**\n * Returns the dialog used to edit values\n */\n getDialog(): any {\n return null;\n }\n\n /**\n * Handles the table \"scrolled\" event\n */\n onScrollDown() {\n this.task.onScrollDown();\n }\n\n /**\n * To be overwitten in specific implelemtations\n */\n sortData(e){}\n\n /**\n * To be overwitten in specific implelemtations\n */\n mgOnPaginateChange(e, changeSelectedRow?: boolean){}\n\n mgOptionChanged(e) { }\n\n /**\n * Change the number of lines in a table\n * @param size New number of lines in table\n */\n updateTableSize(size: number) {\n if (size === 0) // never remove row 0 for now\n {\n size = 1;\n this.task.Records.clearFirstTableRecord(this.task.template);\n }\n\n this.task.formGroups.length = size;\n this.task.Records.updateSize(size);\n this.task.setIncludesFirst(false);\n }\n\n /**\n * @ignore\n */\n setTableTopIndex(value: number) {\n if (!this.task.Records.includesFirst)\n value++;\n\n this.task.Records.setGuiTopIndex(value);\n }\n\n /**\n * @ignore\n */\n getTableTopIndex():number\n {\n let topIndex: number = this.task.Records.getGuiTopIndex();\n\n if (!this.task.Records.includesFirst)\n topIndex--;\n\n return topIndex;\n }\n}\n\n","import { Injectable } from '@angular/core';\r\nimport {Title} from \"@angular/platform-browser\";\r\n\r\n/**\r\n * Enables changing the browser title using Magic expression (SetTitle)\r\n */\r\n@Injectable()\r\nexport class TitleMagicService {\r\n /**\r\n *\r\n * @param titleService Angular's title-changing class\r\n */\r\n constructor(protected titleService: Title) {\r\n }\r\n\r\n /**\r\n * Set the new title of the window\r\n * @param newTitle New title of the window\r\n */\r\n setTitle(newTitle: string) {\r\n this.titleService.setTitle( newTitle );\r\n }\r\n\r\n}\r\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n\nexport let COLOR_FILE_NAME = new InjectionToken<string>('colorFile', {\n providedIn: 'root',\n factory: () => 'clr_rnt.eng'\n});\nexport const MAGIC_FG_COLOR: number = 1;\nexport const MAGIC_BG_COLOR: number = 2;\n\n\nconst SYSTEM_FG: number = 2;\nconst SYSTEM_BG: number = 4;\nconst SYSTEM_FG_AND_SYSTEM_BG = 6 ;\nconst TRANSPERENT_BG: number = 1;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MagicColorService {\n public colorFileName = 'clr_rnt.eng';\n\n public getColorFilePath() {\n return 'assets/' + this.colorFileName;\n }\n\n private colorsData;\n private fileNotFound = false;\n\n // public static FILE_NAME;\n constructor(private http: HttpClient, @Inject(COLOR_FILE_NAME) colorFile1: string = 'clr_rnt.eng') {\n if (colorFile1)\n this.colorFileName = colorFile1;\n else\n this.colorFileName = 'clr_rnt.eng';\n }\n\n private getColorData() {\n\n if (!this.colorsData) {\n this.http.get(this.getColorFilePath(), { responseType: 'text' }).subscribe(resp => {\n this.colorsData = resp.replace(/\\n/g, '@').split('@');\n },\n error1 => {\n console.error('File not found ' + this.colorFileName);\n this.fileNotFound = true;\n });\n\n }\n\n }\n\n private hexToRgba(hex: any, isTransperent: boolean): any {\n let shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n // convert it to format : aarrggbb\n hex = hex.replace(shorthandRegex, function(m: any, r: any, g: any, b: any, a: any) {\n return a + a + r + r + g + g + b + b;\n });\n\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n let rgb = {\n 'red': parseInt(result![4], 16),\n 'green': parseInt(result![3], 16),\n 'blue': parseInt(result![2], 16),\n 'alpha': (255 - parseInt(result![1], 16)) / 255\n };\n if (isTransperent)\n rgb.alpha = 0;\n\n return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + rgb.alpha + ')';\n }\n\n /**\n * Returns the rgba value of specified color\n * @returns : value in format rgba(128,128,128,1)\n * @param : colorNumber -0 based index of color for which RGBA values are returned\n * @param: colorType : 1-MAGIC_FG_COLOR, 2-MAGIC_BG_COLOR\n */\n public getColor(colorIndex: number, colorType: number) {\n let isTransperent = false;\n if (!this.colorsData && !this.fileNotFound)\n this.getColorData();\n if (this.colorsData) { // color exists\n if (this.colorsData[colorIndex - 1]) {\n\n const grayHashCode = '00808080';\n let hex = grayHashCode;\n let color: string[] = this.colorsData[colorIndex - 1].split(','); // get the color details\n let colorAtrributes = +color[3];\n\n // color[0] - name, color[1] - FG color, color[2] - BG color\n // color[3] - attr flags (1 - transperent, 2 - system FG, 4 - system bg)\n\n\n switch (colorType) {\n case MAGIC_FG_COLOR:\n if (colorAtrributes != SYSTEM_FG && colorAtrributes !=SYSTEM_FG_AND_SYSTEM_BG)\n hex = (color[1]);\n break;\n case MAGIC_BG_COLOR:\n if (colorAtrributes != SYSTEM_BG && colorAtrributes !=SYSTEM_FG_AND_SYSTEM_BG) {\n if (colorAtrributes == TRANSPERENT_BG)\n isTransperent = true;\n hex = (color[2]);\n }\n break;\n default:\n console.log('Please enter valid color type : 1-FG, 2-BG ' + colorIndex);\n return '';\n }\n\n return this.hexToRgba('#' + hex, isTransperent);\n } else\n console.log('Could not get color for number ' + colorIndex);\n }\n\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { TaskMagicService } from './task.magics.service';\r\nimport { ControlMetadata, ControlsMetadata } from '../controls.metadata.model';\r\nimport { CustomValidator, GuiEnvironment, HtmlProperties, PIC } from '@magic-xpa/gui';\r\nimport { isNullOrUndefined , StringBuilder} from '@magic-xpa/mscorelib';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { getGuiEventObj, IGuiEvent, CookieService} from '@magic-xpa/engine';\r\nimport { Logger, PICInterface, StorageAttribute } from '@magic-xpa/utils';\r\nimport { MagicColorService } from './magic-color.service';\r\nimport { MaskitoOptions } from \"@maskito/core\";\r\nimport { maskitoTimeOptionsGenerator } from \"@maskito/kit\";\r\n/**\r\n * Provides the UI with values calculated by the Magic WebClient\r\n */\r\n@Injectable()\r\nexport class AccessorMagicService {\r\n Logger: any = null;\r\n\r\n public readonly hhmm: MaskitoOptions = maskitoTimeOptionsGenerator({mode: 'HH:MM'});\r\n public readonly hhmmss: MaskitoOptions = maskitoTimeOptionsGenerator({mode: 'HH:MM:SS'});\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(protected task: TaskMagicService,protected magicColor: MagicColorService) {\r\n this.Logger = Logger.Instance;\r\n }\r\n\r\n /**\r\n * Checks if the control is read-only\r\n * @param controlId Id of control\r\n * @returns Is the control not read-only\r\n */\r\n // CheckReadOnly\r\n checkIsReadOnly(controlId: string): boolean {\r\n let properties: ControlMetadata;\r\n properties = this.task.Records.list[0].getControlMetadata(controlId);\r\n if (properties.properties.get(HtmlProperties.ReadOnly) !== null && properties.properties.get(HtmlProperties.ReadOnly) === true)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns the text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns The text of the control\r\n */\r\n // mgGetText\r\n getText(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.Text, rowId);\r\n }\r\n /**\r\n * Gets the text of the tab page\r\n * @param controlId Id of control\r\n * @param layer Id of tabpage\r\n * @returns Text of tabpage\r\n */\r\n // mgGetTabpageText\r\n getTabpageText(controlId: string, layer: number): string {\r\n const items = this.task.getProperty(controlId, HtmlProperties.ItemsList);\r\n if (typeof items !== \"undefined\")\r\n return items[layer].displayValue;\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Gets the image defined for the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns Image set on control\r\n */\r\n // mgGetImage\r\n getImage(controlId: string, rowId?: string): string {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);\r\n return result;\r\n\r\n }\r\n\r\n /**\r\n * Returns whether an image is set for this control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns returns true if control has an image set on it\r\n */\r\n // mgIsImageExists\r\n isImageExists(controlId: string, rowId?: string): boolean {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);\r\n return !isNullOrUndefined(result);\r\n\r\n }\r\n\r\n /**\r\n * Gets the CSS classes set on the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns The classes for this control\r\n */\r\n // mgGetClasses\r\n getClasses(controlId: string, rowId?: string) :string {\r\n return this.task.getClasses(controlId, rowId);\r\n }\r\n\r\n /**\r\n * Gets the CSS styles set on the control\r\n * @param controlId Id of control\r\n * @param styleName NAme of style requested\r\n * @param rowId Id of row, if applicable\r\n * @returns The style set on the control\r\n */\r\n // mgGetStyle\r\n getStyle(controlId: string, styleName: string, rowId?: string): string {\r\n let style = this.task.getStyle(controlId, styleName, rowId)\r\n return style;\r\n }\r\n\r\n /**\r\n * Returns whether a control is visible or not\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns Is the control visible or hidden\r\n */\r\n // mgGetVisible\r\n getVisible(controlId: string, rowId?: string) : string {\r\n let vis: Boolean = this.getProperty(controlId, HtmlProperties.Visible, rowId);\r\n return vis ? 'visible' : 'hidden';\r\n }\r\n\r\n /**\r\n * Returns alpha mask of a control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns alpha mask of the control\r\n */\r\n // getAlphaMask\r\n getAlphaMask(controlId: string, rowId?: string):string{\r\n if (isNullOrUndefined(controlId))\r\n return null;\r\n let pic: PIC = this.task.GetControlPictureMask(controlId);\r\n let mask: string = pic.getMask();\r\n let valueStr: StringBuilder = new StringBuilder();\r\n\r\n for (let i: number = 0; i < mask.length; i++) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_N:\r\n valueStr.Append(\"0\");\r\n break;\r\n case PICInterface.PIC_U:\r\n case PICInterface.PIC_L:\r\n case PICInterface.PIC_X:\r\n valueStr.Append(\"A\");\r\n break;\r\n\r\n default:\r\n valueStr.Append(mask.charAt(i));\r\n break;\r\n }\r\n }\r\n\r\n return (pic != null) ? valueStr.toString() : null;\r\n }\r\n /**\r\n * Returns object representing numeric picture\r\n * @param picture string which is defined in magic\r\n * @returns object representing numeric picture\r\n */\r\n // mgGetNumericPicture\r\n getNumericPicture(picture: string) : any {\r\n var obj = {};\r\n if (isNullOrUndefined(picture))\r\n return obj;\r\n\r\n let pic: PIC = new PIC(picture, StorageAttribute.NUMERIC, 0);\r\n\r\n\r\n\r\n obj['prefix'] = \"\"\r\n if (pic.getPosPref_().length > 0 && pic.getNegPref_().length > 0) {\r\n let pref = '-'+pic.getPosPref_();\r\n if (pref == pic.getNegPref_())\r\n obj['prefix'] = pic.getPosPref_();\r\n }\r\n if(pic.getPosSuff_().length > 0)\r\n obj['suffix'] = pic.getPosSuff_();\r\n else\r\n obj['suffix'] = \"\";\r\n\r\n if(pic.isNegative())\r\n obj['allowNegative'] = true;\r\n else\r\n obj['allowNegative'] = false;\r\n if(pic.getDec()>= 0)\r\n obj['precision'] = pic.getDec();\r\n\r\n if(pic.isLeft())\r\n obj['align']=\"left\";\r\n\r\n obj['decimal'] = GuiEnvironment.Environment.GetDecimal();\r\n if(pic.withComa())\r\n obj['thousands']=GuiEnvironment.Environment.GetThousands();\r\n else\r\n obj['thousands']=\"\";\r\n\r\n if(pic.getWholes())\r\n obj['wholes']=pic.getWholes();\r\n\r\n return obj;\r\n }\r\n\r\n /**\r\n * Returns whether a control should have the \"required\" attribute set on it\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetMustInput\r\n getMustInput(controlId: string, rowId?: string) : string {\r\n let vis: Boolean = this.getProperty(controlId, HtmlProperties.MustInput, rowId);\r\n return vis ? 'true' : 'false';\r\n }\r\n\r\n /**\r\n * Returns whether a control is disabled\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgIsDisabled\r\n isDisabled(controlId: string, rowId?: string): any{\r\n let result = this.getProperty(controlId, HtmlProperties.Enabled, rowId);\r\n return result === true ? null : true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // getProperty (not changed)\r\n getProperty(controlId: string, prop: HtmlProperties, rowId?: string) {\r\n return this.task.getProperty(controlId, prop, rowId);\r\n }\r\n\r\n /**\r\n * Returns the title (tooltip) text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTitle\r\n getTitle(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.Tooltip, rowId);\r\n }\r\n\r\n /**\r\n * Returns the title (tooltip) text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTitle for zoom button\r\n getZoomButtonTitle(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.ZoomButtonTooltip, rowId);\r\n }\r\n\r\n /**\r\n * Gets the selection control's selected value\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // getSelectedValue\r\n getSelectedValue(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.SelectedValue, rowId);\r\n }\r\n\r\n /**\r\n * Gets the place-holder text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetPlaceholder\r\n getPlaceholder(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.PlaceHolder, rowId);\r\n }\r\n\r\n /**\r\n * Returns a type for input controls - should the control be a simple text or a password control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetType\r\n getType(controlId: string, rowId?: string): string {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Password, rowId);\r\n return result ? \"password\" : \"text\"\r\n }\r\n\r\n /**\r\n * Returns the tab-index of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTabIndex\r\n getTabIndex(controlId: string, rowId?: string): number {\r\n return this.task.getProperty(controlId, HtmlProperties.TabIndex, rowId);\r\n }\r\n\r\n /**\r\n * Returns the value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// mgGetValue -->\r\n getValue(controlId: string, rowId?: string): any {\r\n let val = this.task.getValue(controlId, rowId);\r\n return val;\r\n }\r\n\r\n /**\r\n * Returns the formatted value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// mgGetValue -->\r\n getFormattedValue(controlId: string, rowId?: string): string {\r\n let val = this.task.getValue(controlId, rowId);\r\n val = this.task.getFormattedValue(controlId, val, rowId);\r\n return val;\r\n }\r\n\r\n /**\r\n * Returns the Picture of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// getPicture -->\r\n getPicture(controlId: string, rowId?: string): string {\r\n\r\n if (isNullOrUndefined(controlId))\r\n return null;\r\n let pic: PIC = this.task.GetControlPictureMask(controlId);\r\n return (pic != null) ? pic.getFormat().toString() : null;\r\n\r\n }\r\n\r\n /**\r\n * Returns the custom (user) properties of the control\r\n * @param controlId Id of control\r\n * @param propertyName Name of requested property\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetCustomProperty\r\n getCustomProperty(controlId: string, propertyNameOrRowID?: string, rowId?: string) : any\r\n {\r\n if(controlId.indexOf('~')== -1)\r\n return this.getCustomProperty_1(controlId, propertyNameOrRowID, rowId);\r\n else {\r\n let cid: string = controlId.split('~')[0];\r\n let propName: string = controlId.split('~')[1];\r\n\r\n return this.getCustomProperty_1(cid, propName, propertyNameOrRowID);\r\n }\r\n }\r\n\r\n getCustomProperty_1(controlId: string, propertyName: string, rowId?: string)\r\n {\r\n let userProperties;\r\n if (isNullOrUndefined(rowId))\r\n rowId = '0';\r\n let rec = this.task.Records.list[rowId];\r\n if (isNullOrUndefined(rec))\r\n debugger;\r\n else {\r\n const controlMetadata = rec.getControlMetadata(controlId);\r\n\r\n if (controlMetadata.userProperties.has(propertyName)) {\r\n userProperties = controlMetadata.userProperties.get(propertyName);\r\n }\r\n }\r\n return userProperties;\r\n }\r\n\r\n /**\r\n * Gets the values of the items of a selection control\r\n * @param id Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetItemListValues\r\n getItemListValues(id: string, rowId?: string) : Array<{index: number, displayValue: string}> {\r\n return this.getProperty(id, HtmlProperties.ItemsList, rowId);\r\n }\r\n\r\n /**\r\n * Gets the filtered items list based on the current value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n getFilteredList(controlId: string, rowId?: string): Array<{index: number, displayValue: string}> {\r\n if (isNullOrUndefined(rowId))\r\n rowId = '0';\r\n\r\n let items = this.getItemListValues(controlId, rowId);\r\n let value: string = this.task.getFormControl(rowId, controlId).value;\r\n if (value !== null && value !== \"\" && items instanceof Array) {\r\n value = value.toLowerCase();\r\n return items.filter(option => option.displayValue.toLowerCase().includes(value));\r\n }\r\n else\r\n return items;\r\n }\r\n\r\n /**\r\n * Gets the display value of the item from items of a selection control\r\n * @param id Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n getDisplayValue(id, rowId?) {\r\n let displayValue:string =\"\"\r\n\r\n let o = this.getProperty(id, HtmlProperties.ItemsList, rowId);\r\n let value = this.task.getValue(id, rowId)\r\n if (value >=0 && value <o.length && !isNullOrUndefined(o[value]))\r\n displayValue = o[value].displayValue;\r\n return displayValue\r\n }\r\n\r\n /**\r\n * Returns whether a tab page is selected or not\r\n * @param index of current option in iterarotr\r\n * @param control Id of list control\r\n * @returns\r\n */ // isOptionSelected\r\n isOptionSelected(index, controlId) {\r\n let val = this.task.getValue(controlId, \"0\");\r\n for (let item of val) {\r\n if (item === index)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns whether a tab page is selected or not - used for the tab buttons\r\n * @param controlId Id of control\r\n * @param layer Id of the tab page\r\n * @returns\r\n */ // mgIsTabPageSelected\r\n isTabPageSelected(controlId: string, layer: number): boolean {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);\r\n return val == (layer - 1); // comparing string to number!\r\n }\r\n\r\n /**\r\n * Returns whether a tab page layer is selected or not - used for the div which represents the tab page\r\n * @param controlId Id of control\r\n * @param layer Id of the tab page\r\n * @returns\r\n */ // mgIsTabLayerSelected\r\n isTabPageLayerSelected(controlId: string, layer: number): boolean {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedLayer);\r\n return val == (layer - 1); // comparing string to number!\r\n }\r\n\r\n /**\r\n * Returns the index of the selected tab page\r\n * @param controlId Id of control\r\n * @returns\r\n */\r\n getTabSelectedIndex(controlId: string) {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);\r\n return val; // comparing string to number!\r\n }\r\n\r\n\r\n // private methodes\r\n /**\r\n * @ignore\r\n */\r\n // mgIfRowCreated\r\n ifRowCreated(row): boolean {\r\n if (row == null)\r\n return false;\r\n let rowId = typeof row == \"number\" ? row.toString() : row.rowId;\r\n let result = this.getFormGroupByRow(rowId);\r\n return !isNullOrUndefined(result);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // mgGetFormGroupByRow\r\n getFormGroupByRow(id: string): FormGroup {\r\n return this.task.formGroups[id];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // isRowSelected (not changed)\r\n isRowSelected(controlId, rowId?) {\r\n const selectedRow = this.task.getProperty(controlId, HtmlProperties.SelectedRow, \"0\");\r\n return selectedRow == rowId;\r\n }\r\n\r\n /**\r\n * Returns whether a row is in edit state\r\n * @param row\r\n */\r\n isRowInRowEditing(row?: any): boolean {\r\n let guiRowId : string = '0';\r\n guiRowId= typeof row == \"number\" ? row.toString() : row.rowId;\r\n return this.task.isRowInRowEditing(guiRowId)\r\n }\r\n\r\n /**\r\n * Returns whether a row is in edit state, use this method while control outside table control\r\n * @param row\r\n */\r\n isCurrentInRowEditing(): boolean {\r\n\r\n let row = this.task.tableService.getSelectedRow();\r\n\r\n return this.task.isRowInRowEditing(row)\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // GetGuiTopIndex\r\n guiTopIndex(): number {\r\n return this.task.tableService.getTableTopIndex();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getErrMsg(id: string,rowId: string): string\r\n {\r\n let c = this.task.getFormControl(rowId, id);\r\n if (c.hasError('required'))\r\n return 'Control must be updated.';\r\n if (c.hasError('pattern')){\r\n //To check whether the numeric field allowed only positive values or not.\r\n if(c.errors.pattern.actualValue < 0 && !c.errors.pattern.requiredPattern.includes('-'))\r\n return 'Value must be non-negative';\r\n if(c.errors.pattern.requiredPattern.includes('.')){\r\n const numericFormat = Math.abs(c.errors.pattern.actualValue).toString().split('.')[0];\r\n const decimalFormat = Math.abs(c.errors.pattern.actualValue).toString().split('.')[1];\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n const actualDecimalLimit = c.errors.pattern.requiredPattern.match(/(?:[^,]+,){2}(\\d+)/)[1];\r\n if(numericFormat.length > actualNumericLimit || decimalFormat.length > actualDecimalLimit){\r\n return \"Numeric format is limited to \" + actualNumericLimit + \".\"+ actualDecimalLimit + \" digits\"\r\n }\r\n }else if(!c.errors.pattern.requiredPattern.includes('.') && !Number.isInteger(c.errors.pattern.actualValue)){\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n return \"Numeric format is limited to \" + actualNumericLimit + \".\"+ 0 + \" digits\"\r\n }else{\r\n const numericFormat = Math.abs(c.errors.pattern.actualValue).toString();\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n if(numericFormat.length > actualNumericLimit){\r\n return \"Numeric format is limited to \" + actualNumericLimit + \".\"+ 0 + \" digits\"\r\n }\r\n }\r\n }\r\n if (c.hasError('rangevalidator'))\r\n return c.errors.rangevalidator.errorMsg;\r\n if (c.hasError('maxlength'))\r\n return 'Max length allowed is : ' + c.errors.maxlength.requiredLength;\r\n if (c.hasError('max'))\r\n return 'Max value allowed is : ' + c.errors.max.max;\r\n\r\n let controlMetadata = this.task.Records.list[rowId].getControlMetadata(id);\r\n for (let key of controlMetadata.customValidators.keys())\r\n {\r\n if (c.hasError(key)) {\r\n let customValidator: CustomValidator = controlMetadata.customValidators.get(key);\r\n return customValidator.getErrMessage();\r\n }\r\n }\r\n\r\n return 'unknown error';\r\n }\r\n\r\n /**\r\n * Sets a user-supplied value to the specified control\r\n * @param controlName\r\n * @param value\r\n * @param refreshDisplay\r\n */\r\n setValueToControl(controlName: string, value: any, refreshDisplay?: boolean){\r\n if(typeof refreshDisplay === \"undefined\")\r\n refreshDisplay = true;\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"setexternalvalue\", controlName, 0);\r\n guiEvent.externalValue = value;\r\n guiEvent.param = refreshDisplay;\r\n this.task.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isDataviewEmpty() : boolean {\r\n return this.task.Records.isEmptyDataView;\r\n }\r\n\r\n /**\r\n * simulates a click event on the specified control, for the Magic engine\r\n * @param controlName\r\n * @param rowId\r\n */\r\n simulateClick(controlName: string, rowId?: number){\r\n if (typeof rowId === \"undefined\")\r\n rowId = 0;\r\n this.task.insertEvent(getGuiEventObj('click', controlName, rowId));\r\n }\r\n\r\n /**\r\n * Return Boolean TRUE if user logged in Else it will return FALSE\r\n */\r\n isLoggedIn(): boolean {\r\n return this.task.getIsLoggenIn();\r\n }\r\n\r\n /**\r\n * Returns JS object containing the records with all table fields.\r\n */\r\n GetFormRecords(): any {\r\n let rowId: number = 0;\r\n let recArray: any;\r\n\r\n if (!isNullOrUndefined(this.task.Records) && this.task.Records.list.length > 0 ) {\r\n let recList: ControlsMetadata[] = this.task.Records.list;\r\n let tableControls: string[] = new Array();\r\n\r\n //Generate list of table fields names\r\n for (const key in this.task.template) {\r\n if (this.task.template[key] == '1')\r\n tableControls.push(key);\r\n }\r\n\r\n recArray = new Array();\r\n\r\n //Update the records as list of objects with values for table fields.\r\n if (tableControls.length > 0) {\r\n recList.forEach((ctrlMetaData: ControlsMetadata) => {\r\n if (this.task.Records.isRowCreated(rowId)) {\r\n var formRecord = {};\r\n formRecord['rowId'] = rowId;\r\n tableControls.forEach((ctrlId: string) => {\r\n formRecord[ctrlId] = ctrlMetaData.values[ctrlId];\r\n });\r\n\r\n recArray.push(formRecord)\r\n }\r\n });\r\n }\r\n }\r\n\r\n return recArray;\r\n }\r\n\r\n /**\r\n * SetCookie : set the cookie with specified name and value in browser\r\n * expires - expiration time\r\n * path - path which much exists in order so that cookie is sent as header\r\n * domain - specifies which hosts are allowed to receive the cookie\r\n * secure - specifies if cookie is secure ( works only with HTTPS)\r\n * sameSite - lets servers specify whether/when cookies are sent with cross-site requests\r\n */\r\n SetCookie(name: string, value: any, expires?: Date, path? , domain? , secure?, sameSite ?) {\r\n CookieService.setCookie(name, value, expires, path, domain, secure, sameSite);\r\n }\r\n\r\n /**\r\n * GetCookie : get the cookie with specified name and value in browser\r\n */\r\n GetCookie(name: string): any {\r\n return CookieService.getCookie(name);\r\n }\r\n\r\n /**\r\n * DeleteCookie : deletes the cookie\r\n */\r\n DeleteCookie(name: string): any {\r\n return CookieService.deleteCookie(name);\r\n }\r\n\r\n /**\r\n * get RGBA color from color file\r\n */\r\n public getColor(colorNumber: number, colorType) {\r\n return this.magicColor.getColor(colorNumber, colorType);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { SubformMagicService } from \"./subform.magic.service\";\r\nimport { TableMagicService } from \"./table.magic.service\";\r\nimport { TaskMagicService } from \"./task.magics.service\";\r\nimport { TitleMagicService } from \"./title.magic.service\";\r\nimport { AccessorMagicService } from \"./accessor.magic.service\";\r\n\r\n\r\n/**\r\n * Central place for adding the Magic services\r\n */\r\n@Injectable()\r\nexport class MagicServices{\r\n /**\r\n * @ignore\r\n */\r\n constructor(\r\n public task: TaskMagicService,\r\n public subformService: SubformMagicService,\r\n public tableService: TableMagicService,\r\n public titleService: TitleMagicService,\r\n public mgAccessorService: AccessorMagicService,\r\n ) {\r\n\r\n task.tableService = tableService;\r\n task.mgSubformService = subformService;\r\n task.mgTitleService = titleService;\r\n task.mgAccessorService = mgAccessorService;\r\n }\r\n\r\n\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup} from '@angular/forms';\r\nimport { MagicProperties} from \"@magic-xpa/utils\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\nimport {TaskMagicService} from \"../services/task.magics.service\";\r\nimport { SubformMagicService } from \"../services/subform.magic.service\";\r\nimport { TableMagicService } from \"../services/table.magic.service\";\r\nimport { MagicServices } from \"../services/magic.services\";\r\nimport { AccessorMagicService } from \"../services/accessor.magic.service\";\r\n\r\n/**\r\n * Base component representing a Magic task\r\n */\r\n@Component({\r\n selector: 'task-magic',\r\n providers: [TaskMagicService, SubformMagicService, TableMagicService],\r\n template: ''\r\n})\r\nexport class TaskBaseMagicComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n /**\r\n * Id of task, used for initializing the task service\r\n */\r\n @Input() taskIdParam: string;\r\n /**\r\n * @ignore\r\n */\r\n @Input() taskDescription: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n magicProperties = MagicProperties;\r\n\r\n /**\r\n *\r\n * @param ref changes-detector object\r\n * @param magicServices Access point for all Magic services\r\n */\r\n constructor(protected ref: ChangeDetectorRef,\r\n public magicServices: MagicServices\r\n ) { }\r\n\r\n /**\r\n * Returns the Magic task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this.magicServices.task;\r\n }\r\n\r\n /**\r\n * Returns the Magic subform service\r\n * @returns\r\n */\r\n get mgSub(): SubformMagicService {\r\n return this.magicServices.subformService;\r\n }\r\n\r\n /**\r\n * Returns the Magic table service\r\n * @returns\r\n */\r\n get tableService(): TableMagicService {\r\n return this.magicServices.tableService;\r\n }\r\n\r\n /**\r\n * Returns the Magic accessor service\r\n * @returns\r\n */\r\n get mg(): AccessorMagicService {\r\n return this.magicServices.mgAccessorService;\r\n }\r\n\r\n\r\n /**\r\n * Returns the task Id\r\n * @returns\r\n */\r\n get taskId() {\r\n return this.task.taskId;\r\n }\r\n\r\n /**\r\n * Returns the FormGroup for screen-mode forms\r\n * @returns\r\n */\r\n get screenFormGroup(): FormGroup {\r\n return this.task.ScreenModeControls;\r\n }\r\n\r\n /**\r\n * Interface implementation\r\n */\r\n ngOnInit() {\r\n\r\n this.task.detectChanges.pipe().subscribe(c => {\r\n this.ref.detectChanges();\r\n });\r\n this.task.initTask(this.taskIdParam, this.taskDescription);\r\n\r\n this.createFormControlsAccessor(this.screenFormGroup);\r\n this.setInputDateFormat();\r\n\r\n // subcribe to custom property changes\r\n this.task.customPropertiesSubject.pipe().subscribe(property => {\r\n this.PropertyChanged(property.propertyName, property.rowId, property.value);\r\n });\r\n\r\n // subcribe to records count changes\r\n this.task.recordsCountChangeSubject.pipe().subscribe(value => {\r\n this.RecordsCountChanged(value);\r\n });\r\n\r\n // subcribe to mgLoad change\r\n this.task.mgLoadSubject.pipe().subscribe(value =>{\r\n this.mgOnLoad();\r\n });\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n createFormControlsAccessor(formGroup: FormGroup) {}\r\n\r\n /**\r\n * @ignore\r\n */\r\n setInputDateFormat () {}\r\n\r\n /**\r\n * This method is called when the value of any custom property is updated in Magic\r\n * propertyName : name of property which is updated. The format is <controlname>~<propertyname>\r\n * rowId : row number of the updated property for controls in table control (0 for controls outside table)\r\n * value : updated value of the property\r\n * @returns : void\r\n * To use the method override it in your component and check the property name and write you code ..for eg\r\n * if(propertyName == 'controlname~propertyName') {// your code}\r\n * else { // your code}\r\n */\r\n PropertyChanged(propertyName:string, rowId : number, value : any) : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n\r\n /**\r\n * Records count change subject is subscribed to change in its value. This method will be called\r\n * as the value of records count is received at from server.\r\n * @returns : void\r\n * To use the method override it in your component.\r\n */\r\n RecordsCountChanged(recordsCount : number) : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n\r\n /**\r\n * This method will be called once engine informs UI about loading of first set of data is sent to client\r\n * and client has reached its first idle time.\r\n * @returns : void\r\n * To use the method override it in your component.\r\n */\r\n mgOnLoad() : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n /**\r\n * Interface implementation\r\n */\r\n ngAfterViewInit() {\r\n this.mgSub.init();\r\n }\r\n\r\n ngAfterContentChecked() : void {\r\n if(!isNullOrUndefined(this.tableService.getPageSize()) && this.task.oldPageSize != this.tableService.getPageSize()) {\r\n this.task.resize(this.tableService.getPageSize(), 0);\r\n this.task.oldPageSize = this.tableService.getPageSize();\r\n }\r\n }\r\n\r\n /**\r\n * Interface implementation\r\n */\r\n ngOnDestroy(): void {\r\n this.task.dispose();\r\n }\r\n}\r\n\r\n","\r\nimport { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { Subscription } from \"rxjs\";\r\nimport {MagicDirective} from \"../../directives/magic.directive\"\r\n\r\n/**\r\n * @ignore\r\n */\r\n @Directive({\r\n selector: '[magicRow]'\r\n })\r\n\r\n\r\nexport class RowMagicDirective implements OnInit, OnDestroy{\r\n @Input('magicRow') rowId: string;\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private rowChangedSubscriber: Subscription = null;\r\n\r\n constructor(\r\n protected _task : TaskMagicService,\r\n protected element: ElementRef\r\n )\r\n {\r\n this.htmlElement = this.element.nativeElement;\r\n }\r\n\r\n /**\r\n * Initializes this object\r\n */\r\n ngOnInit(): void {\r\n this.rowChangedSubscriber = this._task\r\n .OnSelectedRowChanged.pipe(filter(rowId => rowId === this.rowId))\r\n .subscribe(rowId => {\r\n if (!this.isInView(this.htmlElement))\r\n this.htmlElement.scrollIntoView();\r\n }\r\n );\r\n }\r\n\r\n private isInView(element): boolean {\r\n const rect = element.getBoundingClientRect();\r\n const parentRect = element.parentElement.getBoundingClientRect();\r\n return (\r\n rect.top >= parentRect.top &&\r\n rect.bottom <= parentRect.bottom\r\n );\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy() {\r\n // Don't know why, but when the table is loaded for the first time, we\r\n // get ngOnInit() for the 1st row (rowId = \"0\") and then ngOnDestroy()\r\n // for number of rows in the page but here this.rowId is undefined.\r\n // Since ngOnInit() was not called for all these rows, this.rowChangedSubscriber\r\n // is null and hence crashes.\r\n // So, the condition to check nulity is added.\r\n if (this.rowChangedSubscriber !== null) {\r\n this.rowChangedSubscriber.unsubscribe();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick($event) {\r\n if(this.rowId != '') {\r\n this._task.insertEvent(getGuiEventObj('click', \"magicRow\", +this.rowId));\r\n if (MagicDirective.noOfAutoCompleteBoxesOpened < 1)\r\n event.cancelBubble = true;\r\n }\r\n }\r\n }\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2, ViewContainerRef } from \"@angular/core\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\nimport {\r\n CommandType,\r\n GuiCommand,\r\n GuiConstants,\r\n GuiInteractive,\r\n HtmlProperties,\r\n InteractiveCommandType,\r\n Modifiers\r\n} from \"@magic-xpa/gui\";\r\nimport { getGuiEventObj, IGuiEvent } from \"@magic-xpa/engine\";\r\n\r\nimport { TaskBaseMagicComponent } from \"../task-base.magic.component\";\r\nimport { TaskMagicService } from \"../../services/task.magics.service\";\r\nimport { debounceTime, filter, map } from \"rxjs/operators\";\r\nimport { RowMagicDirective } from \"./magic/row.magic.directive\";\r\nimport { Subscription, fromEvent } from \"rxjs\";\r\nimport { BindingLevel, MgControlType, StorageAttributeType } from \"@magic-xpa/utils\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\n\r\n\r\n/**\r\n * Connects HTML elements to the Magic Web Client engine\r\n */\r\n@Directive({\r\n selector: \"[magic]\"\r\n})\r\n\r\nexport class MagicDirective implements OnInit, OnDestroy {\r\n @Input(\"magic\") set magic(val) {\r\n this.id = val;\r\n this.selector = \"magic\";\r\n };\r\n\r\n /**\r\n * This flag is used when we only want to register to events, but do not want to execute commands sent from server\r\n */\r\n @Input(\"eventsOnly\") set eventsOnly(val) {\r\n console.log(\"eventsOnly\");\r\n this.eventsOnlyVal = true;\r\n\r\n };\r\n\r\n /**\r\n * pollTime: after which value will be sent to magic\r\n */\r\n @Input() public pollTime: number = 200;\r\n\r\n /**\r\n * Row id of the control, for when it is on a table\r\n */\r\n @Input() public rowId: string;\r\n /**\r\n *\r\n */\r\n //@Input() events: any[] = [];\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n /**\r\n * Magic's component handling this control\r\n */\r\n public component: TaskBaseMagicComponent;\r\n /**\r\n * Collection of event handlers for this element\r\n */\r\n private eventHandlers: { [key: string]: () => void; } = {};\r\n /**\r\n * Id of this element\r\n */\r\n public id: string;\r\n /**\r\n * @ignore\r\n */\r\n protected selector: string;\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n\r\n private focusUnlistener: (() => void);\r\n\r\n public eventsOnlyVal = false;\r\n\r\n public static opened = false;\r\n\r\n public static noOfAutoCompleteBoxesOpened =0;\r\n\r\n subscribeInteractiveCommands: Subscription;\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param element The element for which the directive is applied\r\n * @param renderer Renderer for the element\r\n * @param vcRef\r\n * @param platform\r\n * @param magicRow\r\n */\r\n constructor(\r\n protected _task: TaskMagicService,\r\n protected element: ElementRef,\r\n protected renderer: Renderer2,\r\n protected vcRef: ViewContainerRef,\r\n public platform: Platform,\r\n @Optional() protected magicRow: RowMagicDirective) {\r\n\r\n this.htmlElement = this.element.nativeElement;\r\n //let c = (<any>this.vcRef)._view;\r\n //while (!(c instanceof TaskBaseMagicComponent)) {\r\n // c = c.component;\r\n //}\r\n //this.component = c;\r\n if (!(typeof magicRow === \"undefined\" || magicRow === null))\r\n this.rowId = magicRow.rowId;\r\n }\r\n\r\n /**\r\n * Get the task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this._task;\r\n }\r\n\r\n /**\r\n * Register to the events this element may need to handle\r\n */\r\n protected regEvents() {\r\n // Handle events for which event handler may be removed and restored\r\n this.eventHandlers[\"focusin\"] = this.OnFocus.bind(this);\r\n\r\n Object.keys(this.eventHandlers).forEach((key) => {\r\n this.focusUnlistener = this.renderer.listen(this.htmlElement, key, this.eventHandlers[key]);\r\n });\r\n\r\n // Handle events with anonymous event handlers\r\n let events: string[] = [\"click\", \"mousedown\", \"dblclick\"];// ,'resize', 'load', 'unload'\r\n events.forEach(event => {\r\n this.renderer.listen(this.htmlElement, event, (e) => {\r\n\r\n // check if the event is fired from zoom button ( to identify the connected zoom button in engine)\r\n let fromButton = false;\r\n if(this.htmlElement instanceof HTMLButtonElement)\r\n fromButton = true;\r\n\r\n /**\r\n * In the case of Safari or Chrome browser on IOS, when a button is clicked, the browser does not receive\r\n * focus event hence the zoom action is not executed. So in order to receive focus event, enabling it exclusively\r\n * in the case of Safari or Chrome browser on IOS and Safari browser on Mac.\r\n */\r\n if (fromButton && (this.platform.IOS || this.platform.SAFARI))\r\n this.task.insertEvent(getGuiEventObj(\"focus\", this.id, +this.rowId));\r\n\r\n this.task.insertEvent(getGuiEventObj(event, this.id, +this.rowId, fromButton));\r\n if (MagicDirective.noOfAutoCompleteBoxesOpened< 1)\r\n e.cancelBubble = true;\r\n });\r\n });\r\n\r\n\r\n this.renderer.listen(this.htmlElement, \"change\", (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, +this.rowId);\r\n\r\n if ((<any>(event.target)).selectedIndex !== undefined) {\r\n guiEvent.Value = (<any>(event.target)).selectedIndex.toString();\r\n e.cancelBubble = true;\r\n this.task.insertEvent(guiEvent);\r\n }\r\n\r\n });\r\n\r\n // handle the input event\r\n fromEvent(this.htmlElement, \"input\").pipe(\r\n map((event: any) => {\r\n return event.target.value;\r\n }),\r\n debounceTime(this.pollTime) // time after which value will be sent to magic\r\n ).subscribe((x) => {\r\n if (this.task.getProperty(this.id, HtmlProperties.BindingLevel, this.rowId) === BindingLevel.Character) {\r\n // Don't support character binding for date/time values\r\n let attribute : StorageAttributeType = this.task.Records.list[0].getControlMetadata(this.id).dataType;\r\n if(attribute !== StorageAttributeType.Date && attribute != StorageAttributeType.Time)\r\n this.task.mgAccessorService.setValueToControl(this.id, x, true);\r\n }\r\n });\r\n\r\n this.renderer.listen(this.htmlElement, \"keydown\", (e: KeyboardEvent) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"keydown\", this.id, +this.rowId);\r\n guiEvent.modifiers = Modifiers.MODIFIER_NONE;\r\n\r\n if (e.altKey && e.keyCode !== GuiConstants.KEY_ALT)\r\n guiEvent.modifiers = Modifiers.MODIFIER_ALT;\r\n\r\n else if (e.ctrlKey && e.keyCode !== GuiConstants.KEY_CTRL)\r\n guiEvent.modifiers = Modifiers.MODIFIER_CTRL;\r\n\r\n let supportedKey = e.keyCode === GuiConstants.KEY_PG_UP ||\r\n e.keyCode === GuiConstants.KEY_PG_DOWN ||\r\n e.keyCode === GuiConstants.KEY_LEFT ||\r\n e.keyCode === GuiConstants.KEY_RIGHT ||\r\n e.keyCode === GuiConstants.KEY_UP ||\r\n e.keyCode === GuiConstants.KEY_DOWN ||\r\n e.keyCode === GuiConstants.KEY_ESC ||\r\n e.keyCode === GuiConstants.KEY_HOME ||\r\n e.keyCode === GuiConstants.KEY_END ||\r\n e.keyCode === GuiConstants.KEY_RETURN ||\r\n (e.keyCode >= GuiConstants.KEY_F1 && e.keyCode <= GuiConstants.KEY_F12);\r\n\r\n if (guiEvent.modifiers !== Modifiers.MODIFIER_NONE || supportedKey) {\r\n guiEvent.keyCode = e.keyCode;\r\n\r\n // Defect 160021 fixed - don't set e.cancelBubble when combobox is opened and esc key is pressed\r\n if (e.keyCode !== GuiConstants.KEY_ESC || e.keyCode === GuiConstants.KEY_ESC && (!MagicDirective.opened && MagicDirective.noOfAutoCompleteBoxesOpened < 1))\r\n e.cancelBubble = true;\r\n\r\n this.task.insertEvent(guiEvent);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Handle focus event\r\n */\r\n private OnFocus() {\r\n this.task.insertEvent(getGuiEventObj(\"focus\", this.id, +this.rowId));\r\n event.cancelBubble = true;\r\n }\r\n\r\n /**\r\n * Is the command's element the same as this directive's element\r\n * @param command\r\n * @returns true/false\r\n */\r\n public IsSameElement(command) {\r\n let line: number = command.line;\r\n\r\n if (this.task.isTableControl(command.CtrlName))\r\n line = this.task.getGuiRowId(line, true);\r\n\r\n return (command.CtrlName === this.id &&\r\n (line === +this.rowId ||\r\n (line === 0 && isNullOrUndefined(this.rowId))));\r\n }\r\n\r\n /**\r\n * Is the command's element the same as this directive's component\r\n * @param command\r\n * @returns true/false\r\n */\r\n private IsSameComponent(command: GuiInteractive) {\r\n return (command.controlName === this.id);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private regUpdatesUI() {\r\n this.subscribeRefreshDom = this.task\r\n .refreshDom.pipe(filter(c => this.IsSameElement(c)))\r\n .subscribe(a => {\r\n let command: GuiCommand = a;\r\n if (isNullOrUndefined(this.rowId))\r\n this.rowId = \"0\";\r\n try {\r\n if (!this.eventsOnlyVal)\r\n this.handleCommand(command);\r\n } catch (ex) {\r\n console.dir(ex);\r\n }\r\n }\r\n );\r\n\r\n this.subscribeInteractiveCommands = this.task.interactiveCommands\r\n .pipe(filter(c => this.IsSameComponent(c)))\r\n .subscribe(command => {\r\n this.handleInteractiveCommands(command);\r\n });\r\n }\r\n\r\n /**\r\n * Initializes this object\r\n */\r\n ngOnInit(): void {\r\n this.regEvents();\r\n this.regUpdatesUI();\r\n }\r\n\r\n /**\r\n * Handles the commands received from the Magic WebClient engine\r\n * @param command\r\n */\r\n handleCommand(command: GuiCommand) {\r\n switch (command.CommandType) {\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command);\r\n break;\r\n\r\n case CommandType.SET_FOCUS:\r\n this.focusUnlistener();\r\n // Do not set focus on connected zoom button\r\n if (!(command.obj.ConnectedControl && this.htmlElement instanceof HTMLButtonElement))\r\n this.htmlElement.focus();\r\n this.focusUnlistener = this.renderer.listen(this.htmlElement, \"focusin\", this.eventHandlers[\"focusin\"]);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * handle the interactive commands like CallJS\r\n */\r\n handleInteractiveCommands(command: GuiInteractive) {\r\n switch (command._commandType) {\r\n case InteractiveCommandType.CALL_JS:\r\n let methodName: string = command._str;\r\n let args: Array<any> = command.arguments;\r\n let magicComponent: TaskBaseMagicComponent = ((<any>this.vcRef)._hostLView).find(v => v instanceof TaskBaseMagicComponent);\r\n let resultString = \"\";\r\n\r\n try {\r\n if (!isNullOrUndefined(magicComponent[methodName])) {\r\n // invoke the method on instance of magic componenet\r\n resultString = magicComponent[methodName].apply(magicComponent, args);\r\n }\r\n else\r\n console.error(\"Instance method \" + methodName + \" does not exists\"); // when method is not found\r\n } catch (e) {\r\n // any other exception\r\n console.error(e.message);\r\n }\r\n command.resultString = resultString; // update the return value\r\n break;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Handle the Magic set-property command\r\n * @param command\r\n */\r\n handleSetProperty(command: GuiCommand) {\r\n switch (command.Operation) {\r\n case HtmlProperties.ReadOnly: {\r\n if(command.obj.Type == MgControlType.CTRL_TYPE_TEXT)\r\n if (command.obj1 != true)\r\n this.renderer.removeAttribute(this.htmlElement, command.Operation);\r\n else\r\n this.renderer.setAttribute(this.htmlElement, command.Operation, command.str);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy(): void {\r\n\r\n this.subscribeRefreshDom.unsubscribe();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, Renderer2, ViewContainerRef, Optional} from '@angular/core';\r\nimport {CommandType, GuiCommand} from \"@magic-xpa/gui\";\r\nimport {IGuiEvent, getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport {ControlMetadata} from \"../../../controls.metadata.model\";\r\nimport {HtmlProperties} from \"@magic-xpa/gui\";\r\nimport {MagicDirective} from \"../magic.directive\";\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {StylesMapManager} from \"../../../services/StylesMapManager\";\r\nimport {RowMagicDirective} from \"./row.magic.directive\";\r\nimport {Platform} from \"@angular/cdk/platform\";\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\r\n selector: '[magicnc]'\r\n})\r\n\r\nexport class NoControlMagicDirective extends MagicDirective {\r\n\r\n @Input('magicnc') set magic(val) {this.id = val; this.selector = 'magicnc';};\r\n\r\n constructor(\r\n _task : TaskMagicService,\r\n element : ElementRef,\r\n renderer: Renderer2,\r\n vcRef : ViewContainerRef,\r\n platform: Platform,\r\n @Optional() magicRow: RowMagicDirective) {\r\n super(_task, element, renderer, vcRef, platform, magicRow);\r\n }\r\n\r\n regEvents() {\r\n super.regEvents()\r\n\r\n if (this.htmlElement instanceof HTMLSelectElement) {\r\n this.htmlElement.addEventListener('change', (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n guiEvent.Value = (<any>(event.target)).selectedIndex.toString()\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n\r\n if (this.isRadio()) {\r\n this.htmlElement.addEventListener('change', (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n guiEvent.Value = (<any>(e.target)).value;\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n\r\n if(this.isTabControl()) {\r\n const tabControl = this.htmlElement.children[0];\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n tabControl.children[i].addEventListener('click', (e) => {\r\n guiEvent.Value = ((<number><any>(<Element>e.currentTarget).getAttribute('layer'))-1).toString();\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // is the div a tab control\r\n isTabControl() {\r\n return this.htmlElement instanceof HTMLDivElement &&\r\n this.htmlElement.children[0].getAttribute('magicMark')=== \"magicTabControl\";\r\n }\r\n\r\n // is the div a radio buttons wrapper\r\n isRadio() {\r\n return this.htmlElement instanceof HTMLDivElement &&\r\n this.htmlElement.children[0].getAttribute('magicMark') === \"magicRadio\";\r\n }\r\n\r\n handleCommand(command: GuiCommand) {\r\n super.handleCommand(command);\r\n\r\n switch (command.CommandType) {\r\n case CommandType.SET_CLASS:\r\n //remove the class which was replaced by this new one, as registered in the ControlMetadata\r\n const controlMetadata:ControlMetadata = this._task.Records.list[0].getControlMetadata(this.id);\r\n if(controlMetadata.removedClass != '') {\r\n this.htmlElement.classList.remove(controlMetadata.removedClass);\r\n controlMetadata.removedClass = '';\r\n }\r\n this.htmlElement.classList.add(command.obj1);\r\n break;\r\n\r\n case CommandType.SET_VALUE:\r\n if (this.htmlElement instanceof HTMLLabelElement)\r\n (<HTMLLabelElement>this.htmlElement).innerText = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLSelectElement)\r\n (<HTMLSelectElement>this.htmlElement).value = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLAnchorElement) //hyper-text button\r\n (<HTMLAnchorElement>this.htmlElement).text = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLInputElement)\r\n {\r\n if((<HTMLInputElement>this.htmlElement).type === \"checkbox\") {\r\n (<HTMLInputElement>this.htmlElement).checked = command.value;\r\n }\r\n else {\r\n (<HTMLInputElement>this.htmlElement).value = command.value;\r\n }\r\n }\r\n\r\n if (this.htmlElement instanceof HTMLButtonElement)\r\n {\r\n (<HTMLButtonElement>this.htmlElement).innerHTML = command.value;\r\n }\r\n\r\n break;\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command);\r\n break;\r\n\r\n case CommandType.SET_STYLE:\r\n let value: string = StylesMapManager.magicValueGetStyle(command.Operation, command.obj1);\r\n let attribute: string = StylesMapManager.MagicPropertyToHtmlAttributeMap.get(command.Operation);\r\n this.htmlElement.setAttribute(\"style\", attribute + \":\" + value);\r\n break;\r\n }\r\n }\r\n\r\n\r\n // handle set-property commands\r\n handleSetProperty(command: GuiCommand) {\r\n super.handleSetProperty(command);\r\n switch (command.Operation) {\r\n case HtmlProperties.Text:\r\n if (this.htmlElement instanceof HTMLLabelElement)\r\n (<HTMLLabelElement>this.htmlElement).innerText = command.obj1;\r\n\r\n break;\r\n\r\n case HtmlProperties.Image:\r\n if (this.htmlElement instanceof HTMLImageElement)\r\n (<HTMLImageElement>this.htmlElement).src = command.obj1;\r\n else\r\n this.htmlElement.setAttribute(\"src\", command.obj1);\r\n\r\n break;\r\n\r\n case HtmlProperties.ItemsList:\r\n if (this.htmlElement instanceof HTMLSelectElement) {\r\n\r\n // clear the list\r\n var len = this.htmlElement.length;\r\n for (var i = len - 1; i >= 0; i--) {\r\n this.htmlElement.remove(i);\r\n }\r\n\r\n for (let s of command.obj1) {\r\n let elem = document.createElement(\"option\");\r\n elem.text = s.displayValue;\r\n elem.value = s.index;\r\n (<HTMLSelectElement>this.htmlElement).add(elem);\r\n }\r\n }\r\n else if(this.isTabControl() && this.htmlElement.children.length > 0) {\r\n const tabControl = this.htmlElement.children[0];\r\n\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n if(tabControl.children[i] instanceof HTMLButtonElement) {\r\n (<HTMLElement>tabControl.children[i]).innerText = command.obj1[i].displayValue;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case HtmlProperties.Visible:\r\n this.htmlElement.setAttribute('style', 'visibility:' + (command.obj1 ? 'visible' : 'hidden'));\r\n break;\r\n\r\n case HtmlProperties.Enabled:\r\n if (command.obj1 === false)\r\n this.htmlElement.setAttribute(\"disabled\", \"true\");\r\n else\r\n this.htmlElement.removeAttribute(\"disabled\");\r\n break;\r\n\r\n case HtmlProperties.TabIndex:\r\n this.htmlElement.setAttribute(command.Operation, command.obj1);\r\n break;\r\n\r\n case HtmlProperties.SelectedValue:\r\n if (this.htmlElement instanceof HTMLSelectElement)\r\n (<HTMLSelectElement>this.htmlElement).value = command.obj1;\r\n else if(this.isTabControl() && this.htmlElement.children.length > 0){\r\n const tabControl = this.htmlElement.children[0];\r\n\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n let child = tabControl.children[i];\r\n const layer = (<number><any>child.getAttribute('layer'))-1;\r\n\r\n if(child instanceof HTMLButtonElement) {\r\n // set button style\r\n if ( layer == command.obj1) { // compare int to string\r\n child.classList.add('tab_button_active');\r\n }\r\n else {\r\n child.classList.remove('tab_button_active');\r\n }\r\n } else {\r\n // not a buton - hide unselected tabpages\r\n let style = (layer == command.obj1) ? 'display: inline' : 'display: none';\r\n child.setAttribute('style', style);\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case HtmlProperties.PlaceHolder:\r\n this.htmlElement.setAttribute(\"placeholder\", command.obj1);\r\n break;\r\n\r\n case HtmlProperties.Tooltip:\r\n this.htmlElement.setAttribute(\"title\", command.obj1);\r\n break;\r\n\r\n case HtmlProperties.Password:\r\n if (command.obj1 === false)\r\n this.htmlElement.setAttribute(\"type\", \"text\");\r\n else\r\n this.htmlElement.setAttribute(\"type\", \"password\");\r\n break;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder, isNullOrUndefined} from \"@magic-xpa/mscorelib\"\r\nimport {PICInterface} from \"@magic-xpa/utils\"\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class Constants {\r\n static readonly DATE_FMT = 'dd/MMM/yyyy';\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Pipe({\r\n name: 'magicDate'\r\n})\r\nexport class DateMagicPipe extends DatePipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n super('en-US');\r\n\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n let formatStr: string = null;\r\n let mgDateFormatter = new MgDateFormatter();\r\n if (!isNullOrUndefined(value) && mask !== null) {\r\n formatStr = mgDateFormatter.ConvertMgDateFormatToAngular (mask);\r\n // If control is label control of table, due to query mode, then save the format here.\r\n if (formatStr != null && this._task.isTableControl(controlId)) {\r\n if (this._task.mgInputDateFormat == null)\r\n this._task.mgInputDateFormat = formatStr;\r\n else\r\n formatStr = this._task.mgInputDateFormat;\r\n }\r\n return super.transform(value, formatStr);\r\n }\r\n else\r\n value = \"\";\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport class MgDateFormatter {\r\n\r\n ConvertMgDateFormatToAngular(mgDateMask: string) : string\r\n {\r\n let formatStr: StringBuilder = new StringBuilder ();\r\n\r\n if (mgDateMask !== null) {\r\n for (let i: number = 0; i < mgDateMask.length;) {\r\n switch (mgDateMask.charCodeAt(i)) {\r\n case PICInterface.PIC_YYYY:\r\n formatStr.Append('yyyy');\r\n i += 4;\r\n break;\r\n case PICInterface.PIC_MMD:\r\n formatStr.Append('MM');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_YY:\r\n formatStr.Append('yy');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_MMM:\r\n {\r\n let cnt = 0;\r\n for (;i < mgDateMask.length; i++)\r\n if (mgDateMask.charCodeAt(i) == PICInterface.PIC_MMM)\r\n cnt++;\r\n else\r\n break;\r\n\r\n if (cnt == 3)\r\n formatStr.Append('MMM');\r\n if (cnt > 3)\r\n formatStr.Append('MMMM');\r\n }\r\n\r\n break;\r\n case PICInterface.PIC_DD:\r\n formatStr.Append('dd');\r\n i += 2;\r\n\r\n break;\r\n\r\n case PICInterface.PIC_WWW: {\r\n let cnt = 0;\r\n for (;i < mgDateMask.length; i++)\r\n if (mgDateMask.charCodeAt(i) == PICInterface.PIC_WWW)\r\n cnt++;\r\n else\r\n break;\r\n\r\n if (cnt == 3)\r\n formatStr.Append('EEE');\r\n if (cnt > 3)\r\n formatStr.Append('EEEE');\r\n }\r\n\r\n break;\r\n\r\n default:\r\n formatStr.Append(mgDateMask.charAt(i));\r\n i++;\r\n break;\r\n }\r\n }\r\n return formatStr.ToString();\r\n }\r\n else\r\n return \"dd-mm-yyyy\"; // return default format.\r\n\r\n }\r\n}\r\n","import {Directive, HostListener} from '@angular/core';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder, RefParam} from '@magic-xpa/mscorelib';\r\nimport {PICInterface, StorageAttribute} from '@magic-xpa/utils';\r\nimport {MagicDirective} from './magic.directive';\r\nimport {AbstractControl, Validators} from '@angular/forms';\r\nimport {PIC} from '@magic-xpa/gui';\r\nimport {MgDateFormatter} from '../pipes/date.magic.pipe';\r\nimport {isUndefined} from '@magic-xpa/mscorelib';\r\nimport {Environment, LastFocusedManager} from \"@magic-xpa/engine\";\r\n/**\r\n * Perform Magic validation on input controls which hold alphanumeric strings\r\n */\r\n@Directive({\r\n selector: '[mgFormat]'\r\n})\r\n\r\n\r\nexport class MgformatMagicDirective {\r\n\r\n datePasteFlag: boolean = false;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(\r\n protected magicDir: MagicDirective ,\r\n protected _task: TaskMagicService\r\n\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n\r\n if(control != null && this._task.mgInputDateFormat == null) {\r\n // get the first date control's format.\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n if (pic.getAttr() == StorageAttribute.DATE ) {\r\n this.formatDate(pic);\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n /**\r\n * This can be used to set pattern\r\n * On input, verifies the input matches the required mask\r\n */\r\n @HostListener('focus', ['$event'])\r\n public onFocusEvent($event){\r\n this.calculatePattern();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n /**\r\n * This flag is needed to skip execution of dateMasking() method when user paste date in input control.\r\n * This is only needed when \"StorageAttribute\" is DATE. But to check type of \"StorageAttribute\", we\r\n need to execute getControlMetadata() method. So, to reduce this execution overload we set\r\n \"datePasteFlag\" directly.\r\n */\r\n this.datePasteFlag = true;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n public onInputEvent(event){\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n if (attr == StorageAttribute.DATE){\r\n if(!this.datePasteFlag)\r\n this.dateMasking(event);\r\n\r\n this.datePasteFlag = false;\r\n }\r\n this.calculatePattern();\r\n }\r\n\r\n\r\n //This method inserts '/' as a separator while entering date in the textbox.\r\n //Example: 10/10/2023\r\n dateMasking(event){\r\n\r\n const input = event.target;\r\n let cursorPos = event.target.selectionStart;\r\n const separator = this._task.mgInputDateFormat.includes('/')? '/':'-';\r\n\r\n if(cursorPos >= input.value.length) {\r\n\r\n const value = input.value.replace(/[^a-zA-Z0-9/-]/g, '');\r\n\r\n if (this._task.mgInputDateFormat == \"dd/MM/yyyy\" || this._task.mgInputDateFormat == \"MM/dd/yyyy\" ||this._task.mgInputDateFormat == \"dd-MM-yyyy\" ||this._task.mgInputDateFormat == \"MM-dd-yyyy\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2) + separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5)+ separator + value.slice(5);\r\n else if(value.length >= 10)\r\n input.value = value.slice(0, 10);\r\n\r\n } else if (this._task.mgInputDateFormat == \"yyyy/MM/dd\" || this._task.mgInputDateFormat == \"yyyy/dd/MM\" || this._task.mgInputDateFormat == \"yyyy-MM-dd\" || this._task.mgInputDateFormat == \"yyyy-dd-MM\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '0000' + separator;\r\n else if(value.length == 2 && value[1] == separator)\r\n input.value = '000' + value.slice(0);\r\n else if(value.length == 3 && value[2] == separator)\r\n input.value = '00' + value.slice(0);\r\n else if(value.length == 4 && value[3] == separator)\r\n input.value = '0' + value.slice(0);\r\n else if(value.length == 5 && value[4] != separator)\r\n input.value = value.slice(0, 4) + separator + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 5) + '01' + value.slice(5);\r\n else if(value.length == 7 && value[6] == separator)\r\n input.value = value.slice(0, 5) + '0' + value.slice(5);\r\n else if(value.length == 8 && value[7] != separator)\r\n input.value = value.slice(0, 7) + separator + value.slice(7);\r\n else if(value.length >= 10)\r\n input.value = value.slice(0, 10);\r\n\r\n } else if (this._task.mgInputDateFormat == \"dd/MM/yy\" || this._task.mgInputDateFormat == \"yy/MM/dd\" || this._task.mgInputDateFormat == \"MM/dd/yy\" || this._task.mgInputDateFormat == \"yy/dd/MM\" ||this._task.mgInputDateFormat == \"dd-MM-yy\" || this._task.mgInputDateFormat == \"yy-MM-dd\" || this._task.mgInputDateFormat == \"MM-dd-yy\" || this._task.mgInputDateFormat == \"yy-dd-MM\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5)+ separator + value.slice(5);\r\n else if(value.length >= 8)\r\n input.value = value.slice(0, 8);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"dd/MMM/yy\" || this._task.mgInputDateFormat == \"dd-MMM-yy\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"dd/MMM/yyyy\" || this._task.mgInputDateFormat == \"dd-MMM-yyyy\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"yy/dd/MMM\" || this._task.mgInputDateFormat == \"yy-dd-MMM\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '00' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5) + separator + value.slice(5);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"yyyy/dd/MMM\" || this._task.mgInputDateFormat == \"yyyy-dd-MMM\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '0000' + separator;\r\n else if(value.length == 2 && value[1] == separator)\r\n input.value = '000' + value.slice(0);\r\n else if(value.length == 3 && value[2] == separator)\r\n input.value = '00' + value.slice(0);\r\n else if(value.length == 4 && value[3] == separator)\r\n input.value = '0' + value.slice(0);\r\n else if(value.length == 5 && value[4] != separator)\r\n input.value = value.slice(0, 4) + separator + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 5) + '01' + value.slice(5);\r\n else if(value.length == 7 && value[6] == separator)\r\n input.value = value.slice(0, 5) + '0' + value.slice(5);\r\n else if(value.length == 8 && value[7] != separator)\r\n input.value = value.slice(0, 7) + separator + value.slice(7);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"MMM/dd/yy\" || this._task.mgInputDateFormat == \"MMM-dd-yy\" ) {\r\n if(value.length == 4 && value[3] != separator)\r\n input.value = value.slice(0, 3) + separator + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 4)+ '01' + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 4)+ '0' + value.slice(4);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"MMM/dd/yyyy\" || this._task.mgInputDateFormat == \"MMM-dd-yyyy\" ) {\r\n if(value.length == 4 && value[3] != separator)\r\n input.value = value.slice(0, 3) + separator + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 4)+ '01' + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 4)+ '0' + value.slice(4);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n }\r\n }\r\n if(cursorPos < input.value.length && input.value.length > this._task.mgInputDateFormat.length){\r\n let inputDate = input.value;\r\n let start = input.selectionStart-1;\r\n let end = input.selectionEnd-1;\r\n let indexToRemove = input.selectionStart-1;\r\n\r\n input.value = inputDate.slice(0,indexToRemove) + inputDate.slice(indexToRemove + 1);\r\n input.setSelectionRange(start, end);\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // This can be used to implement uppercase/lower case\r\n @HostListener('change', ['$event'])\r\n public onChangeEvent(event){\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n\r\n switch (attr)\r\n {\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n this.formatAlphaUnicode (control);\r\n break;\r\n case StorageAttribute.BOOLEAN:\r\n this.formatBoolean(control);\r\n break;\r\n\r\n }\r\n }\r\n\r\n\r\n @HostListener('blur', ['$event'])\r\n public onBlurEvent(event) {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType; \r\n\r\n if(attr == StorageAttribute.DATE){\r\n const century = Environment.Instance.GetCentury(LastFocusedManager.Instance.getCurrTask().getCompIdx());\r\n this.formatDateWithCentury(event.target.value, century, control);\r\n }\r\n\r\n }\r\n\r\n /** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */\r\n formatDateWithCentury(userInput: string, century: number, control: AbstractControl) {\r\n const dateFormat = this._task.mgInputDateFormat;\r\n const separator = userInput.includes('/') ? '/' : \"-\";\r\n let centuryVal = parseInt(century.toString().slice(0, 2));\r\n if(userInput.length == 0)\r\n return ;\r\n\r\n if ((dateFormat == 'dd/MMM/yyyy' || dateFormat == 'dd-MMM-yyyy')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MM/yyyy' || dateFormat == 'dd-MM-yyyy' || dateFormat == 'd/M/yyyy' || dateFormat == 'd-M-yyyy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MM/dd/yyyy' || dateFormat == 'MM-dd-yyyy' || dateFormat == 'M/d/yyyy' || dateFormat == 'M-d-yyyy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if ((dateFormat == 'MMM/dd/yyyy' || dateFormat == 'MMM-dd-yyyy')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/MM/dd' || dateFormat == 'yyyy-MM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/dd/MM' || dateFormat == 'yyyy-dd-MM')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n if ((day < 32 && month < 13)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/dd/MMM' || dateFormat == 'yyyy-dd-MMM')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MM/yy' || dateFormat == 'dd-MM-yy' || dateFormat == 'd/M/yy' || dateFormat == 'd-M-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MM/dd/yy' || dateFormat == 'MM-dd-yy' || dateFormat == 'M/d/yy' || dateFormat == 'M-d-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/MM/dd' || dateFormat == 'yy-MM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/dd/MM' || dateFormat == 'yy-dd-MM')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MMM/yy' || dateFormat == 'dd-MMM-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/dd/MMM' || dateFormat == 'yy-dd-MMM')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MMM/dd/yy' || dateFormat == 'MMM-dd-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/MMM/dd' || dateFormat == 'yyyy-MMM-dd' ||dateFormat == 'yy/MMM/dd' || dateFormat == 'yy-MMM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if(dateFormat == 'yyyy/MM' || dateFormat == 'yyyy-MM'){\r\n const dateArray: string[] = userInput.split(separator);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[0]);\r\n if (Number(month) < 13) {\r\n this.updateYear(1, month, year, separator, century, centuryVal, control);\r\n }\r\n }\r\n }\r\n\r\n updateYear(day:number, month:string, year:number, separator:string, century:number, centuryVal:number, control:AbstractControl){\r\n let updatedYear = year.toString().length === 2 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '' + year :\r\n year.toString().length === 1 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '0' + year :\r\n year;\r\n\r\n control.setValue(new Date(`${updatedYear}${separator}${month}${separator}${day}`))\r\n }\r\n\r\n getDateSegments1(dateArray){\r\n const day = Number(dateArray[0]);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[2]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments2(dateArray){\r\n const day = Number(dateArray[1]);\r\n const month = dateArray[0];\r\n const year = Number(dateArray[2]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments3(dateArray){\r\n const day = Number(dateArray[2]);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[0]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments4(dateArray){\r\n const day = Number(dateArray[1]);\r\n const month = dateArray[2];\r\n const year = Number(dateArray[0]);\r\n return [day, month, year];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n calculatePattern ()\r\n {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n\r\n if(control != null ) {\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n if (attr == StorageAttribute.NUMERIC || attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n\r\n if (this.isPatternGenerationNeeded(attr, pic)) {\r\n let pattern: string = this.generatePattern(attr, pic);\r\n if (control.validator == null)\r\n control.setValidators(Validators.pattern(pattern));\r\n else\r\n control.setValidators([control.validator, Validators.pattern(pattern)]);\r\n }\r\n else {\r\n if (attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {\r\n if (control.validator == null)\r\n control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n else {\r\n // re-set all validators again\r\n if (pic.isFormatExp()) {\r\n control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n if (isUndefined(this.magicDir.rowId))\r\n this.magicDir.rowId = '0';\r\n control.setValidators([control.validator, this._task.customValidator(this.magicDir.rowId, this.magicDir.id)]);\r\n }\r\n else\r\n control.setValidators([control.validator, Validators.maxLength(pic.getMaskLength())]);\r\n }\r\n\r\n // control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n formatDate(pic: PIC): void {\r\n let mgDateFormatter = new MgDateFormatter();\r\n this._task.mgInputDateFormat = mgDateFormatter.ConvertMgDateFormatToAngular(pic.getMask());\r\n }\r\n /**\r\n * @ignore\r\n */\r\n formatAlphaUnicode(control: AbstractControl): void {\r\n let value: string = control.value;\r\n\r\n if (value !== null && value.length > 0) {\r\n const newValue: string = this._task.GetRangedValue(this.magicDir.id, value);\r\n if (newValue != null)\r\n value = newValue;\r\n\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n let mask: string = pic.getMask();\r\n let valueStr: StringBuilder = new StringBuilder();\r\n\r\n for (let i: number = 0; i < value.length; i++) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_U:\r\n valueStr.Append(value.charAt(i).toUpperCase());\r\n break;\r\n case PICInterface.PIC_L:\r\n valueStr.Append(value.charAt(i).toLowerCase());\r\n break;\r\n default:\r\n valueStr.Append(value.charAt(i));\r\n break;\r\n }\r\n }\r\n\r\n control.setValue(valueStr.ToString());\r\n\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n formatBoolean (control: AbstractControl): void {\r\n let value: string = control.value;\r\n if (value !== null && value.length > 0) {\r\n let newValue: string = this._task.GetRangedValue (this.magicDir.id , value);\r\n if (newValue.toUpperCase().startsWith(value.toUpperCase())) {\r\n control.setValue(newValue);\r\n } else {\r\n control.setValue(value);\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern from fld's format\r\n /// </summary>\r\n generatePattern (attribute: StorageAttribute, pic: PIC): string {\r\n let pattern: string = '';\r\n\r\n switch (attribute)\r\n {\r\n case StorageAttribute.NUMERIC:\r\n pattern = this.generatePatternForNumber(pic);\r\n break;\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n pattern = this.generatePatternForAlpha(pic);\r\n break;\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern for Alpha\r\n /// </summary>\r\n generatePatternForNumber(pic: PIC): string {\r\n let patternStr: StringBuilder = new StringBuilder ();\r\n\r\n patternStr.Append('^');\r\n if (pic.isNegative())\r\n patternStr.Append('-?');\r\n if (pic.getWholes())\r\n patternStr.AppendFormat('\\\\d{{0},{1}}', 0, pic.getWholes());\r\n if (pic.getDec())\r\n patternStr.AppendFormat('(\\\\.\\\\d{1,{0}})?', pic.getDec());\r\n patternStr.Append('$');\r\n\r\n return patternStr.ToString();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isPatternGenerationNeeded (attr : StorageAttribute, pic : PIC): boolean {\r\n\r\n switch (attr) {\r\n case StorageAttribute.NUMERIC:\r\n return true;\r\n\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n return (pic.getMaskChars() > 0) ? true : false;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern for Alpha\r\n /// </summary>\r\n generatePatternForAlpha(pic : PIC): string {\r\n let cnt: number = 0;\r\n let inputAllChars: boolean = false;\r\n let closeSet: boolean = false;\r\n let mask: string = pic.getMask();\r\n let pattern: StringBuilder = new StringBuilder();\r\n\r\n pattern.Append('^');\r\n for (let i: number = 0; i < mask.length;)\r\n {\r\n //start new subset , if mask[i] is one of these.\r\n if (inputAllChars && (mask.charCodeAt(i) == PICInterface.PIC_N || mask.charCodeAt(i) == PICInterface.PIC_U || mask.charCodeAt(i) == PICInterface.PIC_L\r\n || mask.charCodeAt(i) == PICInterface.PIC_X))\r\n {\r\n pattern.Append('(');\r\n closeSet = true;\r\n inputAllChars = false;\r\n }\r\n\r\n cnt = 0;\r\n switch (mask.charCodeAt(i))\r\n {\r\n case PICInterface.PIC_U:\r\n case PICInterface.PIC_X:\r\n case PICInterface.PIC_L:\r\n {\r\n pattern.Append('.');\r\n let inputAllCharsRef: RefParam<boolean> = new RefParam<boolean>(false);\r\n let dirs: string = PICInterface.PIC_U.toString();\r\n dirs += PICInterface.PIC_L.toString();\r\n dirs += PICInterface.PIC_X.toString();\r\n cnt = this.getDirectiveCount(mask, i, dirs, inputAllCharsRef);\r\n inputAllChars = inputAllCharsRef.value;\r\n i += cnt;\r\n\r\n }\r\n break;\r\n case PICInterface.PIC_N:\r\n {\r\n pattern.Append('\\\\d');\r\n let inputAllCharsRef: RefParam<boolean> = new RefParam<boolean>(false);\r\n cnt = this.getDirectiveCount(mask, i, PICInterface.PIC_L.toString(), inputAllCharsRef);\r\n inputAllChars = inputAllCharsRef.value;\r\n i += cnt;\r\n }\r\n break;\r\n\r\n default:\r\n pattern.Append(mask[i]);\r\n i++;\r\n break;\r\n }\r\n if (cnt > 0)\r\n pattern.AppendFormat('{{0},{1}}', inputAllChars ? cnt : 0, cnt);\r\n if (closeSet)\r\n pattern.Append(')');\r\n closeSet = false;\r\n\r\n }\r\n pattern.Append('$');\r\n return pattern.ToString();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getDirectiveCount(mask: string, idx: number, pattern: string, changeInPattern: RefParam<boolean> ): number {\r\n\r\n changeInPattern.value = false;\r\n let patternCount: number = 0;\r\n\r\n // find max chars\r\n while (idx < mask.length && this.IsPatternMatches(mask.charCodeAt(idx).toString(), pattern))\r\n { patternCount++; idx++; }\r\n\r\n\r\n if (idx < mask.length)\r\n changeInPattern.value = true;\r\n\r\n return patternCount;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n IsPatternMatches(mask: string, pattern: string): boolean {\r\n\r\n for (let i:number = 0; i < pattern.length; i++)\r\n if (mask == pattern[i])\r\n return true;\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder} from \"@magic-xpa/mscorelib\"\r\nimport {PICInterface} from \"@magic-xpa/utils\"\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Pipe({\r\n name: 'magicTime'\r\n})\r\nexport class TimeMagicPipe extends DatePipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n super('en-US');\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n let formatStr: StringBuilder = new StringBuilder ();\r\n\r\n if (typeof value !== \"undefined\" && mask !== null) {\r\n for (let i: number = 0; i < mask.length;) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_HH:\r\n formatStr.Append('hh');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_MMT:\r\n formatStr.Append('mm');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_SS:\r\n formatStr.Append('ss');\r\n i += 2;\r\n break;\r\n default:\r\n formatStr.Append(mask.charAt(i));\r\n i++;\r\n break;\r\n }\r\n }\r\n\r\n formatStr.Append(' a');\r\n return super.transform(value, formatStr.ToString());\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { TaskMagicService } from '../../services/task.magics.service';\r\nimport { ControlMetadata } from '../../controls.metadata.model';\r\n\r\n/**\r\n * Validates the field range.\r\n */\r\n@Directive({\r\n selector: '[rangevalidator] ',\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: RangeValidatorMagicDirective,\r\n\r\n multi: true,\r\n\r\n }\r\n ]\r\n})\r\n\r\nexport class RangeValidatorMagicDirective implements Validator {\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param vcRef\r\n */\r\n constructor(protected _task: TaskMagicService, protected vcRef: ViewContainerRef) {\r\n }\r\n\r\n /**\r\n * Validation method\r\n * @param c FormControl to validate\r\n * @returns If validation fails, return error message, else returns null\r\n */\r\n validate(c: FormControl) {\r\n let controlName: string;\r\n controlName = this.getControlName (c);\r\n let properties: ControlMetadata;\r\n properties = this._task.Records.list[\"0\"].getControlMetadata(controlName);\r\n properties.rangeValidator = true;\r\n let errMsg: string = null;\r\n if (c.dirty)\r\n errMsg = this._task.ValidateControlValue (controlName, this._task.ConvertValToNative(controlName, 0, c.value));\r\n let isValid: boolean = (errMsg == null) ? true : false;\r\n if (isValid) {\r\n return null;\r\n }\r\n else {\r\n return {\r\n rangevalidator: {\r\n errorMsg : errMsg\r\n }\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getControlName(c: FormControl): string | null {\r\n const formGroup = c.parent.controls;\r\n return Object.keys(formGroup).find(name => c === formGroup[name]) || null;\r\n }\r\n}\r\n","import {Component, Input, ViewContainerRef} from \"@angular/core\";\r\nimport {TaskBaseMagicComponent} from \"./task-base.magic.component\";\r\nimport { SubformMagicService } from \"../services/subform.magic.service\";\r\nimport { isNullOrUndefined } from '@magic-xpa/mscorelib';\r\n\r\n/**\r\n * Represents a Magic subform\r\n */\r\n@Component({\r\n selector: 'magic-subform',\r\n template: `\r\n <ndc-dynamic\r\n *ngIf=\"Component\" \r\n [ndcDynamicComponent]=\"Component\" \r\n [ndcDynamicInputs]=\"Parameters\">\r\n </ndc-dynamic>\r\n`})\r\n\r\n\r\nexport class SubformMagicComponent {\r\n /**\r\n * @ignore\r\n */\r\n id : string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @Input('magic') set magic(val) {this.id = val; };\r\n\r\n /**\r\n * @ignore\r\n */\r\n component: TaskBaseMagicComponent = null;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private vcRef: ViewContainerRef, protected mgSub: SubformMagicService) {\r\n // For angular 13 - find the component from _hostLView\r\n this.component = ((<any>this.vcRef)._hostLView).find(v => !isNullOrUndefined((v as TaskBaseMagicComponent)));\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n get Component(): Component {\r\n return this.mgSub.mgGetComp(this.id);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n get Parameters(): any {\r\n return this.mgSub.mgGetParameters(this.id);\r\n }\r\n}\r\n\r\n","import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport {AccessorMagicService} from \"../services/accessor.magic.service\";\r\nimport {TaskMagicService} from \"../services/task.magics.service\";\r\nimport { isUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\n/**\r\n * Represents a Magic subform\r\n */\r\n@Component({\r\n selector: 'mgError',\r\n template: `<div *ngIf=\"HasErrors(id)\">\r\n <div #customContent>\r\n <ng-content></ng-content>\r\n </div>\r\n <span *ngIf=\"defaultDisplay\">\r\n {{mgService.getErrMsg(id, rowId)}} \r\n </span>\r\n </div>\r\n`})\r\n\r\n\r\nexport class ErrorMagicComponent {\r\n /**\r\n * @ignore\r\n */\r\n id: string;\r\n rowId: string;\r\n /**\r\n * @ignore\r\n */\r\n @Input('magic') set magic(val) {\r\n this.id = val;\r\n };\r\n\r\n @Input('rowId') set rowId1(val) {\r\n this.rowId = val;\r\n };\r\n\r\n // if true - display standard magic error message, if false - customer has provides his own content and we'll use it\r\n defaultDisplay = true;\r\n\r\n @ViewChild('customContent', { static: false }) set CustomContent(innerComponent: ElementRef) {\r\n this.defaultDisplay = innerComponent == undefined || this.isEmpty(innerComponent.nativeElement);\r\n this.changeDetectorRef.detectChanges();\r\n };\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(protected _task: TaskMagicService, public mgService: AccessorMagicService, protected changeDetectorRef: ChangeDetectorRef ) {\r\n this.rowId = \"0\";\r\n }\r\n\r\n /**\r\n * returns true if the html element has no children\r\n * @param element\r\n */\r\n isEmpty(element: HTMLElement): boolean {\r\n const nodes = element.childNodes;\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes.item(i);\r\n if (node.nodeType !== 8 && nodes.item(i).textContent.trim().length !== 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n HasErrors(id: string): boolean {\r\n if (!isUndefined(id)) {\r\n let control = this._task.getFormControl(this.rowId, id);\r\n if (control !== null) {\r\n if (control.dirty && (control.hasError('pattern') || control.hasError('required') ||\r\n control.hasError('rangevalidator') || control.hasError('maxlength') || control.hasError('max')))\r\n return true;\r\n if (control.touched && control.hasError('required'))\r\n return true;\r\n\r\n if(this._task.Records.list[this.rowId] && this._task.Records.list[this.rowId].getControlMetadata(id)){\r\n let controlMetadata = this._task.Records.list[this.rowId].getControlMetadata(id);\r\n for (let customValidator of controlMetadata.customValidators.keys()) {\r\n if (control.hasError(customValidator))\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\nimport { MagicDirective } from '../magic.directive';\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {getGuiEventObj, IGuiEvent} from \"@magic-xpa/engine\";\r\nimport {filter} from \"rxjs/operators\";\r\nimport {CommandType, GuiCommand, HtmlProperties} from \"@magic-xpa/gui\";\r\n\r\n\r\n/**\r\n * Directive for checkboxes, to handle the 'change' event\r\n */\r\n@Directive({\r\n selector:\r\n `\r\n input[type=checkbox][magic]:not([noFormControl])\r\n`,\r\n })\r\nexport class CheckboxMagicDirective {\r\n @Input() threeState: boolean = false;\r\n private subscribeRefreshDom: any = null;\r\n private isIndeterminate: boolean = false;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor( protected magicDirective: MagicDirective,\r\n private el: ElementRef,\r\n protected task: TaskMagicService,) {\r\n }\r\n\r\n /**\r\n * Handles the Checkbox 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n if(this.threeState) {\r\n this.handleThreeState();\r\n }\r\n else {\r\n this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if(this.threeState){\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"setAsThreeState\", this.magicDirective.id, +this.magicDirective.rowId);\r\n this.task.insertEvent(guiEvent);\r\n this.el.nativeElement.indeterminate = this.isIndeterminate = this.task.getProperty(this.magicDirective.id, HtmlProperties.CheckBoxIndeterminate, this.magicDirective.rowId);\r\n this.regUpdatesUI();\r\n }\r\n }\r\n private regUpdatesUI() {\r\n this.subscribeRefreshDom = this.task\r\n .refreshDom.pipe(filter(c => this.magicDirective.IsSameElement(c)))\r\n .subscribe(a => {\r\n let command: GuiCommand = a;\r\n try {\r\n this.handleCommand(command);\r\n } catch (ex) {\r\n console.dir(ex);\r\n }\r\n }\r\n );\r\n }\r\n handleCommand(command: GuiCommand){\r\n if (command.CommandType == CommandType.SET_PROPERTY &&\r\n command.Operation == HtmlProperties.CheckBoxIndeterminate) {\r\n this.isIndeterminate = this.el.nativeElement.indeterminate = command.obj1;\r\n }\r\n }\r\n private handleThreeState() {\r\n let value : string = '';\r\n let prevCheckedValue = this.task.getValue(this.magicDirective.id, this.magicDirective.rowId);\r\n const checkbox = this.el.nativeElement;\r\n if (this.isIndeterminate) {\r\n checkbox.checked = false;\r\n checkbox.indeterminate = false;\r\n value = 'unchecked';\r\n } else if (prevCheckedValue) {\r\n checkbox.checked = false;\r\n checkbox.indeterminate = true;\r\n value = 'indeterminate';\r\n } else if (!prevCheckedValue) {\r\n checkbox.checked = true;\r\n checkbox.indeterminate = false;\r\n value = 'checked';\r\n }\r\n // @ts-ignore\r\n this.magicDirective.task.onCheckChanged(value, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy(): void {\r\n if(this.subscribeRefreshDom !== null)\r\n this.subscribeRefreshDom.unsubscribe();\r\n }\r\n}\r\n\r\n\r\n","import { Directive, HostListener } from '@angular/core';\r\nimport { MagicDirective } from '../magic.directive';\r\nimport { GuiCommand, HtmlProperties } from \"@magic-xpa/gui\";\r\nimport { filter } from \"rxjs/operators\";\r\n\r\n\r\n/**\r\n * Directive for comboboxes, to handle the 'change' event\r\n */\r\n@Directive({\r\n selector:\r\n `select[magic]:not([multiple])`,\r\n })\r\nexport class ComboboxMagicDirective{\r\n\r\n constructor(protected magicDirective: MagicDirective) {\r\n // subcribe to refreshDom. This is a special case for native select HTML control.\r\n // to refresh the selected property. Else by default, HTML element doesn't get refreshed as per\r\n // selected value and 1st element remains selected.\r\n this.magicDirective.task.refreshDom.pipe(filter(c => this.magicDirective.IsSameElement(c))).subscribe(value =>{\r\n let command: GuiCommand = value;\r\n if (command.Operation === HtmlProperties.ItemsList)\r\n this.onComboboxItemsListChanged();\r\n });\r\n }\r\n\r\n /**\r\n * Handles the Combobox 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.onComboboxSelectionChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n\r\n /**\r\n * To refresh Combobox selection as per selected property.\r\n */\r\n onComboboxItemsListChanged(): void {\r\n this.magicDirective.task.refreshView();\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * This service supports custom actions on magic exit\r\n */\r\n@Injectable()\r\nexport class ExitMagicService {\r\n\r\n\r\n /**\r\n * Override this method to implement custom logic on magic exit\r\n */\r\n exitMagic() {\r\n console.log(\"Magic application terminated\");\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Optional,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { CommandType, GuiCommand } from '@magic-xpa/gui';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { EngineMagicService } from '../services/engine.magic.service';\r\nimport { ComponentListMagicService } from '../services/component-list.magic.service';\r\nimport { GuiInteractiveExecutor } from './GuiInteractiveExecutor';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ExitMagicService } from '../services/exit.magic.service';\r\nimport { OverlayWindowService } from '../services/OverlayWindowService';\r\nimport { IMagicViewContainerRef } from '../..';\r\nimport { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {ActivatedRoute, NavigationEnd, Router} from \"@angular/router\";\r\n\r\n/**\r\n * Root Magic component\r\n */\r\n@Component({\r\n selector: 'magic-root',\r\n providers: [\r\n // ExitMagicService\r\n ],\r\n template: `\r\n <div #magicRoot>\r\n <ndc-dynamic\r\n *ngIf = \"RootComponent !== null\"\r\n [ndcDynamicComponent]=\"RootComponent\"\r\n [ndcDynamicInputs] =\"RootComponentParameters\">\r\n </ndc-dynamic>\r\n\r\n <div #overlayWindowsContainer magicViewContainerRef>\r\n </div>\r\n </div>\r\n\r\n <div class=\"spinner-background\" *ngIf=\"showSpinner\">\r\n <ng-container [ngTemplateOutlet]=\"SpinnerTemplate ? SpinnerTemplate:defaultSpinner\"></ng-container>\r\n </div>\r\n\r\n <ng-template #defaultSpinner>\r\n <div class=\"mgSpinnerClass\"></div>\r\n </ng-template>\r\n `,\r\n styles: [`\r\n .mgSpinnerClass {\r\n border: 10px solid #cccccc; /* Light grey */\r\n border-top: 10px solid black; /* Blue */\r\n border-radius: 50%;\r\n position: fixed;\r\n margin: auto;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n width: 100px;\r\n height: 100px;\r\n animation: spin 2s linear infinite;\r\n }\r\n .spinner-background {\r\n /* background fixed across whole screen */\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 1000;\r\n left: 0;\r\n opacity: 0.5;\r\n }\r\n @keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `]\r\n})\r\nexport class MagicShellComponent implements AfterViewInit, IMagicViewContainerRef {\r\n /**\r\n * Root component to be displayed in the window\r\n */\r\n RootComponent : Component = null;\r\n /**\r\n * parameters for the Root Component\r\n */\r\n RootComponentParameters : any;\r\n\r\n overlayWindowsContainerViewRef: ViewContainerRef;\r\n\r\n @ViewChild('magicRoot', { static: true }) rootMagicElementRef: ElementRef;\r\n\r\n @Input() SpinnerTemplate: TemplateRef<any>;\r\n\r\n showSpinner: boolean;\r\n magicEngineTerminated: boolean = false;\r\n\r\n /**\r\n *\r\n * @param magic Magic's service\r\n * @param componentList Magic component list\r\n * @param changeDetectorRef Changes detector\r\n * @param titleService Title setting service\r\n * @param httpClient The native httpClient instance\r\n * @param exitMagicService Magic exit service\r\n */\r\n constructor(protected engineMagicService: EngineMagicService,\r\n protected componentList:ComponentListMagicService,\r\n protected changeDetectorRef: ChangeDetectorRef,\r\n private titleService: Title,\r\n private overlayWindowService: OverlayWindowService,\r\n private httpClient: HttpClient,\r\n private pendingCommandsCollector: CommandsCollectorMagicService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n @Optional() public exitMagicService: ExitMagicService) {\r\n\r\n this.initialize();\r\n this.setTitle();\r\n }\r\n\r\n /**\r\n * Before-unload event listener\r\n * @param event\r\n */\r\n @HostListener('window:beforeunload', ['$event'])\r\n onBeforeUnload(event) {\r\n if(this.engineMagicService.TransCacheExists())\r\n {\r\n // Show the confirmation box before unloading the browser\r\n event.returnValue = 'Are you sure?';\r\n return 'Are you sure?';\r\n }\r\n else\r\n {\r\n // terminate the magic server context using fetch API with keep-alive\r\n this.engineMagicService.TerminateContextUsingFetchAPI();\r\n this.magicEngineTerminated = true;\r\n }\r\n }\r\n\r\n @HostListener('window:unload', ['$event'])\r\n onUnload(event) {\r\n // Chrome provides an opportunity to terminate the context after user approves the browser unload alert\r\n if(!this.magicEngineTerminated)\r\n this.engineMagicService.TerminateContextUsingFetchAPI();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef.nativeElement, this.changeDetectorRef);\r\n\r\n let subscription = this.router.events\r\n .pipe(filter(e => e instanceof NavigationEnd))\r\n .subscribe(e => {\r\n if (this.router.navigated) {\r\n const queryParams = this.route.snapshot.queryParams;\r\n const queryParamsMap = new Map<string, string>();\r\n\r\n // Iterate over the queryParams object and populate the Map\r\n for (const key in queryParams) {\r\n if (queryParams.hasOwnProperty(key)) {\r\n queryParamsMap.set(key, queryParams[key].toString());\r\n }\r\n }\r\n\r\n this.engineMagicService.startMagicEngine(this.httpClient, queryParamsMap);\r\n subscription.unsubscribe();\r\n }\r\n });\r\n }\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.overlayWindowsContainerViewRef = vcRef;\r\n }\r\n\r\n /**\r\n * Initialization of Magic mechanisms\r\n */\r\n initialize() {\r\n this.registerUICommands();\r\n }\r\n\r\n /**\r\n * Set the title\r\n */\r\n public setTitle( ) {\r\n const newTitle: string = this.componentList.title;\r\n this.titleService.setTitle( newTitle );\r\n }\r\n\r\n /**\r\n * Set the component according to requested form\r\n * @param formName Name of the form to open\r\n * @param taskId Id of opening task\r\n * @param taskDescription TODO\r\n * @param isModal whether modal window is being opened\r\n */\r\n private setComponent(formName: string, taskId: string, taskDescription: string, isModal: boolean) {\r\n this.pendingCommandsCollector.startCollecting();\r\n\r\n if(isModal) {\r\n this.overlayWindowService.open(formName, taskId, taskDescription);\r\n }\r\n else {\r\n this.RootComponent = this.componentList.getComponent(formName);\r\n this.RootComponentParameters = { taskIdParam: taskId, taskDescription: taskDescription };\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n registerUICommands() {\r\n this.engineMagicService.refreshDom.pipe(\r\n filter(command => command.TaskTag === '0'))\r\n .subscribe(command => {\r\n this.executeCommand(command);\r\n });\r\n this.engineMagicService\r\n .interactiveCommands.pipe(\r\n filter(command => command.TaskTag === '0'))\r\n .subscribe(command => {\r\n GuiInteractiveExecutor.executeInteractiveCommand(null, command, this.overlayWindowService);\r\n });\r\n }\r\n\r\n /**\r\n * Execute commands received from the Magic WebClient engine\r\n * @param command\r\n */\r\n executeCommand(command: GuiCommand): void {\r\n switch (command.CommandType) {\r\n case CommandType.OPEN_FORM:\r\n this.setComponent(command.str, command.stringList[0], command.stringList[1], command.Bool1);\r\n break;\r\n\r\n case CommandType.SET_IS_LOGGED_IN:\r\n this.engineMagicService.setIsLoggedIn(command.Bool1);\r\n break;\r\n\r\n case CommandType.CLOSE_FORM:\r\n if (this.RootComponent != null && command.str === this.RootComponentParameters.taskIdParam) {\r\n this.RootComponent = null;\r\n this.RootComponentParameters = {};\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n else { // Close modal window\r\n this.overlayWindowService.close(command.str);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n break;\r\n\r\n case CommandType.RELOAD_PAGE:\r\n window.location.reload();\r\n break;\r\n\r\n case CommandType.SHOW_SPINNER:\r\n if (this.showSpinner != command.Bool1) {\r\n this.showSpinner = command.Bool1;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n break;\r\n\r\n case CommandType.EXIT_MAGIC:\r\n if (this.exitMagicService)\r\n this.exitMagicService.exitMagic();\r\n break;\r\n\r\n case CommandType.SHOW_HTML_ERROR:\r\n window.document.write(command.str);\r\n break;\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { CheckboxControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const CHECKBOX_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagicCheckboxControlValueAccessor),\r\n multi: true,\r\n};\r\n\r\n/**\r\n * Value accessor for Checkbox without a FormControl\r\n */\r\n@Directive({\r\n selector:\r\n `\r\n input[type=checkbox][magic]:not([formControlName]):not([no-form-control]),\r\n input[type=checkbox][magic]:not([formControl]),\r\n input[type=checkbox][magic]:not([ngModel])\r\n `,\r\n host: {'(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()'},\r\n providers: [CHECKBOX_VALUE_ACCESSOR]\r\n})\r\nexport class MagicCheckboxControlValueAccessor extends CheckboxControlValueAccessor {\r\n\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { DefaultValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const MAGIC_DEFAULT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagicDefaultValueAccessor),\r\n multi: true\r\n};\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\r\n selector: `\r\n input[magic]:not([type=checkbox]):not([formControlName]):not([no-form-control]),\r\n textarea[magic]:not([formControlName]):not([noFormControl]):not([no-form-control])\r\n `,\r\n host: {\r\n '(input)': '$any(this)._handleInput($event.target.value)',\r\n '(blur)': 'onTouched()',\r\n '(compositionstart)': '$any(this)._compositionStart()',\r\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)'\r\n },\r\n providers: [MAGIC_DEFAULT_VALUE_ACCESSOR],\r\n exportAs: 'magic'\r\n})\r\nexport class MagicDefaultValueAccessor extends DefaultValueAccessor {\r\n\r\n /*constructor(_renderer: Renderer2, _elementRef: ElementRef, @Optional() @Inject(COMPOSITION_BUFFER_MODE) _compositionMode: boolean) {\r\n super(_renderer, _elementRef, _compositionMode);\r\n debugger;\r\n }*/\r\n\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { MagicDirective } from \"../magic.directive\";\r\n\r\n\r\n/**\r\n * Directive for checkboxes which should not have a form control\r\n */\r\n@Directive({\r\n selector:\r\n `\r\n input[type=checkbox][magic]:([noFormControl]) \r\n `,\r\n})\r\nexport class CheckboxNoFormControlMagicDirective {\r\n constructor(protected magicDirective: MagicDirective) {\r\n }\r\n\r\n\r\n /**\r\n * Handle the 'Checkbox' change event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n}\r\n","import {Directive, HostListener} from \"@angular/core\";\r\nimport {MagicDirective} from '../magic.directive';\r\n\r\n\r\n/**\r\n * Directive for non-checkbox input controls which do not have a form control\r\n */\r\n@Directive({\r\n selector: `input[magic]:([noFormControl]):not([type=checkbox]),\r\n textarea[magic]:([noFormControl]):not([type=checkbox])`\r\n\r\n})\r\nexport class InputNoFormControlMagicDirective {\r\n constructor(protected magicDirective: MagicDirective) {\r\n }\r\n\r\n\r\n /**\r\n * Handles the 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.setInputTextValue(this.magicDirective.id,\r\n this.magicDirective.rowId,\r\n (<HTMLInputElement>event.srcElement).value)\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n forwardRef,\r\n HostListener,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {MagicDirective} from \"../../../magic.directive\";\r\nimport {TaskMagicService} from \"../../../../../services/task.magics.service\";\r\nimport {Environment, LastFocusedManager} from \"@magic-xpa/engine\";\r\n\r\nexport const DATE_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateValueAccessor),\r\n multi: true\r\n};\r\n\r\n/**\r\n * The accessor for writing a value and listening to changes on a date input element\r\n *\r\n * ### Example\r\n * `<input type=\"date\" name=\"birthday\" ngModel dateInput>`\r\n * OR\r\n * `<input type=\"date\" formControlName=\"birthday\" dateInput>`\r\n */\r\n@Directive({\r\n selector: \"[dateInput]\",\r\n providers: [DATE_VALUE_ACCESSOR]\r\n})\r\nexport class DateValueAccessor implements ControlValueAccessor {\r\n @HostListener(\"input\", [\"$event.target.valueAsDate\"])\r\n onChange = (_: any) => {};\r\n @HostListener(\"blur\", [])\r\n onTouched = () => {};\r\n\r\n @HostListener('blur', ['$event'])\r\n public onBlurEvent(event) {\r\n const century = Environment.Instance.GetCentury(LastFocusedManager.Instance.getCurrTask().getCompIdx());\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);\r\n\r\n this.formatDateWithCentury(event.target.value, century, control);\r\n }\r\n\r\n constructor(private renderer: Renderer2, private elementRef: ElementRef,\r\n protected magicDir: MagicDirective ,\r\n protected _task: TaskMagicService) {}\r\n\r\n\r\n /** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */\r\n formatDateWithCentury(userInput:string, century:number, control: AbstractControl){\r\n const separator = userInput.includes('/')?'/':\"-\";\r\n let centuryVal = parseInt(century.toString().slice(0, 2));\r\n if(userInput.length == 0)\r\n return ;\r\n\r\n const dateArray: string[] = userInput.split(separator);\r\n const day = Number(dateArray[2]);\r\n const month = Number(dateArray[1]);\r\n const year = Number(dateArray[0]);\r\n\r\n let updatedYear = year.toString().length === 2 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '' + year :\r\n year.toString().length === 1 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '0' + year :\r\n year;\r\n\r\n control.setValue(new Date(`${updatedYear}${separator}${month}${separator}${day}`))\r\n }\r\n\r\n\r\n /** Writes a new value to the element (model -> view) */\r\n writeValue(value: Date): void {\r\n if (!value) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, \"value\", null);\r\n return;\r\n }\r\n\r\n this.renderer.setProperty(\r\n this.elementRef.nativeElement,\r\n \"valueAsDate\",\r\n new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()))\r\n );\r\n }\r\n\r\n /** Registers a callback function, called when value changes (view -> model) */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.onChange = v =>\r\n fn(\r\n v instanceof Date\r\n ? new Date(v.getUTCFullYear(), v.getUTCMonth(), v.getUTCDate())\r\n : v\r\n );\r\n }\r\n\r\n /** Registers a callback function, called when the control is blurred */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** Enables or disables the element when the control status changes */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.renderer.setProperty(\r\n this.elementRef.nativeElement,\r\n \"disabled\",\r\n isDisabled\r\n );\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Renderer2, ViewContainerRef} from '@angular/core';\r\nimport {getGuiEventObj} from '@magic-xpa/engine';\r\nimport {TaskBaseMagicComponent} from '../task-base.magic.component';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n/**\r\n * Responsible for connecting HTML elements to the Magic WebClient engine showing it is not Magic Control but a Dummy control which is used to notify only receeive focus event for now\r\n */\r\n@Directive({\r\n selector: '[NonMagicControl]'\r\n})\r\n\r\nexport class NonMagicControlDirective implements OnInit {\r\n @Input('NonMagicControl')\r\n set magic(val) {\r\n this.id = val;\r\n this.selector = 'NonMagicControl';\r\n };\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n /**\r\n * Magic's component handling this control\r\n */\r\n public component: TaskBaseMagicComponent;\r\n /**\r\n * Collection of event handlers for this element\r\n */\r\n private eventHandlers: { [key: string]: () => void; } = {};\r\n /**\r\n * Id of this element\r\n */\r\n public id: string;\r\n /**\r\n * @ignore\r\n */\r\n protected selector: string;\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n\r\n\r\n public eventsOnlyVal = false;\r\n\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param element The element for which the directive is applied\r\n * @param renderer Renderer for the element\r\n * @param vcRef\r\n */\r\n constructor(protected _task: TaskMagicService,\r\n protected element: ElementRef,\r\n protected renderer: Renderer2,\r\n protected vcRef: ViewContainerRef) {\r\n\r\n this.htmlElement = this.element.nativeElement;\r\n }\r\n\r\n /**\r\n * Get the task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this._task;\r\n }\r\n\r\n /**\r\n * Register to the events this element may need to handle\r\n */\r\n protected regEvents() {\r\n\r\n // Handle events for which event handler may be removed and restored\r\n this.eventHandlers['focusin'] = this.OnFocus.bind(this);\r\n Object.keys(this.eventHandlers).forEach((key) => {\r\n this.renderer.listen(this.htmlElement, key, this.eventHandlers[key]);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Handle focus event\r\n */\r\n private OnFocus() {\r\n this.task.insertEvent(getGuiEventObj('focusOnNonMagicControl', '', -1));\r\n event.cancelBubble = true;\r\n }\r\n\r\n /**\r\n * Initialize this object\r\n */\r\n ngOnInit(): void {\r\n this.regEvents();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {TaskMagicService} from \"../../services/task.magics.service\";\r\n\r\n@Pipe({\r\n name: 'magicTime24'\r\n})\r\nexport class Time24MagicPipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n\r\n if (typeof value !== \"undefined\" && value !== null && mask !== null) {\r\n\r\n const date = new Date(value);\r\n const hours = date.getHours().toString().padStart(2, '0');\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const seconds = date.getSeconds().toString().padStart(2, '0');\r\n\r\n if(mask.length == 5){\r\n return `${hours}:${minutes}`;\r\n }else if(mask.length > 5){\r\n return `${hours}:${minutes}:${seconds}`;\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DynamicModule } from 'ng-dynamic-component';\r\nimport { NoControlMagicDirective } from './ui/directives/magic/nocontrol.magic.directive';\r\nimport { MagicOverlayContainer } from './ui/magic-modal/magic-overlay-container';\r\nimport { RouterContainerMagicComponent } from './ui/router-container.magic.component';\r\nimport { MgformatMagicDirective } from './ui/directives/mgformat.magic.directive';\r\nimport { DateMagicPipe } from './ui/pipes/date.magic.pipe';\r\nimport { TimeMagicPipe } from './ui/pipes/time.magic.pipe';\r\nimport { RangeValidatorMagicDirective } from './ui/directives/range-validator.magic.directive';\r\nimport { SubformMagicComponent } from './ui/subform.magic.component';\r\nimport { ErrorMagicComponent } from './ui/mgerror.magic.component';\r\nimport { CheckboxMagicDirective } from './ui/directives/magic/checkbox.magic.directive';\r\nimport { ComboboxMagicDirective } from './ui/directives/magic/combobox.magic.directive';\r\nimport { MagicShellComponent } from './ui/magic-root.component';\r\nimport { MagicCheckboxControlValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive';\r\nimport { MagicDefaultValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/default.cva.directive';\r\nimport { MagicDirective } from './ui/directives/magic.directive';\r\nimport { TaskBaseMagicComponent } from './ui/task-base.magic.component';\r\nimport { RowMagicDirective } from './ui/directives/magic/row.magic.directive';\r\nimport { CheckboxNoFormControlMagicDirective } from './ui/directives/magic/checkbox-noformcontrol.magic.directive';\r\nimport { InputNoFormControlMagicDirective } from './ui/directives/magic/input.noformcontrol.magic.directive';\r\nimport { DateValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/date.cva.directive';\r\nimport { OverlayContainerMagicProvider } from './services/overlay.conainer.magic.provider';\r\nimport { MagicOverlayContainerWrapper } from './ui/magic-modal/magic-overlay-container-wrapper';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NonMagicControlDirective } from './ui/directives/NonMagicControlDirective';\r\nimport { MagicAlertComponent } from './ui/components/magic-alert.component';\r\nimport { ConfirmationComponentsMagicProvider } from './services/confirmation.components.magic.provider';\r\nimport { MagicConfirmationBoxComponent } from './ui/components/magic-confirmation-box.component';\r\nimport { MagicFocusDirective } from './ui/directives/magic-focus.directive';\r\nimport { BaseMagicAlertComponent } from './ui/components/base-magic-alert.component';\r\nimport { BaseMagicConfirmComponent } from './ui/components/base-magic-confirm.component';\r\nimport { MagicViewContainerRef } from './ui/directives/magicViewContainerRef.directive';\r\nimport { MaskitoModule } from \"@maskito/angular\";\r\nimport { Time24MagicPipe } from \"./ui/pipes/time24.magic.pipe\";\r\n/**\r\n * @ignore\r\n */\r\nconst decs = [\r\n MagicDirective,\r\n CheckboxMagicDirective,\r\n CheckboxNoFormControlMagicDirective,\r\n InputNoFormControlMagicDirective,\r\n ComboboxMagicDirective,\r\n RowMagicDirective,\r\n\r\n MagicCheckboxControlValueAccessor,\r\n MagicDefaultValueAccessor,\r\n DateValueAccessor,\r\n TaskBaseMagicComponent,\r\n MagicOverlayContainer,\r\n MagicAlertComponent,\r\n MagicConfirmationBoxComponent,\r\n BaseMagicAlertComponent,\r\n BaseMagicConfirmComponent,\r\n MagicOverlayContainerWrapper,\r\n RouterContainerMagicComponent,\r\n MagicShellComponent,\r\n SubformMagicComponent,\r\n ErrorMagicComponent,\r\n NoControlMagicDirective,\r\n\r\n MgformatMagicDirective,\r\n DateMagicPipe,\r\n TimeMagicPipe,\r\n RangeValidatorMagicDirective,\r\n NonMagicControlDirective,\r\n MagicFocusDirective,\r\n MagicViewContainerRef,\r\n Time24MagicPipe\r\n\r\n\r\n];\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\r\n declarations: [...decs],\r\n exports : [...decs,MaskitoModule],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n DynamicModule,\r\n HttpClientModule\r\n ],\r\n //Customizable providers\r\n providers:[ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider]\r\n})\r\nexport class MagicModule {\r\n\r\n}\r\n","import {MAT_DATE_LOCALE, NativeDateAdapter} from '@angular/material/core';\r\nimport { formatDate } from '@angular/common';\r\nimport {TaskMagicService} from \"./task.magics.service\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\n\r\nexport const MG_FORMATS = {\r\n parse: {dateInput: {month: 'short', year: 'numeric', day: 'numeric'}},\r\n display: {\r\n dateInput: 'input',\r\n monthYearLabel: {year: 'numeric', month: 'short'},\r\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\r\n monthYearA11yLabel: {year: 'numeric', month: 'long'}\r\n }\r\n};\r\n\r\n\r\n@Injectable()\r\nexport class MgDateAdapter extends NativeDateAdapter {\r\n public mgdtfmt: string = null;\r\n constructor(\r\n protected task: TaskMagicService,\r\n @Inject(MAT_DATE_LOCALE) public localeId: string\r\n ) {\r\n\r\n super(localeId);\r\n this.setLocale(localeId);\r\n }\r\n\r\n parse (value: any) : Date | null\r\n {\r\n let valueStr: string = value;\r\n let date = 0, month = 0, year = 0;\r\n let mgDateMask: string = this.mgdtfmt;\r\n let sep = valueStr.indexOf('/') > 0 ? '/' : '-';\r\n\r\n if (value == null || value == \"\") return null;\r\n if (this.mgdtfmt == null && this.task.mgInputDateFormat != null)\r\n this.mgdtfmt = this.task.mgInputDateFormat;\r\n if ((this.mgdtfmt.indexOf('MMM') > 0) || (this.mgdtfmt.indexOf('MMMM') > 0))\r\n return new Date(value);\r\n if (mgDateMask !== null) {\r\n for (let i=0; i < mgDateMask.length;) {\r\n switch (mgDateMask[i]) {\r\n case 'd': {\r\n let tmpStr: string;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n if (len > -1)\r\n valueStr = valueStr.substr(len+1);\r\n for (;mgDateMask[i] == 'd'; i++);\r\n date = (Number)(tmpStr);\r\n }\r\n break;\r\n case 'M': {\r\n let tmpStr: string;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n\r\n if (len > -1)\r\n valueStr = valueStr.substr(len+1);\r\n\r\n for (; mgDateMask[i] == 'M' ;i++);\r\n month = (Number)(tmpStr) > 0 ? (Number)(tmpStr)- 1 : 0;\r\n }\r\n break;\r\n case 'y': {\r\n let tmpStr;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n if (len > -1) {\r\n valueStr = valueStr.substr(len + 1);\r\n }\r\n for (; mgDateMask[i] == 'y' ;i++);\r\n year = (Number)(tmpStr);\r\n }\r\n break;\r\n default:\r\n i++;\r\n break;\r\n }\r\n }\r\n\r\n if (month == 0 && year == 0 && date == 0)\r\n return null;\r\n return new Date(year, month, date);\r\n }\r\n\r\n}\r\n\r\nformat(date: Date, displayFormat: Object): string {\r\n if (this.mgdtfmt == null && this.task.mgInputDateFormat != null)\r\n this.mgdtfmt = this.task.mgInputDateFormat;\r\n if (displayFormat === 'input') {\r\n if (this.mgdtfmt == null)\r\n this.mgdtfmt = 'M/d/yyyy'; //default format\r\n return formatDate(date,this.mgdtfmt,this.locale);\r\n } else {\r\n return date.toDateString();\r\n }\r\n }\r\n}\r\n\r\n","import { MagicServices } from \"./magic.services\";\r\nimport { TaskMagicService } from \"./task.magics.service\";\r\nimport { SubformMagicService } from \"./subform.magic.service\";\r\nimport { TableMagicService } from \"./table.magic.service\";\r\nimport { TitleMagicService } from \"./title.magic.service\";\r\nimport { AccessorMagicService } from \"./accessor.magic.service\";\r\nimport {MgDateAdapter, MG_FORMATS} from \"./mg-date-adapter\";\r\nimport {DateAdapter, MAT_DATE_FORMATS} from '@angular/material/core';\r\n\r\nexport const matDateProviders = [\r\n {provide: DateAdapter, useClass: MgDateAdapter},\r\n {provide: MAT_DATE_FORMATS, useValue: MG_FORMATS}\r\n];\r\n\r\n\r\n/**\r\n * Magic service providers\r\n */\r\nexport const basicMagicProviders = [\r\n MagicServices,\r\n TaskMagicService,\r\n SubformMagicService,\r\n TitleMagicService,\r\n AccessorMagicService,\r\n matDateProviders,\r\n];\r\n\r\n\r\n\r\n export const magicProviders = [\r\n ...basicMagicProviders,\r\n TableMagicService\r\n];\r\n","/**\r\n * @ignore\r\n */\r\n///////////////////////////////////////////////////////////\r\n// class to hold gui-related helper methods\r\n///////////////////////////////////////////////////////////\r\nexport class utils {\r\n\r\n ///////////////////////////////////////////////////////////\r\n // Calculate the distance between the control and the supplied x,y coordinates\r\n ///////////////////////////////////////////////////////////\r\n static getDistance(control: Element, x: number, y: number): number {\r\n\r\n let left = control.clientLeft, top = control.clientTop;\r\n\r\n let dx, dy: number;\r\n const right = left + control.clientWidth;\r\n const bottom = top + control.clientHeight;\r\n\r\n if (x < left) {\r\n dx = left - x;\r\n } else if (x > right) {\r\n dx = x - right;\r\n } else {\r\n dx = 0;\r\n }\r\n\r\n if (y < top) {\r\n dy = top - y;\r\n } else if (y > bottom) {\r\n dy = y - bottom;\r\n } else {\r\n dy = 0;\r\n }\r\n const ret = (dx * dx + dy * dy)\r\n return ret;\r\n }\r\n\r\n ///////////////////////////////////////////////////////////\r\n //\r\n ///////////////////////////////////////////////////////////\r\n static getDimentions(el) {\r\n let xPos = 0;\r\n let yPos = 0;\r\n let width = el.width;\r\n let height = el.height;\r\n\r\n while (el) {\r\n if (el.tagName == \"BODY\") {\r\n // deal with browser quirks with body/window/document and page scroll\r\n let xScroll = el.scrollLeft || document.documentElement.scrollLeft;\r\n let yScroll = el.scrollTop || document.documentElement.scrollTop;\r\n\r\n xPos += (el.offsetLeft - xScroll + el.clientLeft);\r\n yPos += (el.offsetTop - yScroll + el.clientTop);\r\n } else {\r\n // for all other non-BODY elements\r\n xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);\r\n yPos += (el.offsetTop - el.scrollTop + el.clientTop);\r\n }\r\n\r\n el = el.offsetParent;\r\n\r\n }\r\n return {\r\n x: xPos,\r\n y: yPos,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n}\r\n","/**\r\n * @ignore\r\n */\r\nexport class ModalFormDefinition {\r\n taskId: string = \"\";\r\n comp: any = null;\r\n parameters: any = {};\r\n}\r\n"],"names":["i1.EngineMagicService","i1.TaskMagicService","i3.ComponentListMagicService","i4.CommandsCollectorMagicService","i5.RouterCommandsMagicService","i6.MagicLazyLoaderService","i1","i2.EngineMagicService","i3.TaskMagicService","i4.ComponentListMagicService","i5.CommandsCollectorMagicService","i6.RouterCommandsMagicService","i1.ComponentListMagicService","i2.MagicLazyLoaderService","i3.MagicLazyLoaderService","i4.OverlayContainerMagicProvider","i5.ConfirmationComponentsMagicProvider","i2.OverlayWindowService","i2.TaskMagicService","i2.MagicColorService","i2.SubformMagicService","i3.TableMagicService","i4.TitleMagicService","i5.AccessorMagicService","i1.MagicServices","i2","i3.RowMagicDirective","i1.MagicDirective","i1.SubformMagicService","i2.AccessorMagicService","i2.ComponentListMagicService","i3","i4.OverlayWindowService","i5","i6.CommandsCollectorMagicService","i7","i8.ExitMagicService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"magic-xpa-angular.mjs","sources":["../../../../projects/angular/src/controls.metadata.model.ts","../../../../projects/angular/src/services/StylesMapManager.ts","../../../../projects/angular/src/services/engine.magic.service.ts","../../../../projects/angular/src/services/component-list.magic.service.ts","../../../../projects/angular/src/services/commands-collector.magic.service.ts","../../../../projects/angular/src/services/router-commands.magic.service.ts","../../../../projects/angular/src/services/magic.lazy.loader.service.ts","../../../../projects/angular/src/services/subform.magic.service.ts","../../../../projects/angular/src/ui/router-container.magic.component.ts","../../../../projects/angular/src/ui/GuiInteractiveExecutor.ts","../../../../projects/angular/src/ui/magic-modal/base-magic-overlay-container.ts","../../../../projects/angular/src/ui/directives/magicViewContainerRef.directive.ts","../../../../projects/angular/src/ui/magic-modal/magic-overlay-container.ts","../../../../projects/angular/src/services/overlay.conainer.magic.provider.ts","../../../../projects/angular/src/ui/components/base-magic-confirm.component.ts","../../../../projects/angular/src/ui/components/base-magic-alert.component.ts","../../../../projects/angular/src/ui/directives/magic-focus.directive.ts","../../../../projects/angular/src/ui/magic-modal/magic-overlay-container-wrapper.ts","../../../../projects/angular/src/ui/components/magic-alert.component.ts","../../../../projects/angular/src/ui/components/magic-confirmation-box.component.ts","../../../../projects/angular/src/services/confirmation.components.magic.provider.ts","../../../../projects/angular/src/ui/magic-confirmationBox.ts","../../../../projects/angular/src/services/OverlayWindowService.ts","../../../../projects/angular/src/services/task.magics.service.ts","../../../../projects/angular/src/services/table.magic.service.ts","../../../../projects/angular/src/services/title.magic.service.ts","../../../../projects/angular/src/services/magic-color.service.ts","../../../../projects/angular/src/services/accessor.magic.service.ts","../../../../projects/angular/src/services/magic.services.ts","../../../../projects/angular/src/ui/task-base.magic.component.ts","../../../../projects/angular/src/ui/directives/magic/row.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/nocontrol.magic.directive.ts","../../../../projects/angular/src/ui/pipes/date.magic.pipe.ts","../../../../projects/angular/src/ui/directives/mgformat.magic.directive.ts","../../../../projects/angular/src/ui/pipes/time.magic.pipe.ts","../../../../projects/angular/src/ui/directives/range-validator.magic.directive.ts","../../../../projects/angular/src/ui/subform.magic.component.ts","../../../../projects/angular/src/ui/mgerror.magic.component.ts","../../../../projects/angular/src/ui/directives/magic/checkbox.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/combobox.magic.directive.ts","../../../../projects/angular/src/services/exit.magic.service.ts","../../../../projects/angular/src/ui/magic-root.component.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.ts","../../../../projects/angular/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/input.noformcontrol.magic.directive.ts","../../../../projects/angular/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.ts","../../../../projects/angular/src/ui/directives/NonMagicControlDirective.ts","../../../../projects/angular/src/ui/pipes/time24.magic.pipe.ts","../../../../projects/angular/src/magic.core.module.ts","../../../../projects/angular/src/services/mg-date-adapter.ts","../../../../projects/angular/src/services/magic.providers.ts","../../../../projects/angular/src/ui/utils.ts","../../../../projects/angular/src/ui/magic-modal/magic-modal-form.ts","../../../../projects/angular/index.ts","../../../../projects/angular/magic-xpa-angular.ts"],"sourcesContent":["import {StorageAttribute} from \"@magic-xpa/utils\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\nimport {HtmlProperties, CustomValidator} from \"@magic-xpa/gui\";\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class ControlMetadata {\r\n controlType: string;\r\n dataType: StorageAttribute;\r\n properties: Map<HtmlProperties, any> = new Map();\r\n classesMap: Map<HtmlClasses, any> = new Map();\r\n stylesMap: Map<HtmlClasses, any> = new Map();\r\n removedClass: string;\r\n classes: string ;\r\n rangeValidator: boolean;\r\n\r\n // user properties\r\n userProperties: Map<string, any> = new Map();\r\n\r\n customValidators: Map<string, CustomValidator> = new Map();\r\n\r\n setClass(key, value) {\r\n // for no-control - hold the name of the class to be removed later\r\n if(this.classesMap.has(key)) {\r\n this.removedClass = this.classesMap.get(key);\r\n }\r\n\r\n this.classesMap.set(key, value);\r\n let result = '';\r\n\r\n for (let value of this.classesMap) {\r\n result += value + ' ';\r\n }\r\n this.classes = result;\r\n\r\n }\r\n\r\n setStyle(key, value) {\r\n this.stylesMap.set(key, value);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class ControlsMetadata {\r\n\r\n //values of control\r\n values: Map<string, string> = new Map();\r\n // dictionary of controls with there properties\r\n ControlsProperties: Map<string, ControlMetadata> = new Map();\r\n\r\n rowId: string;\r\n isCreated = false;\r\n isEditing = false;\r\n\r\n get Values(){\r\n return this.values;\r\n }\r\n\r\n getControlMetadata(controlId: string) {\r\n if (!this.ControlsProperties.has(controlId))\r\n this.ControlsProperties.set(controlId, new ControlMetadata());\r\n return this.ControlsProperties.get(controlId);\r\n }\r\n\r\n\r\n\r\n update(obj:any) {\r\n //should we keep the values here ?\r\n //this.values = obj.ControlsValues;\r\n let props: { [id: string]: { [id: string]: string; } } = obj.ControlsMetaData;\r\n for (let controlName in props) {\r\n if (!this.ControlsProperties.has(controlName))\r\n this.ControlsProperties.set(controlName, new ControlMetadata());\r\n let controlMetaData: ControlMetadata = this.ControlsProperties.get(controlName);\r\n for (let property in obj.ControlsMetaData[controlName].Properties)\r\n controlMetaData[property] = obj.ControlsMetaData[controlName].Properties[property];\r\n controlMetaData.controlType = obj.ControlsMetaData[controlName].Type;\r\n }\r\n for (let controlName in obj.ControlsValues) {\r\n this.setValue(controlName, obj.ControlsValues[controlName]);\r\n }\r\n }\r\n\r\n setValue(controlName: string, value: any): void {\r\n this.values.set(controlName, value);\r\n }\r\n\r\n getProperty(controlId: string, prop: HtmlProperties) {\r\n if (this.ControlsProperties.has(controlId)) {\r\n if (this.ControlsProperties.get(controlId).properties.has(prop)) {\r\n return this.ControlsProperties.get(controlId).properties.get(prop);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n getValue(controlName: string){\r\n return this.values.get(controlName);\r\n }\r\n\r\n\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class Records {\r\n data: Map<number, ControlsMetadata> = new Map();\r\n list: ControlsMetadata[] = []; //used for sequential access in table\r\n includesFirst: boolean;\r\n includesLast: boolean;\r\n guiTopIndex: number;\r\n recordsBeforeCurrentView: number = 0;\r\n isEmptyDataView: boolean = false;\r\n sizeUpdated: boolean = false; //used for evaluating the RecordsSizeChange.\r\n\r\n getRow(dvRowId: number): ControlsMetadata {\r\n return this.list[dvRowId + this.recordsBeforeCurrentView];\r\n }\r\n\r\n markRowAsCreated(guiRowId: number): void {\r\n if (guiRowId < this.list.length) {\r\n this.addRow(guiRowId);\r\n this.data.get(guiRowId).isCreated = true;\r\n }\r\n }\r\n\r\n markRowAsNotCreated(guiRowId: number): void {\r\n if (guiRowId < this.list.length)\r\n this.data.get(guiRowId).isCreated = false;\r\n }\r\n\r\n\r\n isRowCreated(guiRowId: number): boolean {\r\n if (guiRowId < this.list.length) {\r\n if (!this.data.has(guiRowId) || isNullOrUndefined(this.data.get(guiRowId)))\r\n return false;\r\n else\r\n return this.data.get(guiRowId).isCreated;\r\n }\r\n return false;\r\n }\r\n\r\n /*\r\n * for row editing\r\n * */\r\n startRowEditing(guiRowId: number): void {\r\n if (guiRowId < this.list.length && this.data.has(guiRowId))\r\n this.data.get(guiRowId).isEditing = true;\r\n }\r\n\r\n /*\r\n * stop row editing on row Id\r\n * */\r\n stopRowEditing(guiRowId: number): void {\r\n if (guiRowId < this.list.length && this.data.has(guiRowId))\r\n this.data.get(guiRowId).isEditing = false;\r\n }\r\n\r\n /*\r\n * return if row is in editing\r\n * Called by the HTML code, so parameter is a string, not a numebr\r\n * */\r\n isRowInRowEditing(guiRowId: string): boolean {\r\n if (+guiRowId < this.list.length) {\r\n if (!this.data.has(+guiRowId) || isNullOrUndefined(this.data.get(+guiRowId)))\r\n return false;\r\n else\r\n return this.data.get(+guiRowId).isEditing;\r\n }\r\n return false;\r\n }\r\n\r\n update(obj) {\r\n\r\n if (obj.fullRefresh && obj.rows.length != this.list.length) {\r\n this.data = new Map();\r\n this.list = new Array<ControlsMetadata>();\r\n }\r\n for (let rowId in obj.rows) {\r\n if (!this.data.has(+rowId) || this.data.get(+rowId) === null)\r\n this.data.set(+rowId, new ControlsMetadata());\r\n let controlsData: ControlsMetadata = this.data.get(+rowId);\r\n controlsData.update(obj.rows[rowId]);\r\n controlsData.rowId = rowId;\r\n }\r\n for (var [key, value] of this.data) {\r\n this.list[key] = value;\r\n }\r\n\r\n }\r\n\r\n updateSize(len: number) {\r\n if (this.list.length != len) {\r\n if (len < this.list.length) {\r\n //remove rows\r\n for (let i = len; i < this.list.length; i++) {\r\n this.data.delete(i);\r\n }\r\n\r\n }\r\n this.list.length = len;\r\n this.sizeUpdated = true;\r\n\r\n }\r\n }\r\n\r\n\r\n /**\r\n * crears data for the first record\r\n * @param template\r\n */\r\n clearFirstTableRecord(template: { [id: string]: string; }) {\r\n if (this.list.length >= 1) {\r\n for (const key in template) {\r\n if (template[key] == '1' && this.list[0].ControlsProperties.has(key)) {\r\n this.list[0].ControlsProperties.get(key).properties = new Map() ;\r\n }\r\n }\r\n }\r\n }\r\n\r\n addRow(guiRowId: number) {\r\n if (guiRowId !== 0 || !this.data.has(guiRowId) || isNullOrUndefined(this.data.get(guiRowId))) {\r\n this.data.set(guiRowId, new ControlsMetadata());\r\n this.data.get(guiRowId).rowId = \"\"+guiRowId;\r\n this.list[guiRowId] = this.data.get(guiRowId);\r\n }\r\n }\r\n\r\n createFirst() {\r\n this.addRow(0);\r\n }\r\n\r\n fromJson(data: string) {\r\n var obj = JSON.parse(data);\r\n this.update(obj);\r\n }\r\n\r\n setGuiTopIndex(topIndex: number) {\r\n this.guiTopIndex = topIndex;\r\n }\r\n\r\n getGuiTopIndex(): number {\r\n return this.guiTopIndex;\r\n }\r\n\r\n}\r\n\r\n /**\r\n * @ignore\r\n */\r\nexport enum HtmlClasses {\r\n Color = \"color\",\r\n font = \"font\",\r\n FocusColor=\"focuscolor\",\r\n HintColor=\"hintcolor\",\r\n}\r\n","import {MagicProperties} from \"@magic-xpa/utils\"\r\nimport {NString, isNullOrUndefined} from \"@magic-xpa/mscorelib\"\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class StylesMapManager {\r\n static StylesMap: Map<string, any> = new Map<string, any>(\r\n [\r\n [MagicProperties.LineDivider, new Map<any, any>([[true, \"solid\"], [false, \"hidden\"]])],\r\n [MagicProperties.ImageFile, \"url('\\{0}\\')\"],\r\n [MagicProperties.Wallpaper, \"url('\\{0}\\')\"]\r\n ]\r\n );\r\n\r\n static MagicPropertyToHtmlAttributeMap: Map<string, string> = new Map<string, string>(\r\n [\r\n [MagicProperties.LineDivider, \"border-bottom-style\"],\r\n [MagicProperties.ImageFile, \"background-image\"],\r\n [MagicProperties.Wallpaper, \"background-image\"]\r\n ]\r\n );\r\n\r\n static magicValueGetStyle(styleName: string, magicValue: any): string {\r\n let style: string = \"\";\r\n\r\n if (!isNullOrUndefined(magicValue)) {\r\n let value = StylesMapManager.StylesMap.get(styleName);\r\n if (value.constructor === Map) {\r\n style = value.get(magicValue);\r\n }\r\n else if (value.constructor === String) {\r\n style = NString.Format(value.toString(), magicValue);\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\n\r\nimport {IGuiEvent, MagicBridge} from \"@magic-xpa/engine\";\r\nimport {GuiCommand, GuiInteractive} from \"@magic-xpa/gui\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EngineMagicService {\r\n magicBridge = MagicBridge;\r\n isStub = false;\r\n // true when user is logged in magic\r\n isLoggedIn = false;\r\n //TODO - unregister\r\n refreshDom: Subject<GuiCommand> = new Subject();\r\n interactiveCommands: Subject<GuiInteractive> = new Subject();\r\n\r\n startMagicEngine(httpClient: HttpClient, args: Map<string, string>) {\r\n this.magicBridge.registerExecuteCommandsCallback(data => {\r\n if (!this.isStub) {\r\n try {\r\n const list = data as GuiCommand[];\r\n for (let c of list) {\r\n this.refreshDom.next(c);\r\n }\r\n }\r\n catch (e) {\r\n console.dir(e);\r\n console.log('magic engine not found');\r\n console.log('moving to stub mode');\r\n this.isStub = true;\r\n }\r\n }\r\n });\r\n\r\n this.magicBridge.registerInteractiveCallback(data => {\r\n if (!this.isStub) {\r\n this.interactiveCommands.next(data);\r\n }\r\n });\r\n\r\n this.magicBridge.Initialize(httpClient, args);\r\n }\r\n\r\n async terminateMagic(): Promise<void> {\r\n await this.magicBridge.TerminateMagic();\r\n }\r\n\r\n insertEvent(guiEvent: IGuiEvent): void {\r\n if (!this.isStub)\r\n this.magicBridge.insertEvent(guiEvent);\r\n }\r\n\r\n GetRangedValue(taskId: string, controlName: string, value: string): string {\r\n return this.magicBridge.GetRangedValue(taskId, controlName, value);\r\n }\r\n\r\n GetControlPictureMask(taskId: string, controlName: string): any {\r\n return this.magicBridge.GetControlPictureMask(taskId, controlName);\r\n }\r\n\r\n GetFormattedValue(taskId: string, controlName: string, value: any, rowId?: string): any {\r\n return this.magicBridge.GetFormattedValue(taskId, controlName, value, rowId);\r\n }\r\n\r\n ValidateControlValue(taskId: string, controlName: string, value: any): string {\r\n return this.magicBridge.ValidateControlValue(taskId, controlName, value);\r\n }\r\n\r\n GetFldRanges(taskId: string, controlName: string): string {\r\n return this.magicBridge.GetFldRanges(taskId, controlName);\r\n }\r\n\r\n saveData(data:string)\r\n {\r\n //this.magicBridge.saveData(data);\r\n }\r\n\r\n getIsLoggedIn():boolean{\r\n return this.isLoggedIn;\r\n }\r\n\r\n setIsLoggedIn(setIsLoggedIn: boolean){\r\n this.isLoggedIn = setIsLoggedIn;\r\n }\r\n\r\n TransCacheExists(): boolean {\r\n return this.magicBridge.TransCacheExists();\r\n }\r\n\r\n TerminateContextUsingFetchAPI(): void {\r\n this.magicBridge.TerminateContextUsingFetchAPI();\r\n }\r\n}\r\n","import { Injectable, NgModuleRef } from '@angular/core';\r\n\r\n\r\nexport interface ComponentData {\r\n component:any;\r\n moduleRef:NgModuleRef<any>;\r\n}\r\n\r\nexport interface ModuleData {\r\n moduleName: string;\r\n modulePath: string;\r\n}\r\n\r\n/**\r\n * Manages the list of components in a project, and the project title\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ComponentListMagicService{\r\n\r\n /**\r\n * Map of project components\r\n */\r\n components = new Map<string,ComponentData>();\r\n /**\r\n * Map of project dialogs\r\n */\r\n dialogs = new Map<string,any>();\r\n\r\n lazyLoadModulesMap = null;\r\n\r\n getData(name:string, mustHaveData: boolean){\r\n let data :ComponentData= null;\r\n\r\n let haveData: boolean =this.components.has(name);\r\n if (!haveData && mustHaveData) {\r\n console.log(\"Error: Component: \" + name + \" does not exist in components map\");\r\n }\r\n\r\n if (haveData)\r\n data = this.components.get(name)\r\n\r\n return data;\r\n }\r\n\r\n\r\n /**\r\n * Return a component according to name\r\n * @param name Name of requested component\r\n * @returns The requested component\r\n */\r\n getComponent(name:string, mustHaveData:boolean = true){\r\n let data: ComponentData = this.getData(name, mustHaveData)\r\n return data ? data.component : null;\r\n }\r\n\r\n addComponents(componentList:any , modulRef?:NgModuleRef<any>){\r\n for(let key in componentList){\r\n let data :ComponentData = {moduleRef:modulRef, component:componentList[key]};\r\n this.components.set(key,data);\r\n }\r\n }\r\n\r\n /**\r\n * Return a component according to name\r\n * @param name Name of requested component\r\n * @returns The requested component\r\n */\r\n getModuleRef (name:string){\r\n let data: ComponentData = this.getData(name, false)\r\n return data ? data.moduleRef : null;;\r\n }\r\n\r\n /**\r\n * Return the lazy load module details of the specified component\r\n * @param name: Name of requested component\r\n * @returns: lazy load module details\r\n */\r\n getLazyLoadModuleData (name:string): ModuleData {\r\n return (this.lazyLoadModulesMap != null && this.lazyLoadModulesMap.hasOwnProperty(name)) ? this.lazyLoadModulesMap[name] : null;\r\n }\r\n\r\n/**\r\n * Project title\r\n */\r\n title : string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EngineMagicService } from './engine.magic.service';\r\nimport { GuiCommand } from '@magic-xpa/gui';\r\nimport { List } from '@magic-xpa/mscorelib';\r\nimport { Logger } from '@magic-xpa/utils';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommandsCollectorMagicService {\r\n private count: number = 0;\r\n private commands: List<GuiCommand> = new List<GuiCommand>();\r\n private subscription: Subscription = null;\r\n\r\n constructor(protected magic: EngineMagicService) {\r\n }\r\n\r\n startCollecting() {\r\n this.count++;\r\n Logger.Instance.WriteDevToLog(\"CommandsCollectorMagicService.startCollecting() --- \" + this.count);\r\n\r\n if (this.subscription === null) {\r\n this.subscription = this.magic.refreshDom\r\n .subscribe(command => {\r\n this.commands.push(command);\r\n });\r\n }\r\n }\r\n\r\n stopCollecting() {\r\n this.count--;\r\n Logger.Instance.WriteDevToLog(\"CommandsCollectorMagicService.stopCollecting() --- \" + this.count);\r\n\r\n if (this.count === 0) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n }\r\n\r\n GetCommands(taskId: string): GuiCommand[] {\r\n const commands: GuiCommand[] = this.commands.filter( (command: GuiCommand) => command.TaskTag === taskId);\r\n commands.forEach(command => { this.commands.Remove(command); });\r\n\r\n return commands;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { List,isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport { ISubformMagicService } from './ISubformMagicService';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class RouteCommand {\r\n callerMgSubformServiceRef: ISubformMagicService;\r\n routerOutletName: string;\r\n formName: string;\r\n parameters: any;\r\n routeParams: List<any>;\r\n}\r\n/**\r\n * @ignore\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouterCommandsMagicService {\r\n private pendingRouteCommands: RouteCommand[] = [];\r\n\r\n AddRouteCommand (routeCommand: RouteCommand) {\r\n this.pendingRouteCommands.push(routeCommand);\r\n }\r\n\r\n ExecuteNextCommand() {\r\n let pendingRouteCommand: RouteCommand = this.pendingRouteCommands.shift();\r\n\r\n if (!isNullOrUndefined(pendingRouteCommand)) {\r\n pendingRouteCommand.callerMgSubformServiceRef.ExecuteRouteCommand(pendingRouteCommand);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn : 'root'\r\n})\r\nexport class MagicLazyLoaderService {\r\n Load(path: string): Promise<any> {\r\n return Promise.reject('error in loading module :' + path);\r\n }\r\n}\r\n","import { Compiler, Component, Injectable, Injector, NgModuleRef } from '@angular/core';\nimport { TaskMagicService } from './task.magics.service';\nimport { List, isNullOrUndefined } from '@magic-xpa/mscorelib';\nimport { GuiCommand } from '@magic-xpa/gui';\nimport {ComponentListMagicService, ModuleData} from './component-list.magic.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CommandsCollectorMagicService } from './commands-collector.magic.service';\nimport { RouteDefinition } from '../interfaces/sub-form-definition.iterface';\nimport { RouteCommand, RouterCommandsMagicService } from '../services/router-commands.magic.service';\nimport { ISubformMagicService } from './ISubformMagicService';\nimport { RouterContainerMagicComponent } from '../ui/router-container.magic.component';\nimport { MagicLazyLoaderService } from './magic.lazy.loader.service';\n\n\n/**\n * Service for managing subforms and routing\n */\n@Injectable()\nexport class SubformMagicService implements ISubformMagicService{\n\n subformsDict /*:{ [x: string]: SubformDefinition }*/ = {};\n routesDict: { [x: string]: string } = {}; // dictionary of router outlet to router path\n currentRouteDefinition: RouteDefinition = null;\n\n static currentCallerMgSubformServiceRef: any = null;\n\n static routerContainers: Array<RouterContainerMagicComponent> = new Array();\n\n constructor(private task: TaskMagicService,\n protected activatedRoute: ActivatedRoute,\n protected componentList: ComponentListMagicService,\n protected pendingCommandsCollector: CommandsCollectorMagicService,\n protected router: Router,\n protected routerCommandsMagicService: RouterCommandsMagicService,\n private componentListMagicService: ComponentListMagicService,\n private loader: MagicLazyLoaderService,\n private injector: Injector,\n private compiler: Compiler) {\n }\n\n /**\n * Finds and returns the component according to the subform name\n * @param subformName\n * @returns\n */\n mgGetComp(subformName: string): Component {\n if (subformName in this.subformsDict) {\n let formName: string = this.subformsDict[subformName].formName;\n if (formName)\n return this.componentList.getComponent(formName);\n }\n return null;\n }\n\n /**\n * Returns the parameters of the subform\n * @param subformName\n * @returns\n */\n mgGetParameters(subformName: string): any {\n if (subformName in this.subformsDict) {\n return this.subformsDict[subformName].parameters;\n }\n else\n return '';\n }\n\n /**\n * @ignore\n */\n deleteSubformComp (subformControlName: string, formName: string) {\n\n if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0)\n {\n if (this.subformsDict[subformControlName].formName === formName) {\n\n this.subformsDict[subformControlName] = {};\n this.task.refreshView();\n }\n }\n }\n\n /**\n * @ignore\n */\n addSubformComp (subformControlName: string, formName: string, taskId: string, taskDescription: any, routerPath: string, params: List<any>, inDefaultOutlet: boolean) {\n this.pendingCommandsCollector.startCollecting();\n\n let refreshNeeded = false;\n if (isNullOrUndefined(routerPath)) { // call in destination subform\n if (Object.keys(this.subformsDict).indexOf(subformControlName) >= 0)\n {\n if (this.subformsDict[subformControlName].formName === formName) {\n\n this.subformsDict[subformControlName] = {};\n this.task.refreshView();\n }\n }\n\n // Load the lazy load module, if needed\n let moduleRef: NgModuleRef<any> = this.componentListMagicService.getModuleRef(formName);\n\n if (moduleRef == null) {\n let lazyLoadModule: ModuleData = this.componentListMagicService.getLazyLoadModuleData(formName);\n\n if (lazyLoadModule != null) {\n const Magic: string = 'Magic';\n const Module: string = 'Module';\n\n // extract name of module(XX) from 'MagicXXModule'\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\n this.loader.Load(moduleName).then( m => {\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\n moduleRef = compiled.ngModuleFactory.create(this.injector);\n this.subformsDict[subformControlName] = {\n formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription}\n };\n this.task.refreshView();\n });\n }\n }\n else {\n this.subformsDict[subformControlName] = {\n formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription}\n };\n //this.ref.detectChanges();\n refreshNeeded = true;\n }\n }\n else { // call route\n if (inDefaultOutlet)\n subformControlName = 'primary';\n\n let routeParams: List<any> = new List();\n routeParams.push(routerPath);\n if (params !== null) {\n routeParams = <List<any>>routeParams.concat(params);\n }\n\n let routeCommand: RouteCommand = {\n callerMgSubformServiceRef: this,\n routerOutletName: subformControlName,\n formName: formName,\n parameters: {taskIdParam: taskId, taskDescription: taskDescription},\n routeParams: routeParams\n };\n\n // If SubformMagicService.currentCallerMgSubformServiceRef !== null means that router.navigate() is already\n // called once, but angular has not yet executed it (ngOnInit of the new component is not called).\n // In such a case, do not executed router.navigate() again. Because, angular ignores the previous one.\n // So, put a command in the queue which will be executed after the first one is executed.\n if (SubformMagicService.currentCallerMgSubformServiceRef === null)\n this.ExecuteRouteCommand(routeCommand);\n else\n this.routerCommandsMagicService.AddRouteCommand(routeCommand);\n }\n if ( refreshNeeded)\n this.task.refreshView();\n }\n\n /**\n * Open the subform using a route command\n */\n ExecuteRouteCommand(routeCommand: RouteCommand)\n {\n let currentSubformMagicService: SubformMagicService = <SubformMagicService>routeCommand.callerMgSubformServiceRef;\n let relativeRoute = SubformMagicService.getRelativeRoute(currentSubformMagicService.activatedRoute);\n\n if (currentSubformMagicService.routesDict[routeCommand.routerOutletName] === routeCommand.routeParams[0])\n {\n // If the specified router outlet already hosts the same router path, router.navigate() doesn't actually navigate.\n // So, first clear the outlet (passing null route params, clears the outlet) and then navigate again.\n currentSubformMagicService.router.navigate([{outlets: {[routeCommand.routerOutletName]: null}}], {relativeTo: relativeRoute})\n .then((result:boolean) => {\n SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;\n currentSubformMagicService.currentRouteDefinition = {\n formName: routeCommand.formName,\n parameters: routeCommand.parameters\n };\n\n currentSubformMagicService.PerformRouterNavigate(routeCommand.routerOutletName, routeCommand.routeParams);\n });\n }\n else {\n SubformMagicService.currentCallerMgSubformServiceRef = currentSubformMagicService;\n currentSubformMagicService.currentRouteDefinition = {\n formName: routeCommand.formName,\n parameters: routeCommand.parameters\n };\n\n if (SubformMagicService.routerContainers.length > 0) {\n let routeContainer = SubformMagicService.routerContainers[0];\n SubformMagicService.routerContainers.shift();\n routeContainer.initializeComponent();\n }\n else {\n currentSubformMagicService.PerformRouterNavigate(routeCommand.routerOutletName, routeCommand.routeParams);\n }\n }\n }\n\n private PerformRouterNavigate(routerOutletName: string, routeParams: List<any>)\n {\n let relativeRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\n\n this.router.navigate([{ outlets: { [routerOutletName]: routeParams } }], { relativeTo: relativeRoute })\n .then((result:boolean)=> {\n if (result !== null && !result) {\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\n subformMagicService.currentRouteDefinition = null;\n\n SubformMagicService.currentCallerMgSubformServiceRef = null;\n subformMagicService.pendingCommandsCollector.stopCollecting();\n subformMagicService.routerCommandsMagicService.ExecuteNextCommand();\n }\n }\n );\n }\n\n /**\n * @ignore\n */\n init()\n {\n // If commands were issued for this task before ngOnInit(), they were not executed because task had not registered for them.\n // So, execute them now.\n const pendingCommands: GuiCommand[] = this.pendingCommandsCollector.GetCommands(this.task.taskId);\n if (pendingCommands.length > 0) {\n pendingCommands.forEach(command => {this.task.executeCommand(command);});\n this.task.refreshView();\n }\n\n this.pendingCommandsCollector.stopCollecting();\n }\n\n /**\n * @ignore\n */\n refreshView() {\n this.task.refreshView();\n }\n\n ///\n // return the relative route\n //\n static getRelativeRoute(sendActivatedRoute: ActivatedRoute){\n let currentActiveRoute = sendActivatedRoute;\n if (currentActiveRoute.snapshot.routeConfig !== null && currentActiveRoute.snapshot.routeConfig.path === '') {\n currentActiveRoute = currentActiveRoute.parent;\n if (!currentActiveRoute.snapshot.routeConfig.loadChildren)\n console.log('getRelativeRoute(): both path and currentActiveRoute.snapshot.routeConfig.loadChildren are empty.');\n }\n return currentActiveRoute;\n }\n}\n","import { Component, OnInit, ViewContainerRef } from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport { TaskBaseMagicComponent } from './task-base.magic.component';\r\nimport { EngineMagicService } from '../services/engine.magic.service';\r\nimport { getGuiEventObj, IGuiEvent } from '@magic-xpa/engine';\r\nimport { List } from '@magic-xpa/mscorelib';\r\nimport { StrUtil } from '@magic-xpa/utils';\r\nimport { ComponentListMagicService } from '../services/component-list.magic.service';\r\nimport { SubformMagicService } from '../services/subform.magic.service';\r\nimport { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';\r\nimport { RouterCommandsMagicService } from '../services/router-commands.magic.service';\r\nimport { TaskMagicService } from '../services/task.magics.service';\r\n\r\n/**\r\n * Mock component, implements routing by connecting the requested URL with the appropriate Magic task\r\n */\r\n@Component({\n selector: 'magic-route-outlet',\n template: `\r\n `,\n standalone: false\n})\r\nexport class RouterContainerMagicComponent implements OnInit {\r\n private componentRef = null;\r\n private parentMgSubformService: SubformMagicService = null;\r\n private static lastRoute: string = \"/\";\r\n\r\n static get LastRoute(): string {\r\n return RouterContainerMagicComponent.lastRoute;\r\n }\r\n\r\n /**\r\n *\r\n * @param changeDetectorRef\r\n * @param activatedRoute\r\n * @param magic\r\n * @param componentFactoryResolver\r\n * @param viewContainerRef\r\n * @param componentList\r\n * @param pendingCommandsCollector\r\n */\r\n constructor(private activatedRoute: ActivatedRoute,\r\n protected router: Router,\r\n protected magic: EngineMagicService,\r\n private containerTaskService: TaskMagicService,\r\n private viewContainerRef: ViewContainerRef,\r\n private componentList: ComponentListMagicService,\r\n protected pendingCommandsCollector: CommandsCollectorMagicService,\r\n protected routerCommandsMagicService: RouterCommandsMagicService) {}\r\n\r\n /**\r\n * Initialization\r\n */\r\n ngOnInit() {\r\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\r\n\r\n let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n\r\n RouterContainerMagicComponent.lastRoute = this.router.url;\r\n\r\n if (subformMagicService == null || subformMagicService.currentRouteDefinition === null) {\r\n this.insertRouteEvent(currentActiveRoute);\r\n\r\n SubformMagicService.routerContainers.push(this);\r\n }\r\n else {\r\n this.initializeComponent();\r\n }\r\n }\r\n\r\n private insertRouteEvent(currentActiveRoute: ActivatedRoute) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('RouterNavigate', null, 0);\r\n guiEvent.RouterPath = currentActiveRoute.snapshot.routeConfig.path;\r\n\r\n if (currentActiveRoute.snapshot.outlet !== 'primary')\r\n guiEvent.RouterOutletName = currentActiveRoute.snapshot.outlet;\r\n\r\n\r\n // if this is LoadOnDemandModuleMagicComponent it's mean that this is load on demand module and we\r\n // need to take the path form routeConfig.path\r\n\r\n let calcRouterPath: string = currentActiveRoute.routeConfig.path;\r\n // add the RouterPath only if exist\r\n if (calcRouterPath.length > 0)\r\n {\r\n let routerPath: string = calcRouterPath;\r\n let tokens: string[] = StrUtil.tokenize(routerPath, \"/:\");\r\n guiEvent.RouterPath = tokens[0];\r\n\r\n guiEvent.RouterParams = new List();\r\n for (let i = 1; i < tokens.length; i++) {\r\n guiEvent.RouterParams.push(currentActiveRoute.snapshot.params[tokens[i]]);\r\n }\r\n }\r\n\r\n this.containerTaskService.insertEvent(guiEvent);\r\n }\r\n\r\n initializeComponent() {\r\n // re-init subformMagicService since it may change after executing \"RouterNavigate\" event.\r\n let subformMagicService: SubformMagicService = SubformMagicService.currentCallerMgSubformServiceRef;\r\n if (subformMagicService.currentRouteDefinition !== null) {\r\n let comp = this.componentList.getComponent(subformMagicService.currentRouteDefinition.formName);\r\n this.componentRef = this.viewContainerRef.createComponent(comp);\r\n Object.assign(this.componentRef.instance, subformMagicService.currentRouteDefinition.parameters);\r\n\r\n\r\n let myActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n\r\n let routeParams: string[] = StrUtil.tokenize(myActiveRoute.snapshot.routeConfig.path, \"/:\");\r\n subformMagicService.routesDict[myActiveRoute.snapshot.outlet] = routeParams[0];\r\n\r\n this.parentMgSubformService = subformMagicService;\r\n subformMagicService.currentRouteDefinition = null;\r\n SubformMagicService.currentCallerMgSubformServiceRef = null;\r\n\r\n //When the component is initialized, then also we get the notification for paramMap subscription.\r\n //But in this case, we do not have to raise the event, because magic engine itself has initiated the route with the same parameters.\r\n //So, control it via ignoreParamChange flag.\r\n let ignoreParamChange = true;\r\n myActiveRoute.paramMap.subscribe(params => {\r\n if (!ignoreParamChange)\r\n this.insertRouteEvent(myActiveRoute);\r\n ignoreParamChange = false;\r\n });\r\n\r\n this.parentMgSubformService.refreshView();\r\n\r\n this.routerCommandsMagicService.ExecuteNextCommand();\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy() {\r\n // TODO Routing: Call close() only if the task is not already closed.\r\n // Task can be closed when a router is overlayed by another task via call operation.\r\n if (this.componentRef != null)\r\n {\r\n (<TaskBaseMagicComponent>this.componentRef.instance).task.close();\r\n\r\n let currentActiveRoute = SubformMagicService.getRelativeRoute(this.activatedRoute);\r\n this.parentMgSubformService.routesDict[currentActiveRoute.outlet] = \"\";\r\n\r\n RouterContainerMagicComponent.lastRoute = this.router.url;\r\n }\r\n }\r\n\r\n}\r\n","import {GuiInteractive, HtmlProperties, InteractiveCommandType} from '@magic-xpa/gui';\r\nimport {TaskBaseMagicComponent} from './task-base.magic.component';\r\nimport {isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport {TaskMagicService} from '../services/task.magics.service';\r\nimport {OverlayWindowService} from '../services/OverlayWindowService';\r\nimport {RouterContainerMagicComponent} from \"./router-container.magic.component\";\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class GuiInteractiveExecutor {\r\n command: GuiInteractive;\r\n component: TaskBaseMagicComponent;\r\n task: TaskMagicService;\r\n overlayService: OverlayWindowService;\r\n\r\n\r\n Run(): void {\r\n // Sets the currentContextID\r\n try {\r\n switch (this.command._commandType) {\r\n\r\n case InteractiveCommandType.GET_VALUE:\r\n this.onValue();\r\n break;\r\n\r\n case InteractiveCommandType.GET_ROWS_IN_PAGE:\r\n this.onGetRowsInPage();\r\n break;\r\n case InteractiveCommandType.GET_MAX_ROWS_IN_PAGINATED_TABLE:\r\n this.onGetMaxRowsInPaginatedTable();\r\n break;\r\n case InteractiveCommandType.MESSAGE_BOX:\r\n this.OnMessageBox();\r\n break;\r\n case InteractiveCommandType.GET_TOP_INDEX:\r\n this.OnGetTopIndex();\r\n break;\r\n case InteractiveCommandType.GET_IS_ROW_EDITING:\r\n this.OnGetIsRowEditing();\r\n break;\r\n case InteractiveCommandType.SET_TITLE:\r\n this.OnSetTitle();\r\n break;\r\n case InteractiveCommandType.REFRESH_PAGE:\r\n this.OnRefreshPage();\r\n break;\r\n case InteractiveCommandType.GET_LAST_ROUTE:\r\n this.OnGetLastRoute();\r\n break;\r\n case InteractiveCommandType.OPEN_FORM:\r\n this.OnOpenForm();\r\n break;\r\n }\r\n } catch (ex) {\r\n throw ex;\r\n //want to see all the exceptions for now\r\n }\r\n }\r\n\r\n\r\n public static executeInteractiveCommand(task: TaskMagicService, guiIntactiveCommand: GuiInteractive, overlayService: OverlayWindowService) {\r\n let executor = new GuiInteractiveExecutor();\r\n executor.task = task;\r\n executor.command = guiIntactiveCommand;\r\n executor.overlayService = overlayService;\r\n executor.Run();\r\n }\r\n\r\n private onValue(): void {\r\n let guiRowId: number = this.task.getGuiRowId(+this.command._line, this.task.isTableControl(this.command.controlName) || this.command._obj2.IsTableChild);\r\n let result = this.task.getFormControl(guiRowId.toString(), this.command.controlName);\r\n let val: any;\r\n if (!isNullOrUndefined(result)) {\r\n val = result.value;\r\n } else if (this.task.isTableControl(this.command.controlName))\r\n val = this.task.getValue(this.command.controlName, guiRowId.toString());\r\n\r\n // If this is Three State Checkbox, then check if value is indeterminate.\r\n if(this.command._boolVal){\r\n const indeterminate = this.task.getProperty(this.command.controlName,HtmlProperties.CheckBoxIndeterminate,guiRowId.toString());\r\n if(indeterminate)\r\n val = null;\r\n }\r\n\r\n val = this.task.ConvertValToNative(this.command.controlName, guiRowId, val);\r\n\r\n this.command._mgValue.obj = val;\r\n }\r\n\r\n private onGetRowsInPage(): void {\r\n this.command._intVal1 = this.task.tableService.getPageSize();\r\n if (this.task.oldPageSize == 0)\r\n this.task.oldPageSize = this.command._intVal1;\r\n }\r\n\r\n private onGetMaxRowsInPaginatedTable(): void {\r\n this.command._intVal1 = this.task.tableService.getMaxRowsInTable();\r\n }\r\n\r\n private OnMessageBox() {\r\n this.overlayService.openConfirmationBox(this.command._mgValue.title, this.command._mgValue.str, this.command._mgValue.style);\r\n }\r\n\r\n private OnOpenForm(): void {\r\n if (this.command._boolVal)\r\n this.overlayService.loadAndOpenModule(this.command.controlName, this.command._mgValue.str, this.command._mgValue.path);\r\n }\r\n\r\n private OnSetTitle() {\r\n this.task.setTitle(this.command._mgValue.title);\r\n }\r\n\r\n private OnRefreshPage() {\r\n let navigateToRootRoute = this.command._boolVal;\r\n let initialUrl:string = this.command._obj1;\r\n if (navigateToRootRoute)\r\n window.location.replace (initialUrl);\r\n else\r\n window.location.reload();\r\n }\r\n\r\n private OnGetTopIndex(): void {\r\n this.command._intVal1 = this.task.tableService.getTableTopIndex();\r\n }\r\n\r\n private OnGetIsRowEditing(): void {\r\n let dvRowIndex: number = this.command._intVal1;\r\n let guiRowIndex: number = this.task.getGuiRowId(dvRowIndex, true);\r\n let isLineMode: boolean = this.command._boolVal;\r\n\r\n if (isLineMode && (isNullOrUndefined(guiRowIndex) || isNullOrUndefined(this.task.Records.list[guiRowIndex])))\r\n this.command._boolVal = false;\r\n else\r\n this.command._boolVal = this.task.Records.list[guiRowIndex].isEditing;\r\n }\r\n\r\n private OnGetLastRoute(): void {\r\n this.command.resultString = RouterContainerMagicComponent.LastRoute;\r\n }\r\n}\r\n","import { Input, Output } from \"@angular/core\";\r\n@Input()\r\n@Output()\r\nexport abstract class BaseMagicOverlayContainer {\r\n /**\r\n *\r\n */\r\n @Input() abstract ModalComp;\r\n\r\n /**\r\n *\r\n */\r\n @Input() abstract ModalCompParameters: any;\r\n\r\n /**\r\n *\r\n */\r\n @Output() abstract onClose;\r\n}\r\n","import { Directive, ViewContainerRef } from \"@angular/core\";\nimport { IMagicViewContainerRef } from \"../../interfaces/sub-form-definition.iterface\";\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\n\n/**\n * Directive for setting ViewContainerRef on element\n */\n@Directive({\n selector: '[magicViewContainerRef]',\n standalone: false\n})\nexport class MagicViewContainerRef {\n constructor(private vcRef: ViewContainerRef) {\n // For angular 10 - find the component from the views\n let comp = ((<any>this.vcRef)._hostLView).find(v => v as IMagicViewContainerRef != null && !isNullOrUndefined((v as IMagicViewContainerRef).setViewContainerRef));\n comp.setViewContainerRef(vcRef);\n }\n}\n\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MagicModalInterface } from './magic-modal-interface';\r\nimport { isNullOrUndefined } from '@magic-xpa/mscorelib';\r\nimport { BaseMagicOverlayContainer } from './base-magic-overlay-container';\r\nimport { IMagicViewContainerRef } from '../../..';\r\n\r\n/**\r\n * Creates a modal window for Magic modal window components\r\n */\r\n@Component({\n selector: 'app-magic-overlay-container',\n template: `\r\n <div>\r\n <div class=\"modal-background\" (click)=\"OnBackgroundClick()\">\r\n <button (click)=\"OnClose()\" tabindex=\"-1\" style=\"float:right; border: none; background-color: transparent; outline: none; color: white\" *ngIf=\"!getShowTitleBar()\">X</button>\r\n </div>\r\n <div #modalForeground class=\"modal-foreground\" [ngStyle]=\"getStyle()\">\r\n <div #modalheader class=\"modal-header\" *ngIf=\"getShowTitleBar()\">\r\n {{getText()}}\r\n <button (click)=\"OnClose()\" style=\"float:right\" tabindex=\"-1\">X</button>\r\n </div>\r\n <div [ngStyle]=\"getClientAreaStyles()\">\r\n <div #modalbody magicViewContainerRef>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\n styleUrls: ['./magic-overlay-container.css'],\n standalone: false\n})\r\nexport class MagicOverlayContainer extends BaseMagicOverlayContainer implements OnInit , IMagicViewContainerRef{\r\n /**\r\n * HTML to be displayed in the modal window\r\n */\r\n modalbodyViewContainerRef : ViewContainerRef;\r\n\r\n /**\r\n * Header of the modal window\r\n */\r\n @ViewChild('modalheader', { static: false }) headerElementRef: ElementRef;\r\n /**\r\n * Foreground of the modal window\r\n */\r\n @ViewChild('modalForeground', { static: false }) foregroundElementRef: ElementRef;\r\n\r\n /**\r\n *\r\n */\r\n @Input() ModalComp = null;\r\n /**\r\n *\r\n */\r\n @Input() ModalCompParameters: any = {};\r\n\r\n @Output() onClose = new EventEmitter<void>();\r\n\r\n /**\r\n *\r\n */\r\n private componentRef = null;\r\n\r\n /**\r\n *\r\n * @param injector\r\n * @param componentFactoryResolver\r\n */\r\n constructor(\r\n\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n this.componentRef = this.modalbodyViewContainerRef.createComponent(this.ModalComp);\r\n Object.assign(this.componentRef.instance, this.ModalCompParameters);\r\n }\r\n\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.modalbodyViewContainerRef = vcRef;\r\n }\r\n\r\n\r\n /**\r\n * Returns the form name\r\n * @returns\r\n */\r\n getText() {\r\n if (this.componentRef !== null) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n return comp.FormName();\r\n }\r\n else\r\n return '';\r\n }\r\n\r\n /**\r\n * Returns CSS styles for the window\r\n * @returns\r\n */\r\n getStyle() {\r\n let styles = {};\r\n if (this.componentRef != undefined) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n\r\n styles['width'] = comp.Width();\r\n styles['height'] = comp.Height();\r\n\r\n if (comp.IsCenteredToWindow()) {\r\n styles['margin'] = 'auto';\r\n }\r\n else {\r\n styles['margin-left'] = comp.X() + 'px';\r\n styles['margin-top'] = comp.Y() + 'px';\r\n }\r\n }\r\n return styles;\r\n }\r\n\r\n /**\r\n * Returns the CSS styles for the client area\r\n * @returns\r\n */\r\n getClientAreaStyles() {\r\n let styles = {};\r\n if (this.componentRef != undefined) {\r\n const headerHeight = this.getShowTitleBar() && !isNullOrUndefined(this.headerElementRef) ? (this.headerElementRef.nativeElement.offsetHeight + 1) : 0;\r\n if (!isNullOrUndefined(this.foregroundElementRef)) {\r\n const foregroundHeight = this.foregroundElementRef.nativeElement.offsetHeight;\r\n styles['height'] = (foregroundHeight - headerHeight) + 'px';\r\n\r\n const foregroundWidth = this.foregroundElementRef.nativeElement.offsetWidth;\r\n styles['width'] = (foregroundWidth) + 'px';\r\n }\r\n styles['overflow'] = 'auto';\r\n }\r\n return styles;\r\n }\r\n\r\n /**\r\n * Should the title bar be displayed\r\n * @returns\r\n */\r\n getShowTitleBar() {\r\n if (this.componentRef != undefined) {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n return comp.ShowTitleBar();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n */\r\n OnClose() {\r\n this.onClose.emit();\r\n }\r\n\r\n /**\r\n * Handles click in the background window\r\n */\r\n OnBackgroundClick() {\r\n let comp: MagicModalInterface = this.componentRef.instance as MagicModalInterface;\r\n\r\n if (comp.ShouldCloseOnBackgroundClick())\r\n this.OnClose();\r\n }\r\n}\r\n","/**\r\n * Service managing overlay windows\r\n * This is Magic's default provider\r\n */\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MagicOverlayContainer } from \"../ui/magic-modal/magic-overlay-container\";\r\n\r\n@Injectable()\r\nexport class OverlayContainerMagicProvider {\r\n getComponent() {\r\n return MagicOverlayContainer;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n\n/**\n * This is a base class for the magic confirm components\n */\n@Component({\n selector: 'mg-base-confirm',\n template: '',\n styles: [''],\n standalone: false\n})\nexport class BaseMagicConfirmComponent {\n\n /**\n * title of the component\n */\n @Input() title: string;\n\n /**\n * message of the component\n */\n @Input() message: string;\n\n /**\n * onClose Event - to be raised when the component is closed\n * should pass true when OK is pressed and false when cancel is pressed\n */\n @Output() onClose = new EventEmitter<boolean>();\n\n\n /**\n * raises close Event\n * @param result true when OK is pressed and false when cancel is pressed\n *\n */\n OnClose(result) {\n this.onClose.emit(result);\n }\n}\n","\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\n\n/**\n * This is a base class for the magic alert components\n */\n@Component({\n selector: 'mg-base-alert',\n template: '',\n styles: [''],\n standalone: false\n})\nexport class BaseMagicAlertComponent {\n\n\n /**\n * title of the component\n */\n @Input() title: string;\n\n /**\n * message of the component\n */\n @Input() message: string;\n\n /**\n * onClose Event - to be raised when the component is closed\n\n */\n @Output() onClose = new EventEmitter<void>();\n\n\n\n /**\n * close magic alert\n */\n OnClose() {\n this.onClose.emit();\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\n\n/**\n * Directive for setting focus on element\n */\n@Directive({\n selector: '[magicFocus]',\n standalone: false\n})\nexport class MagicFocusDirective {\n\n constructor(private hostElement: ElementRef) {}\n ngAfterViewInit() {\n this.hostElement.nativeElement.focus();\n }\n\n}\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n ElementRef, NgModuleRef,\r\n Injector, ChangeDetectorRef, Compiler\r\n} from '@angular/core';\r\nimport { BaseMagicOverlayContainer } from \"./base-magic-overlay-container\";\r\nimport { BaseMagicConfirmComponent } from \"../components/base-magic-confirm.component\";\r\nimport { BaseMagicAlertComponent } from \"../components/base-magic-alert.component\";\r\nimport { OverlayType } from \"@magic-xpa/gui\";\r\nimport { ComponentListMagicService, ModuleData } from \"../../services/component-list.magic.service\";\r\nimport { IMagicViewContainerRef } from \"../../..\";\r\nimport {isNullOrUndefined} from '@magic-xpa/mscorelib';\r\nimport { MagicLazyLoaderService } from '../../services/magic.lazy.loader.service';\r\n\r\n\r\n@Component({\n selector: 'app-magic-overlay-container-wrapper',\n template: `\r\n <div>\r\n <div class=\"overlay-container-wrapper-background\" tabIndex=\"0\" style=\"width: 0px; height: 0px;\" magicFocus></div>\r\n <div class=\"overlay-container-wrapper-background\" #overlayContainerWrapper>\r\n <div #overlayContent magicViewContainerRef>\r\n </div>\r\n </div>\r\n <div class=\"overlay-container-wrapper-background\" tabIndex=\"0\" style=\"width: 0px; height: 0px;\" ></div>\r\n </div>\r\n `,\n styles: [`\r\n .overlay-container-wrapper-background {\r\n /* modal background fixed across whole screen */\r\n position: fixed;\r\n top: 0;\r\n z-index: 999;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n }\r\n `],\n standalone: false\n})\r\nexport class MagicOverlayContainerWrapper implements IMagicViewContainerRef {\r\n /**\r\n *\r\n */\r\n @Input() public Component = null;\r\n /**\r\n *\r\n */\r\n @Input() public Parameters: any = {};\r\n\r\n @Input() private OverlayTypeParam: OverlayType;\r\n\r\n @Output() private onClose = new EventEmitter<void>();\r\n\r\n /**\r\n * HTML to be displayed in the modal window\r\n */\r\n overlayContentViewContainerRef: ViewContainerRef;\r\n\r\n @ViewChild('overlayContainerWrapper', { static: true }) overlayContainerWrapperElementRef: ElementRef;\r\n\r\n /**\r\n * @ignore\r\n * contais data of allowed base components to use\r\n */\r\n static allowedBaseComps = new Map<number, {comp: any, error: string}>([\r\n [OverlayType.Overlay, {comp: BaseMagicOverlayContainer, error:'BaseMagicOverlayContainer . Overlay '}],\r\n [OverlayType.Alert, {comp: BaseMagicAlertComponent, error:'BaseMagicAlertComponent. Alert '}],\r\n [OverlayType.ConfirmationBox, {comp: BaseMagicConfirmComponent, error :'BaseMagicConfirmComponent. Confirmation '}]\r\n ]);\r\n /**\r\n *\r\n * @param componentFactoryResolver\r\n */\r\n constructor(private componentListMagicService: ComponentListMagicService,\r\n private magicLazyModuleLoader: MagicLazyLoaderService,\r\n private injector: Injector,\r\n private changeDetectorRef:ChangeDetectorRef,\r\n private compiler: Compiler) {\r\n }\r\n\r\n /**\r\n *\r\n */\r\n ngOnInit() {\r\n let moduleRef: NgModuleRef<any> = this.componentListMagicService.getModuleRef(this.Parameters.MagicFormName);\r\n\r\n if (moduleRef == null) {\r\n let lazyLoadModule: ModuleData = this.componentListMagicService.getLazyLoadModuleData(this.Parameters.MagicFormName);\r\n\r\n if (lazyLoadModule != null) {\r\n const Magic: string = 'Magic';\r\n const Module: string = 'Module';\r\n\r\n // extract name of module(XX) from 'MagicXXModule'\r\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\r\n this.magicLazyModuleLoader.Load(moduleName).then(m => {\r\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\r\n moduleRef = compiled.ngModuleFactory.create(this.injector);\r\n this.loadComponent(moduleRef);\r\n });\r\n }\r\n else {\r\n this.loadComponent(null);\r\n }\r\n } else\r\n this.loadComponent(moduleRef);\r\n }\r\n\r\n private loadComponent(moduleRef: NgModuleRef<any>) {\r\n this.Parameters.ModalComp = this.componentListMagicService.getComponent(this.Parameters.MagicFormName, !isNullOrUndefined(this.Parameters.MagicFormName));\r\n\r\n\r\n let componentRef = this.overlayContentViewContainerRef.createComponent(this.Component);\r\n let allowedBaseComp = MagicOverlayContainerWrapper.allowedBaseComps.get(this.OverlayTypeParam);\r\n\r\n\r\n if (componentRef.instance instanceof allowedBaseComp.comp) {\r\n Object.assign(componentRef.instance, this.Parameters);\r\n (<any>componentRef.instance).onClose.subscribe((res) => {\r\n this.onClose.emit(res);\r\n });\r\n } else {\r\n let msg = \"Provided window container should subclass of : \" + allowedBaseComp.error + \"window will not work properly.\";\r\n alert(msg);\r\n }\r\n }\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.overlayContentViewContainerRef = vcRef;\r\n }\r\n\r\n GetRootElement(): HTMLElement {\r\n return this.overlayContainerWrapperElementRef.nativeElement;\r\n }\r\n\r\n DetectChanges()\r\n {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { BaseMagicAlertComponent } from './base-magic-alert.component';\n\n\n/***\n * This is sample component for the alert message\n */\n@Component({\n selector: 'sample-magic-alert-component',\n template: `<div>\n <div class=\"mg-message-background\">\n <h2> {{title}}</h2>\n <p>{{message}} </p>\n\n <button (click)=\"OnClose()\">OK</button>\n </div>\n </div>`,\n styles: [`\n .mg-message-background {\n background-color: #F5F5F5;\n text-align: center;\n width: 40%;\n font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding: 17px;\n border-radius: 5px;\n text-align: center;\n margin-top: 10% ;\n margin-left: auto;\n margin-right: auto;\n border: 1px solid gray;\n }\n\n button {\n background-color: #8CD4F5;\n color: white;\n border: none;\n box-shadow: none;\n font-size: 17px;\n font-weight: 500;\n -webkit-border-radius: 4px;\n border-radius: 5px;\n padding: 10px 32px;\n margin: 26px 5px 0 5px;\n cursor: pointer;\n }\n `],\n standalone: false\n})\nexport class MagicAlertComponent extends BaseMagicAlertComponent{\n\n}\n","import { Component } from '@angular/core';\nimport { BaseMagicConfirmComponent } from './base-magic-confirm.component';\n\n/***\n * This is sample component for the confirmation box\n */\n@Component({\n selector: 'sample-magic-confirmation-box',\n template: `<div>\n <div class=\"mg-message-background\">\n <h2> {{title}}</h2>\n {{message}}\n <br>\n <br>\n\n <button (click)=\"OnClose(true)\">OK</button>\n <button class=\"cancel\" (click)=\"OnClose(false)\">Cancel</button>\n </div>\n </div>`,\n styles: [`\n .mg-message-background {\n background-color: #F5F5F5;\n text-align: center;\n width: 40%;\n font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding: 17px;\n border-radius: 5px;\n text-align: center;\n margin-top: 10% ;\n margin-left: auto;\n margin-right: auto;\n border: 1px solid gray;\n }\n\n button {\n background-color: #8CD4F5;\n color: white;\n border: none;\n box-shadow: none;\n font-size: 17px;\n font-weight: 500;\n -webkit-border-radius: 4px;\n border-radius: 5px;\n padding: 10px 32px;\n margin: 26px 5px 0 5px;\n cursor: pointer;\n }\n \n button.cancel {\n background-color: #C1C1C1;\n }\n `],\n standalone: false\n})\nexport class MagicConfirmationBoxComponent extends BaseMagicConfirmComponent {\n\n}\n","/**\r\n * Service managing overlay windows\r\n * This is Magic's default provider\r\n */\r\nimport { Injectable } from \"@angular/core\";\r\nimport { MagicAlertComponent } from '../ui/components/magic-alert.component';\r\nimport { MagicConfirmationBoxComponent } from \"../ui/components/magic-confirmation-box.component\";\r\n\r\n/**\r\n * Service managing alert and confirmation windows\r\n * This is Magic's default provider\r\n */\r\n@Injectable()\r\nexport class ConfirmationComponentsMagicProvider {\r\n\r\n /**\r\n * Return true when use default javascript alert and confirmation or return false to provide custom components\r\n * @returns true is we want to use default javascript alert and confirmation\r\n */\r\n showDefaultConfirmations():boolean{\r\n return true; \r\n }\r\n\r\n /**\r\n * Returns component that will replace javascript alert. The component will be used only if showDefaultConfirmations = false\r\n * @returns component that will replace javascript Alert\r\n */\r\n getAlertComponent() : any {\r\n return MagicAlertComponent;\r\n }\r\n\r\n /**\r\n * Returns component that will replace javascript confirmation box. The component will be used only if showDefaultConfirmations = false\r\n * @returns component that will replace javascript confirmation box\r\n */\r\n getConfirmtionComponent() : any {\r\n return MagicConfirmationBoxComponent;\r\n }\r\n\r\n\r\n\r\n}\r\n","import {Styles} from \"@magic-xpa/gui\";\r\n\r\n/**\r\n * Displays a message-box\r\n */\r\nexport class confirmationBox {\r\n\r\n /**\r\n * @ignore\r\n */\r\n public static isConfirmBox(style : Styles): Boolean{\r\n\r\n // button format mask is in first nibble from right\r\n let buttonMode = <number>style & 0x0F;\r\n\r\n var isConfirm = (buttonMode === Styles.MSGBOX_BUTTON_OK_CANCEL) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_YES_NO_CANCEL) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_YES_NO) ||\r\n (buttonMode === Styles.MSGBOX_BUTTON_RETRY_CANCEL);\r\n\r\n return (isConfirm);\r\n }\r\n\r\n /**\r\n * Converts the result from the HTML window to the expected result type\r\n * @param style Result received from HTML window\r\n * @param okWasPressed Was the \"OK\" pressed\r\n * @returns MessageBox result type\r\n */\r\n public static convertToExcpectedResultBox (style: Styles, okWasPressed: Boolean ): Styles{\r\n\r\n // button format mask is in first nibble from right\r\n let buttonMode = <number>style & 0x0F;\r\n\r\n let retValue = Styles.MSGBOX_RESULT_OK;\r\n\r\n if (buttonMode === Styles.MSGBOX_BUTTON_OK)\r\n retValue = Styles.MSGBOX_RESULT_OK;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_OK_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_OK : Styles.MSGBOX_RESULT_CANCEL;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_ABORT : Styles.MSGBOX_RESULT_RETRY;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_YES_NO_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_YES : Styles.MSGBOX_RESULT_NO;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_YES_NO)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_YES : Styles.MSGBOX_RESULT_NO;\r\n else if (buttonMode === Styles.MSGBOX_BUTTON_RETRY_CANCEL)\r\n retValue = okWasPressed ? Styles.MSGBOX_RESULT_RETRY : Styles.MSGBOX_RESULT_CANCEL;\r\n\r\n return retValue;\r\n }\r\n\r\n /**\r\n * Show a message box as an HTML window\r\n * @param title Title of the message box\r\n * @param message Message that will be display in the message box\r\n * @param style Style that include buttons \\ Icons\r\n * @returns MessageBox result\r\n */\r\n public static showConfirmationBox(title: string, message: string, style: Styles): boolean {\r\n\r\n let okWasPressed = false;\r\n// check if it is confirmation box\r\n let isConfirm = this.isConfirmBox(style);\r\n\r\n // the title will be added to the string and we will add new line after the title\r\n let titleAndString = title + '\\n'+ '\\n' + message;\r\n\r\n if (isConfirm)\r\n okWasPressed = confirm(titleAndString);\r\n else {\r\n alert(titleAndString);\r\n okWasPressed = true;\r\n }\r\n\r\n // return the result from the user\r\n return okWasPressed; \r\n }\r\n}\r\n","import { Component, ComponentRef, Injectable, Injector, ChangeDetectorRef, Compiler,\r\n NgModuleRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {ComponentListMagicService, ModuleData} from \"./component-list.magic.service\";\r\nimport {EngineMagicService} from \"./engine.magic.service\";\r\nimport {IGuiEvent, getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport { OverlayContainerMagicProvider } from \"./overlay.conainer.magic.provider\";\r\nimport { MagicOverlayContainerWrapper } from \"../ui/magic-modal/magic-overlay-container-wrapper\";\r\nimport { ConfirmationComponentsMagicProvider } from \"./confirmation.components.magic.provider\";\r\nimport { OverlayType, Styles } from \"@magic-xpa/gui\";\r\nimport { confirmationBox } from \"../ui/magic-confirmationBox\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\nimport {MagicLazyLoaderService} from \"./magic.lazy.loader.service\";\r\n\r\n\r\n\r\n\r\n/**\r\n * Service managing overlay windows\r\n */\r\n@Injectable({\r\n providedIn:'root'\r\n})\r\nexport class OverlayWindowService {\r\n\r\n constructor(\r\n protected componentList:ComponentListMagicService,\r\n protected engineMagicService: EngineMagicService,\r\n private magicLazyModuleLoader: MagicLazyLoaderService,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private overlayContainerMagicProvider: OverlayContainerMagicProvider,\r\n private confirmationComponentsMagicProvider: ConfirmationComponentsMagicProvider) {\r\n }\r\n\r\n // The view reference of container of overlay window\r\n private overlayWindowsContainerViewRef: ViewContainerRef;\r\n\r\n private overlayWindowFocusManager: OverlayWindowFocusManager = null;\r\n\r\n private changeDetectorRef: ChangeDetectorRef = null;\r\n\r\n init(overlayWindowsContainerViewRef: ViewContainerRef, rootMagicElement: Element, changeDetectorRef: ChangeDetectorRef) {\r\n this.overlayWindowsContainerViewRef = overlayWindowsContainerViewRef;\r\n this.overlayWindowFocusManager = new OverlayWindowFocusManager(rootMagicElement);\r\n this.changeDetectorRef = changeDetectorRef;\r\n }\r\n\r\n loadAndOpenModule (formName: string, taskId: string, taskDescription: string): void {\r\n let moduleRef: NgModuleRef<any> = this.componentList.getModuleRef(formName);\r\n\r\n if (moduleRef == null) {\r\n let lazyLoadModule: ModuleData = this.componentList.getLazyLoadModuleData(formName);\r\n\r\n if (lazyLoadModule != null) {\r\n const Magic: string = 'Magic';\r\n const Module: string = 'Module';\r\n\r\n // extract name of module(XX) from 'MagicXXModule'\r\n const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);\r\n this.magicLazyModuleLoader.Load(moduleName).then(m => {\r\n const compiled = this.compiler.compileModuleAndAllComponentsSync(<any>m[lazyLoadModule.moduleName]);\r\n moduleRef = compiled.ngModuleFactory.create(this.injector);\r\n this.open(formName, taskId, taskDescription);\r\n this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);\r\n });\r\n }\r\n }\r\n else {\r\n this.open(formName, taskId, taskDescription);\r\n this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);\r\n }\r\n }\r\n\r\n open(formName: string, taskId: string, taskDescription: string) {\r\n\r\n // for overlay which are lazy loaded don't find data in component-list\r\n let comp = this.componentList.lazyLoadModulesMap != null && this.componentList.lazyLoadModulesMap.hasOwnProperty(formName) ? null :this.componentList.getComponent(formName);\r\n let parameters = { taskIdParam: taskId, taskDescription: taskDescription };\r\n\r\n let componentRef = this.createModalComponent({ MagicFormName: formName, ModalComp: comp, ModalCompParameters: parameters}, <Component>this.overlayContainerMagicProvider.getComponent(), OverlayType.Overlay);\r\n\r\n componentRef.instance.onClose.subscribe(() => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"close\", null, 0);\r\n guiEvent.TaskID = taskId;\r\n this.engineMagicService.insertEvent(guiEvent);\r\n });\r\n\r\n //using the same changeDetectorRef from root-component\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n close(commandStr: string) {\r\n // Close the overlay by removing the overlay window from its container\r\n this.overlayWindowsContainerViewRef.remove();\r\n this.overlayWindowFocusManager.popDialog();\r\n\r\n let guiEvent1: IGuiEvent = getGuiEventObj(\"dispose\", null, 0);\r\n guiEvent1.TaskID = commandStr;\r\n this.engineMagicService.insertEvent(guiEvent1);\r\n }\r\n\r\n\r\n /**\r\n * Open Confirmation box\r\n * @param title title of the box\r\n * @param msg message\r\n * @param style Magic style\r\n */\r\n openConfirmationBox( title: string, msg: string, style: Styles) {\r\n\r\n //show default confirmations\r\n if (this.confirmationComponentsMagicProvider.showDefaultConfirmations())\r\n {\r\n let res = confirmationBox.showConfirmationBox(title, msg, style);\r\n this.finishConfirmation( style, res);\r\n\r\n }\r\n else\r\n {\r\n //show custom confirmations\r\n let comp = confirmationBox.isConfirmBox(style) ? this.confirmationComponentsMagicProvider.getConfirmtionComponent() :this.confirmationComponentsMagicProvider.getAlertComponent() ;\r\n let overlayType = confirmationBox.isConfirmBox(style)? OverlayType.ConfirmationBox : OverlayType.Alert;\r\n let componentRef = this.createModalComponent({ title: title, message: msg }, comp, overlayType);\r\n\r\n componentRef.instance.onClose.subscribe((res : boolean) => {\r\n this.overlayWindowsContainerViewRef.remove();\r\n this.overlayWindowFocusManager.popDialog();\r\n this.finishConfirmation( style, res);\r\n });\r\n }\r\n }\r\n /**\r\n * This method is called on close of the confirmation\r\n * @param style Magic style\r\n * @param result\r\n */\r\n finishConfirmation(style: Styles, result: boolean ) {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"confirmationClosed\", null, 0);\r\n guiEvent.keyCode = <number>confirmationBox.convertToExcpectedResultBox(style, result);\r\n this.engineMagicService.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * creates a modal component. Can be used for overlay, message box or confirmation box\r\n * @param parameters component's parameters\r\n * @param component components to create\r\n */\r\n private createModalComponent(parameters: any, component: Component, overlayType: OverlayType): ComponentRef<any> {\r\n let componentRef;\r\n let magicModalContainerParameters = {\r\n Component: component,\r\n Parameters: parameters,\r\n OverlayTypeParam: overlayType\r\n\r\n };\r\n\r\n // Create the UI component of modal window\r\n let viewCRef : ViewContainerRef = <ViewContainerRef>this.overlayWindowsContainerViewRef;\r\n componentRef = viewCRef.createComponent(MagicOverlayContainerWrapper);\r\n\r\n // Set the data to newly created component\r\n Object.assign(componentRef.instance, magicModalContainerParameters);\r\n\r\n this.overlayWindowFocusManager.pushDialog(componentRef.instance.GetRootElement());\r\n\r\n componentRef.instance.DetectChanges();\r\n\r\n return componentRef;\r\n }\r\n}\r\n\r\nclass OverlayWindowFocusManager\r\n{\r\n private rootMagicElement: Element = null;\r\n private openDialogList: Array<DialogInfo> = new Array(0);\r\n private ignoreUtilFocusChanges: boolean = false;\r\n private lastFocus = null;\r\n private focusListener = null;\r\n\r\n constructor (rootMagicElement: Element) {\r\n this.rootMagicElement = rootMagicElement;\r\n }\r\n\r\n pushDialog(rootElement: HTMLElement) {\r\n if (this.openDialogList.length === 0) {\r\n this.focusListener = this.trapFocus.bind(this);\r\n document.addEventListener('focus', this.focusListener, true);\r\n }\r\n\r\n this.openDialogList.push(new DialogInfo(rootElement, (document.activeElement instanceof HTMLElement ? <HTMLElement>document.activeElement : null)));\r\n }\r\n\r\n popDialog() {\r\n const dialogInfo = this.openDialogList.pop();\r\n this.attemptFocus(dialogInfo.FocusElementOnClose);\r\n\r\n if (this.openDialogList.length === 0) {\r\n document.removeEventListener('focus', this.focusListener, true);\r\n this.focusListener = null;\r\n }\r\n }\r\n\r\n trapFocus (event) {\r\n if (this.ignoreUtilFocusChanges) {\r\n return;\r\n }\r\n\r\n if (this.openDialogList.length > 0) {\r\n var currentDialog = this.openDialogList[this.openDialogList.length - 1].RootElement;\r\n if (currentDialog.contains(event.target)) {\r\n this.lastFocus = event.target;\r\n }\r\n else {\r\n if (this.rootMagicElement.contains(event.target)) {\r\n this.focusFirstDescendant(currentDialog);\r\n if (this.lastFocus == document.activeElement) {\r\n this.focusLastDescendant(currentDialog);\r\n }\r\n }\r\n this.lastFocus = document.activeElement;\r\n }\r\n }\r\n }\r\n\r\n private focusFirstDescendant (element) {\r\n for (var i = 0; i < element.childNodes.length; i++) {\r\n var child = element.childNodes[i];\r\n if (this.attemptFocus(child) ||\r\n this.focusFirstDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private focusLastDescendant (element) {\r\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\r\n var child = element.childNodes[i];\r\n if (this.attemptFocus(child) ||\r\n this.focusLastDescendant(child)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n private attemptFocus (element) {\r\n if (!this.isFocusable(element)) {\r\n return false;\r\n }\r\n\r\n this.ignoreUtilFocusChanges = true;\r\n try {\r\n element.focus();\r\n }\r\n catch (e) {\r\n }\r\n this.ignoreUtilFocusChanges = false;\r\n return (document.activeElement === element);\r\n };\r\n\r\n private isFocusable (element) {\r\n if (isNullOrUndefined(element))\r\n return false;\r\n\r\n if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)) {\r\n return true;\r\n }\r\n else if (element.tabIndex < 0)\r\n return false;\r\n\r\n if (element.disabled) {\r\n return false;\r\n }\r\n\r\n switch (element.nodeName) {\r\n case 'A':\r\n return !!element.href && element.rel != 'ignore';\r\n case 'INPUT':\r\n return element.type != 'hidden' && element.type != 'file';\r\n case 'BUTTON':\r\n case 'SELECT':\r\n case 'TEXTAREA':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nclass DialogInfo\r\n{\r\n private rootElement: HTMLElement;\r\n private focusElementOnClose: HTMLElement;\r\n\r\n constructor(rootElement: HTMLElement, focusElementOnClose: HTMLElement) {\r\n this.rootElement = rootElement;\r\n this.focusElementOnClose = focusElementOnClose;\r\n }\r\n\r\n get RootElement(): HTMLElement {\r\n return this.rootElement;\r\n }\r\n\r\n get FocusElementOnClose(): HTMLElement {\r\n return this.focusElementOnClose;\r\n }\r\n}\r\n\r\n\r\n","import {EventEmitter, Injectable} from '@angular/core';\r\nimport {AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn} from '@angular/forms';\r\nimport {filter} from 'rxjs/operators';\r\nimport {Subject, Subscription, EMPTY} from 'rxjs';\r\n\r\nimport {isNullOrUndefined, isUndefined} from '@magic-xpa/mscorelib';\r\nimport {StylesMapManager} from './StylesMapManager';\r\n\r\nimport {EngineMagicService} from './engine.magic.service';\r\nimport {ControlMetadata, Records} from '../controls.metadata.model';\r\nimport {CommandType, CustomValidator, GuiCommand, GuiConstants, GuiInteractive, HtmlProperties} from '@magic-xpa/gui';\r\n\r\nimport {NString, StringBuilder} from '@magic-xpa/mscorelib';\r\nimport {StorageAttribute} from '@magic-xpa/utils';\r\nimport {getGuiEventObj, IGuiEvent} from '@magic-xpa/engine';\r\nimport {SubformMagicService} from './subform.magic.service';\r\nimport {TitleMagicService} from './title.magic.service';\r\nimport {AccessorMagicService} from './accessor.magic.service';\r\nimport {GuiInteractiveExecutor} from '../ui/GuiInteractiveExecutor';\r\nimport {OverlayWindowService} from './OverlayWindowService';\r\n\r\n/**\r\n * Main service to connect the UI with the Magic WebCLient\r\n */\r\n@Injectable()\r\nexport class TaskMagicService {\r\n\r\n /**\r\n * Service to provide table-related functionalities\r\n */\r\n public tableService: any;\r\n /**\r\n * Collection of data for all controls\r\n */\r\n Records: any = new Records();\r\n /**\r\n * FormGroup collection for line mode\r\n */\r\n formGroups: Array<FormGroup> = [];\r\n /**\r\n * FormGroup for all controls in screen mode\r\n */\r\n ScreenModeControls: FormGroup;\r\n /**\r\n * @ignore\r\n */\r\n refreshDom: Subject<GuiCommand> = new Subject();\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n /**\r\n * @ignore\r\n */\r\n detectChanges: Subject<any> = new Subject();\r\n /**\r\n * @ignore\r\n */\r\n subscribeInteractiveCommands: Subscription;\r\n\r\n /**\r\n * @ignore\r\n */\r\n interactiveCommands: Subject<GuiInteractive>= new Subject();\r\n\r\n /**\r\n * @ignore\r\n * This event is emitted when the selected row in a table changes.\r\n */\r\n OnSelectedRowChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n /**\r\n * @ignore\r\n */\r\n customPropertiesSubject: Subject<any> = new Subject();\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n recordsCountChangeSubject: Subject<any> = new Subject();\r\n\r\n mgLoadSubject: Subject<any> = new Subject();\r\n\r\n /**\r\n * @ignore\r\n */\r\n public template: { [id: string]: string; };\r\n /**\r\n * Service to provide subform-related functionalities\r\n */\r\n public mgSubformService: SubformMagicService;\r\n /**\r\n * Service to provide the title-change functionality\r\n */\r\n public mgTitleService: TitleMagicService;\r\n /**\r\n * Service which enables getting/setting values from/to the Magic WebClient engine\r\n */\r\n public mgAccessorService: AccessorMagicService;\r\n\r\n public mgInputDateFormat;\r\n\r\n /**\r\n * @ignore\r\n */\r\n oldPageSize = 0;\r\n\r\n /**\r\n *\r\n * @param magic\r\n */\r\n constructor(protected magic: EngineMagicService, private overlayWindowService: OverlayWindowService) {\r\n this.Records.setGuiTopIndex(0);\r\n this.mgInputDateFormat = null;\r\n }\r\n\r\n /**\r\n * returns true if used is logged in\r\n * @returns\r\n */\r\n public getIsLoggenIn(): boolean {\r\n return this.magic.getIsLoggedIn();\r\n }\r\n\r\n /**\r\n * Id of task to which this service refers\r\n */\r\n _taskId: string;\r\n\r\n /**\r\n * returns the task Id\r\n * @returns\r\n */\r\n get taskId() {\r\n return this._taskId;\r\n }\r\n\r\n /**\r\n * Sets the task Id\r\n * @param value the task id to set\r\n */\r\n set taskId(value) {\r\n // debugger;\r\n this._taskId = value;\r\n }\r\n\r\n /**\r\n * Returns the task's data in Screen mode\r\n * @returns\r\n */\r\n get ScreenControlsData() {\r\n return this.Records.list['0'];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n settemplate(value: any) {\r\n this.template = value;\r\n }\r\n\r\n\r\n /**\r\n * Builds the FormControl for each and every control\r\n */\r\n buildScreenModeControls() {\r\n const group: FormGroup = new FormGroup({});\r\n for (const key in this.template) {\r\n\r\n if (this.template[key] == '0') {\r\n let fc = new FormControl('');\r\n this.setStubValue(0, fc, key);\r\n group.addControl(key, fc);\r\n }\r\n }\r\n\r\n this.ScreenModeControls = group;\r\n }\r\n\r\n /**\r\n * Is the control a table control\r\n * @param id Id of the control\r\n * @returns\r\n */\r\n isTableControl(id: string): boolean {\r\n return this.template[id] == '1';\r\n }\r\n\r\n getMgInputDateFormat(): string {return this.mgInputDateFormat;}\r\n\r\n /**\r\n * Returns the FormControl of a control\r\n * @param guiRowid Id of the requested row\r\n * @param id Id of the control\r\n * @returns\r\n */\r\n getFormControl(guiRowid: string, id: string): AbstractControl {\r\n let c: AbstractControl;\r\n let group: FormGroup = this.isTableControl(id) ? this.formGroups[guiRowid] : this.ScreenModeControls;\r\n if (!isNullOrUndefined(group)) {\r\n group.get(id);\r\n c = group.controls[id];\r\n }\r\n return c;\r\n }\r\n\r\n /**\r\n * handle the change of text for input control inside table\r\n * @param guiRowId Id of the row for which the FormControls are built\r\n * set the new value of the formcontrol\r\n */\r\n setInputTextValue(controlId: string, guiRowid: string, val: any) {\r\n this.setValue(controlId, guiRowid, this.ConvertValToNative(controlId, 0, val));\r\n\r\n const fc = this.getFormControl(guiRowid, controlId);\r\n if (!isNullOrUndefined(val))\r\n fc.setValue(val);\r\n }\r\n\r\n /**\r\n * Build the FormControls for a table row\r\n * @param guiRowId Id of the row for which the FormControls are built\r\n */\r\n buildTableRowControls(guiRowId: number) {\r\n\r\n const group: FormGroup = new FormGroup({});\r\n\r\n for (const key in this.template) {\r\n\r\n if (this.template[key] == '1') {\r\n let fc = new FormControl('');\r\n this.setStubValue(guiRowId, fc, key);\r\n group.addControl(key, fc);\r\n }\r\n }\r\n this.formGroups[guiRowId] = group;\r\n }\r\n\r\n\r\n /**\r\n *\r\n * @ignore\r\n */\r\n updateRecordsBeforeCurrentView(value: number) {\r\n this.Records.recordsBeforeCurrentView = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIncludesFirst(value: boolean): void {\r\n this.Records.includesFirst = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIncludesLast(value: boolean): void {\r\n this.Records.includesLast = value;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n markRowAsCreated(guiRowId: number): void {\r\n this.Records.markRowAsCreated(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n markRowAsNotCreated(guiRowId: number): void {\r\n this.Records.markRowAsNotCreated(guiRowId);\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n startRowEditing(guiRowId: number): void {\r\n this.Records.startRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n stopRowEditing(guiRowId: number): void {\r\n this.Records.stopRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isRowInRowEditing(guiRowId: string): boolean {\r\n return this.Records.isRowInRowEditing(guiRowId);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setIsEmptyDataView(isEmpty: boolean) {\r\n if (this.Records.isEmptyDataView !== isEmpty) {\r\n\r\n if (isEmpty)\r\n this.recordsCountChangeSubject.next(0);\r\n\r\n this.Records.isEmptyDataView = isEmpty;\r\n this.tableService.refreshDataSource();\r\n this.refreshView();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize the service to work with the task\r\n * @param taskId Id of the task\r\n * @param taskDescription\r\n */\r\n initTask(taskId, taskDescription) {\r\n this.Records.createFirst();\r\n this.oldPageSize = 0;\r\n if (this.IsStub()) {\r\n this.loadData();\r\n } else {\r\n this.taskId = taskId;\r\n this.settemplate(taskDescription);\r\n }\r\n this.buildScreenModeControls();\r\n\r\n // remove previous subscriptions\r\n if(!isNullOrUndefined(this.subscribeRefreshDom))\r\n this.subscribeRefreshDom.unsubscribe();\r\n if(!isNullOrUndefined(this.subscribeInteractiveCommands))\r\n this.subscribeInteractiveCommands.unsubscribe();\r\n\r\n this.subscribeRefreshDom = this.magic.refreshDom.pipe(filter(command => command.TaskTag === this.taskId))\r\n .subscribe(command => {\r\n // console.log(\"Task \" + command.TaskTag + \"command \" + command.CommandType);\r\n this.executeCommand(command);\r\n });\r\n this.subscribeInteractiveCommands = this.magic.interactiveCommands\r\n .pipe(filter(command => command.TaskTag === this.taskId))\r\n .subscribe(command => {\r\n // console.log(\"Task \" + command.TaskTag + \"command \" + command.CommandType);\r\n this.executeInteractiveCommand(command);\r\n });\r\n\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n refreshView() {\r\n this.detectChanges.next('');\r\n }\r\n\r\n /**\r\n * Insert an event to the Magic WebClient event queue\r\n * @param guiEvent The event to insert\r\n */\r\n insertEvent(guiEvent: IGuiEvent): void {\r\n guiEvent.TaskID = this.taskId;\r\n this.magic.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetControlPictureMask(controlName: string): any {\r\n return this.magic.GetControlPictureMask(this.taskId, controlName);\r\n }\r\n\r\n /**\r\n * Validates the control value, using the Magic WebClient\r\n * @param controlName Id of validated control\r\n * @param value value to be validated\r\n * @returns If validation fails, returns error message, else returns null\r\n */\r\n ValidateControlValue(controlName: string, value: any): string {\r\n return this.magic.ValidateControlValue(this.taskId, controlName, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetRangedValue(controlName: string, value: string): string {\r\n return this.magic.GetRangedValue(this.taskId, controlName, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n GetFldRanges(controlName: string): string {\r\n return this.magic.GetFldRanges(this.taskId, controlName);\r\n }\r\n\r\n /**\r\n * returns the value of a property of the control\r\n * @param controlId Id of control\r\n * @param prop Property\r\n * @param guiRowId Row Id, if applicable\r\n * @returns Property value\r\n */\r\n getProperty(controlId: string, prop: HtmlProperties, guiRowId?: string) {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n if (this.IsStub())\r\n return this.getPropertyStub(this.Records.list[guiRowId], controlId, prop);\r\n else {\r\n let rec = this.Records.list[guiRowId];\r\n if (isNullOrUndefined(rec))\r\n debugger;\r\n else\r\n return this.Records.list[guiRowId].getProperty(controlId, prop);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getPropertyStub(ControlsProperties: any, controlId, prop) {\r\n ControlsProperties = ControlsProperties.ControlsProperties;\r\n if (controlId in ControlsProperties) {\r\n if (prop in ControlsProperties[controlId].properties) {\r\n return ControlsProperties[controlId].properties[prop];\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getStyleStub(ControlsProperties: any, controlId, styleName: string) {\r\n ControlsProperties = ControlsProperties.ControlsProperties;\r\n return ControlsProperties[controlId].stylesMap.get(styleName);\r\n }\r\n\r\n /**\r\n * Return the CSS classes used for this control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns String containing the classes currently defined for this control\r\n */\r\n getClasses(controlId: string, guiRowId?: string): string {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n return this.Records.list[guiRowId].getControlMetadata(controlId).classes;\r\n\r\n }\r\n\r\n /**\r\n * Return the value of a style used for a control\r\n * @param controlId Id of control\r\n * @param styleName Name of style\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of style of the control\r\n */\r\n getStyle(controlId: string, styleName: string, guiRowId?: string): string {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n if (this.IsStub())\r\n return this.getStyleStub(this.Records.list[guiRowId], controlId, styleName);\r\n else {\r\n let magicValue = this.Records.list[guiRowId].getControlMetadata(controlId).stylesMap.get(styleName);\r\n return StylesMapManager.magicValueGetStyle(styleName, magicValue);\r\n }\r\n }\r\n\r\n /**\r\n * Return the value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of the control\r\n */\r\n getValue(controlId: string, guiRowId?: string) {\r\n if (isNullOrUndefined(guiRowId))\r\n guiRowId = '0';\r\n return this.Records.list.length > +guiRowId ? this.Records.list[guiRowId].values[controlId] : '';\r\n\r\n }\r\n\r\n /**\r\n * Return the formatted value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @returns value of the control\r\n */\r\n getFormattedValue(controlName: string, val: any, rowId?: string): string {\r\n\r\n return this.magic.GetFormattedValue(this.taskId, controlName, val, rowId);\r\n }\r\n\r\n /**\r\n * Sets the value of a control\r\n * @param controlId Id of control\r\n * @param guiRowId Row Id, if applicable\r\n * @param value Value to set\r\n */\r\n setValue(controlId: string, guiRowId: string, value: any): void {\r\n return this.Records.list[guiRowId].setValue(controlId, value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n protected executeInteractiveCommand(guiInteractiveCommand: GuiInteractive)\r\n {\r\n GuiInteractiveExecutor.executeInteractiveCommand(this, guiInteractiveCommand, this.overlayWindowService);\r\n this.interactiveCommands.next(guiInteractiveCommand)\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n handleSetProperty(command: GuiCommand, isTableChild: boolean): void {\r\n let controlId = command.CtrlName;\r\n let dvRowId: number = (command.line || 0);\r\n let guiRowId: number = this.getGuiRowId(dvRowId, isTableChild);\r\n let properties: ControlMetadata;\r\n\r\n if (command.Operation === HtmlProperties.SelectedRow) {\r\n if (command.obj1 !== GuiConstants.NO_ROW_SELECTED) {\r\n guiRowId = this.getGuiRowId(command.obj1, true);\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(command.Operation, command.line);\r\n this.tableService.selectRow(guiRowId.toString());\r\n this.OnSelectedRowChanged.emit(guiRowId.toString());\r\n }\r\n } else if (command.Operation === HtmlProperties.Enabled) {\r\n let c = this.getFormControl(guiRowId.toString(), controlId);\r\n if (!isNullOrUndefined(c)) {\r\n if (command.obj1)\r\n c.enable();\r\n else\r\n c.disable();\r\n }\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(command.Operation, command.obj1);\r\n } else {\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.properties.set(<HtmlProperties>command.Operation, command.obj1);\r\n }\r\n }\r\n\r\n\r\n executeCommand(command: GuiCommand): void {\r\n let dvRowId: number = (command.line || 0);\r\n let guiRowId: number = 0;\r\n let controlId = command.CtrlName;\r\n let properties: ControlMetadata;\r\n let isTableChild: boolean = this.isTableControl(controlId);\r\n\r\n // For non-input type controls on table.\r\n if (command.obj !== null)\r\n isTableChild = isTableChild || command.obj.IsTableChild;\r\n\r\n guiRowId = this.getGuiRowId(dvRowId, isTableChild);\r\n\r\n switch (command.CommandType) {\r\n case CommandType.SET_IS_LOGGED_IN:\r\n break;\r\n\r\n case CommandType.SET_TABLE_TOP_INDEX:\r\n this.tableService.setTableTopIndex(command.number);\r\n break;\r\n case CommandType.REFRESH_TASK:\r\n this.tableService.refreshDataSource();\r\n this.refreshView();\r\n\r\n break;\r\n case CommandType.SET_TABLE_ITEMS_COUNT:\r\n if (!isUndefined(command.number)) {\r\n this.tableService.updateTableSize(command.number);\r\n\r\n if (command.number > 0 && this.Records.sizeUpdated &&\r\n !this.Records.isEmptyDataView) {\r\n this.recordsCountChangeSubject.next(command.number);\r\n this.Records.sizeUpdated = false;\r\n }\r\n }\r\n break;\r\n case CommandType.SET_CHUNK_SIZE:\r\n if (!isUndefined(command.number)) {\r\n this.tableService.setChunkSize(command.number);\r\n }\r\n break;\r\n case CommandType.SET_RECORDS_BEFORE_CURRENT_VIEW:\r\n this.updateRecordsBeforeCurrentView(command.number);\r\n break;\r\n\r\n case CommandType.CREATE_TABLE_ROW:\r\n guiRowId = this.getGuiRowId(command.number, true);\r\n this.buildTableRowControls(guiRowId);\r\n this.markRowAsCreated(guiRowId);\r\n break;\r\n\r\n case CommandType.SET_IS_ROW_EDITING:\r\n guiRowId = this.getGuiRowId(command.line, command.value);\r\n this.startRowEditing(guiRowId);\r\n break;\r\n\r\n case CommandType.SET_NOT_IS_ROW_EDITING:\r\n guiRowId = this.getGuiRowId(command.line, command.value);\r\n this.stopRowEditing(guiRowId);\r\n break;\r\n\r\n\r\n case CommandType.UNDO_CREATE_TABLE_ROW:\r\n this.markRowAsNotCreated(this.getGuiRowId(command.number, true));\r\n break;\r\n\r\n\r\n case CommandType.SET_TABLE_INCLUDES_FIRST:\r\n this.setIncludesFirst(command.Bool1);\r\n break;\r\n case CommandType.SET_TABLE_INCLUDES_LAST:\r\n this.setIncludesLast(command.Bool1);\r\n break;\r\n\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command, isTableChild);\r\n if (command.Operation == HtmlProperties.ReadOnly ||\r\n command.Operation == HtmlProperties.ItemsList ||\r\n command.Operation == HtmlProperties.CheckBoxIndeterminate)\r\n this.refreshDom.next(command);\r\n break;\r\n\r\n case CommandType.PROP_SET_USER_PROPERTY:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n // if the property has changed, set the property and raise the subject\r\n if(properties.userProperties.get(command.Operation)!== command.obj1) {\r\n properties.userProperties.set(command.Operation, command.obj1);\r\n // the property name is of format <controlName>~<propertyName>\r\n this.customPropertiesSubject.next({ propertyName: controlId + '~' + command.Operation, value: command.obj1, rowId: guiRowId });\r\n }\r\n break;\r\n\r\n case CommandType.PROP_SET_CUSTOM_VALIDATOR: {\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n\r\n let control = this.getFormControl(guiRowId.toString(), controlId);\r\n if (control != null) {\r\n properties.customValidators.set(command.Operation, command.obj1);\r\n if (control.validator != null)\r\n control.setValidators([control.validator, this.customValidator(guiRowId.toString(), controlId)]);\r\n else\r\n control.setValidators(this.customValidator(guiRowId.toString(), controlId));\r\n\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n break;\r\n\r\n case CommandType.SET_CLASS:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.setClass(command.Operation, command.obj1);\r\n break;\r\n\r\n case CommandType.SET_STYLE:\r\n properties = this.Records.list[guiRowId].getControlMetadata(controlId);\r\n properties.setStyle(command.Operation, command.obj1);\r\n break;\r\n\r\n case CommandType.SET_ATTRIBUTE:\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n properties.dataType = <StorageAttribute>String.fromCharCode(command.number);\r\n break;\r\n\r\n case CommandType.SET_VALUE:\r\n this.Records.list[guiRowId].values[controlId] = command.value;\r\n let c = this.getFormControl(guiRowId.toString(), controlId);\r\n if (!isNullOrUndefined(c)) {\r\n c.setValue(this.ConvertValFromNative(controlId, command.line, command.value));\r\n }\r\n\r\n break;\r\n\r\n case CommandType.CREATE_SUB_FORM:\r\n this.mgSubformService.addSubformComp(command.CtrlName, command.userDropFormat.toString(), command.str, command.fileName, command.contextID, command.params, command.Bool1);\r\n break;\r\n\r\n case CommandType.CLOSE_SUB_FORM:\r\n this.mgSubformService.deleteSubformComp(command.CtrlName, command.userDropFormat.toString());\r\n break;\r\n\r\n case CommandType.SET_EMPTY_DATAVIEW:\r\n this.setIsEmptyDataView(command.Bool1);\r\n break;\r\n\r\n case CommandType.SET_FOCUS:\r\n this.refreshDom.next(command);\r\n break;\r\n\r\n case CommandType.SET_WC_IDLE:\r\n this.mgLoadSubject.next(EMPTY);\r\n break;\r\n }\r\n\r\n }\r\n\r\n /**\r\n custom validator\r\n */\r\n customValidator(rowid: string, id: string): ValidatorFn {\r\n\r\n return (control: AbstractControl): ValidationErrors => {\r\n let controlMetadata: ControlMetadata;\r\n controlMetadata = this.Records.list[rowid].getControlMetadata(id);\r\n for (let key of controlMetadata.customValidators.keys()) {\r\n let validator = controlMetadata.customValidators.get(key);\r\n if (!(<CustomValidator>validator).isValid()) {\r\n return { [key]: true };\r\n }\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n /**\r\n * COnvert a value from Magic format to native format\r\n * @param controlId Id of control\r\n * @param rowId Row Id, if applicable\r\n * @param val Value to convert\r\n * @returns Converted value\r\n */\r\n ConvertValToNative(controlId: string, rowId: number, val: any): any {\r\n\r\n let properties: ControlMetadata;\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n\r\n switch (properties.dataType) {\r\n\r\n case StorageAttribute.BOOLEAN: {\r\n if (typeof val === 'string') {\r\n let ranges: string = this.GetFldRanges(controlId);\r\n let found: number = ranges.indexOf(',');\r\n let trueOption: string = ranges.substr(0, found);\r\n let falseOption: string = ranges.substr(found + 1);\r\n if (NString.Equals(val, trueOption, true))\r\n return true;\r\n else if (NString.Equals(val, falseOption, true))\r\n return false;\r\n else\r\n return val;\r\n } else\r\n return val;\r\n }\r\n\r\n case StorageAttribute.TIME: {\r\n if (typeof val === 'string'){\r\n let idx = val.indexOf(':',0);\r\n let hours: number = +val.substr(0, idx);\r\n let minutes: number = +val.substr(idx+1, 2);\r\n let seconds = 0;\r\n if (val.length > 5) {\r\n idx = val.indexOf(':', idx + 1);\r\n if (idx >= 0)\r\n seconds = +val.substr(idx + 1, 2);\r\n }\r\n if (val.indexOf('PM')>0)\r\n hours += 12;\r\n let dt: Date = new Date();\r\n dt.setHours(hours);\r\n dt.setMinutes(minutes);\r\n dt.setSeconds(seconds);\r\n\r\n\r\n return dt;\r\n } else\r\n return val;\r\n }\r\n\r\n case StorageAttribute.NUMERIC:\r\n if (isUndefined(val))\r\n return val;\r\n else return (val != null) ? (typeof val === 'string') ? val : +val : null;\r\n default:\r\n return val;\r\n }\r\n }\r\n\r\n /**\r\n * Convert a value from native to Magic format\r\n * @param controlId Id of control\r\n * @param rowId Row Id, if applicable\r\n * @param val Value to convert\r\n * @returns Converted value\r\n */\r\n ConvertValFromNative(controlId: string, rowId: number, val: any): any {\r\n\r\n let properties: ControlMetadata;\r\n properties = this.Records.list[0].getControlMetadata(controlId);\r\n\r\n switch (properties.dataType) {\r\n\r\n case StorageAttribute.TIME: {\r\n if (val instanceof Date) {\r\n let str: StringBuilder = new StringBuilder();\r\n let format: string = val.getHours() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getHours().toString());\r\n str.Append(':');\r\n format = val.getMinutes() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getMinutes().toString());\r\n if ( val.getSeconds() > 0) {\r\n str.Append(':');\r\n format = val.getSeconds() > 9 ? '{0}' : '0{0}';\r\n str.AppendFormat(format, val.getSeconds().toString());\r\n }\r\n return str.ToString();\r\n } else\r\n return val;\r\n }\r\n case StorageAttribute.BOOLEAN: {\r\n let properties: ControlMetadata;\r\n properties = this.Records.list['0'].getControlMetadata(controlId);\r\n if (typeof val === 'boolean' && properties.rangeValidator) {\r\n let ranges: string = this.GetFldRanges(controlId);\r\n let found: number = ranges.indexOf(',');\r\n let trueOption: string = ranges.substr(0, found);\r\n let falseOption: string = ranges.substr(found + 1);\r\n if (val)\r\n return trueOption;\r\n else\r\n return falseOption;\r\n } else\r\n return val;\r\n }\r\n\r\n default:\r\n return val;\r\n }\r\n }\r\n\r\n /**\r\n * Handle resize and also fetch chunk of records if having an empty view.\r\n * @ignore\r\n * @param pageSize : PageSize\r\n * @param topGuiRowId : GuiRowId of first record in view.\r\n */\r\n resize(pageSize: number, topGuiRowId: number): void {\r\n let guiEvent: IGuiEvent = getGuiEventObj('resize', 'table', 0);\r\n guiEvent.PageSize = pageSize;\r\n\r\n //As 'getRows' event also gets executed, set the guiEvent.Line parameter.\r\n guiEvent.Line = topGuiRowId;\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Fetches data for new table rows when scrolling done\r\n */\r\n onScrollDown() {\r\n if (!this.Records.includesLast) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('getRows', '', 0);\r\n guiEvent.Line = this.formGroups.length;\r\n this.insertEvent(guiEvent);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the new browser window title\r\n * @param newTitle New window title\r\n */\r\n setTitle(newTitle: string) {\r\n this.mgTitleService.setTitle(newTitle);\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n getGuiRowId(dvRowId: number, isTableControl: boolean): number {\r\n return (isTableControl ? dvRowId + this.Records.recordsBeforeCurrentView : 0);\r\n }\r\n\r\n /**\r\n *\r\n * @ignore\r\n */\r\n getDvRowId(guiRowId: number): number {\r\n return (guiRowId - this.Records.recordsBeforeCurrentView);\r\n }\r\n\r\n /**\r\n * Clean up the service when it is no longer needed\r\n */\r\n dispose() {\r\n this.refreshDom.complete();\r\n this.detectChanges.complete();\r\n this.subscribeInteractiveCommands.unsubscribe();\r\n this.subscribeRefreshDom.unsubscribe();\r\n this.interactiveCommands.complete();\r\n this.customPropertiesSubject.complete();\r\n this.OnSelectedRowChanged.complete();\r\n }\r\n\r\n ///////////////////////////////\r\n //Events:\r\n\r\n /**\r\n * Handle the Combobox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n * @param line Row Id, if applicable\r\n */\r\n onComboboxSelectionChanged(event: Event, idx: string, line: number) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, line);\r\n\r\n if (typeof (event) == 'number') {\r\n guiEvent.Value = event;\r\n }\r\n else {\r\n if (!isNullOrUndefined(event.target)) {\r\n let indexes: number[] = new Array<number>((<any>event.target).selectedOptions.length);\r\n for (let i = 0; i < (<any>event.target).selectedOptions.length; i++) {\r\n indexes[i] = (<HTMLOptionElement>(<any>event.target).selectedOptions[i]).index;\r\n }\r\n guiEvent.Value = indexes.join(',');\r\n } else\r\n guiEvent.Value = (<any>event).value;\r\n }\r\n\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle the Listbox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n */\r\n onListBoxSelectionChanged(event: Event, idx: string) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n\r\n let selectedOptions;\r\n if (!isNullOrUndefined(event.target))\r\n selectedOptions = (<any>event.target).selectedOptions;\r\n else\r\n selectedOptions = (<any>event).source.selectedOptions.selected;\r\n\r\n let length = selectedOptions.length;\r\n let indexes: number[] = new Array<number>(length);\r\n\r\n for (let i = 0; i < length; i++) {\r\n if (!isNullOrUndefined(event.target))\r\n indexes[i] = (selectedOptions[i]).index;\r\n else\r\n indexes[i] = (selectedOptions[i]).value;\r\n }\r\n guiEvent.Value = <any>indexes; // TODO: fix\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle the Checkbox \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n * @param rowId Row Id, if applicable\r\n */\r\n onCheckChanged(event: Event, idx: string, rowId: number) {\r\n if (typeof rowId === 'undefined')\r\n rowId = 0;\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, rowId);\r\n\r\n if (typeof (event) == 'boolean') {\r\n guiEvent.Value = event;\r\n }\r\n else if(typeof (event) == 'string') {\r\n if(event == \"unchecked\")\r\n { // @ts-ignore\r\n guiEvent.Value = false;\r\n }\r\n else if( event == 'indeterminate')\r\n guiEvent.Value = null;\r\n else if(event == 'checked')\r\n { // @ts-ignore\r\n guiEvent.Value = true;\r\n }\r\n }\r\n else {\r\n if (typeof event.target === 'undefined')\r\n guiEvent.Value = (<any>(event)).checked;\r\n else\r\n guiEvent.Value = (<any>(event.target)).checked;\r\n }\r\n\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Handle tab selection change, caused by UI events\r\n * @param idx Id of the control raising the event\r\n * @param layer Id of selected tabpage\r\n */\r\n mgOnTabSelectionChanged(idx: string, layer: number) {\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n guiEvent.Value = layer.toString();\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n\r\n /**\r\n * Handle the Radio button \"change\" event\r\n * @param event The event received from the UI\r\n * @param idx Id of the control raising the event\r\n */\r\n mgOnRadioSelectionChanged(idx: string) {\r\n let result = this.getFormControl('0', idx);\r\n let guiEvent: IGuiEvent = getGuiEventObj('selectionchanged', idx, 0);\r\n if(typeof result.value !== 'number')\r\n guiEvent.Value = result.value.index;\r\n else\r\n guiEvent.Value = result.value.toString();\r\n this.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * Inserts the \"close\" event to the magic WebClient event queue\r\n */\r\n close() {\r\n this.insertEvent(getGuiEventObj('close', null, 0));\r\n }\r\n\r\n\r\n ///////////////////////////////\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n IsStub(): boolean {\r\n return this.magic.isStub;\r\n\r\n }\r\n\r\n //////////////////////////////////////////////////////////////\r\n ///Stub handling\r\n /**\r\n * @ignore\r\n */\r\n jsonData: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n saveData(data: string) {\r\n this.magic.saveData(data);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public createData() {\r\n let myData = {\r\n records: this.Records,\r\n template: this.template\r\n };\r\n let text: string = 'loadData():any {\\n' +\r\n ' let stubData = ' + JSON.stringify(myData) + ';\\n' +\r\n ' this.loadStubData(stubData);}';\r\n console.log(text);\r\n this.saveData(text);\r\n\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public loadStubData(stubData: any) {\r\n\r\n this.Records = stubData.records;\r\n this.settemplate(stubData.template);\r\n this.taskId = '1';\r\n for (let i = 0; i < this.Records.list.length; i++)\r\n this.buildTableRowControls(i);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public loadData() {\r\n alert('Please, overwrite method loadData');\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n setStubValue(guiRowId: number, fc: FormControl, name: string) {\r\n if (this.IsStub()) {\r\n try {\r\n let val = this.Records.list[guiRowId].values[name];\r\n fc.setValue(val);\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n\r\n // End of stub handlin\r\n /////////////////////////////////////////////////////////////////\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\nimport { TaskMagicService } from \"./task.magics.service\";\nimport { ComponentListMagicService } from \"./component-list.magic.service\";\n\n/**\n * Implements various table-related functionalities\n */\n@Injectable()\nexport class TableMagicService {\n\n selectedItem : any;\n private chunkSize: number;\n\n /**\n *\n * @param componentList Component-mapping service\n * @param task Magic task service\n */\n constructor( protected componentList: ComponentListMagicService, protected task: TaskMagicService) {\n }\n\n public shouldOpenFieldTextEditor: boolean = true;\n\n /**\n * Refreshes the DataSource\n */\n refreshDataSource(): void {\n }\n\n /**\n * Returns the table page size\n * chunkSize as default value for non-paginated tables.\n */\n getPageSize(): number {\n return this.chunkSize;\n }\n\n setChunkSize(size: number): void{\n this.chunkSize = size;\n }\n\n /**\n * Returns max no of rows in the table.\n */\n getMaxRowsInTable(): number{\n return this.task.Records.list.length;\n }\n\n /**\n * Selects the specified row\n * @param rowId The row to select\n */\n selectRow(rowId: string): void {\n this.selectedItem = rowId;\n }\n\n getSelectedRow() : any{\n return this.selectedItem;\n }\n\n /**\n * Returns the selected row\n */\n selectedRow(): any {\n return null;\n }\n\n /**\n * Selects the specified page\n * @param pageId The page to select\n */\n selectPage(pageId: number): void {\n }\n\n /**\n * Returns whether a dialog should be opened for the HTML element\n * @param element The HTML element for which a dialog may be needed\n * @returns\n */\n OpenDialogForControl(element: HTMLElement): boolean\n {\n if (element.tagName === \"MAT-SELECT\" || element.tagName === \"MAT-CHECKBOX\" ||\n element.tagName === \"INPUT\" ||\n element.tagName === \"SELECT\")\n return false;\n return true;\n }\n\n /**\n * Returns the dialog used to edit values\n */\n getDialog(): any {\n return null;\n }\n\n /**\n * Handles the table \"scrolled\" event\n */\n onScrollDown() {\n this.task.onScrollDown();\n }\n\n /**\n * To be overwitten in specific implelemtations\n */\n sortData(e){}\n\n /**\n * To be overwitten in specific implelemtations\n */\n mgOnPaginateChange(e, changeSelectedRow?: boolean){}\n\n mgOptionChanged(e) { }\n\n /**\n * Change the number of lines in a table\n * @param size New number of lines in table\n */\n updateTableSize(size: number) {\n if (size === 0) // never remove row 0 for now\n {\n size = 1;\n this.task.Records.clearFirstTableRecord(this.task.template);\n }\n\n this.task.formGroups.length = size;\n this.task.Records.updateSize(size);\n this.task.setIncludesFirst(false);\n }\n\n /**\n * @ignore\n */\n setTableTopIndex(value: number) {\n if (!this.task.Records.includesFirst)\n value++;\n\n this.task.Records.setGuiTopIndex(value);\n }\n\n /**\n * @ignore\n */\n getTableTopIndex():number\n {\n let topIndex: number = this.task.Records.getGuiTopIndex();\n\n if (!this.task.Records.includesFirst)\n topIndex--;\n\n return topIndex;\n }\n}\n\n","import { Injectable } from '@angular/core';\r\nimport {Title} from \"@angular/platform-browser\";\r\n\r\n/**\r\n * Enables changing the browser title using Magic expression (SetTitle)\r\n */\r\n@Injectable()\r\nexport class TitleMagicService {\r\n /**\r\n *\r\n * @param titleService Angular's title-changing class\r\n */\r\n constructor(protected titleService: Title) {\r\n }\r\n\r\n /**\r\n * Set the new title of the window\r\n * @param newTitle New title of the window\r\n */\r\n setTitle(newTitle: string) {\r\n this.titleService.setTitle( newTitle );\r\n }\r\n\r\n}\r\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n\nexport let COLOR_FILE_NAME = new InjectionToken<string>('colorFile', {\n providedIn: 'root',\n factory: () => 'clr_rnt.eng'\n});\nexport const MAGIC_FG_COLOR: number = 1;\nexport const MAGIC_BG_COLOR: number = 2;\n\n\nconst SYSTEM_FG: number = 2;\nconst SYSTEM_BG: number = 4;\nconst SYSTEM_FG_AND_SYSTEM_BG = 6 ;\nconst TRANSPERENT_BG: number = 1;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MagicColorService {\n public colorFileName = 'clr_rnt.eng';\n\n public getColorFilePath() {\n return 'assets/' + this.colorFileName;\n }\n\n private colorsData;\n private fileNotFound = false;\n\n // public static FILE_NAME;\n constructor(private http: HttpClient, @Inject(COLOR_FILE_NAME) colorFile1: string = 'clr_rnt.eng') {\n if (colorFile1)\n this.colorFileName = colorFile1;\n else\n this.colorFileName = 'clr_rnt.eng';\n }\n\n private getColorData() {\n\n if (!this.colorsData) {\n this.http.get(this.getColorFilePath(), { responseType: 'text' }).subscribe(resp => {\n this.colorsData = resp.replace(/\\n/g, '@').split('@');\n },\n error1 => {\n console.error('File not found ' + this.colorFileName);\n this.fileNotFound = true;\n });\n\n }\n\n }\n\n private hexToRgba(hex: any, isTransperent: boolean): any {\n let shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n // convert it to format : aarrggbb\n hex = hex.replace(shorthandRegex, function(m: any, r: any, g: any, b: any, a: any) {\n return a + a + r + r + g + g + b + b;\n });\n\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\n let rgb = {\n 'red': parseInt(result![4], 16),\n 'green': parseInt(result![3], 16),\n 'blue': parseInt(result![2], 16),\n 'alpha': (255 - parseInt(result![1], 16)) / 255\n };\n if (isTransperent)\n rgb.alpha = 0;\n\n return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + rgb.alpha + ')';\n }\n\n /**\n * Returns the rgba value of specified color\n * @returns : value in format rgba(128,128,128,1)\n * @param : colorNumber -0 based index of color for which RGBA values are returned\n * @param: colorType : 1-MAGIC_FG_COLOR, 2-MAGIC_BG_COLOR\n */\n public getColor(colorIndex: number, colorType: number) {\n let isTransperent = false;\n if (!this.colorsData && !this.fileNotFound)\n this.getColorData();\n if (this.colorsData) { // color exists\n if (this.colorsData[colorIndex - 1]) {\n\n const grayHashCode = '00808080';\n let hex = grayHashCode;\n let color: string[] = this.colorsData[colorIndex - 1].split(','); // get the color details\n let colorAtrributes = +color[3];\n\n // color[0] - name, color[1] - FG color, color[2] - BG color\n // color[3] - attr flags (1 - transperent, 2 - system FG, 4 - system bg)\n\n\n switch (colorType) {\n case MAGIC_FG_COLOR:\n if (colorAtrributes != SYSTEM_FG && colorAtrributes !=SYSTEM_FG_AND_SYSTEM_BG)\n hex = (color[1]);\n break;\n case MAGIC_BG_COLOR:\n if (colorAtrributes != SYSTEM_BG && colorAtrributes !=SYSTEM_FG_AND_SYSTEM_BG) {\n if (colorAtrributes == TRANSPERENT_BG)\n isTransperent = true;\n hex = (color[2]);\n }\n break;\n default:\n console.log('Please enter valid color type : 1-FG, 2-BG ' + colorIndex);\n return '';\n }\n\n return this.hexToRgba('#' + hex, isTransperent);\n } else\n console.log('Could not get color for number ' + colorIndex);\n }\n\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { TaskMagicService } from './task.magics.service';\r\nimport { ControlMetadata, ControlsMetadata } from '../controls.metadata.model';\r\nimport {CustomValidator, Events, GuiEnvironment, HtmlProperties, PIC} from '@magic-xpa/gui';\r\nimport { isNullOrUndefined , StringBuilder} from '@magic-xpa/mscorelib';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { getGuiEventObj, IGuiEvent, CookieService} from '@magic-xpa/engine';\r\nimport {Logger, PICInterface, StorageAttribute, MsgInterface, StrUtil} from '@magic-xpa/utils';\r\nimport { MagicColorService } from './magic-color.service';\r\nimport { MaskitoOptions } from \"@maskito/core\";\r\nimport { maskitoTimeOptionsGenerator } from \"@maskito/kit\";\r\n/**\r\n * Provides the UI with values calculated by the Magic WebClient\r\n */\r\n@Injectable()\r\nexport class AccessorMagicService {\r\n Logger: any = null;\r\n\r\n public readonly hhmm: MaskitoOptions = maskitoTimeOptionsGenerator({mode: 'HH:MM'});\r\n public readonly hhmmss: MaskitoOptions = maskitoTimeOptionsGenerator({mode: 'HH:MM:SS'});\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(protected task: TaskMagicService,protected magicColor: MagicColorService) {\r\n this.Logger = Logger.Instance;\r\n }\r\n\r\n /**\r\n * Checks if the control is read-only\r\n * @param controlId Id of control\r\n * @returns Is the control not read-only\r\n */\r\n // CheckReadOnly\r\n checkIsReadOnly(controlId: string): boolean {\r\n let properties: ControlMetadata;\r\n properties = this.task.Records.list[0].getControlMetadata(controlId);\r\n if (properties.properties.get(HtmlProperties.ReadOnly) !== null && properties.properties.get(HtmlProperties.ReadOnly) === true)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns the text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns The text of the control\r\n */\r\n // mgGetText\r\n getText(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.Text, rowId);\r\n }\r\n /**\r\n * Gets the text of the tab page\r\n * @param controlId Id of control\r\n * @param layer Id of tabpage\r\n * @returns Text of tabpage\r\n */\r\n // mgGetTabpageText\r\n getTabpageText(controlId: string, layer: number): string {\r\n const items = this.task.getProperty(controlId, HtmlProperties.ItemsList);\r\n if (typeof items !== \"undefined\")\r\n return items[layer].displayValue;\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Gets the image defined for the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns Image set on control\r\n */\r\n // mgGetImage\r\n getImage(controlId: string, rowId?: string): string {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);\r\n return result;\r\n\r\n }\r\n\r\n /**\r\n * Returns whether an image is set for this control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns returns true if control has an image set on it\r\n */\r\n // mgIsImageExists\r\n isImageExists(controlId: string, rowId?: string): boolean {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);\r\n return !isNullOrUndefined(result);\r\n\r\n }\r\n\r\n /**\r\n * Gets the CSS classes set on the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns The classes for this control\r\n */\r\n // mgGetClasses\r\n getClasses(controlId: string, rowId?: string) :string {\r\n return this.task.getClasses(controlId, rowId);\r\n }\r\n\r\n /**\r\n * Gets the CSS styles set on the control\r\n * @param controlId Id of control\r\n * @param styleName NAme of style requested\r\n * @param rowId Id of row, if applicable\r\n * @returns The style set on the control\r\n */\r\n // mgGetStyle\r\n getStyle(controlId: string, styleName: string, rowId?: string): string {\r\n let style = this.task.getStyle(controlId, styleName, rowId)\r\n return style;\r\n }\r\n\r\n /**\r\n * Returns whether a control is visible or not\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns Is the control visible or hidden\r\n */\r\n // mgGetVisible\r\n getVisible(controlId: string, rowId?: string) : string {\r\n let vis: Boolean = this.getProperty(controlId, HtmlProperties.Visible, rowId);\r\n return vis ? 'visible' : 'hidden';\r\n }\r\n\r\n /**\r\n * Returns alpha mask of a control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns alpha mask of the control\r\n */\r\n // getAlphaMask\r\n getAlphaMask(controlId: string, rowId?: string):string{\r\n if (isNullOrUndefined(controlId))\r\n return null;\r\n let pic: PIC = this.task.GetControlPictureMask(controlId);\r\n let mask: string = pic.getMask();\r\n let valueStr: StringBuilder = new StringBuilder();\r\n\r\n for (let i: number = 0; i < mask.length; i++) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_N:\r\n valueStr.Append(\"0\");\r\n break;\r\n case PICInterface.PIC_U:\r\n case PICInterface.PIC_L:\r\n case PICInterface.PIC_X:\r\n valueStr.Append(\"A\");\r\n break;\r\n\r\n default:\r\n valueStr.Append(mask.charAt(i));\r\n break;\r\n }\r\n }\r\n\r\n return (pic != null) ? valueStr.toString() : null;\r\n }\r\n /**\r\n * Returns object representing numeric picture\r\n * @param picture string which is defined in magic\r\n * @returns object representing numeric picture\r\n */\r\n // mgGetNumericPicture\r\n getNumericPicture(picture: string) : any {\r\n var obj = {};\r\n if (isNullOrUndefined(picture))\r\n return obj;\r\n\r\n let pic: PIC = new PIC(picture, StorageAttribute.NUMERIC, 0);\r\n\r\n\r\n\r\n obj['prefix'] = \"\"\r\n if (pic.getPosPref_().length > 0 && pic.getNegPref_().length > 0) {\r\n let pref = '-'+pic.getPosPref_();\r\n if (pref == pic.getNegPref_())\r\n obj['prefix'] = pic.getPosPref_();\r\n }\r\n if(pic.getPosSuff_().length > 0)\r\n obj['suffix'] = pic.getPosSuff_();\r\n else\r\n obj['suffix'] = \"\";\r\n\r\n if(pic.isNegative())\r\n obj['allowNegative'] = true;\r\n else\r\n obj['allowNegative'] = false;\r\n if(pic.getDec()>= 0)\r\n obj['precision'] = pic.getDec();\r\n\r\n if(pic.isLeft())\r\n obj['align']=\"left\";\r\n\r\n obj['decimal'] = GuiEnvironment.Environment.GetDecimal();\r\n if(pic.withComa())\r\n obj['thousands']=GuiEnvironment.Environment.GetThousands();\r\n else\r\n obj['thousands']=\"\";\r\n\r\n if(pic.getWholes())\r\n obj['wholes']=pic.getWholes();\r\n\r\n return obj;\r\n }\r\n\r\n /**\r\n * Returns whether a control should have the \"required\" attribute set on it\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetMustInput\r\n getMustInput(controlId: string, rowId?: string) : string {\r\n let vis: Boolean = this.getProperty(controlId, HtmlProperties.MustInput, rowId);\r\n return vis ? 'true' : 'false';\r\n }\r\n\r\n /**\r\n * Returns whether a control is disabled\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgIsDisabled\r\n isDisabled(controlId: string, rowId?: string): any{\r\n let result = this.getProperty(controlId, HtmlProperties.Enabled, rowId);\r\n return result === true ? null : true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // getProperty (not changed)\r\n getProperty(controlId: string, prop: HtmlProperties, rowId?: string) {\r\n return this.task.getProperty(controlId, prop, rowId);\r\n }\r\n\r\n /**\r\n * Returns the title (tooltip) text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTitle\r\n getTitle(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.Tooltip, rowId);\r\n }\r\n\r\n /**\r\n * Returns the title (tooltip) text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTitle for zoom button\r\n getZoomButtonTitle(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.ZoomButtonTooltip, rowId);\r\n }\r\n\r\n /**\r\n * Gets the selection control's selected value\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // getSelectedValue\r\n getSelectedValue(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.SelectedValue, rowId);\r\n }\r\n\r\n /**\r\n * Gets the place-holder text of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetPlaceholder\r\n getPlaceholder(controlId: string, rowId?: string): string {\r\n return this.task.getProperty(controlId, HtmlProperties.PlaceHolder, rowId);\r\n }\r\n\r\n /**\r\n * Returns a type for input controls - should the control be a simple text or a password control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetType\r\n getType(controlId: string, rowId?: string): string {\r\n let result = this.task.getProperty(controlId, HtmlProperties.Password, rowId);\r\n return result ? \"password\" : \"text\"\r\n }\r\n\r\n /**\r\n * Returns the tab-index of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetTabIndex\r\n getTabIndex(controlId: string, rowId?: string): number {\r\n return this.task.getProperty(controlId, HtmlProperties.TabIndex, rowId);\r\n }\r\n\r\n /**\r\n * Returns the value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// mgGetValue -->\r\n getValue(controlId: string, rowId?: string): any {\r\n let val = this.task.getValue(controlId, rowId);\r\n return val;\r\n }\r\n\r\n /**\r\n * Returns the formatted value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// mgGetValue -->\r\n getFormattedValue(controlId: string, rowId?: string): string {\r\n let val = this.task.getValue(controlId, rowId);\r\n val = this.task.getFormattedValue(controlId, val, rowId);\r\n return val;\r\n }\r\n\r\n /**\r\n * Returns the Picture of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n /// getPicture -->\r\n getPicture(controlId: string, rowId?: string): string {\r\n\r\n if (isNullOrUndefined(controlId))\r\n return null;\r\n let pic: PIC = this.task.GetControlPictureMask(controlId);\r\n return (pic != null) ? pic.getFormat().toString() : null;\r\n\r\n }\r\n\r\n /**\r\n * Returns the custom (user) properties of the control\r\n * @param controlId Id of control\r\n * @param propertyName Name of requested property\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetCustomProperty\r\n getCustomProperty(controlId: string, propertyNameOrRowID?: string, rowId?: string) : any\r\n {\r\n if(controlId.indexOf('~')== -1)\r\n return this.getCustomProperty_1(controlId, propertyNameOrRowID, rowId);\r\n else {\r\n let cid: string = controlId.split('~')[0];\r\n let propName: string = controlId.split('~')[1];\r\n\r\n return this.getCustomProperty_1(cid, propName, propertyNameOrRowID);\r\n }\r\n }\r\n\r\n getCustomProperty_1(controlId: string, propertyName: string, rowId?: string)\r\n {\r\n let userProperties;\r\n if (isNullOrUndefined(rowId))\r\n rowId = '0';\r\n let rec = this.task.Records.list[rowId];\r\n if (isNullOrUndefined(rec))\r\n debugger;\r\n else {\r\n const controlMetadata = rec.getControlMetadata(controlId);\r\n\r\n if (controlMetadata.userProperties.has(propertyName)) {\r\n userProperties = controlMetadata.userProperties.get(propertyName);\r\n }\r\n }\r\n return userProperties;\r\n }\r\n\r\n /**\r\n * Gets the values of the items of a selection control\r\n * @param id Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n // mgGetItemListValues\r\n getItemListValues(id: string, rowId?: string) : Array<{index: number, displayValue: string}> {\r\n return this.getProperty(id, HtmlProperties.ItemsList, rowId);\r\n }\r\n\r\n /**\r\n * Gets the filtered items list based on the current value of the control\r\n * @param controlId Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n getFilteredList(controlId: string, rowId?: string): Array<{index: number, displayValue: string}> {\r\n if (isNullOrUndefined(rowId))\r\n rowId = '0';\r\n\r\n let items = this.getItemListValues(controlId, rowId);\r\n let value: string = this.task.getFormControl(rowId, controlId).value;\r\n if (value !== null && value !== \"\" && items instanceof Array) {\r\n value = value.toLowerCase();\r\n return items.filter(option => option.displayValue.toLowerCase().includes(value));\r\n }\r\n else\r\n return items;\r\n }\r\n\r\n /**\r\n * Gets the display value of the item from items of a selection control\r\n * @param id Id of control\r\n * @param rowId Id of row, if applicable\r\n * @returns\r\n */\r\n getDisplayValue(id, rowId?) {\r\n let displayValue:string =\"\"\r\n\r\n let o = this.getProperty(id, HtmlProperties.ItemsList, rowId);\r\n let value = this.task.getValue(id, rowId)\r\n if (value >=0 && value <o.length && !isNullOrUndefined(o[value]))\r\n displayValue = o[value].displayValue;\r\n return displayValue\r\n }\r\n\r\n /**\r\n * Returns whether a tab page is selected or not\r\n * @param index of current option in iterarotr\r\n * @param control Id of list control\r\n * @returns\r\n */ // isOptionSelected\r\n isOptionSelected(index, controlId) {\r\n let val = this.task.getValue(controlId, \"0\");\r\n for (let item of val) {\r\n if (item === index)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns whether a tab page is selected or not - used for the tab buttons\r\n * @param controlId Id of control\r\n * @param layer Id of the tab page\r\n * @returns\r\n */ // mgIsTabPageSelected\r\n isTabPageSelected(controlId: string, layer: number): boolean {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);\r\n return val == (layer - 1); // comparing string to number!\r\n }\r\n\r\n /**\r\n * Returns whether a tab page layer is selected or not - used for the div which represents the tab page\r\n * @param controlId Id of control\r\n * @param layer Id of the tab page\r\n * @returns\r\n */ // mgIsTabLayerSelected\r\n isTabPageLayerSelected(controlId: string, layer: number): boolean {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedLayer);\r\n return val == (layer - 1); // comparing string to number!\r\n }\r\n\r\n /**\r\n * Returns the index of the selected tab page\r\n * @param controlId Id of control\r\n * @returns\r\n */\r\n getTabSelectedIndex(controlId: string) {\r\n let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);\r\n return val; // comparing string to number!\r\n }\r\n\r\n\r\n // private methodes\r\n /**\r\n * @ignore\r\n */\r\n // mgIfRowCreated\r\n ifRowCreated(row): boolean {\r\n if (row == null)\r\n return false;\r\n let rowId = typeof row == \"number\" ? row.toString() : row.rowId;\r\n let result = this.getFormGroupByRow(rowId);\r\n return !isNullOrUndefined(result);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // mgGetFormGroupByRow\r\n getFormGroupByRow(id: string): FormGroup {\r\n return this.task.formGroups[id];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // isRowSelected (not changed)\r\n isRowSelected(controlId, rowId?) {\r\n const selectedRow = this.task.getProperty(controlId, HtmlProperties.SelectedRow, \"0\");\r\n return selectedRow == rowId;\r\n }\r\n\r\n /**\r\n * Returns whether a row is in edit state\r\n * @param row\r\n */\r\n isRowInRowEditing(row?: any): boolean {\r\n let guiRowId : string = '0';\r\n guiRowId= typeof row == \"number\" ? row.toString() : row.rowId;\r\n return this.task.isRowInRowEditing(guiRowId)\r\n }\r\n\r\n /**\r\n * Returns whether a row is in edit state, use this method while control outside table control\r\n * @param row\r\n */\r\n isCurrentInRowEditing(): boolean {\r\n\r\n let row = this.task.tableService.getSelectedRow();\r\n\r\n return this.task.isRowInRowEditing(row)\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // GetGuiTopIndex\r\n guiTopIndex(): number {\r\n return this.task.tableService.getTableTopIndex();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getErrMsg(id: string,rowId: string): string\r\n {\r\n let c = this.task.getFormControl(rowId, id);\r\n if (c.hasError('required'))\r\n return Events.GetMessageString(MsgInterface.RT_STR_FLD_MUST_UPDATED);\r\n if (c.hasError('pattern')){\r\n //To check whether the numeric field allowed only positive values or not.\r\n if(c.errors.pattern.actualValue < 0 && !c.errors.pattern.requiredPattern.includes('-'))\r\n return Events.GetMessageString(MsgInterface.STR_ERR_NEGETIVE);\r\n if(c.errors.pattern.requiredPattern.includes('.')){\r\n const numericFormat = Math.abs(c.errors.pattern.actualValue).toString().split('.')[0];\r\n const decimalFormat = Math.abs(c.errors.pattern.actualValue).toString().split('.')[1];\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n const actualDecimalLimit = c.errors.pattern.requiredPattern.match(/(?:[^,]+,){2}(\\d+)/)[1];\r\n if(numericFormat.length > actualNumericLimit || decimalFormat.length > actualDecimalLimit){\r\n return this.getNumericFormatErrorString(actualNumericLimit, actualDecimalLimit);\r\n }\r\n }else if(!c.errors.pattern.requiredPattern.includes('.') && !Number.isInteger(c.errors.pattern.actualValue)){\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n return this.getNumericFormatErrorString(actualNumericLimit, 0);\r\n }else{\r\n const numericFormat = Math.abs(c.errors.pattern.actualValue).toString();\r\n const actualNumericLimit = c.errors.pattern.requiredPattern.match(/,(\\d+)/)[1];\r\n if(numericFormat.length > actualNumericLimit){\r\n return this.getNumericFormatErrorString(actualNumericLimit, 0);\r\n }\r\n }\r\n }\r\n if (c.hasError('rangevalidator'))\r\n return c.errors.rangevalidator.errorMsg;\r\n if (c.hasError('maxlength'))\r\n return Events.GetMessageString(MsgInterface.STR_ERR_MAX_ALLOWED_LENGTH) + c.errors.maxlength.requiredLength;\r\n if (c.hasError('max'))\r\n return Events.GetMessageString(MsgInterface.STR_ERR_MAX_ALLOWED_VALUE) + c.errors.max.max;\r\n\r\n let controlMetadata = this.task.Records.list[rowId].getControlMetadata(id);\r\n for (let key of controlMetadata.customValidators.keys())\r\n {\r\n if (c.hasError(key)) {\r\n let customValidator: CustomValidator = controlMetadata.customValidators.get(key);\r\n return customValidator.getErrMessage();\r\n }\r\n }\r\n\r\n return 'unknown error';\r\n }\r\n\r\n private getNumericFormatErrorString(wholeLimit: number, decimalLimit: number): string\r\n {\r\n let token: string = \"%d\";\r\n let messageString: string = Events.GetMessageString(MsgInterface.EDT_ERR_STR_1);\r\n messageString = StrUtil.replaceStringTokens(messageString, token, 1, wholeLimit.toString());\r\n messageString = StrUtil.replaceStringTokens(messageString, token, 1, decimalLimit.toString());\r\n\r\n return messageString;\r\n }\r\n\r\n /**\r\n * Sets a user-supplied value to the specified control\r\n * @param controlName\r\n * @param value\r\n * @param refreshDisplay\r\n */\r\n setValueToControl(controlName: string, value: any, refreshDisplay?: boolean){\r\n if(typeof refreshDisplay === \"undefined\")\r\n refreshDisplay = true;\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"setexternalvalue\", controlName, 0);\r\n guiEvent.externalValue = value;\r\n guiEvent.param = refreshDisplay;\r\n this.task.insertEvent(guiEvent);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isDataviewEmpty() : boolean {\r\n return this.task.Records.isEmptyDataView;\r\n }\r\n\r\n /**\r\n * simulates a click event on the specified control, for the Magic engine\r\n * @param controlName\r\n * @param rowId\r\n */\r\n simulateClick(controlName: string, rowId?: number){\r\n if (typeof rowId === \"undefined\")\r\n rowId = 0;\r\n this.task.insertEvent(getGuiEventObj('click', controlName, rowId));\r\n }\r\n\r\n /**\r\n * Return Boolean TRUE if user logged in Else it will return FALSE\r\n */\r\n isLoggedIn(): boolean {\r\n return this.task.getIsLoggenIn();\r\n }\r\n\r\n /**\r\n * Returns JS object containing the records with all table fields.\r\n */\r\n GetFormRecords(): any {\r\n let rowId: number = 0;\r\n let recArray: any;\r\n\r\n if (!isNullOrUndefined(this.task.Records) && this.task.Records.list.length > 0 ) {\r\n let recList: ControlsMetadata[] = this.task.Records.list;\r\n let tableControls: string[] = new Array();\r\n\r\n //Generate list of table fields names\r\n for (const key in this.task.template) {\r\n if (this.task.template[key] == '1')\r\n tableControls.push(key);\r\n }\r\n\r\n recArray = new Array();\r\n\r\n //Update the records as list of objects with values for table fields.\r\n if (tableControls.length > 0) {\r\n recList.forEach((ctrlMetaData: ControlsMetadata) => {\r\n if (this.task.Records.isRowCreated(rowId)) {\r\n var formRecord = {};\r\n formRecord['rowId'] = rowId;\r\n tableControls.forEach((ctrlId: string) => {\r\n formRecord[ctrlId] = ctrlMetaData.values[ctrlId];\r\n });\r\n\r\n recArray.push(formRecord)\r\n }\r\n });\r\n }\r\n }\r\n\r\n return recArray;\r\n }\r\n\r\n /**\r\n * SetCookie : set the cookie with specified name and value in browser\r\n * expires - expiration time\r\n * path - path which much exists in order so that cookie is sent as header\r\n * domain - specifies which hosts are allowed to receive the cookie\r\n * secure - specifies if cookie is secure ( works only with HTTPS)\r\n * sameSite - lets servers specify whether/when cookies are sent with cross-site requests\r\n */\r\n SetCookie(name: string, value: any, expires?: Date, path? , domain? , secure?, sameSite ?) {\r\n CookieService.setCookie(name, value, expires, path, domain, secure, sameSite);\r\n }\r\n\r\n /**\r\n * GetCookie : get the cookie with specified name and value in browser\r\n */\r\n GetCookie(name: string): any {\r\n return CookieService.getCookie(name);\r\n }\r\n\r\n /**\r\n * DeleteCookie : deletes the cookie\r\n */\r\n DeleteCookie(name: string): any {\r\n return CookieService.deleteCookie(name);\r\n }\r\n\r\n /**\r\n * get RGBA color from color file\r\n */\r\n public getColor(colorNumber: number, colorType) {\r\n return this.magicColor.getColor(colorNumber, colorType);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { SubformMagicService } from \"./subform.magic.service\";\r\nimport { TableMagicService } from \"./table.magic.service\";\r\nimport { TaskMagicService } from \"./task.magics.service\";\r\nimport { TitleMagicService } from \"./title.magic.service\";\r\nimport { AccessorMagicService } from \"./accessor.magic.service\";\r\n\r\n\r\n/**\r\n * Central place for adding the Magic services\r\n */\r\n@Injectable()\r\nexport class MagicServices{\r\n /**\r\n * @ignore\r\n */\r\n constructor(\r\n public task: TaskMagicService,\r\n public subformService: SubformMagicService,\r\n public tableService: TableMagicService,\r\n public titleService: TitleMagicService,\r\n public mgAccessorService: AccessorMagicService,\r\n ) {\r\n\r\n task.tableService = tableService;\r\n task.mgSubformService = subformService;\r\n task.mgTitleService = titleService;\r\n task.mgAccessorService = mgAccessorService;\r\n }\r\n\r\n\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup} from '@angular/forms';\r\nimport { MagicProperties} from \"@magic-xpa/utils\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\nimport {TaskMagicService} from \"../services/task.magics.service\";\r\nimport { SubformMagicService } from \"../services/subform.magic.service\";\r\nimport { TableMagicService } from \"../services/table.magic.service\";\r\nimport { MagicServices } from \"../services/magic.services\";\r\nimport { AccessorMagicService } from \"../services/accessor.magic.service\";\r\n\r\n/**\r\n * Base component representing a Magic task\r\n */\r\n@Component({\n selector: 'task-magic',\n providers: [TaskMagicService, SubformMagicService, TableMagicService],\n template: '',\n standalone: false\n})\r\nexport class TaskBaseMagicComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n /**\r\n * Id of task, used for initializing the task service\r\n */\r\n @Input() taskIdParam: string;\r\n /**\r\n * @ignore\r\n */\r\n @Input() taskDescription: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n magicProperties = MagicProperties;\r\n\r\n /**\r\n *\r\n * @param ref changes-detector object\r\n * @param magicServices Access point for all Magic services\r\n */\r\n constructor(protected ref: ChangeDetectorRef,\r\n public magicServices: MagicServices\r\n ) { }\r\n\r\n /**\r\n * Returns the Magic task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this.magicServices.task;\r\n }\r\n\r\n /**\r\n * Returns the Magic subform service\r\n * @returns\r\n */\r\n get mgSub(): SubformMagicService {\r\n return this.magicServices.subformService;\r\n }\r\n\r\n /**\r\n * Returns the Magic table service\r\n * @returns\r\n */\r\n get tableService(): TableMagicService {\r\n return this.magicServices.tableService;\r\n }\r\n\r\n /**\r\n * Returns the Magic accessor service\r\n * @returns\r\n */\r\n get mg(): AccessorMagicService {\r\n return this.magicServices.mgAccessorService;\r\n }\r\n\r\n\r\n /**\r\n * Returns the task Id\r\n * @returns\r\n */\r\n get taskId() {\r\n return this.task.taskId;\r\n }\r\n\r\n /**\r\n * Returns the FormGroup for screen-mode forms\r\n * @returns\r\n */\r\n get screenFormGroup(): FormGroup {\r\n return this.task.ScreenModeControls;\r\n }\r\n\r\n /**\r\n * Interface implementation\r\n */\r\n ngOnInit() {\r\n\r\n this.task.detectChanges.pipe().subscribe(c => {\r\n this.ref.detectChanges();\r\n });\r\n this.task.initTask(this.taskIdParam, this.taskDescription);\r\n\r\n this.createFormControlsAccessor(this.screenFormGroup);\r\n this.setInputDateFormat();\r\n\r\n // subcribe to custom property changes\r\n this.task.customPropertiesSubject.pipe().subscribe(property => {\r\n this.PropertyChanged(property.propertyName, property.rowId, property.value);\r\n });\r\n\r\n // subcribe to records count changes\r\n this.task.recordsCountChangeSubject.pipe().subscribe(value => {\r\n this.RecordsCountChanged(value);\r\n });\r\n\r\n // subcribe to mgLoad change\r\n this.task.mgLoadSubject.pipe().subscribe(value =>{\r\n this.mgOnLoad();\r\n });\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n createFormControlsAccessor(formGroup: FormGroup) {}\r\n\r\n /**\r\n * @ignore\r\n */\r\n setInputDateFormat () {}\r\n\r\n /**\r\n * This method is called when the value of any custom property is updated in Magic\r\n * propertyName : name of property which is updated. The format is <controlname>~<propertyname>\r\n * rowId : row number of the updated property for controls in table control (0 for controls outside table)\r\n * value : updated value of the property\r\n * @returns : void\r\n * To use the method override it in your component and check the property name and write you code ..for eg\r\n * if(propertyName == 'controlname~propertyName') {// your code}\r\n * else { // your code}\r\n */\r\n PropertyChanged(propertyName:string, rowId : number, value : any) : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n\r\n /**\r\n * Records count change subject is subscribed to change in its value. This method will be called\r\n * as the value of records count is received at from server.\r\n * @returns : void\r\n * To use the method override it in your component.\r\n */\r\n RecordsCountChanged(recordsCount : number) : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n\r\n /**\r\n * This method will be called once engine informs UI about loading of first set of data is sent to client\r\n * and client has reached its first idle time.\r\n * @returns : void\r\n * To use the method override it in your component.\r\n */\r\n mgOnLoad() : void {\r\n // intentionally left blank because the implementation should be in the derived class\r\n }\r\n /**\r\n * Interface implementation\r\n */\r\n ngAfterViewInit() {\r\n this.mgSub.init();\r\n }\r\n\r\n ngAfterContentChecked() : void {\r\n if(!isNullOrUndefined(this.tableService.getPageSize()) && this.task.oldPageSize != this.tableService.getPageSize()) {\r\n this.task.resize(this.tableService.getPageSize(), 0);\r\n this.task.oldPageSize = this.tableService.getPageSize();\r\n }\r\n }\r\n\r\n /**\r\n * Interface implementation\r\n */\r\n ngOnDestroy(): void {\r\n this.task.dispose();\r\n }\r\n}\r\n\r\n","\r\nimport { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { Subscription } from \"rxjs\";\r\nimport {MagicDirective} from \"../../directives/magic.directive\"\r\n\r\n/**\r\n * @ignore\r\n */\r\n @Directive({\n selector: '[magicRow]',\n standalone: false\n})\r\n\r\n\r\nexport class RowMagicDirective implements OnInit, OnDestroy{\r\n @Input('magicRow') rowId: string;\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private rowChangedSubscriber: Subscription = null;\r\n\r\n constructor(\r\n protected _task : TaskMagicService,\r\n protected element: ElementRef\r\n )\r\n {\r\n this.htmlElement = this.element.nativeElement;\r\n }\r\n\r\n /**\r\n * Initializes this object\r\n */\r\n ngOnInit(): void {\r\n this.rowChangedSubscriber = this._task\r\n .OnSelectedRowChanged.pipe(filter(rowId => rowId === this.rowId))\r\n .subscribe(rowId => {\r\n if (!this.isInView(this.htmlElement))\r\n this.htmlElement.scrollIntoView();\r\n }\r\n );\r\n }\r\n\r\n private isInView(element): boolean {\r\n const rect = element.getBoundingClientRect();\r\n const parentRect = element.parentElement.getBoundingClientRect();\r\n return (\r\n rect.top >= parentRect.top &&\r\n rect.bottom <= parentRect.bottom\r\n );\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy() {\r\n // Don't know why, but when the table is loaded for the first time, we\r\n // get ngOnInit() for the 1st row (rowId = \"0\") and then ngOnDestroy()\r\n // for number of rows in the page but here this.rowId is undefined.\r\n // Since ngOnInit() was not called for all these rows, this.rowChangedSubscriber\r\n // is null and hence crashes.\r\n // So, the condition to check nulity is added.\r\n if (this.rowChangedSubscriber !== null) {\r\n this.rowChangedSubscriber.unsubscribe();\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick($event) {\r\n if(this.rowId != '') {\r\n this._task.insertEvent(getGuiEventObj('click', \"magicRow\", +this.rowId));\r\n if (MagicDirective.noOfAutoCompleteBoxesOpened < 1)\r\n event.cancelBubble = true;\r\n }\r\n }\r\n }\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Optional, Renderer2, ViewContainerRef } from \"@angular/core\";\r\nimport { isNullOrUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\nimport {\r\n CommandType,\r\n GuiCommand,\r\n GuiConstants,\r\n GuiInteractive,\r\n HtmlProperties,\r\n InteractiveCommandType,\r\n Modifiers\r\n} from \"@magic-xpa/gui\";\r\nimport { getGuiEventObj, IGuiEvent } from \"@magic-xpa/engine\";\r\n\r\nimport { TaskBaseMagicComponent } from \"../task-base.magic.component\";\r\nimport { TaskMagicService } from \"../../services/task.magics.service\";\r\nimport { debounceTime, filter, map } from \"rxjs/operators\";\r\nimport { RowMagicDirective } from \"./magic/row.magic.directive\";\r\nimport { Subscription, fromEvent } from \"rxjs\";\r\nimport { BindingLevel, MgControlType, StorageAttributeType } from \"@magic-xpa/utils\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\n\r\n\r\n/**\r\n * Connects HTML elements to the Magic Web Client engine\r\n */\r\n@Directive({\n selector: \"[magic]\",\n standalone: false\n})\r\n\r\nexport class MagicDirective implements OnInit, OnDestroy {\r\n @Input(\"magic\") set magic(val) {\r\n this.id = val;\r\n this.selector = \"magic\";\r\n };\r\n\r\n /**\r\n * This flag is used when we only want to register to events, but do not want to execute commands sent from server\r\n */\r\n @Input(\"eventsOnly\") set eventsOnly(val) {\r\n console.log(\"eventsOnly\");\r\n this.eventsOnlyVal = true;\r\n\r\n };\r\n\r\n /**\r\n * pollTime: after which value will be sent to magic\r\n */\r\n @Input() public pollTime: number = 200;\r\n\r\n /**\r\n * Row id of the control, for when it is on a table\r\n */\r\n @Input() public rowId: string;\r\n /**\r\n *\r\n */\r\n //@Input() events: any[] = [];\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n /**\r\n * Magic's component handling this control\r\n */\r\n public component: TaskBaseMagicComponent;\r\n /**\r\n * Collection of event handlers for this element\r\n */\r\n private eventHandlers: { [key: string]: () => void; } = {};\r\n /**\r\n * Id of this element\r\n */\r\n public id: string;\r\n /**\r\n * @ignore\r\n */\r\n protected selector: string;\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n\r\n private focusUnlistener: (() => void);\r\n\r\n public eventsOnlyVal = false;\r\n\r\n public static opened = false;\r\n\r\n public static noOfAutoCompleteBoxesOpened =0;\r\n\r\n subscribeInteractiveCommands: Subscription;\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param element The element for which the directive is applied\r\n * @param renderer Renderer for the element\r\n * @param vcRef\r\n * @param platform\r\n * @param magicRow\r\n */\r\n constructor(\r\n protected _task: TaskMagicService,\r\n protected element: ElementRef,\r\n protected renderer: Renderer2,\r\n protected vcRef: ViewContainerRef,\r\n public platform: Platform,\r\n @Optional() protected magicRow: RowMagicDirective) {\r\n\r\n this.htmlElement = this.element.nativeElement;\r\n //let c = (<any>this.vcRef)._view;\r\n //while (!(c instanceof TaskBaseMagicComponent)) {\r\n // c = c.component;\r\n //}\r\n //this.component = c;\r\n if (!(typeof magicRow === \"undefined\" || magicRow === null))\r\n this.rowId = magicRow.rowId;\r\n }\r\n\r\n /**\r\n * Get the task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this._task;\r\n }\r\n\r\n /**\r\n * Register to the events this element may need to handle\r\n */\r\n protected regEvents() {\r\n // Handle events for which event handler may be removed and restored\r\n this.eventHandlers[\"focusin\"] = this.OnFocus.bind(this);\r\n\r\n Object.keys(this.eventHandlers).forEach((key) => {\r\n this.focusUnlistener = this.renderer.listen(this.htmlElement, key, this.eventHandlers[key]);\r\n });\r\n\r\n // Handle events with anonymous event handlers\r\n let events: string[] = [\"click\", \"mousedown\", \"dblclick\"];// ,'resize', 'load', 'unload'\r\n events.forEach(event => {\r\n this.renderer.listen(this.htmlElement, event, (e) => {\r\n\r\n // check if the event is fired from zoom button ( to identify the connected zoom button in engine)\r\n let fromButton = false;\r\n if(this.htmlElement instanceof HTMLButtonElement)\r\n fromButton = true;\r\n\r\n /**\r\n * In the case of Safari or Chrome browser on IOS, when a button is clicked, the browser does not receive\r\n * focus event hence the zoom action is not executed. So in order to receive focus event, enabling it exclusively\r\n * in the case of Safari or Chrome browser on IOS and Safari browser on Mac.\r\n */\r\n if (fromButton && (this.platform.IOS || this.platform.SAFARI))\r\n this.task.insertEvent(getGuiEventObj(\"focus\", this.id, +this.rowId));\r\n\r\n this.task.insertEvent(getGuiEventObj(event, this.id, +this.rowId, fromButton));\r\n if (MagicDirective.noOfAutoCompleteBoxesOpened< 1)\r\n e.cancelBubble = true;\r\n });\r\n });\r\n\r\n\r\n this.renderer.listen(this.htmlElement, \"change\", (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, +this.rowId);\r\n\r\n if ((<any>(event.target)).selectedIndex !== undefined) {\r\n guiEvent.Value = (<any>(event.target)).selectedIndex.toString();\r\n e.cancelBubble = true;\r\n this.task.insertEvent(guiEvent);\r\n }\r\n\r\n });\r\n\r\n // handle the input event\r\n fromEvent(this.htmlElement, \"input\").pipe(\r\n map((event: any) => {\r\n return event.target.value;\r\n }),\r\n debounceTime(this.pollTime) // time after which value will be sent to magic\r\n ).subscribe((x) => {\r\n if (this.task.getProperty(this.id, HtmlProperties.BindingLevel, this.rowId) === BindingLevel.Character) {\r\n // Don't support character binding for date/time values\r\n let attribute : StorageAttributeType = this.task.Records.list[0].getControlMetadata(this.id).dataType;\r\n if(attribute !== StorageAttributeType.Date && attribute != StorageAttributeType.Time)\r\n this.task.mgAccessorService.setValueToControl(this.id, x, true);\r\n }\r\n });\r\n\r\n this.renderer.listen(this.htmlElement, \"keydown\", (e: KeyboardEvent) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"keydown\", this.id, +this.rowId);\r\n guiEvent.modifiers = Modifiers.MODIFIER_NONE;\r\n\r\n if (e.altKey && e.keyCode !== GuiConstants.KEY_ALT)\r\n guiEvent.modifiers = Modifiers.MODIFIER_ALT;\r\n\r\n else if (e.ctrlKey && e.keyCode !== GuiConstants.KEY_CTRL)\r\n guiEvent.modifiers = Modifiers.MODIFIER_CTRL;\r\n\r\n let supportedKey = e.keyCode === GuiConstants.KEY_PG_UP ||\r\n e.keyCode === GuiConstants.KEY_PG_DOWN ||\r\n e.keyCode === GuiConstants.KEY_LEFT ||\r\n e.keyCode === GuiConstants.KEY_RIGHT ||\r\n e.keyCode === GuiConstants.KEY_UP ||\r\n e.keyCode === GuiConstants.KEY_DOWN ||\r\n e.keyCode === GuiConstants.KEY_ESC ||\r\n e.keyCode === GuiConstants.KEY_HOME ||\r\n e.keyCode === GuiConstants.KEY_END ||\r\n e.keyCode === GuiConstants.KEY_RETURN ||\r\n (e.keyCode >= GuiConstants.KEY_F1 && e.keyCode <= GuiConstants.KEY_F12);\r\n\r\n if (guiEvent.modifiers !== Modifiers.MODIFIER_NONE || supportedKey) {\r\n guiEvent.keyCode = e.keyCode;\r\n\r\n // Defect 160021 fixed - don't set e.cancelBubble when combobox is opened and esc key is pressed\r\n if (e.keyCode !== GuiConstants.KEY_ESC || e.keyCode === GuiConstants.KEY_ESC && (!MagicDirective.opened && MagicDirective.noOfAutoCompleteBoxesOpened < 1))\r\n e.cancelBubble = true;\r\n\r\n this.task.insertEvent(guiEvent);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Handle focus event\r\n */\r\n private OnFocus() {\r\n this.task.insertEvent(getGuiEventObj(\"focus\", this.id, +this.rowId));\r\n event.cancelBubble = true;\r\n }\r\n\r\n /**\r\n * Is the command's element the same as this directive's element\r\n * @param command\r\n * @returns true/false\r\n */\r\n public IsSameElement(command) {\r\n let line: number = command.line;\r\n\r\n if (this.task.isTableControl(command.CtrlName))\r\n line = this.task.getGuiRowId(line, true);\r\n\r\n return (command.CtrlName === this.id &&\r\n (line === +this.rowId ||\r\n (line === 0 && isNullOrUndefined(this.rowId))));\r\n }\r\n\r\n /**\r\n * Is the command's element the same as this directive's component\r\n * @param command\r\n * @returns true/false\r\n */\r\n private IsSameComponent(command: GuiInteractive) {\r\n return (command.controlName === this.id);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private regUpdatesUI() {\r\n this.subscribeRefreshDom = this.task\r\n .refreshDom.pipe(filter(c => this.IsSameElement(c)))\r\n .subscribe(a => {\r\n let command: GuiCommand = a;\r\n if (isNullOrUndefined(this.rowId))\r\n this.rowId = \"0\";\r\n try {\r\n if (!this.eventsOnlyVal)\r\n this.handleCommand(command);\r\n } catch (ex) {\r\n console.dir(ex);\r\n }\r\n }\r\n );\r\n\r\n this.subscribeInteractiveCommands = this.task.interactiveCommands\r\n .pipe(filter(c => this.IsSameComponent(c)))\r\n .subscribe(command => {\r\n this.handleInteractiveCommands(command);\r\n });\r\n }\r\n\r\n /**\r\n * Initializes this object\r\n */\r\n ngOnInit(): void {\r\n this.regEvents();\r\n this.regUpdatesUI();\r\n }\r\n\r\n /**\r\n * Handles the commands received from the Magic WebClient engine\r\n * @param command\r\n */\r\n handleCommand(command: GuiCommand) {\r\n switch (command.CommandType) {\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command);\r\n break;\r\n\r\n case CommandType.SET_FOCUS:\r\n this.focusUnlistener();\r\n // Do not set focus on connected zoom button\r\n if (!(command.obj.ConnectedControl && this.htmlElement instanceof HTMLButtonElement))\r\n this.htmlElement.focus();\r\n this.focusUnlistener = this.renderer.listen(this.htmlElement, \"focusin\", this.eventHandlers[\"focusin\"]);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * handle the interactive commands like CallJS\r\n */\r\n handleInteractiveCommands(command: GuiInteractive) {\r\n switch (command._commandType) {\r\n case InteractiveCommandType.CALL_JS:\r\n let methodName: string = command._str;\r\n let args: Array<any> = command.arguments;\r\n let magicComponent: TaskBaseMagicComponent = ((<any>this.vcRef)._hostLView).find(v => v instanceof TaskBaseMagicComponent);\r\n let resultString = \"\";\r\n\r\n try {\r\n if (!isNullOrUndefined(magicComponent[methodName])) {\r\n // invoke the method on instance of magic componenet\r\n resultString = magicComponent[methodName].apply(magicComponent, args);\r\n }\r\n else\r\n console.error(\"Instance method \" + methodName + \" does not exists\"); // when method is not found\r\n } catch (e) {\r\n // any other exception\r\n console.error(e.message);\r\n }\r\n command.resultString = resultString; // update the return value\r\n break;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Handle the Magic set-property command\r\n * @param command\r\n */\r\n handleSetProperty(command: GuiCommand) {\r\n switch (command.Operation) {\r\n case HtmlProperties.ReadOnly: {\r\n if(command.obj.Type == MgControlType.CTRL_TYPE_TEXT)\r\n if (command.obj1 != true)\r\n this.renderer.removeAttribute(this.htmlElement, command.Operation);\r\n else\r\n this.renderer.setAttribute(this.htmlElement, command.Operation, command.str);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy(): void {\r\n\r\n this.subscribeRefreshDom.unsubscribe();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, Renderer2, ViewContainerRef, Optional} from '@angular/core';\r\nimport {CommandType, GuiCommand} from \"@magic-xpa/gui\";\r\nimport {IGuiEvent, getGuiEventObj} from \"@magic-xpa/engine\";\r\nimport {ControlMetadata} from \"../../../controls.metadata.model\";\r\nimport {HtmlProperties} from \"@magic-xpa/gui\";\r\nimport {MagicDirective} from \"../magic.directive\";\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {StylesMapManager} from \"../../../services/StylesMapManager\";\r\nimport {RowMagicDirective} from \"./row.magic.directive\";\r\nimport {Platform} from \"@angular/cdk/platform\";\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\n selector: '[magicnc]',\n standalone: false\n})\r\n\r\nexport class NoControlMagicDirective extends MagicDirective {\r\n\r\n @Input('magicnc') set magic(val) {this.id = val; this.selector = 'magicnc';};\r\n\r\n constructor(\r\n _task : TaskMagicService,\r\n element : ElementRef,\r\n renderer: Renderer2,\r\n vcRef : ViewContainerRef,\r\n platform: Platform,\r\n @Optional() magicRow: RowMagicDirective) {\r\n super(_task, element, renderer, vcRef, platform, magicRow);\r\n }\r\n\r\n regEvents() {\r\n super.regEvents()\r\n\r\n if (this.htmlElement instanceof HTMLSelectElement) {\r\n this.htmlElement.addEventListener('change', (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n guiEvent.Value = (<any>(event.target)).selectedIndex.toString()\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n\r\n if (this.isRadio()) {\r\n this.htmlElement.addEventListener('change', (e) => {\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n guiEvent.Value = (<any>(e.target)).value;\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n\r\n if(this.isTabControl()) {\r\n const tabControl = this.htmlElement.children[0];\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"selectionchanged\", this.id, 0);\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n tabControl.children[i].addEventListener('click', (e) => {\r\n guiEvent.Value = ((<number><any>(<Element>e.currentTarget).getAttribute('layer'))-1).toString();\r\n this.task.insertEvent(guiEvent);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // is the div a tab control\r\n isTabControl() {\r\n return this.htmlElement instanceof HTMLDivElement &&\r\n this.htmlElement.children[0].getAttribute('magicMark')=== \"magicTabControl\";\r\n }\r\n\r\n // is the div a radio buttons wrapper\r\n isRadio() {\r\n return this.htmlElement instanceof HTMLDivElement &&\r\n this.htmlElement.children[0].getAttribute('magicMark') === \"magicRadio\";\r\n }\r\n\r\n handleCommand(command: GuiCommand) {\r\n super.handleCommand(command);\r\n\r\n switch (command.CommandType) {\r\n case CommandType.SET_CLASS:\r\n //remove the class which was replaced by this new one, as registered in the ControlMetadata\r\n const controlMetadata:ControlMetadata = this._task.Records.list[0].getControlMetadata(this.id);\r\n if(controlMetadata.removedClass != '') {\r\n this.htmlElement.classList.remove(controlMetadata.removedClass);\r\n controlMetadata.removedClass = '';\r\n }\r\n this.htmlElement.classList.add(command.obj1);\r\n break;\r\n\r\n case CommandType.SET_VALUE:\r\n if (this.htmlElement instanceof HTMLLabelElement)\r\n (<HTMLLabelElement>this.htmlElement).innerText = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLSelectElement)\r\n (<HTMLSelectElement>this.htmlElement).value = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLAnchorElement) //hyper-text button\r\n (<HTMLAnchorElement>this.htmlElement).text = command.value;\r\n\r\n if (this.htmlElement instanceof HTMLInputElement)\r\n {\r\n if((<HTMLInputElement>this.htmlElement).type === \"checkbox\") {\r\n (<HTMLInputElement>this.htmlElement).checked = command.value;\r\n }\r\n else {\r\n (<HTMLInputElement>this.htmlElement).value = command.value;\r\n }\r\n }\r\n\r\n if (this.htmlElement instanceof HTMLButtonElement)\r\n {\r\n (<HTMLButtonElement>this.htmlElement).innerHTML = command.value;\r\n }\r\n\r\n break;\r\n\r\n case CommandType.SET_PROPERTY:\r\n this.handleSetProperty(command);\r\n break;\r\n\r\n case CommandType.SET_STYLE:\r\n let value: string = StylesMapManager.magicValueGetStyle(command.Operation, command.obj1);\r\n let attribute: string = StylesMapManager.MagicPropertyToHtmlAttributeMap.get(command.Operation);\r\n this.htmlElement.setAttribute(\"style\", attribute + \":\" + value);\r\n break;\r\n }\r\n }\r\n\r\n\r\n // handle set-property commands\r\n handleSetProperty(command: GuiCommand) {\r\n super.handleSetProperty(command);\r\n switch (command.Operation) {\r\n case HtmlProperties.Text:\r\n if (this.htmlElement instanceof HTMLLabelElement)\r\n (<HTMLLabelElement>this.htmlElement).innerText = command.obj1;\r\n\r\n break;\r\n\r\n case HtmlProperties.Image:\r\n if (this.htmlElement instanceof HTMLImageElement)\r\n (<HTMLImageElement>this.htmlElement).src = command.obj1;\r\n else\r\n this.htmlElement.setAttribute(\"src\", command.obj1);\r\n\r\n break;\r\n\r\n case HtmlProperties.ItemsList:\r\n if (this.htmlElement instanceof HTMLSelectElement) {\r\n\r\n // clear the list\r\n var len = this.htmlElement.length;\r\n for (var i = len - 1; i >= 0; i--) {\r\n this.htmlElement.remove(i);\r\n }\r\n\r\n for (let s of command.obj1) {\r\n let elem = document.createElement(\"option\");\r\n elem.text = s.displayValue;\r\n elem.value = s.index;\r\n (<HTMLSelectElement>this.htmlElement).add(elem);\r\n }\r\n }\r\n else if(this.isTabControl() && this.htmlElement.children.length > 0) {\r\n const tabControl = this.htmlElement.children[0];\r\n\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n if(tabControl.children[i] instanceof HTMLButtonElement) {\r\n (<HTMLElement>tabControl.children[i]).innerText = command.obj1[i].displayValue;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case HtmlProperties.Visible:\r\n this.htmlElement.setAttribute('style', 'visibility:' + (command.obj1 ? 'visible' : 'hidden'));\r\n break;\r\n\r\n case HtmlProperties.Enabled:\r\n if (command.obj1 === false)\r\n this.htmlElement.setAttribute(\"disabled\", \"true\");\r\n else\r\n this.htmlElement.removeAttribute(\"disabled\");\r\n break;\r\n\r\n case HtmlProperties.TabIndex:\r\n this.htmlElement.setAttribute(command.Operation, command.obj1);\r\n break;\r\n\r\n case HtmlProperties.SelectedValue:\r\n if (this.htmlElement instanceof HTMLSelectElement)\r\n (<HTMLSelectElement>this.htmlElement).value = command.obj1;\r\n else if(this.isTabControl() && this.htmlElement.children.length > 0){\r\n const tabControl = this.htmlElement.children[0];\r\n\r\n for (var i = 0; i < tabControl.children.length; i++) {\r\n let child = tabControl.children[i];\r\n const layer = (<number><any>child.getAttribute('layer'))-1;\r\n\r\n if(child instanceof HTMLButtonElement) {\r\n // set button style\r\n if ( layer == command.obj1) { // compare int to string\r\n child.classList.add('tab_button_active');\r\n }\r\n else {\r\n child.classList.remove('tab_button_active');\r\n }\r\n } else {\r\n // not a buton - hide unselected tabpages\r\n let style = (layer == command.obj1) ? 'display: inline' : 'display: none';\r\n child.setAttribute('style', style);\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case HtmlProperties.PlaceHolder:\r\n this.htmlElement.setAttribute(\"placeholder\", command.obj1);\r\n break;\r\n\r\n case HtmlProperties.Tooltip:\r\n this.htmlElement.setAttribute(\"title\", command.obj1);\r\n break;\r\n\r\n case HtmlProperties.Password:\r\n if (command.obj1 === false)\r\n this.htmlElement.setAttribute(\"type\", \"text\");\r\n else\r\n this.htmlElement.setAttribute(\"type\", \"password\");\r\n break;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder, isNullOrUndefined} from \"@magic-xpa/mscorelib\"\r\nimport {PICInterface} from \"@magic-xpa/utils\"\r\n\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport class Constants {\r\n static readonly DATE_FMT = 'dd/MMM/yyyy';\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Pipe({\n name: 'magicDate',\n standalone: false\n})\r\nexport class DateMagicPipe extends DatePipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n super('en-US');\r\n\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n let formatStr: string = null;\r\n let mgDateFormatter = new MgDateFormatter();\r\n if (!isNullOrUndefined(value) && mask !== null) {\r\n formatStr = mgDateFormatter.ConvertMgDateFormatToAngular (mask);\r\n // If control is label control of table, due to query mode, then save the format here.\r\n if (formatStr != null && this._task.isTableControl(controlId)) {\r\n if (this._task.mgInputDateFormat == null)\r\n this._task.mgInputDateFormat = formatStr;\r\n else\r\n formatStr = this._task.mgInputDateFormat;\r\n }\r\n return super.transform(value, formatStr);\r\n }\r\n else\r\n value = \"\";\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport class MgDateFormatter {\r\n\r\n ConvertMgDateFormatToAngular(mgDateMask: string) : string\r\n {\r\n let formatStr: StringBuilder = new StringBuilder ();\r\n\r\n if (mgDateMask !== null) {\r\n for (let i: number = 0; i < mgDateMask.length;) {\r\n switch (mgDateMask.charCodeAt(i)) {\r\n case PICInterface.PIC_YYYY:\r\n formatStr.Append('yyyy');\r\n i += 4;\r\n break;\r\n case PICInterface.PIC_MMD:\r\n formatStr.Append('MM');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_YY:\r\n formatStr.Append('yy');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_MMM:\r\n {\r\n let cnt = 0;\r\n for (;i < mgDateMask.length; i++)\r\n if (mgDateMask.charCodeAt(i) == PICInterface.PIC_MMM)\r\n cnt++;\r\n else\r\n break;\r\n\r\n if (cnt == 3)\r\n formatStr.Append('MMM');\r\n if (cnt > 3)\r\n formatStr.Append('MMMM');\r\n }\r\n\r\n break;\r\n case PICInterface.PIC_DD:\r\n formatStr.Append('dd');\r\n i += 2;\r\n\r\n break;\r\n\r\n case PICInterface.PIC_WWW: {\r\n let cnt = 0;\r\n for (;i < mgDateMask.length; i++)\r\n if (mgDateMask.charCodeAt(i) == PICInterface.PIC_WWW)\r\n cnt++;\r\n else\r\n break;\r\n\r\n if (cnt == 3)\r\n formatStr.Append('EEE');\r\n if (cnt > 3)\r\n formatStr.Append('EEEE');\r\n }\r\n\r\n break;\r\n\r\n default:\r\n formatStr.Append(mgDateMask.charAt(i));\r\n i++;\r\n break;\r\n }\r\n }\r\n return formatStr.ToString();\r\n }\r\n else\r\n return \"dd-mm-yyyy\"; // return default format.\r\n\r\n }\r\n}\r\n","import {Directive, HostListener} from '@angular/core';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder, RefParam} from '@magic-xpa/mscorelib';\r\nimport {PICInterface, StorageAttribute} from '@magic-xpa/utils';\r\nimport {MagicDirective} from './magic.directive';\r\nimport {AbstractControl, Validators} from '@angular/forms';\r\nimport {PIC} from '@magic-xpa/gui';\r\nimport {MgDateFormatter} from '../pipes/date.magic.pipe';\r\nimport {isUndefined} from '@magic-xpa/mscorelib';\r\nimport {Environment, LastFocusedManager} from \"@magic-xpa/engine\";\r\n/**\r\n * Perform Magic validation on input controls which hold alphanumeric strings\r\n */\r\n@Directive({\n selector: '[mgFormat]',\n standalone: false\n})\r\n\r\n\r\nexport class MgformatMagicDirective {\r\n\r\n datePasteFlag: boolean = false;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(\r\n protected magicDir: MagicDirective ,\r\n protected _task: TaskMagicService\r\n\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n\r\n if(control != null && this._task.mgInputDateFormat == null) {\r\n // get the first date control's format.\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n if (pic.getAttr() == StorageAttribute.DATE ) {\r\n this.formatDate(pic);\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n /**\r\n * This can be used to set pattern\r\n * On input, verifies the input matches the required mask\r\n */\r\n @HostListener('focus', ['$event'])\r\n public onFocusEvent($event){\r\n this.calculatePattern();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n /**\r\n * This flag is needed to skip execution of dateMasking() method when user paste date in input control.\r\n * This is only needed when \"StorageAttribute\" is DATE. But to check type of \"StorageAttribute\", we\r\n need to execute getControlMetadata() method. So, to reduce this execution overload we set\r\n \"datePasteFlag\" directly.\r\n */\r\n this.datePasteFlag = true;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n public onInputEvent(event){\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n if (attr == StorageAttribute.DATE){\r\n if(!this.datePasteFlag)\r\n this.dateMasking(event);\r\n\r\n this.datePasteFlag = false;\r\n }\r\n this.calculatePattern();\r\n }\r\n\r\n\r\n //This method inserts '/' as a separator while entering date in the textbox.\r\n //Example: 10/10/2023\r\n dateMasking(event){\r\n\r\n const input = event.target;\r\n let cursorPos = event.target.selectionStart;\r\n const separator = this._task.mgInputDateFormat.includes('/')? '/':'-';\r\n\r\n if(cursorPos >= input.value.length) {\r\n\r\n const value = input.value.replace(/[^a-zA-Z0-9/-]/g, '');\r\n\r\n if (this._task.mgInputDateFormat == \"dd/MM/yyyy\" || this._task.mgInputDateFormat == \"MM/dd/yyyy\" ||this._task.mgInputDateFormat == \"dd-MM-yyyy\" ||this._task.mgInputDateFormat == \"MM-dd-yyyy\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2) + separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5)+ separator + value.slice(5);\r\n else if(value.length >= 10)\r\n input.value = value.slice(0, 10);\r\n\r\n } else if (this._task.mgInputDateFormat == \"yyyy/MM/dd\" || this._task.mgInputDateFormat == \"yyyy/dd/MM\" || this._task.mgInputDateFormat == \"yyyy-MM-dd\" || this._task.mgInputDateFormat == \"yyyy-dd-MM\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '0000' + separator;\r\n else if(value.length == 2 && value[1] == separator)\r\n input.value = '000' + value.slice(0);\r\n else if(value.length == 3 && value[2] == separator)\r\n input.value = '00' + value.slice(0);\r\n else if(value.length == 4 && value[3] == separator)\r\n input.value = '0' + value.slice(0);\r\n else if(value.length == 5 && value[4] != separator)\r\n input.value = value.slice(0, 4) + separator + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 5) + '01' + value.slice(5);\r\n else if(value.length == 7 && value[6] == separator)\r\n input.value = value.slice(0, 5) + '0' + value.slice(5);\r\n else if(value.length == 8 && value[7] != separator)\r\n input.value = value.slice(0, 7) + separator + value.slice(7);\r\n else if(value.length >= 10)\r\n input.value = value.slice(0, 10);\r\n\r\n } else if (this._task.mgInputDateFormat == \"dd/MM/yy\" || this._task.mgInputDateFormat == \"yy/MM/dd\" || this._task.mgInputDateFormat == \"MM/dd/yy\" || this._task.mgInputDateFormat == \"yy/dd/MM\" ||this._task.mgInputDateFormat == \"dd-MM-yy\" || this._task.mgInputDateFormat == \"yy-MM-dd\" || this._task.mgInputDateFormat == \"MM-dd-yy\" || this._task.mgInputDateFormat == \"yy-dd-MM\") {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5)+ separator + value.slice(5);\r\n else if(value.length >= 8)\r\n input.value = value.slice(0, 8);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"dd/MMM/yy\" || this._task.mgInputDateFormat == \"dd-MMM-yy\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"dd/MMM/yyyy\" || this._task.mgInputDateFormat == \"dd-MMM-yyyy\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '01' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"yy/dd/MMM\" || this._task.mgInputDateFormat == \"yy-dd-MMM\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '00' + separator;\r\n else if (value.length == 2 && value[1] == separator)\r\n input.value = 0 + value;\r\n else if(value.length == 3 && value[2] != separator)\r\n input.value = value.slice(0, 2)+ separator + value.slice(2);\r\n else if (value.length == 4 && value[3] == separator)\r\n input.value = value.slice(0, 3) + '01' + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 3) + '0' + value.slice(3);\r\n else if(value.length == 6 && value[5] != separator)\r\n input.value = value.slice(0, 5) + separator + value.slice(5);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"yyyy/dd/MMM\" || this._task.mgInputDateFormat == \"yyyy-dd-MMM\" ) {\r\n if(value.length == 1 && value[0] == separator)\r\n input.value = '0000' + separator;\r\n else if(value.length == 2 && value[1] == separator)\r\n input.value = '000' + value.slice(0);\r\n else if(value.length == 3 && value[2] == separator)\r\n input.value = '00' + value.slice(0);\r\n else if(value.length == 4 && value[3] == separator)\r\n input.value = '0' + value.slice(0);\r\n else if(value.length == 5 && value[4] != separator)\r\n input.value = value.slice(0, 4) + separator + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 5) + '01' + value.slice(5);\r\n else if(value.length == 7 && value[6] == separator)\r\n input.value = value.slice(0, 5) + '0' + value.slice(5);\r\n else if(value.length == 8 && value[7] != separator)\r\n input.value = value.slice(0, 7) + separator + value.slice(7);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"MMM/dd/yy\" || this._task.mgInputDateFormat == \"MMM-dd-yy\" ) {\r\n if(value.length == 4 && value[3] != separator)\r\n input.value = value.slice(0, 3) + separator + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 4)+ '01' + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 4)+ '0' + value.slice(4);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 9)\r\n input.value = value.slice(0, 9);\r\n\r\n } else if (this._task.mgInputDateFormat ==\"MMM/dd/yyyy\" || this._task.mgInputDateFormat == \"MMM-dd-yyyy\" ) {\r\n if(value.length == 4 && value[3] != separator)\r\n input.value = value.slice(0, 3) + separator + value.slice(3);\r\n else if(value.length == 5 && value[4] == separator)\r\n input.value = value.slice(0, 4)+ '01' + value.slice(4);\r\n else if(value.length == 6 && value[5] == separator)\r\n input.value = value.slice(0, 4)+ '0' + value.slice(4);\r\n else if(value.length == 7 && value[6] != separator)\r\n input.value = value.slice(0, 6)+ separator + value.slice(6);\r\n else if(value.length >= 11)\r\n input.value = value.slice(0, 11);\r\n\r\n }\r\n }\r\n if(cursorPos < input.value.length && input.value.length > this._task.mgInputDateFormat.length){\r\n let inputDate = input.value;\r\n let start = input.selectionStart-1;\r\n let end = input.selectionEnd-1;\r\n let indexToRemove = input.selectionStart-1;\r\n\r\n input.value = inputDate.slice(0,indexToRemove) + inputDate.slice(indexToRemove + 1);\r\n input.setSelectionRange(start, end);\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n // This can be used to implement uppercase/lower case\r\n @HostListener('change', ['$event'])\r\n public onChangeEvent(event){\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n\r\n switch (attr)\r\n {\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n this.formatAlphaUnicode (control);\r\n break;\r\n case StorageAttribute.BOOLEAN:\r\n this.formatBoolean(control);\r\n break;\r\n\r\n }\r\n }\r\n\r\n\r\n @HostListener('blur', ['$event'])\r\n public onBlurEvent(event) {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType; \r\n\r\n if(attr == StorageAttribute.DATE){\r\n const century = Environment.Instance.GetCentury(LastFocusedManager.Instance.getCurrTask().getCompIdx());\r\n this.formatDateWithCentury(event.target.value, century, control);\r\n }\r\n\r\n }\r\n\r\n /** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */\r\n formatDateWithCentury(userInput: string, century: number, control: AbstractControl) {\r\n const dateFormat = this._task.mgInputDateFormat;\r\n const separator = userInput.includes('/') ? '/' : \"-\";\r\n let centuryVal = parseInt(century.toString().slice(0, 2));\r\n if(userInput.length == 0)\r\n return ;\r\n\r\n if ((dateFormat == 'dd/MMM/yyyy' || dateFormat == 'dd-MMM-yyyy')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MM/yyyy' || dateFormat == 'dd-MM-yyyy' || dateFormat == 'd/M/yyyy' || dateFormat == 'd-M-yyyy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MM/dd/yyyy' || dateFormat == 'MM-dd-yyyy' || dateFormat == 'M/d/yyyy' || dateFormat == 'M-d-yyyy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if ((dateFormat == 'MMM/dd/yyyy' || dateFormat == 'MMM-dd-yyyy')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/MM/dd' || dateFormat == 'yyyy-MM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/dd/MM' || dateFormat == 'yyyy-dd-MM')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n if ((day < 32 && month < 13)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/dd/MMM' || dateFormat == 'yyyy-dd-MMM')) {\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MM/yy' || dateFormat == 'dd-MM-yy' || dateFormat == 'd/M/yy' || dateFormat == 'd-M-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MM/dd/yy' || dateFormat == 'MM-dd-yy' || dateFormat == 'M/d/yy' || dateFormat == 'M-d-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/MM/dd' || dateFormat == 'yy-MM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/dd/MM' || dateFormat == 'yy-dd-MM')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n if((day < 32 && month < 13)){\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'dd/MMM/yy' || dateFormat == 'dd-MMM-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments1(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yy/dd/MMM' || dateFormat == 'yy-dd-MMM')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments4(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'MMM/dd/yy' || dateFormat == 'MMM-dd-yy')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments2(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if((dateFormat == 'yyyy/MMM/dd' || dateFormat == 'yyyy-MMM-dd' ||dateFormat == 'yy/MMM/dd' || dateFormat == 'yy-MMM-dd')){\r\n const dateArray: string[] = userInput.split(separator);\r\n const [day, month, year] = this.getDateSegments3(dateArray);\r\n const isMonthInNumber: boolean = !isNaN(Number(month));\r\n if ((isMonthInNumber && day < 32 && Number(month) < 13) || (!isMonthInNumber && day < 32)) {\r\n this.updateYear(day, month, year, separator, century, centuryVal, control);\r\n }\r\n\r\n }else if(dateFormat == 'yyyy/MM' || dateFormat == 'yyyy-MM'){\r\n const dateArray: string[] = userInput.split(separator);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[0]);\r\n if (Number(month) < 13) {\r\n this.updateYear(1, month, year, separator, century, centuryVal, control);\r\n }\r\n }\r\n }\r\n\r\n updateYear(day:number, month:string, year:number, separator:string, century:number, centuryVal:number, control:AbstractControl){\r\n let updatedYear = year.toString().length === 2 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '' + year :\r\n year.toString().length === 1 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '0' + year :\r\n year;\r\n\r\n control.setValue(new Date(`${updatedYear}${separator}${month}${separator}${day}`))\r\n }\r\n\r\n getDateSegments1(dateArray){\r\n const day = Number(dateArray[0]);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[2]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments2(dateArray){\r\n const day = Number(dateArray[1]);\r\n const month = dateArray[0];\r\n const year = Number(dateArray[2]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments3(dateArray){\r\n const day = Number(dateArray[2]);\r\n const month = dateArray[1];\r\n const year = Number(dateArray[0]);\r\n return [day, month, year];\r\n }\r\n\r\n getDateSegments4(dateArray){\r\n const day = Number(dateArray[1]);\r\n const month = dateArray[2];\r\n const year = Number(dateArray[0]);\r\n return [day, month, year];\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n calculatePattern ()\r\n {\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id );\r\n\r\n if(control != null ) {\r\n let attr: StorageAttribute = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;\r\n if (attr == StorageAttribute.NUMERIC || attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n\r\n if (this.isPatternGenerationNeeded(attr, pic)) {\r\n let pattern: string = this.generatePattern(attr, pic);\r\n if (control.validator == null)\r\n control.setValidators(Validators.pattern(pattern));\r\n else\r\n control.setValidators([control.validator, Validators.pattern(pattern)]);\r\n }\r\n else {\r\n if (attr == StorageAttribute.ALPHA || attr == StorageAttribute.UNICODE) {\r\n if (control.validator == null)\r\n control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n else {\r\n // re-set all validators again\r\n if (pic.isFormatExp()) {\r\n control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n if (isUndefined(this.magicDir.rowId))\r\n this.magicDir.rowId = '0';\r\n control.setValidators([control.validator, this._task.customValidator(this.magicDir.rowId, this.magicDir.id)]);\r\n }\r\n else\r\n control.setValidators([control.validator, Validators.maxLength(pic.getMaskLength())]);\r\n }\r\n\r\n // control.setValidators(Validators.maxLength(pic.getMaskLength()));\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n formatDate(pic: PIC): void {\r\n let mgDateFormatter = new MgDateFormatter();\r\n this._task.mgInputDateFormat = mgDateFormatter.ConvertMgDateFormatToAngular(pic.getMask());\r\n }\r\n /**\r\n * @ignore\r\n */\r\n formatAlphaUnicode(control: AbstractControl): void {\r\n let value: string = control.value;\r\n\r\n if (value !== null && value.length > 0) {\r\n const newValue: string = this._task.GetRangedValue(this.magicDir.id, value);\r\n if (newValue != null)\r\n value = newValue;\r\n\r\n let pic: PIC = this._task.GetControlPictureMask(this.magicDir.id);\r\n let mask: string = pic.getMask();\r\n let valueStr: StringBuilder = new StringBuilder();\r\n\r\n for (let i: number = 0; i < value.length; i++) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_U:\r\n valueStr.Append(value.charAt(i).toUpperCase());\r\n break;\r\n case PICInterface.PIC_L:\r\n valueStr.Append(value.charAt(i).toLowerCase());\r\n break;\r\n default:\r\n valueStr.Append(value.charAt(i));\r\n break;\r\n }\r\n }\r\n\r\n control.setValue(valueStr.ToString());\r\n\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n formatBoolean (control: AbstractControl): void {\r\n let value: string = control.value;\r\n if (value !== null && value.length > 0) {\r\n let newValue: string = this._task.GetRangedValue (this.magicDir.id , value);\r\n if (newValue.toUpperCase().startsWith(value.toUpperCase())) {\r\n control.setValue(newValue);\r\n } else {\r\n control.setValue(value);\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern from fld's format\r\n /// </summary>\r\n generatePattern (attribute: StorageAttribute, pic: PIC): string {\r\n let pattern: string = '';\r\n\r\n switch (attribute)\r\n {\r\n case StorageAttribute.NUMERIC:\r\n pattern = this.generatePatternForNumber(pic);\r\n break;\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n pattern = this.generatePatternForAlpha(pic);\r\n break;\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern for Alpha\r\n /// </summary>\r\n generatePatternForNumber(pic: PIC): string {\r\n let patternStr: StringBuilder = new StringBuilder ();\r\n\r\n patternStr.Append('^');\r\n if (pic.isNegative())\r\n patternStr.Append('-?');\r\n if (pic.getWholes())\r\n patternStr.AppendFormat('\\\\d{{0},{1}}', 0, pic.getWholes());\r\n if (pic.getDec())\r\n patternStr.AppendFormat('(\\\\.\\\\d{1,{0}})?', pic.getDec());\r\n patternStr.Append('$');\r\n\r\n return patternStr.ToString();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isPatternGenerationNeeded (attr : StorageAttribute, pic : PIC): boolean {\r\n\r\n switch (attr) {\r\n case StorageAttribute.NUMERIC:\r\n return true;\r\n\r\n case StorageAttribute.ALPHA:\r\n case StorageAttribute.UNICODE:\r\n return (pic.getMaskChars() > 0) ? true : false;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n /// <summary>\r\n /// generate pattern for Alpha\r\n /// </summary>\r\n generatePatternForAlpha(pic : PIC): string {\r\n let cnt: number = 0;\r\n let inputAllChars: boolean = false;\r\n let closeSet: boolean = false;\r\n let mask: string = pic.getMask();\r\n let pattern: StringBuilder = new StringBuilder();\r\n\r\n pattern.Append('^');\r\n for (let i: number = 0; i < mask.length;)\r\n {\r\n //start new subset , if mask[i] is one of these.\r\n if (inputAllChars && (mask.charCodeAt(i) == PICInterface.PIC_N || mask.charCodeAt(i) == PICInterface.PIC_U || mask.charCodeAt(i) == PICInterface.PIC_L\r\n || mask.charCodeAt(i) == PICInterface.PIC_X))\r\n {\r\n pattern.Append('(');\r\n closeSet = true;\r\n inputAllChars = false;\r\n }\r\n\r\n cnt = 0;\r\n switch (mask.charCodeAt(i))\r\n {\r\n case PICInterface.PIC_U:\r\n case PICInterface.PIC_X:\r\n case PICInterface.PIC_L:\r\n {\r\n pattern.Append('.');\r\n let inputAllCharsRef: RefParam<boolean> = new RefParam<boolean>(false);\r\n let dirs: string = PICInterface.PIC_U.toString();\r\n dirs += PICInterface.PIC_L.toString();\r\n dirs += PICInterface.PIC_X.toString();\r\n cnt = this.getDirectiveCount(mask, i, dirs, inputAllCharsRef);\r\n inputAllChars = inputAllCharsRef.value;\r\n i += cnt;\r\n\r\n }\r\n break;\r\n case PICInterface.PIC_N:\r\n {\r\n pattern.Append('\\\\d');\r\n let inputAllCharsRef: RefParam<boolean> = new RefParam<boolean>(false);\r\n cnt = this.getDirectiveCount(mask, i, PICInterface.PIC_L.toString(), inputAllCharsRef);\r\n inputAllChars = inputAllCharsRef.value;\r\n i += cnt;\r\n }\r\n break;\r\n\r\n default:\r\n pattern.Append(mask[i]);\r\n i++;\r\n break;\r\n }\r\n if (cnt > 0)\r\n pattern.AppendFormat('{{0},{1}}', inputAllChars ? cnt : 0, cnt);\r\n if (closeSet)\r\n pattern.Append(')');\r\n closeSet = false;\r\n\r\n }\r\n pattern.Append('$');\r\n return pattern.ToString();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getDirectiveCount(mask: string, idx: number, pattern: string, changeInPattern: RefParam<boolean> ): number {\r\n\r\n changeInPattern.value = false;\r\n let patternCount: number = 0;\r\n\r\n // find max chars\r\n while (idx < mask.length && this.IsPatternMatches(mask.charCodeAt(idx).toString(), pattern))\r\n { patternCount++; idx++; }\r\n\r\n\r\n if (idx < mask.length)\r\n changeInPattern.value = true;\r\n\r\n return patternCount;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n IsPatternMatches(mask: string, pattern: string): boolean {\r\n\r\n for (let i:number = 0; i < pattern.length; i++)\r\n if (mask == pattern[i])\r\n return true;\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {StringBuilder} from \"@magic-xpa/mscorelib\"\r\nimport {PICInterface} from \"@magic-xpa/utils\"\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Pipe({\n name: 'magicTime',\n standalone: false\n})\r\nexport class TimeMagicPipe extends DatePipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n super('en-US');\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n let formatStr: StringBuilder = new StringBuilder ();\r\n\r\n if (typeof value !== \"undefined\" && mask !== null) {\r\n for (let i: number = 0; i < mask.length;) {\r\n switch (mask.charCodeAt(i)) {\r\n case PICInterface.PIC_HH:\r\n formatStr.Append('hh');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_MMT:\r\n formatStr.Append('mm');\r\n i += 2;\r\n break;\r\n case PICInterface.PIC_SS:\r\n formatStr.Append('ss');\r\n i += 2;\r\n break;\r\n default:\r\n formatStr.Append(mask.charAt(i));\r\n i++;\r\n break;\r\n }\r\n }\r\n\r\n formatStr.Append(' a');\r\n return super.transform(value, formatStr.ToString());\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { TaskMagicService } from '../../services/task.magics.service';\r\nimport { ControlMetadata } from '../../controls.metadata.model';\r\n\r\n/**\r\n * Validates the field range.\r\n */\r\n@Directive({\n selector: '[rangevalidator] ',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: RangeValidatorMagicDirective,\n multi: true,\n }\n ],\n standalone: false\n})\r\n\r\nexport class RangeValidatorMagicDirective implements Validator {\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param vcRef\r\n */\r\n constructor(protected _task: TaskMagicService, protected vcRef: ViewContainerRef) {\r\n }\r\n\r\n /**\r\n * Validation method\r\n * @param c FormControl to validate\r\n * @returns If validation fails, return error message, else returns null\r\n */\r\n validate(c: FormControl) {\r\n let controlName: string;\r\n controlName = this.getControlName (c);\r\n let properties: ControlMetadata;\r\n properties = this._task.Records.list[\"0\"].getControlMetadata(controlName);\r\n properties.rangeValidator = true;\r\n let errMsg: string = null;\r\n if (c.dirty)\r\n errMsg = this._task.ValidateControlValue (controlName, this._task.ConvertValToNative(controlName, 0, c.value));\r\n let isValid: boolean = (errMsg == null) ? true : false;\r\n if (isValid) {\r\n return null;\r\n }\r\n else {\r\n return {\r\n rangevalidator: {\r\n errorMsg : errMsg\r\n }\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n getControlName(c: FormControl): string | null {\r\n const formGroup = c.parent.controls;\r\n return Object.keys(formGroup).find(name => c === formGroup[name]) || null;\r\n }\r\n}\r\n","import {Component, Input, ViewContainerRef} from \"@angular/core\";\r\nimport {TaskBaseMagicComponent} from \"./task-base.magic.component\";\r\nimport { SubformMagicService } from \"../services/subform.magic.service\";\r\nimport { isNullOrUndefined } from '@magic-xpa/mscorelib';\r\n\r\n/**\r\n * Represents a Magic subform\r\n */\r\n@Component({\n selector: 'magic-subform',\n template: `\r\n <ndc-dynamic\r\n *ngIf=\"Component\" \r\n [ndcDynamicComponent]=\"Component\" \r\n [ndcDynamicInputs]=\"Parameters\">\r\n </ndc-dynamic>\r\n`,\n standalone: false\n})\r\n\r\n\r\nexport class SubformMagicComponent {\r\n /**\r\n * @ignore\r\n */\r\n id : string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @Input('magic') set magic(val) {this.id = val; };\r\n\r\n /**\r\n * @ignore\r\n */\r\n component: TaskBaseMagicComponent = null;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(private vcRef: ViewContainerRef, protected mgSub: SubformMagicService) {\r\n // For angular 13 - find the component from _hostLView\r\n this.component = ((<any>this.vcRef)._hostLView).find(v => !isNullOrUndefined((v as TaskBaseMagicComponent)));\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n get Component(): Component {\r\n return this.mgSub.mgGetComp(this.id);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n get Parameters(): any {\r\n return this.mgSub.mgGetParameters(this.id);\r\n }\r\n}\r\n\r\n","import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport {AccessorMagicService} from \"../services/accessor.magic.service\";\r\nimport {TaskMagicService} from \"../services/task.magics.service\";\r\nimport { isUndefined } from \"@magic-xpa/mscorelib\";\r\n\r\n/**\r\n * Represents a Magic subform\r\n */\r\n@Component({\n selector: 'mgError',\n template: `<div *ngIf=\"HasErrors(id)\">\r\n <div #customContent>\r\n <ng-content></ng-content>\r\n </div>\r\n <span *ngIf=\"defaultDisplay\">\r\n {{mgService.getErrMsg(id, rowId)}} \r\n </span>\r\n </div>\r\n`,\n standalone: false\n})\r\n\r\n\r\nexport class ErrorMagicComponent {\r\n /**\r\n * @ignore\r\n */\r\n id: string;\r\n rowId: string;\r\n /**\r\n * @ignore\r\n */\r\n @Input('magic') set magic(val) {\r\n this.id = val;\r\n };\r\n\r\n @Input('rowId') set rowId1(val) {\r\n this.rowId = val;\r\n };\r\n\r\n // if true - display standard magic error message, if false - customer has provides his own content and we'll use it\r\n defaultDisplay = true;\r\n\r\n @ViewChild('customContent', { static: false }) set CustomContent(innerComponent: ElementRef) {\r\n this.defaultDisplay = innerComponent == undefined || this.isEmpty(innerComponent.nativeElement);\r\n this.changeDetectorRef.detectChanges();\r\n };\r\n\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor(protected _task: TaskMagicService, public mgService: AccessorMagicService, protected changeDetectorRef: ChangeDetectorRef ) {\r\n this.rowId = \"0\";\r\n }\r\n\r\n /**\r\n * returns true if the html element has no children\r\n * @param element\r\n */\r\n isEmpty(element: HTMLElement): boolean {\r\n const nodes = element.childNodes;\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes.item(i);\r\n if (node.nodeType !== 8 && nodes.item(i).textContent.trim().length !== 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n HasErrors(id: string): boolean {\r\n if (!isUndefined(id)) {\r\n let control = this._task.getFormControl(this.rowId, id);\r\n if (control !== null) {\r\n if (control.dirty && (control.hasError('pattern') || control.hasError('required') ||\r\n control.hasError('rangevalidator') || control.hasError('maxlength') || control.hasError('max')))\r\n return true;\r\n if (control.touched && control.hasError('required'))\r\n return true;\r\n\r\n if(this._task.Records.list[this.rowId] && this._task.Records.list[this.rowId].getControlMetadata(id)){\r\n let controlMetadata = this._task.Records.list[this.rowId].getControlMetadata(id);\r\n for (let customValidator of controlMetadata.customValidators.keys()) {\r\n if (control.hasError(customValidator))\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\r\nimport { MagicDirective } from '../magic.directive';\r\nimport {TaskMagicService} from \"../../../services/task.magics.service\";\r\nimport {getGuiEventObj, IGuiEvent} from \"@magic-xpa/engine\";\r\nimport {filter} from \"rxjs/operators\";\r\nimport {CommandType, GuiCommand, HtmlProperties} from \"@magic-xpa/gui\";\r\n\r\n\r\n/**\r\n * Directive for checkboxes, to handle the 'change' event\r\n */\r\n@Directive({\n selector: `\r\n input[type=checkbox][magic]:not([noFormControl])\r\n`,\n standalone: false\n})\r\nexport class CheckboxMagicDirective {\r\n @Input() threeState: boolean = false;\r\n private subscribeRefreshDom: any = null;\r\n private isIndeterminate: boolean = false;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor( protected magicDirective: MagicDirective,\r\n private el: ElementRef,\r\n protected task: TaskMagicService,) {\r\n }\r\n\r\n /**\r\n * Handles the Checkbox 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n if(this.threeState) {\r\n this.handleThreeState();\r\n }\r\n else {\r\n this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if(this.threeState){\r\n let guiEvent: IGuiEvent = getGuiEventObj(\"setAsThreeState\", this.magicDirective.id, +this.magicDirective.rowId);\r\n this.task.insertEvent(guiEvent);\r\n this.el.nativeElement.indeterminate = this.isIndeterminate = this.task.getProperty(this.magicDirective.id, HtmlProperties.CheckBoxIndeterminate, this.magicDirective.rowId);\r\n this.regUpdatesUI();\r\n }\r\n }\r\n private regUpdatesUI() {\r\n this.subscribeRefreshDom = this.task\r\n .refreshDom.pipe(filter(c => this.magicDirective.IsSameElement(c)))\r\n .subscribe(a => {\r\n let command: GuiCommand = a;\r\n try {\r\n this.handleCommand(command);\r\n } catch (ex) {\r\n console.dir(ex);\r\n }\r\n }\r\n );\r\n }\r\n handleCommand(command: GuiCommand){\r\n if (command.CommandType == CommandType.SET_PROPERTY &&\r\n command.Operation == HtmlProperties.CheckBoxIndeterminate) {\r\n this.isIndeterminate = this.el.nativeElement.indeterminate = command.obj1;\r\n }\r\n }\r\n private handleThreeState() {\r\n let value : string = '';\r\n let prevCheckedValue = this.task.getValue(this.magicDirective.id, this.magicDirective.rowId);\r\n const checkbox = this.el.nativeElement;\r\n if (this.isIndeterminate) {\r\n checkbox.checked = false;\r\n checkbox.indeterminate = false;\r\n value = 'unchecked';\r\n } else if (prevCheckedValue) {\r\n checkbox.checked = false;\r\n checkbox.indeterminate = true;\r\n value = 'indeterminate';\r\n } else if (!prevCheckedValue) {\r\n checkbox.checked = true;\r\n checkbox.indeterminate = false;\r\n value = 'checked';\r\n }\r\n // @ts-ignore\r\n this.magicDirective.task.onCheckChanged(value, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n /**\r\n * Cleanup\r\n */\r\n ngOnDestroy(): void {\r\n if(this.subscribeRefreshDom !== null)\r\n this.subscribeRefreshDom.unsubscribe();\r\n }\r\n}\r\n\r\n\r\n","import { Directive, HostListener } from '@angular/core';\r\nimport { MagicDirective } from '../magic.directive';\r\nimport { GuiCommand, HtmlProperties } from \"@magic-xpa/gui\";\r\nimport { filter } from \"rxjs/operators\";\r\n\r\n\r\n/**\r\n * Directive for comboboxes, to handle the 'change' event\r\n */\r\n@Directive({\n selector: `select[magic]:not([multiple])`,\n standalone: false\n})\r\nexport class ComboboxMagicDirective{\r\n\r\n constructor(protected magicDirective: MagicDirective) {\r\n // subcribe to refreshDom. This is a special case for native select HTML control.\r\n // to refresh the selected property. Else by default, HTML element doesn't get refreshed as per\r\n // selected value and 1st element remains selected.\r\n this.magicDirective.task.refreshDom.pipe(filter(c => this.magicDirective.IsSameElement(c))).subscribe(value =>{\r\n let command: GuiCommand = value;\r\n if (command.Operation === HtmlProperties.ItemsList)\r\n this.onComboboxItemsListChanged();\r\n });\r\n }\r\n\r\n /**\r\n * Handles the Combobox 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.onComboboxSelectionChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n\r\n /**\r\n * To refresh Combobox selection as per selected property.\r\n */\r\n onComboboxItemsListChanged(): void {\r\n this.magicDirective.task.refreshView();\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * This service supports custom actions on magic exit\r\n */\r\n@Injectable()\r\nexport class ExitMagicService {\r\n\r\n\r\n /**\r\n * Override this method to implement custom logic on magic exit\r\n */\r\n exitMagic() {\r\n console.log(\"Magic application terminated\");\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Optional,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { CommandType, GuiCommand } from '@magic-xpa/gui';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { EngineMagicService } from '../services/engine.magic.service';\r\nimport { ComponentListMagicService } from '../services/component-list.magic.service';\r\nimport { GuiInteractiveExecutor } from './GuiInteractiveExecutor';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ExitMagicService } from '../services/exit.magic.service';\r\nimport { OverlayWindowService } from '../services/OverlayWindowService';\r\nimport { IMagicViewContainerRef } from '../..';\r\nimport { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {ActivatedRoute, NavigationEnd, Router} from \"@angular/router\";\r\n\r\n/**\r\n * Root Magic component\r\n */\r\n@Component({\n selector: 'magic-root',\n providers: [\n // ExitMagicService\n ],\n template: `\r\n <div #magicRoot>\r\n <ndc-dynamic\r\n *ngIf = \"RootComponent !== null\"\r\n [ndcDynamicComponent]=\"RootComponent\"\r\n [ndcDynamicInputs] =\"RootComponentParameters\">\r\n </ndc-dynamic>\r\n\r\n <div #overlayWindowsContainer magicViewContainerRef>\r\n </div>\r\n </div>\r\n\r\n <div class=\"spinner-background\" *ngIf=\"showSpinner\">\r\n <ng-container [ngTemplateOutlet]=\"SpinnerTemplate ? SpinnerTemplate:defaultSpinner\"></ng-container>\r\n </div>\r\n\r\n <ng-template #defaultSpinner>\r\n <div class=\"mgSpinnerClass\"></div>\r\n </ng-template>\r\n `,\n styles: [`\r\n .mgSpinnerClass {\r\n border: 10px solid #cccccc; /* Light grey */\r\n border-top: 10px solid black; /* Blue */\r\n border-radius: 50%;\r\n position: fixed;\r\n margin: auto;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n width: 100px;\r\n height: 100px;\r\n animation: spin 2s linear infinite;\r\n }\r\n .spinner-background {\r\n /* background fixed across whole screen */\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 1000;\r\n left: 0;\r\n opacity: 0.5;\r\n }\r\n @keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n `],\n standalone: false\n})\r\nexport class MagicShellComponent implements AfterViewInit, IMagicViewContainerRef {\r\n /**\r\n * Root component to be displayed in the window\r\n */\r\n RootComponent : Component = null;\r\n /**\r\n * parameters for the Root Component\r\n */\r\n RootComponentParameters : any;\r\n\r\n overlayWindowsContainerViewRef: ViewContainerRef;\r\n\r\n @ViewChild('magicRoot', { static: true }) rootMagicElementRef: ElementRef;\r\n\r\n @Input() SpinnerTemplate: TemplateRef<any>;\r\n\r\n showSpinner: boolean;\r\n magicEngineTerminated: boolean = false;\r\n\r\n /**\r\n *\r\n * @param magic Magic's service\r\n * @param componentList Magic component list\r\n * @param changeDetectorRef Changes detector\r\n * @param titleService Title setting service\r\n * @param httpClient The native httpClient instance\r\n * @param exitMagicService Magic exit service\r\n */\r\n constructor(protected engineMagicService: EngineMagicService,\r\n protected componentList:ComponentListMagicService,\r\n protected changeDetectorRef: ChangeDetectorRef,\r\n private titleService: Title,\r\n private overlayWindowService: OverlayWindowService,\r\n private httpClient: HttpClient,\r\n private pendingCommandsCollector: CommandsCollectorMagicService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n @Optional() public exitMagicService: ExitMagicService) {\r\n\r\n this.initialize();\r\n this.setTitle();\r\n }\r\n\r\n /**\r\n * Before-unload event listener\r\n * @param event\r\n */\r\n @HostListener('window:beforeunload', ['$event'])\r\n onBeforeUnload(event) {\r\n if(this.engineMagicService.TransCacheExists())\r\n {\r\n // Show the confirmation box before unloading the browser\r\n event.returnValue = 'Are you sure?';\r\n return 'Are you sure?';\r\n }\r\n else\r\n {\r\n // terminate the magic server context using fetch API with keep-alive\r\n this.engineMagicService.TerminateContextUsingFetchAPI();\r\n this.magicEngineTerminated = true;\r\n }\r\n }\r\n\r\n @HostListener('window:unload', ['$event'])\r\n onUnload(event) {\r\n // Chrome provides an opportunity to terminate the context after user approves the browser unload alert\r\n if(!this.magicEngineTerminated)\r\n this.engineMagicService.TerminateContextUsingFetchAPI();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef.nativeElement, this.changeDetectorRef);\r\n\r\n let subscription = this.router.events\r\n .pipe(filter(e => e instanceof NavigationEnd))\r\n .subscribe(e => {\r\n if (this.router.navigated) {\r\n const queryParams = this.route.snapshot.queryParams;\r\n const queryParamsMap = new Map<string, string>();\r\n\r\n // Iterate over the queryParams object and populate the Map\r\n for (const key in queryParams) {\r\n if (queryParams.hasOwnProperty(key)) {\r\n queryParamsMap.set(key, queryParams[key].toString());\r\n }\r\n }\r\n\r\n this.engineMagicService.startMagicEngine(this.httpClient, queryParamsMap);\r\n subscription.unsubscribe();\r\n }\r\n });\r\n }\r\n\r\n setViewContainerRef(vcRef: ViewContainerRef){\r\n this.overlayWindowsContainerViewRef = vcRef;\r\n }\r\n\r\n /**\r\n * Initialization of Magic mechanisms\r\n */\r\n initialize() {\r\n this.registerUICommands();\r\n }\r\n\r\n /**\r\n * Set the title\r\n */\r\n public setTitle( ) {\r\n const newTitle: string = this.componentList.title;\r\n this.titleService.setTitle( newTitle );\r\n }\r\n\r\n /**\r\n * Set the component according to requested form\r\n * @param formName Name of the form to open\r\n * @param taskId Id of opening task\r\n * @param taskDescription TODO\r\n * @param isModal whether modal window is being opened\r\n */\r\n private setComponent(formName: string, taskId: string, taskDescription: string, isModal: boolean) {\r\n this.pendingCommandsCollector.startCollecting();\r\n\r\n if(isModal) {\r\n this.overlayWindowService.open(formName, taskId, taskDescription);\r\n }\r\n else {\r\n this.RootComponent = this.componentList.getComponent(formName);\r\n this.RootComponentParameters = { taskIdParam: taskId, taskDescription: taskDescription };\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n registerUICommands() {\r\n this.engineMagicService.refreshDom.pipe(\r\n filter(command => command.TaskTag === '0'))\r\n .subscribe(command => {\r\n this.executeCommand(command);\r\n });\r\n this.engineMagicService\r\n .interactiveCommands.pipe(\r\n filter(command => command.TaskTag === '0'))\r\n .subscribe(command => {\r\n GuiInteractiveExecutor.executeInteractiveCommand(null, command, this.overlayWindowService);\r\n });\r\n }\r\n\r\n /**\r\n * Execute commands received from the Magic WebClient engine\r\n * @param command\r\n */\r\n executeCommand(command: GuiCommand): void {\r\n switch (command.CommandType) {\r\n case CommandType.OPEN_FORM:\r\n this.setComponent(command.str, command.stringList[0], command.stringList[1], command.Bool1);\r\n break;\r\n\r\n case CommandType.SET_IS_LOGGED_IN:\r\n this.engineMagicService.setIsLoggedIn(command.Bool1);\r\n break;\r\n\r\n case CommandType.CLOSE_FORM:\r\n if (this.RootComponent != null && command.str === this.RootComponentParameters.taskIdParam) {\r\n this.RootComponent = null;\r\n this.RootComponentParameters = {};\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n else { // Close modal window\r\n this.overlayWindowService.close(command.str);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n break;\r\n\r\n case CommandType.RELOAD_PAGE:\r\n window.location.reload();\r\n break;\r\n\r\n case CommandType.SHOW_SPINNER:\r\n if (this.showSpinner != command.Bool1) {\r\n this.showSpinner = command.Bool1;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n break;\r\n\r\n case CommandType.EXIT_MAGIC:\r\n if (this.exitMagicService)\r\n this.exitMagicService.exitMagic();\r\n break;\r\n\r\n case CommandType.SHOW_HTML_ERROR:\r\n window.document.write(command.str);\r\n break;\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { CheckboxControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const CHECKBOX_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagicCheckboxControlValueAccessor),\r\n multi: true,\r\n};\r\n\r\n/**\r\n * Value accessor for Checkbox without a FormControl\r\n */\r\n@Directive({\n selector: `\r\n input[type=checkbox][magic]:not([formControlName]):not([no-form-control]),\r\n input[type=checkbox][magic]:not([formControl]),\r\n input[type=checkbox][magic]:not([ngModel])\r\n `,\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\n providers: [CHECKBOX_VALUE_ACCESSOR],\n standalone: false\n})\r\nexport class MagicCheckboxControlValueAccessor extends CheckboxControlValueAccessor {\r\n\r\n}\r\n","import { Directive, forwardRef } from '@angular/core';\r\nimport { DefaultValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const MAGIC_DEFAULT_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MagicDefaultValueAccessor),\r\n multi: true\r\n};\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Directive({\n selector: `\r\n input[magic]:not([type=checkbox]):not([formControlName]):not([no-form-control]),\r\n textarea[magic]:not([formControlName]):not([noFormControl]):not([no-form-control])\r\n `,\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)'\n },\n providers: [MAGIC_DEFAULT_VALUE_ACCESSOR],\n exportAs: 'magic',\n standalone: false\n})\r\nexport class MagicDefaultValueAccessor extends DefaultValueAccessor {\r\n\r\n /*constructor(_renderer: Renderer2, _elementRef: ElementRef, @Optional() @Inject(COMPOSITION_BUFFER_MODE) _compositionMode: boolean) {\r\n super(_renderer, _elementRef, _compositionMode);\r\n debugger;\r\n }*/\r\n\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { MagicDirective } from \"../magic.directive\";\r\n\r\n\r\n/**\r\n * Directive for checkboxes which should not have a form control\r\n */\r\n@Directive({\n selector: `\r\n input[type=checkbox][magic]:([noFormControl]) \r\n `,\n standalone: false\n})\r\nexport class CheckboxNoFormControlMagicDirective {\r\n constructor(protected magicDirective: MagicDirective) {\r\n }\r\n\r\n\r\n /**\r\n * Handle the 'Checkbox' change event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);\r\n }\r\n}\r\n","import {Directive, HostListener} from \"@angular/core\";\r\nimport {MagicDirective} from '../magic.directive';\r\n\r\n\r\n/**\r\n * Directive for non-checkbox input controls which do not have a form control\r\n */\r\n@Directive({\n selector: `input[magic]:([noFormControl]):not([type=checkbox]),\r\n textarea[magic]:([noFormControl]):not([type=checkbox])`,\n standalone: false\n})\r\nexport class InputNoFormControlMagicDirective {\r\n constructor(protected magicDirective: MagicDirective) {\r\n }\r\n\r\n\r\n /**\r\n * Handles the 'change' event - pass it to the Magic engine\r\n */\r\n @HostListener('change', ['$event'])\r\n onChange($event) {\r\n this.magicDirective.task.setInputTextValue(this.magicDirective.id,\r\n this.magicDirective.rowId,\r\n (<HTMLInputElement>event.srcElement).value)\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n forwardRef,\r\n HostListener,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport {AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {MagicDirective} from \"../../../magic.directive\";\r\nimport {TaskMagicService} from \"../../../../../services/task.magics.service\";\r\nimport {Environment, LastFocusedManager} from \"@magic-xpa/engine\";\r\n\r\nexport const DATE_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateValueAccessor),\r\n multi: true\r\n};\r\n\r\n/**\r\n * The accessor for writing a value and listening to changes on a date input element\r\n *\r\n * ### Example\r\n * `<input type=\"date\" name=\"birthday\" ngModel dateInput>`\r\n * OR\r\n * `<input type=\"date\" formControlName=\"birthday\" dateInput>`\r\n */\r\n@Directive({\n selector: \"[dateInput]\",\n providers: [DATE_VALUE_ACCESSOR],\n standalone: false\n})\r\nexport class DateValueAccessor implements ControlValueAccessor {\r\n @HostListener(\"input\", [\"$event.target.valueAsDate\"])\r\n onChange = (_: any) => {};\r\n @HostListener(\"blur\", [])\r\n onTouched = () => {};\r\n\r\n @HostListener('blur', ['$event'])\r\n public onBlurEvent(event) {\r\n const century = Environment.Instance.GetCentury(LastFocusedManager.Instance.getCurrTask().getCompIdx());\r\n let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);\r\n\r\n this.formatDateWithCentury(event.target.value, century, control);\r\n }\r\n\r\n constructor(private renderer: Renderer2, private elementRef: ElementRef,\r\n protected magicDir: MagicDirective ,\r\n protected _task: TaskMagicService) {}\r\n\r\n\r\n /** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */\r\n formatDateWithCentury(userInput:string, century:number, control: AbstractControl){\r\n const separator = userInput.includes('/')?'/':\"-\";\r\n let centuryVal = parseInt(century.toString().slice(0, 2));\r\n if(userInput.length == 0)\r\n return ;\r\n\r\n const dateArray: string[] = userInput.split(separator);\r\n const day = Number(dateArray[2]);\r\n const month = Number(dateArray[1]);\r\n const year = Number(dateArray[0]);\r\n\r\n let updatedYear = year.toString().length === 2 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '' + year :\r\n year.toString().length === 1 ? (year < century % 100 ? centuryVal + 1 : centuryVal) + '0' + year :\r\n year;\r\n\r\n control.setValue(new Date(`${updatedYear}${separator}${month}${separator}${day}`))\r\n }\r\n\r\n\r\n /** Writes a new value to the element (model -> view) */\r\n writeValue(value: Date): void {\r\n if (!value) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, \"value\", null);\r\n return;\r\n }\r\n\r\n this.renderer.setProperty(\r\n this.elementRef.nativeElement,\r\n \"valueAsDate\",\r\n new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()))\r\n );\r\n }\r\n\r\n /** Registers a callback function, called when value changes (view -> model) */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.onChange = v =>\r\n fn(\r\n v instanceof Date\r\n ? new Date(v.getUTCFullYear(), v.getUTCMonth(), v.getUTCDate())\r\n : v\r\n );\r\n }\r\n\r\n /** Registers a callback function, called when the control is blurred */\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** Enables or disables the element when the control status changes */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.renderer.setProperty(\r\n this.elementRef.nativeElement,\r\n \"disabled\",\r\n isDisabled\r\n );\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Renderer2, ViewContainerRef} from '@angular/core';\r\nimport {getGuiEventObj} from '@magic-xpa/engine';\r\nimport {TaskBaseMagicComponent} from '../task-base.magic.component';\r\nimport {TaskMagicService} from '../../services/task.magics.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n/**\r\n * Responsible for connecting HTML elements to the Magic WebClient engine showing it is not Magic Control but a Dummy control which is used to notify only receeive focus event for now\r\n */\r\n@Directive({\n selector: '[NonMagicControl]',\n standalone: false\n})\r\n\r\nexport class NonMagicControlDirective implements OnInit {\r\n @Input('NonMagicControl')\r\n set magic(val) {\r\n this.id = val;\r\n this.selector = 'NonMagicControl';\r\n };\r\n\r\n /**\r\n * The HTML element connected to this directive\r\n */\r\n protected htmlElement: HTMLElement;\r\n /**\r\n * Magic's component handling this control\r\n */\r\n public component: TaskBaseMagicComponent;\r\n /**\r\n * Collection of event handlers for this element\r\n */\r\n private eventHandlers: { [key: string]: () => void; } = {};\r\n /**\r\n * Id of this element\r\n */\r\n public id: string;\r\n /**\r\n * @ignore\r\n */\r\n protected selector: string;\r\n /**\r\n * @ignore\r\n */\r\n subscribeRefreshDom: Subscription;\r\n\r\n\r\n public eventsOnlyVal = false;\r\n\r\n\r\n /**\r\n *\r\n * @param _task The task service\r\n * @param element The element for which the directive is applied\r\n * @param renderer Renderer for the element\r\n * @param vcRef\r\n */\r\n constructor(protected _task: TaskMagicService,\r\n protected element: ElementRef,\r\n protected renderer: Renderer2,\r\n protected vcRef: ViewContainerRef) {\r\n\r\n this.htmlElement = this.element.nativeElement;\r\n }\r\n\r\n /**\r\n * Get the task service\r\n * @returns\r\n */\r\n get task(): TaskMagicService {\r\n return this._task;\r\n }\r\n\r\n /**\r\n * Register to the events this element may need to handle\r\n */\r\n protected regEvents() {\r\n\r\n // Handle events for which event handler may be removed and restored\r\n this.eventHandlers['focusin'] = this.OnFocus.bind(this);\r\n Object.keys(this.eventHandlers).forEach((key) => {\r\n this.renderer.listen(this.htmlElement, key, this.eventHandlers[key]);\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Handle focus event\r\n */\r\n private OnFocus() {\r\n this.task.insertEvent(getGuiEventObj('focusOnNonMagicControl', '', -1));\r\n event.cancelBubble = true;\r\n }\r\n\r\n /**\r\n * Initialize this object\r\n */\r\n ngOnInit(): void {\r\n this.regEvents();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {TaskMagicService} from \"../../services/task.magics.service\";\r\n\r\n@Pipe({\n name: 'magicTime24',\n standalone: false\n})\r\nexport class Time24MagicPipe implements PipeTransform {\r\n\r\n constructor(protected _task: TaskMagicService) {\r\n\r\n }\r\n\r\n transform(value: any, controlId: string): any {\r\n let mask: string = this._task.GetControlPictureMask (controlId).getMask();\r\n\r\n if (typeof value !== \"undefined\" && value !== null && mask !== null) {\r\n\r\n const date = new Date(value);\r\n const hours = date.getHours().toString().padStart(2, '0');\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const seconds = date.getSeconds().toString().padStart(2, '0');\r\n\r\n if(mask.length == 5){\r\n return `${hours}:${minutes}`;\r\n }else if(mask.length > 5){\r\n return `${hours}:${minutes}:${seconds}`;\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DynamicModule } from 'ng-dynamic-component';\r\nimport { NoControlMagicDirective } from './ui/directives/magic/nocontrol.magic.directive';\r\nimport { MagicOverlayContainer } from './ui/magic-modal/magic-overlay-container';\r\nimport { RouterContainerMagicComponent } from './ui/router-container.magic.component';\r\nimport { MgformatMagicDirective } from './ui/directives/mgformat.magic.directive';\r\nimport { DateMagicPipe } from './ui/pipes/date.magic.pipe';\r\nimport { TimeMagicPipe } from './ui/pipes/time.magic.pipe';\r\nimport { RangeValidatorMagicDirective } from './ui/directives/range-validator.magic.directive';\r\nimport { SubformMagicComponent } from './ui/subform.magic.component';\r\nimport { ErrorMagicComponent } from './ui/mgerror.magic.component';\r\nimport { CheckboxMagicDirective } from './ui/directives/magic/checkbox.magic.directive';\r\nimport { ComboboxMagicDirective } from './ui/directives/magic/combobox.magic.directive';\r\nimport { MagicShellComponent } from './ui/magic-root.component';\r\nimport { MagicCheckboxControlValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive';\r\nimport { MagicDefaultValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/default.cva.directive';\r\nimport { MagicDirective } from './ui/directives/magic.directive';\r\nimport { TaskBaseMagicComponent } from './ui/task-base.magic.component';\r\nimport { RowMagicDirective } from './ui/directives/magic/row.magic.directive';\r\nimport { CheckboxNoFormControlMagicDirective } from './ui/directives/magic/checkbox-noformcontrol.magic.directive';\r\nimport { InputNoFormControlMagicDirective } from './ui/directives/magic/input.noformcontrol.magic.directive';\r\nimport { DateValueAccessor } from './ui/directives/magic/form-controls/control-value-accessors/date.cva.directive';\r\nimport { OverlayContainerMagicProvider } from './services/overlay.conainer.magic.provider';\r\nimport { MagicOverlayContainerWrapper } from './ui/magic-modal/magic-overlay-container-wrapper';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { NonMagicControlDirective } from './ui/directives/NonMagicControlDirective';\r\nimport { MagicAlertComponent } from './ui/components/magic-alert.component';\r\nimport { ConfirmationComponentsMagicProvider } from './services/confirmation.components.magic.provider';\r\nimport { MagicConfirmationBoxComponent } from './ui/components/magic-confirmation-box.component';\r\nimport { MagicFocusDirective } from './ui/directives/magic-focus.directive';\r\nimport { BaseMagicAlertComponent } from './ui/components/base-magic-alert.component';\r\nimport { BaseMagicConfirmComponent } from './ui/components/base-magic-confirm.component';\r\nimport { MagicViewContainerRef } from './ui/directives/magicViewContainerRef.directive';\r\nimport { MaskitoModule } from \"@maskito/angular\";\r\nimport { Time24MagicPipe } from \"./ui/pipes/time24.magic.pipe\";\r\n/**\r\n * @ignore\r\n */\r\nconst decs = [\r\n MagicDirective,\r\n CheckboxMagicDirective,\r\n CheckboxNoFormControlMagicDirective,\r\n InputNoFormControlMagicDirective,\r\n ComboboxMagicDirective,\r\n RowMagicDirective,\r\n\r\n MagicCheckboxControlValueAccessor,\r\n MagicDefaultValueAccessor,\r\n DateValueAccessor,\r\n TaskBaseMagicComponent,\r\n MagicOverlayContainer,\r\n MagicAlertComponent,\r\n MagicConfirmationBoxComponent,\r\n BaseMagicAlertComponent,\r\n BaseMagicConfirmComponent,\r\n MagicOverlayContainerWrapper,\r\n RouterContainerMagicComponent,\r\n MagicShellComponent,\r\n SubformMagicComponent,\r\n ErrorMagicComponent,\r\n NoControlMagicDirective,\r\n\r\n MgformatMagicDirective,\r\n DateMagicPipe,\r\n TimeMagicPipe,\r\n RangeValidatorMagicDirective,\r\n NonMagicControlDirective,\r\n MagicFocusDirective,\r\n MagicViewContainerRef,\r\n Time24MagicPipe\r\n\r\n\r\n];\r\n\r\n/**\r\n * @ignore\r\n */\r\n@NgModule({\n declarations: [...decs],\n exports: [...decs, MaskitoModule],\n imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n DynamicModule],\r\n providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withInterceptorsFromDi())]\r\n})\r\nexport class MagicModule {\r\n\r\n}\r\n","import {MAT_DATE_LOCALE, NativeDateAdapter} from '@angular/material/core';\r\nimport { formatDate } from '@angular/common';\r\nimport {TaskMagicService} from \"./task.magics.service\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\n\r\nexport const MG_FORMATS = {\r\n parse: {dateInput: {month: 'short', year: 'numeric', day: 'numeric'}},\r\n display: {\r\n dateInput: 'input',\r\n monthYearLabel: {year: 'numeric', month: 'short'},\r\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\r\n monthYearA11yLabel: {year: 'numeric', month: 'long'}\r\n }\r\n};\r\n\r\n\r\n@Injectable()\r\nexport class MgDateAdapter extends NativeDateAdapter {\r\n public mgdtfmt: string = null;\r\n constructor(\r\n protected task: TaskMagicService,\r\n @Inject(MAT_DATE_LOCALE) public localeId: string\r\n ) {\r\n\r\n super(localeId);\r\n this.setLocale(localeId);\r\n }\r\n\r\n parse (value: any) : Date | null\r\n {\r\n let valueStr: string = value;\r\n let date = 0, month = 0, year = 0;\r\n let mgDateMask: string = this.mgdtfmt;\r\n let sep = valueStr.indexOf('/') > 0 ? '/' : '-';\r\n\r\n if (value == null || value == \"\") return null;\r\n if (this.mgdtfmt == null && this.task.mgInputDateFormat != null)\r\n this.mgdtfmt = this.task.mgInputDateFormat;\r\n if ((this.mgdtfmt.indexOf('MMM') > 0) || (this.mgdtfmt.indexOf('MMMM') > 0))\r\n return new Date(value);\r\n if (mgDateMask !== null) {\r\n for (let i=0; i < mgDateMask.length;) {\r\n switch (mgDateMask[i]) {\r\n case 'd': {\r\n let tmpStr: string;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n if (len > -1)\r\n valueStr = valueStr.substr(len+1);\r\n for (;mgDateMask[i] == 'd'; i++);\r\n date = (Number)(tmpStr);\r\n }\r\n break;\r\n case 'M': {\r\n let tmpStr: string;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n\r\n if (len > -1)\r\n valueStr = valueStr.substr(len+1);\r\n\r\n for (; mgDateMask[i] == 'M' ;i++);\r\n month = (Number)(tmpStr) > 0 ? (Number)(tmpStr)- 1 : 0;\r\n }\r\n break;\r\n case 'y': {\r\n let tmpStr;\r\n let len = valueStr.indexOf(sep, 0);\r\n tmpStr = len == -1 ? valueStr : valueStr.substr(0, len);\r\n if (len > -1) {\r\n valueStr = valueStr.substr(len + 1);\r\n }\r\n for (; mgDateMask[i] == 'y' ;i++);\r\n year = (Number)(tmpStr);\r\n }\r\n break;\r\n default:\r\n i++;\r\n break;\r\n }\r\n }\r\n\r\n if (month == 0 && year == 0 && date == 0)\r\n return null;\r\n return new Date(year, month, date);\r\n }\r\n\r\n}\r\n\r\nformat(date: Date, displayFormat: Object): string {\r\n if (this.mgdtfmt == null && this.task.mgInputDateFormat != null)\r\n this.mgdtfmt = this.task.mgInputDateFormat;\r\n if (displayFormat === 'input') {\r\n if (this.mgdtfmt == null)\r\n this.mgdtfmt = 'M/d/yyyy'; //default format\r\n return formatDate(date,this.mgdtfmt,this.locale);\r\n } else {\r\n return date.toDateString();\r\n }\r\n }\r\n}\r\n\r\n","import { MagicServices } from \"./magic.services\";\r\nimport { TaskMagicService } from \"./task.magics.service\";\r\nimport { SubformMagicService } from \"./subform.magic.service\";\r\nimport { TableMagicService } from \"./table.magic.service\";\r\nimport { TitleMagicService } from \"./title.magic.service\";\r\nimport { AccessorMagicService } from \"./accessor.magic.service\";\r\nimport {MgDateAdapter, MG_FORMATS} from \"./mg-date-adapter\";\r\nimport {DateAdapter, MAT_DATE_FORMATS} from '@angular/material/core';\r\n\r\nexport const matDateProviders = [\r\n {provide: DateAdapter, useClass: MgDateAdapter},\r\n {provide: MAT_DATE_FORMATS, useValue: MG_FORMATS}\r\n];\r\n\r\n\r\n/**\r\n * Magic service providers\r\n */\r\nexport const basicMagicProviders = [\r\n MagicServices,\r\n TaskMagicService,\r\n SubformMagicService,\r\n TitleMagicService,\r\n AccessorMagicService,\r\n matDateProviders,\r\n];\r\n\r\n\r\n\r\n export const magicProviders = [\r\n ...basicMagicProviders,\r\n TableMagicService\r\n];\r\n","/**\r\n * @ignore\r\n */\r\n///////////////////////////////////////////////////////////\r\n// class to hold gui-related helper methods\r\n///////////////////////////////////////////////////////////\r\nexport class utils {\r\n\r\n ///////////////////////////////////////////////////////////\r\n // Calculate the distance between the control and the supplied x,y coordinates\r\n ///////////////////////////////////////////////////////////\r\n static getDistance(control: Element, x: number, y: number): number {\r\n\r\n let left = control.clientLeft, top = control.clientTop;\r\n\r\n let dx, dy: number;\r\n const right = left + control.clientWidth;\r\n const bottom = top + control.clientHeight;\r\n\r\n if (x < left) {\r\n dx = left - x;\r\n } else if (x > right) {\r\n dx = x - right;\r\n } else {\r\n dx = 0;\r\n }\r\n\r\n if (y < top) {\r\n dy = top - y;\r\n } else if (y > bottom) {\r\n dy = y - bottom;\r\n } else {\r\n dy = 0;\r\n }\r\n const ret = (dx * dx + dy * dy)\r\n return ret;\r\n }\r\n\r\n ///////////////////////////////////////////////////////////\r\n //\r\n ///////////////////////////////////////////////////////////\r\n static getDimentions(el) {\r\n let xPos = 0;\r\n let yPos = 0;\r\n let width = el.width;\r\n let height = el.height;\r\n\r\n while (el) {\r\n if (el.tagName == \"BODY\") {\r\n // deal with browser quirks with body/window/document and page scroll\r\n let xScroll = el.scrollLeft || document.documentElement.scrollLeft;\r\n let yScroll = el.scrollTop || document.documentElement.scrollTop;\r\n\r\n xPos += (el.offsetLeft - xScroll + el.clientLeft);\r\n yPos += (el.offsetTop - yScroll + el.clientTop);\r\n } else {\r\n // for all other non-BODY elements\r\n xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);\r\n yPos += (el.offsetTop - el.scrollTop + el.clientTop);\r\n }\r\n\r\n el = el.offsetParent;\r\n\r\n }\r\n return {\r\n x: xPos,\r\n y: yPos,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n}\r\n","/**\r\n * @ignore\r\n */\r\nexport class ModalFormDefinition {\r\n taskId: string = \"\";\r\n comp: any = null;\r\n parameters: any = {};\r\n}\r\n","/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./src/controls.metadata.model\";\nexport * from \"./src/magic.core.module\";\nexport * from \"./src/interfaces/sub-form-definition.iterface\";\nexport * from \"./src/services/accessor.magic.service\";\nexport * from \"./src/services/commands-collector.magic.service\";\nexport * from \"./src/services/component-list.magic.service\";\nexport * from \"./src/services/confirmation.components.magic.provider\";\nexport * from \"./src/services/engine.magic.service\";\nexport * from \"./src/services/exit.magic.service\";\nexport * from \"./src/services/ISubformMagicService\";\nexport * from \"./src/services/magic-color.service\";\nexport * from \"./src/services/magic.lazy.loader.service\";\nexport * from \"./src/services/magic.providers\";\nexport * from \"./src/services/magic.services\";\nexport * from \"./src/services/mg-date-adapter\";\nexport * from \"./src/services/overlay.conainer.magic.provider\";\nexport * from \"./src/services/OverlayWindowService\";\nexport * from \"./src/services/router-commands.magic.service\";\nexport * from \"./src/services/StylesMapManager\";\nexport * from \"./src/services/subform.magic.service\";\nexport * from \"./src/services/table.magic.service\";\nexport * from \"./src/services/task.magics.service\";\nexport * from \"./src/services/title.magic.service\";\nexport * from \"./src/ui/GuiInteractiveExecutor\";\nexport * from \"./src/ui/magic-confirmationBox\";\nexport * from \"./src/ui/magic-root.component\";\nexport * from \"./src/ui/mgerror.magic.component\";\nexport * from \"./src/ui/router-container.magic.component\";\nexport * from \"./src/ui/subform.magic.component\";\nexport * from \"./src/ui/task-base.magic.component\";\nexport * from \"./src/ui/utils\";\nexport * from \"./src/ui/components/base-magic-alert.component\";\nexport * from \"./src/ui/components/base-magic-confirm.component\";\nexport * from \"./src/ui/components/magic-alert.component\";\nexport * from \"./src/ui/components/magic-confirmation-box.component\";\nexport * from \"./src/ui/directives/magic-focus.directive\";\nexport * from \"./src/ui/directives/magic.directive\";\nexport * from \"./src/ui/directives/magicViewContainerRef.directive\";\nexport * from \"./src/ui/directives/mgformat.magic.directive\";\nexport * from \"./src/ui/directives/NonMagicControlDirective\";\nexport * from \"./src/ui/directives/range-validator.magic.directive\";\nexport * from \"./src/ui/directives/magic/checkbox-noformcontrol.magic.directive\";\nexport * from \"./src/ui/directives/magic/checkbox.magic.directive\";\nexport * from \"./src/ui/directives/magic/combobox.magic.directive\";\nexport * from \"./src/ui/directives/magic/input.noformcontrol.magic.directive\";\nexport * from \"./src/ui/directives/magic/nocontrol.magic.directive\";\nexport * from \"./src/ui/directives/magic/row.magic.directive\";\nexport * from \"./src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive\";\nexport * from \"./src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive\";\nexport * from \"./src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive\";\nexport * from \"./src/ui/magic-modal/base-magic-overlay-container\";\nexport * from \"./src/ui/magic-modal/magic-modal-form\";\nexport * from \"./src/ui/magic-modal/magic-modal-interface\";\nexport * from \"./src/ui/magic-modal/magic-overlay-container-wrapper\";\nexport * from \"./src/ui/magic-modal/magic-overlay-container\";\nexport * from \"./src/ui/pipes/date.magic.pipe\";\nexport * from \"./src/ui/pipes/time.magic.pipe\";\nexport * from \"./src/ui/pipes/time24.magic.pipe\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EngineMagicService","i1.TaskMagicService","i3.ComponentListMagicService","i4.CommandsCollectorMagicService","i5.RouterCommandsMagicService","i6.MagicLazyLoaderService","i1","i2.EngineMagicService","i3.TaskMagicService","i4.ComponentListMagicService","i5.CommandsCollectorMagicService","i6.RouterCommandsMagicService","i1.ComponentListMagicService","i2.MagicLazyLoaderService","i3.MagicLazyLoaderService","i4.OverlayContainerMagicProvider","i5.ConfirmationComponentsMagicProvider","i2.OverlayWindowService","i2.TaskMagicService","i2.MagicColorService","i2.SubformMagicService","i3.TableMagicService","i4.TitleMagicService","i5.AccessorMagicService","i1.MagicServices","i2","i3.RowMagicDirective","i1.MagicDirective","i1.SubformMagicService","i2.AccessorMagicService","i2.ComponentListMagicService","i3","i4.OverlayWindowService","i5","i6.CommandsCollectorMagicService","i7","i8.ExitMagicService"],"mappings":"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"}
|