@magic-xpa/angular 4.1100.0-dev4110.99 → 4.1101.0-dev4111.269

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.
Files changed (170) hide show
  1. package/README.md +5 -5
  2. package/{esm2020 → esm2022}/index.mjs +59 -59
  3. package/{esm2020 → esm2022}/magic-xpa-angular.mjs +1 -1
  4. package/esm2022/src/controls.metadata.model.mjs +183 -0
  5. package/{esm2020 → esm2022}/src/interfaces/sub-form-definition.iterface.mjs +1 -1
  6. package/{esm2020 → esm2022}/src/magic.core.module.mjs +159 -160
  7. package/{esm2020 → esm2022}/src/services/ISubformMagicService.mjs +1 -1
  8. package/esm2022/src/services/OverlayWindowService.mjs +245 -0
  9. package/esm2022/src/services/StylesMapManager.mjs +28 -0
  10. package/esm2022/src/services/accessor.magic.service.mjs +358 -0
  11. package/esm2022/src/services/commands-collector.magic.service.mjs +47 -0
  12. package/esm2022/src/services/component-list.magic.service.mjs +45 -0
  13. package/{esm2020 → esm2022}/src/services/confirmation.components.magic.provider.mjs +21 -21
  14. package/esm2022/src/services/engine.magic.service.mjs +80 -0
  15. package/{esm2020 → esm2022}/src/services/exit.magic.service.mjs +13 -13
  16. package/esm2022/src/services/magic-color.service.mjs +101 -0
  17. package/{esm2020 → esm2022}/src/services/magic.lazy.loader.service.mjs +16 -16
  18. package/{esm2020 → esm2022}/src/services/magic.providers.mjs +24 -24
  19. package/esm2022/src/services/magic.services.mjs +36 -0
  20. package/esm2022/src/services/mg-date-adapter.mjs +108 -0
  21. package/{esm2020 → esm2022}/src/services/overlay.conainer.magic.provider.mjs +14 -14
  22. package/esm2022/src/services/router-commands.magic.service.mjs +31 -0
  23. package/esm2022/src/services/subform.magic.service.mjs +195 -0
  24. package/esm2022/src/services/table.magic.service.mjs +81 -0
  25. package/esm2022/src/services/task.magics.service.mjs +648 -0
  26. package/esm2022/src/services/title.magic.service.mjs +19 -0
  27. package/esm2022/src/ui/GuiInteractiveExecutor.mjs +114 -0
  28. package/esm2022/src/ui/components/base-magic-alert.component.mjs +24 -0
  29. package/esm2022/src/ui/components/base-magic-confirm.component.mjs +24 -0
  30. package/esm2022/src/ui/components/magic-alert.component.mjs +36 -0
  31. package/esm2022/src/ui/components/magic-confirmation-box.component.mjs +42 -0
  32. package/esm2022/src/ui/directives/NonMagicControlDirective.mjs +58 -0
  33. package/esm2022/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +29 -0
  34. package/esm2022/src/ui/directives/magic/checkbox.magic.directive.mjs +100 -0
  35. package/esm2022/src/ui/directives/magic/combobox.magic.directive.mjs +37 -0
  36. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +27 -0
  37. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +85 -0
  38. package/esm2022/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +32 -0
  39. package/esm2022/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +28 -0
  40. package/{esm2020 → esm2022}/src/ui/directives/magic/nocontrol.magic.directive.mjs +193 -193
  41. package/esm2022/src/ui/directives/magic/row.magic.directive.mjs +62 -0
  42. package/esm2022/src/ui/directives/magic-focus.directive.mjs +20 -0
  43. package/esm2022/src/ui/directives/magic.directive.mjs +232 -0
  44. package/esm2022/src/ui/directives/magicViewContainerRef.directive.mjs +20 -0
  45. package/esm2022/src/ui/directives/mgformat.magic.directive.mjs +579 -0
  46. package/esm2022/src/ui/directives/range-validator.magic.directive.mjs +60 -0
  47. package/{esm2020 → esm2022}/src/ui/magic-confirmationBox.mjs +41 -41
  48. package/{esm2020 → esm2022}/src/ui/magic-modal/base-magic-overlay-container.mjs +22 -22
  49. package/esm2022/src/ui/magic-modal/magic-modal-form.mjs +6 -0
  50. package/{esm2020 → esm2022}/src/ui/magic-modal/magic-modal-interface.mjs +1 -1
  51. package/esm2022/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +125 -0
  52. package/esm2022/src/ui/magic-modal/magic-overlay-container.mjs +162 -0
  53. package/esm2022/src/ui/magic-root.component.mjs +236 -0
  54. package/esm2022/src/ui/mgerror.magic.component.mjs +125 -0
  55. package/esm2022/src/ui/pipes/date.magic.pipe.mjs +106 -0
  56. package/esm2022/src/ui/pipes/time.magic.pipe.mjs +52 -0
  57. package/esm2022/src/ui/pipes/time24.magic.pipe.mjs +35 -0
  58. package/esm2022/src/ui/router-container.magic.component.mjs +115 -0
  59. package/{esm2020 → esm2022}/src/ui/subform.magic.component.mjs +50 -46
  60. package/esm2022/src/ui/task-base.magic.component.mjs +91 -0
  61. package/{esm2020 → esm2022}/src/ui/utils.mjs +53 -53
  62. package/{fesm2020 → fesm2022}/magic-xpa-angular.mjs +4933 -4495
  63. package/fesm2022/magic-xpa-angular.mjs.map +1 -0
  64. package/index.d.ts +58 -58
  65. package/package.json +10 -16
  66. package/src/controls.metadata.model.d.ts +62 -62
  67. package/src/interfaces/sub-form-definition.iterface.d.ts +12 -12
  68. package/src/magic.core.module.d.ts +41 -41
  69. package/src/services/ISubformMagicService.d.ts +4 -4
  70. package/src/services/OverlayWindowService.d.ts +30 -31
  71. package/src/services/StylesMapManager.d.ts +5 -5
  72. package/src/services/accessor.magic.service.d.ts +69 -69
  73. package/src/services/commands-collector.magic.service.d.ts +15 -15
  74. package/src/services/component-list.magic.service.d.ts +23 -23
  75. package/src/services/confirmation.components.magic.provider.d.ts +8 -8
  76. package/src/services/engine.magic.service.d.ts +27 -27
  77. package/src/services/exit.magic.service.d.ts +6 -6
  78. package/src/services/magic-color.service.d.ts +19 -19
  79. package/src/services/magic.lazy.loader.service.d.ts +6 -6
  80. package/src/services/magic.providers.d.ts +107 -107
  81. package/src/services/magic.services.d.ts +16 -16
  82. package/src/services/mg-date-adapter.d.ts +38 -40
  83. package/src/services/overlay.conainer.magic.provider.d.ts +7 -7
  84. package/src/services/router-commands.magic.service.d.ts +17 -17
  85. package/src/services/subform.magic.service.d.ts +43 -43
  86. package/src/services/table.magic.service.d.ts +30 -30
  87. package/src/services/task.magics.service.d.ts +100 -100
  88. package/src/services/title.magic.service.d.ts +9 -9
  89. package/src/ui/GuiInteractiveExecutor.d.ts +22 -22
  90. package/src/ui/components/base-magic-alert.component.d.ts +10 -10
  91. package/src/ui/components/base-magic-confirm.component.d.ts +10 -10
  92. package/src/ui/components/magic-alert.component.d.ts +6 -6
  93. package/src/ui/components/magic-confirmation-box.component.d.ts +6 -6
  94. package/src/ui/directives/NonMagicControlDirective.d.ts +26 -26
  95. package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +9 -9
  96. package/src/ui/directives/magic/checkbox.magic.directive.d.ts +22 -9
  97. package/src/ui/directives/magic/combobox.magic.directive.d.ts +10 -10
  98. package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +7 -7
  99. package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +23 -17
  100. package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +7 -7
  101. package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +9 -9
  102. package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +18 -18
  103. package/src/ui/directives/magic/row.magic.directive.d.ts +17 -17
  104. package/src/ui/directives/magic-focus.directive.d.ts +9 -9
  105. package/src/ui/directives/magic.directive.d.ts +45 -44
  106. package/src/ui/directives/magicViewContainerRef.directive.d.ts +8 -8
  107. package/src/ui/directives/mgformat.magic.directive.d.ts +38 -31
  108. package/src/ui/directives/range-validator.magic.directive.d.ts +17 -17
  109. package/src/ui/magic-confirmationBox.d.ts +6 -6
  110. package/src/ui/magic-modal/base-magic-overlay-container.d.ts +5 -5
  111. package/src/ui/magic-modal/magic-modal-form.d.ts +5 -5
  112. package/src/ui/magic-modal/magic-modal-interface.d.ts +10 -10
  113. package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +30 -31
  114. package/src/ui/magic-modal/magic-overlay-container.d.ts +24 -25
  115. package/src/ui/magic-root.component.d.ts +43 -40
  116. package/src/ui/mgerror.magic.component.d.ts +20 -20
  117. package/src/ui/pipes/date.magic.pipe.d.ts +17 -17
  118. package/src/ui/pipes/time.magic.pipe.d.ts +11 -11
  119. package/src/ui/pipes/time24.magic.pipe.d.ts +10 -10
  120. package/src/ui/router-container.magic.component.d.ts +29 -30
  121. package/src/ui/subform.magic.component.d.ts +16 -16
  122. package/src/ui/task-base.magic.component.d.ts +34 -34
  123. package/src/ui/utils.d.ts +9 -9
  124. package/esm2020/src/controls.metadata.model.mjs +0 -180
  125. package/esm2020/src/services/OverlayWindowService.mjs +0 -236
  126. package/esm2020/src/services/StylesMapManager.mjs +0 -28
  127. package/esm2020/src/services/accessor.magic.service.mjs +0 -356
  128. package/esm2020/src/services/commands-collector.magic.service.mjs +0 -46
  129. package/esm2020/src/services/component-list.magic.service.mjs +0 -46
  130. package/esm2020/src/services/engine.magic.service.mjs +0 -82
  131. package/esm2020/src/services/magic-color.service.mjs +0 -99
  132. package/esm2020/src/services/magic.services.mjs +0 -31
  133. package/esm2020/src/services/mg-date-adapter.mjs +0 -109
  134. package/esm2020/src/services/router-commands.magic.service.mjs +0 -28
  135. package/esm2020/src/services/subform.magic.service.mjs +0 -184
  136. package/esm2020/src/services/table.magic.service.mjs +0 -77
  137. package/esm2020/src/services/task.magics.service.mjs +0 -624
  138. package/esm2020/src/services/title.magic.service.mjs +0 -18
  139. package/esm2020/src/ui/GuiInteractiveExecutor.mjs +0 -105
  140. package/esm2020/src/ui/components/base-magic-alert.component.mjs +0 -23
  141. package/esm2020/src/ui/components/base-magic-confirm.component.mjs +0 -23
  142. package/esm2020/src/ui/components/magic-alert.component.mjs +0 -35
  143. package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +0 -41
  144. package/esm2020/src/ui/directives/NonMagicControlDirective.mjs +0 -49
  145. package/esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs +0 -28
  146. package/esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs +0 -28
  147. package/esm2020/src/ui/directives/magic/combobox.magic.directive.mjs +0 -36
  148. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs +0 -27
  149. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs +0 -52
  150. package/esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs +0 -32
  151. package/esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs +0 -27
  152. package/esm2020/src/ui/directives/magic/row.magic.directive.mjs +0 -58
  153. package/esm2020/src/ui/directives/magic-focus.directive.mjs +0 -19
  154. package/esm2020/src/ui/directives/magic.directive.mjs +0 -215
  155. package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +0 -19
  156. package/esm2020/src/ui/directives/mgformat.magic.directive.mjs +0 -408
  157. package/esm2020/src/ui/directives/range-validator.magic.directive.mjs +0 -58
  158. package/esm2020/src/ui/magic-modal/magic-modal-form.mjs +0 -8
  159. package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +0 -121
  160. package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +0 -159
  161. package/esm2020/src/ui/magic-root.component.mjs +0 -203
  162. package/esm2020/src/ui/mgerror.magic.component.mjs +0 -119
  163. package/esm2020/src/ui/pipes/date.magic.pipe.mjs +0 -105
  164. package/esm2020/src/ui/pipes/time.magic.pipe.mjs +0 -51
  165. package/esm2020/src/ui/pipes/time24.magic.pipe.mjs +0 -34
  166. package/esm2020/src/ui/router-container.magic.component.mjs +0 -108
  167. package/esm2020/src/ui/task-base.magic.component.mjs +0 -86
  168. package/fesm2015/magic-xpa-angular.mjs +0 -4865
  169. package/fesm2015/magic-xpa-angular.mjs.map +0 -1
  170. package/fesm2020/magic-xpa-angular.mjs.map +0 -1
@@ -0,0 +1,236 @@
1
+ import { ChangeDetectorRef, Component, ElementRef, HostListener, Input, Optional, TemplateRef, ViewChild } from '@angular/core';
2
+ import { CommandType } from '@magic-xpa/gui';
3
+ import { Title } from '@angular/platform-browser';
4
+ import { EngineMagicService } from '../services/engine.magic.service';
5
+ import { ComponentListMagicService } from '../services/component-list.magic.service';
6
+ import { GuiInteractiveExecutor } from './GuiInteractiveExecutor';
7
+ import { filter } from 'rxjs/operators';
8
+ import { ExitMagicService } from '../services/exit.magic.service';
9
+ import { OverlayWindowService } from '../services/OverlayWindowService';
10
+ import { CommandsCollectorMagicService } from '../services/commands-collector.magic.service';
11
+ import { HttpClient } from '@angular/common/http';
12
+ import { ActivatedRoute, NavigationEnd, Router } from "@angular/router";
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../services/engine.magic.service";
15
+ import * as i2 from "../services/component-list.magic.service";
16
+ import * as i3 from "@angular/platform-browser";
17
+ import * as i4 from "../services/OverlayWindowService";
18
+ import * as i5 from "@angular/common/http";
19
+ import * as i6 from "../services/commands-collector.magic.service";
20
+ import * as i7 from "@angular/router";
21
+ import * as i8 from "../services/exit.magic.service";
22
+ import * as i9 from "@angular/common";
23
+ import * as i10 from "ng-dynamic-component";
24
+ import * as i11 from "./directives/magicViewContainerRef.directive";
25
+ const _c0 = ["magicRoot"];
26
+ function MagicShellComponent_ndc_dynamic_2_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelement(0, "ndc-dynamic", 6);
28
+ } if (rf & 2) {
29
+ const ctx_r0 = i0.ɵɵnextContext();
30
+ i0.ɵɵproperty("ndcDynamicComponent", ctx_r0.RootComponent)("ndcDynamicInputs", ctx_r0.RootComponentParameters);
31
+ } }
32
+ function MagicShellComponent_div_5_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 7);
34
+ i0.ɵɵelementContainer(1, 8);
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const ctx_r0 = i0.ɵɵnextContext();
38
+ const defaultSpinner_r2 = i0.ɵɵreference(7);
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate ? ctx_r0.SpinnerTemplate : defaultSpinner_r2);
41
+ } }
42
+ function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelement(0, "div", 9);
44
+ } }
45
+ export class MagicShellComponent {
46
+ engineMagicService;
47
+ componentList;
48
+ changeDetectorRef;
49
+ titleService;
50
+ overlayWindowService;
51
+ httpClient;
52
+ pendingCommandsCollector;
53
+ route;
54
+ router;
55
+ exitMagicService;
56
+ RootComponent = null;
57
+ RootComponentParameters;
58
+ overlayWindowsContainerViewRef;
59
+ rootMagicElementRef;
60
+ SpinnerTemplate;
61
+ showSpinner;
62
+ magicEngineTerminated = false;
63
+ constructor(engineMagicService, componentList, changeDetectorRef, titleService, overlayWindowService, httpClient, pendingCommandsCollector, route, router, exitMagicService) {
64
+ this.engineMagicService = engineMagicService;
65
+ this.componentList = componentList;
66
+ this.changeDetectorRef = changeDetectorRef;
67
+ this.titleService = titleService;
68
+ this.overlayWindowService = overlayWindowService;
69
+ this.httpClient = httpClient;
70
+ this.pendingCommandsCollector = pendingCommandsCollector;
71
+ this.route = route;
72
+ this.router = router;
73
+ this.exitMagicService = exitMagicService;
74
+ this.initialize();
75
+ this.setTitle();
76
+ }
77
+ onBeforeUnload(event) {
78
+ if (this.engineMagicService.TransCacheExists()) {
79
+ event.returnValue = 'Are you sure?';
80
+ return 'Are you sure?';
81
+ }
82
+ else {
83
+ this.engineMagicService.TerminateContextUsingFetchAPI();
84
+ this.magicEngineTerminated = true;
85
+ }
86
+ }
87
+ onUnload(event) {
88
+ if (!this.magicEngineTerminated)
89
+ this.engineMagicService.TerminateContextUsingFetchAPI();
90
+ }
91
+ ngAfterViewInit() {
92
+ this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef.nativeElement, this.changeDetectorRef);
93
+ let subscription = this.router.events
94
+ .pipe(filter(e => e instanceof NavigationEnd))
95
+ .subscribe(e => {
96
+ if (this.router.navigated) {
97
+ const queryParams = this.route.snapshot.queryParams;
98
+ const queryParamsMap = new Map();
99
+ for (const key in queryParams) {
100
+ if (queryParams.hasOwnProperty(key)) {
101
+ queryParamsMap.set(key, queryParams[key].toString());
102
+ }
103
+ }
104
+ this.engineMagicService.startMagicEngine(this.httpClient, queryParamsMap);
105
+ subscription.unsubscribe();
106
+ }
107
+ });
108
+ }
109
+ setViewContainerRef(vcRef) {
110
+ this.overlayWindowsContainerViewRef = vcRef;
111
+ }
112
+ initialize() {
113
+ this.registerUICommands();
114
+ }
115
+ setTitle() {
116
+ const newTitle = this.componentList.title;
117
+ this.titleService.setTitle(newTitle);
118
+ }
119
+ setComponent(formName, taskId, taskDescription, isModal) {
120
+ this.pendingCommandsCollector.startCollecting();
121
+ if (isModal) {
122
+ this.overlayWindowService.open(formName, taskId, taskDescription);
123
+ }
124
+ else {
125
+ this.RootComponent = this.componentList.getComponent(formName);
126
+ this.RootComponentParameters = { taskIdParam: taskId, taskDescription: taskDescription };
127
+ }
128
+ this.changeDetectorRef.detectChanges();
129
+ }
130
+ registerUICommands() {
131
+ this.engineMagicService.refreshDom.pipe(filter(command => command.TaskTag === '0'))
132
+ .subscribe(command => {
133
+ this.executeCommand(command);
134
+ });
135
+ this.engineMagicService
136
+ .interactiveCommands.pipe(filter(command => command.TaskTag === '0'))
137
+ .subscribe(command => {
138
+ GuiInteractiveExecutor.executeInteractiveCommand(null, command, this.overlayWindowService);
139
+ });
140
+ }
141
+ executeCommand(command) {
142
+ switch (command.CommandType) {
143
+ case CommandType.OPEN_FORM:
144
+ this.setComponent(command.str, command.stringList[0], command.stringList[1], command.Bool1);
145
+ break;
146
+ case CommandType.SET_IS_LOGGED_IN:
147
+ this.engineMagicService.setIsLoggedIn(command.Bool1);
148
+ break;
149
+ case CommandType.CLOSE_FORM:
150
+ if (this.RootComponent != null && command.str === this.RootComponentParameters.taskIdParam) {
151
+ this.RootComponent = null;
152
+ this.RootComponentParameters = {};
153
+ this.changeDetectorRef.detectChanges();
154
+ }
155
+ else {
156
+ this.overlayWindowService.close(command.str);
157
+ this.changeDetectorRef.detectChanges();
158
+ }
159
+ break;
160
+ case CommandType.RELOAD_PAGE:
161
+ window.location.reload();
162
+ break;
163
+ case CommandType.SHOW_SPINNER:
164
+ if (this.showSpinner != command.Bool1) {
165
+ this.showSpinner = command.Bool1;
166
+ this.changeDetectorRef.detectChanges();
167
+ }
168
+ break;
169
+ case CommandType.EXIT_MAGIC:
170
+ if (this.exitMagicService)
171
+ this.exitMagicService.exitMagic();
172
+ break;
173
+ case CommandType.SHOW_HTML_ERROR:
174
+ window.document.write(command.str);
175
+ break;
176
+ }
177
+ }
178
+ static ɵfac = function MagicShellComponent_Factory(t) { return new (t || MagicShellComponent)(i0.ɵɵdirectiveInject(i1.EngineMagicService), i0.ɵɵdirectiveInject(i2.ComponentListMagicService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Title), i0.ɵɵdirectiveInject(i4.OverlayWindowService), i0.ɵɵdirectiveInject(i5.HttpClient), i0.ɵɵdirectiveInject(i6.CommandsCollectorMagicService), i0.ɵɵdirectiveInject(i7.ActivatedRoute), i0.ɵɵdirectiveInject(i7.Router), i0.ɵɵdirectiveInject(i8.ExitMagicService, 8)); };
179
+ static ɵcmp = i0.ɵɵdefineComponent({ type: MagicShellComponent, selectors: [["magic-root"]], viewQuery: function MagicShellComponent_Query(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵviewQuery(_c0, 7);
181
+ } if (rf & 2) {
182
+ let _t;
183
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootMagicElementRef = _t.first);
184
+ } }, hostBindings: function MagicShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
185
+ i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, false, i0.ɵɵresolveWindow)("unload", function MagicShellComponent_unload_HostBindingHandler($event) { return ctx.onUnload($event); }, false, i0.ɵɵresolveWindow);
186
+ } }, inputs: { SpinnerTemplate: "SpinnerTemplate" }, features: [i0.ɵɵProvidersFeature([])], decls: 8, vars: 2, consts: [["magicRoot", ""], ["overlayWindowsContainer", ""], ["defaultSpinner", ""], [3, "ndcDynamicComponent", "ndcDynamicInputs", 4, "ngIf"], ["magicViewContainerRef", ""], ["class", "spinner-background", 4, "ngIf"], [3, "ndcDynamicComponent", "ndcDynamicInputs"], [1, "spinner-background"], [3, "ngTemplateOutlet"], [1, "mgSpinnerClass"]], template: function MagicShellComponent_Template(rf, ctx) { if (rf & 1) {
187
+ i0.ɵɵelementStart(0, "div", null, 0);
188
+ i0.ɵɵtemplate(2, MagicShellComponent_ndc_dynamic_2_Template, 1, 2, "ndc-dynamic", 3);
189
+ i0.ɵɵelement(3, "div", 4, 1);
190
+ i0.ɵɵelementEnd();
191
+ i0.ɵɵtemplate(5, MagicShellComponent_div_5_Template, 2, 1, "div", 5)(6, MagicShellComponent_ng_template_6_Template, 1, 0, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
192
+ } if (rf & 2) {
193
+ i0.ɵɵadvance(2);
194
+ i0.ɵɵproperty("ngIf", ctx.RootComponent !== null);
195
+ i0.ɵɵadvance(3);
196
+ i0.ɵɵproperty("ngIf", ctx.showSpinner);
197
+ } }, dependencies: [i9.NgIf, i9.NgTemplateOutlet, i10.DynamicComponent, i10.DynamicIoDirective, i11.MagicViewContainerRef], styles: [".mgSpinnerClass[_ngcontent-%COMP%]{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:_ngcontent-%COMP%_spin 2s linear infinite}.spinner-background[_ngcontent-%COMP%]{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"] });
198
+ }
199
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicShellComponent, [{
200
+ type: Component,
201
+ args: [{ selector: 'magic-root', providers: [], template: `
202
+ <div #magicRoot>
203
+ <ndc-dynamic
204
+ *ngIf = "RootComponent !== null"
205
+ [ndcDynamicComponent]="RootComponent"
206
+ [ndcDynamicInputs] ="RootComponentParameters">
207
+ </ndc-dynamic>
208
+
209
+ <div #overlayWindowsContainer magicViewContainerRef>
210
+ </div>
211
+ </div>
212
+
213
+ <div class="spinner-background" *ngIf="showSpinner">
214
+ <ng-container [ngTemplateOutlet]="SpinnerTemplate ? SpinnerTemplate:defaultSpinner"></ng-container>
215
+ </div>
216
+
217
+ <ng-template #defaultSpinner>
218
+ <div class="mgSpinnerClass"></div>
219
+ </ng-template>
220
+ `, styles: [".mgSpinnerClass{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:spin 2s linear infinite}.spinner-background{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
221
+ }], () => [{ type: i1.EngineMagicService }, { type: i2.ComponentListMagicService }, { type: i0.ChangeDetectorRef }, { type: i3.Title }, { type: i4.OverlayWindowService }, { type: i5.HttpClient }, { type: i6.CommandsCollectorMagicService }, { type: i7.ActivatedRoute }, { type: i7.Router }, { type: i8.ExitMagicService, decorators: [{
222
+ type: Optional
223
+ }] }], { rootMagicElementRef: [{
224
+ type: ViewChild,
225
+ args: ['magicRoot', { static: true }]
226
+ }], SpinnerTemplate: [{
227
+ type: Input
228
+ }], onBeforeUnload: [{
229
+ type: HostListener,
230
+ args: ['window:beforeunload', ['$event']]
231
+ }], onUnload: [{
232
+ type: HostListener,
233
+ args: ['window:unload', ['$event']]
234
+ }] }); })();
235
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src\\ui\\magic-root.component.ts", lineNumber: 85 }); })();
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9tYWdpYy1yb290LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM3RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQVloRSxpQ0FJYzs7O0lBRFosQUFEQSwwREFBcUMsb0RBQ1U7OztJQU9uRCw4QkFBb0Q7SUFDbEQsMkJBQW1HO0lBQ3JHLGlCQUFNOzs7O0lBRFUsY0FBcUU7SUFBckUsc0dBQXFF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TSxFQUFFLElBQUksRUFBRTtZQUUvQixlQUFlO2tCQUF2QixLQUFLO1lBa0NOLGNBQWM7a0JBRGIsWUFBWTttQkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQWlCL0MsUUFBUTtrQkFEUCxZQUFZO21CQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBL0Q5QixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1hbmRUeXBlLCBHdWlDb21tYW5kIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBFbmdpbmVNYWdpY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbmdpbmUubWFnaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudExpc3RNYWdpY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQtbGlzdC5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR3VpSW50ZXJhY3RpdmVFeGVjdXRvciB9IGZyb20gJy4vR3VpSW50ZXJhY3RpdmVFeGVjdXRvcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRXhpdE1hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V4aXQubWFnaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlXaW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvT3ZlcmxheVdpbmRvd1NlcnZpY2UnO1xyXG5pbXBvcnQgeyBJTWFnaWNWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnLi4vLi4nO1xyXG5pbXBvcnQgeyBDb21tYW5kc0NvbGxlY3Rvck1hZ2ljU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1hbmRzLWNvbGxlY3Rvci5tYWdpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vKipcclxuICogUm9vdCBNYWdpYyBjb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWFnaWMtcm9vdCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgIC8vIEV4aXRNYWdpY1NlcnZpY2VcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2ICNtYWdpY1Jvb3Q+XHJcbiAgICAgIDxuZGMtZHluYW1pY1xyXG4gICAgICAgICpuZ0lmID0gXCJSb290Q29tcG9uZW50ICE9PSBudWxsXCJcclxuICAgICAgICBbbmRjRHluYW1pY0NvbXBvbmVudF09XCJSb290Q29tcG9uZW50XCJcclxuICAgICAgICBbbmRjRHluYW1pY0lucHV0c10gICA9XCJSb290Q29tcG9uZW50UGFyYW1ldGVyc1wiPlxyXG4gICAgICA8L25kYy1keW5hbWljPlxyXG5cclxuICAgICAgPGRpdiAjb3ZlcmxheVdpbmRvd3NDb250YWluZXIgbWFnaWNWaWV3Q29udGFpbmVyUmVmPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJhY2tncm91bmRcIiAqbmdJZj1cInNob3dTcGlubmVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiU3Bpbm5lclRlbXBsYXRlID8gU3Bpbm5lclRlbXBsYXRlOmRlZmF1bHRTcGlubmVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTcGlubmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWdTcGlubmVyQ2xhc3NcIj48L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAubWdTcGlubmVyQ2xhc3Mge1xyXG4gICAgICBib3JkZXI6IDEwcHggc29saWQgI2NjY2NjYzsgLyogTGlnaHQgZ3JleSAqL1xyXG4gICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkIGJsYWNrOyAvKiBCbHVlICovXHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgd2lkdGg6IDEwMHB4O1xyXG4gICAgICBoZWlnaHQ6IDEwMHB4O1xyXG4gICAgICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgfVxyXG4gICAgLnNwaW5uZXItYmFja2dyb3VuZCB7XHJcbiAgICAgIC8qIGJhY2tncm91bmQgZml4ZWQgYWNyb3NzIHdob2xlIHNjcmVlbiAqL1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgICAgei1pbmRleDogMTAwMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgfVxyXG4gICAgQGtleWZyYW1lcyBzcGluIHtcclxuICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4gICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWdpY1NoZWxsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgSU1hZ2ljVmlld0NvbnRhaW5lclJlZiB7XHJcbiAgLyoqXHJcbiAgICogUm9vdCBjb21wb25lbnQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB3aW5kb3dcclxuICAgKi9cclxuICBSb290Q29tcG9uZW50IDogQ29tcG9uZW50ID0gbnVsbDtcclxuICAvKipcclxuICAgKiBwYXJhbWV0ZXJzIGZvciB0aGUgUm9vdCBDb21wb25lbnRcclxuICAgKi9cclxuICBSb290Q29tcG9uZW50UGFyYW1ldGVycyA6IGFueTtcclxuXHJcbiAgb3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdtYWdpY1Jvb3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSByb290TWFnaWNFbGVtZW50UmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSBTcGlubmVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHNob3dTcGlubmVyOiBib29sZWFuO1xyXG4gIG1hZ2ljRW5naW5lVGVybWluYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBtYWdpYyBNYWdpYydzIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY29tcG9uZW50TGlzdCBNYWdpYyBjb21wb25lbnQgbGlzdFxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBDaGFuZ2VzIGRldGVjdG9yXHJcbiAgICogQHBhcmFtIHRpdGxlU2VydmljZSBUaXRsZSBzZXR0aW5nIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBUaGUgbmF0aXZlIGh0dHBDbGllbnQgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0gZXhpdE1hZ2ljU2VydmljZSBNYWdpYyBleGl0IHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZW5naW5lTWFnaWNTZXJ2aWNlOiBFbmdpbmVNYWdpY1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGNvbXBvbmVudExpc3Q6Q29tcG9uZW50TGlzdE1hZ2ljU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlXaW5kb3dTZXJ2aWNlOiBPdmVybGF5V2luZG93U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3I6IENvbW1hbmRzQ29sbGVjdG9yTWFnaWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgIHB1YmxpYyBleGl0TWFnaWNTZXJ2aWNlOiBFeGl0TWFnaWNTZXJ2aWNlKSB7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB0aGlzLnNldFRpdGxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCZWZvcmUtdW5sb2FkIGV2ZW50IGxpc3RlbmVyXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXHJcbiAgb25CZWZvcmVVbmxvYWQoZXZlbnQpIHtcclxuICAgIGlmKHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLlRyYW5zQ2FjaGVFeGlzdHMoKSlcclxuICAgIHtcclxuICAgICAgLy8gU2hvdyB0aGUgY29uZmlybWF0aW9uIGJveCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBicm93c2VyXHJcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gJ0FyZSB5b3Ugc3VyZT8nO1xyXG4gICAgICByZXR1cm4gJ0FyZSB5b3Ugc3VyZT8nO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICAvLyB0ZXJtaW5hdGUgdGhlIG1hZ2ljIHNlcnZlciBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAgICAgdGhpcy5lbmdpbmVNYWdpY1NlcnZpY2UuVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTtcclxuICAgICAgdGhpcy5tYWdpY0VuZ2luZVRlcm1pbmF0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnVubG9hZCcsIFsnJGV2ZW50J10pXHJcbiAgb25VbmxvYWQoZXZlbnQpIHtcclxuICAgIC8vIENocm9tZSBwcm92aWRlcyBhbiBvcHBvcnR1bml0eSB0byB0ZXJtaW5hdGUgdGhlIGNvbnRleHQgYWZ0ZXIgdXNlciBhcHByb3ZlcyB0aGUgYnJvd3NlciB1bmxvYWQgYWxlcnRcclxuICAgIGlmKCF0aGlzLm1hZ2ljRW5naW5lVGVybWluYXRlZClcclxuICAgICAgdGhpcy5lbmdpbmVNYWdpY1NlcnZpY2UuVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd1NlcnZpY2UuaW5pdCh0aGlzLm92ZXJsYXlXaW5kb3dzQ29udGFpbmVyVmlld1JlZiwgdGhpcy5yb290TWFnaWNFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnJvdXRlci5uYXZpZ2F0ZWQpIHtcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHF1ZXJ5UGFyYW1zIG9iamVjdCBhbmQgcG9wdWxhdGUgdGhlIE1hcFxyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcXVlcnlQYXJhbXMpIHtcclxuICAgICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICBxdWVyeVBhcmFtc01hcC5zZXQoa2V5LCBxdWVyeVBhcmFtc1trZXldLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5lbmdpbmVNYWdpY1NlcnZpY2Uuc3RhcnRNYWdpY0VuZ2luZSh0aGlzLmh0dHBDbGllbnQsIHF1ZXJ5UGFyYW1zTWFwKTtcclxuICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRWaWV3Q29udGFpbmVyUmVmKHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmKXtcclxuICAgIHRoaXMub3ZlcmxheVdpbmRvd3NDb250YWluZXJWaWV3UmVmID0gdmNSZWY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXphdGlvbiBvZiBNYWdpYyBtZWNoYW5pc21zXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZSgpIHtcclxuICAgIHRoaXMucmVnaXN0ZXJVSUNvbW1hbmRzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHRpdGxlXHJcbiAgICovXHJcbiAgcHVibGljIHNldFRpdGxlKCApIHtcclxuICAgIGNvbnN0IG5ld1RpdGxlOiBzdHJpbmcgPSB0aGlzLmNvbXBvbmVudExpc3QudGl0bGU7XHJcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSggbmV3VGl0bGUgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgY29tcG9uZW50IGFjY29yZGluZyB0byByZXF1ZXN0ZWQgZm9ybVxyXG4gICAqIEBwYXJhbSBmb3JtTmFtZSBOYW1lIG9mIHRoZSBmb3JtIHRvIG9wZW5cclxuICAgKiBAcGFyYW0gdGFza0lkIElkIG9mIG9wZW5pbmcgdGFza1xyXG4gICAqIEBwYXJhbSB0YXNrRGVzY3JpcHRpb24gVE9ET1xyXG4gICAqIEBwYXJhbSBpc01vZGFsIHdoZXRoZXIgbW9kYWwgd2luZG93IGlzIGJlaW5nIG9wZW5lZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Q29tcG9uZW50KGZvcm1OYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB0YXNrRGVzY3JpcHRpb246IHN0cmluZywgaXNNb2RhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wZW5kaW5nQ29tbWFuZHNDb2xsZWN0b3Iuc3RhcnRDb2xsZWN0aW5nKCk7XHJcblxyXG4gICAgaWYoaXNNb2RhbCkge1xyXG4gICAgICB0aGlzLm92ZXJsYXlXaW5kb3dTZXJ2aWNlLm9wZW4oZm9ybU5hbWUsIHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlJvb3RDb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudExpc3QuZ2V0Q29tcG9uZW50KGZvcm1OYW1lKTtcclxuICAgICAgdGhpcy5Sb290Q29tcG9uZW50UGFyYW1ldGVycyA9IHsgdGFza0lkUGFyYW06IHRhc2tJZCwgdGFza0Rlc2NyaXB0aW9uOiB0YXNrRGVzY3JpcHRpb24gfTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyVUlDb21tYW5kcygpIHtcclxuICAgIHRoaXMuZW5naW5lTWFnaWNTZXJ2aWNlLnJlZnJlc2hEb20ucGlwZShcclxuICAgICAgZmlsdGVyKGNvbW1hbmQgPT4gY29tbWFuZC5UYXNrVGFnID09PSAnMCcpKVxyXG4gICAgICAuc3Vic2NyaWJlKGNvbW1hbmQgPT4ge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5lbmdpbmVNYWdpY1NlcnZpY2VcclxuICAgICAgLmludGVyYWN0aXZlQ29tbWFuZHMucGlwZShcclxuICAgICAgZmlsdGVyKGNvbW1hbmQgPT4gY29tbWFuZC5UYXNrVGFnID09PSAnMCcpKVxyXG4gICAgICAuc3Vic2NyaWJlKGNvbW1hbmQgPT4ge1xyXG4gICAgICAgIEd1aUludGVyYWN0aXZlRXhlY3V0b3IuZXhlY3V0ZUludGVyYWN0aXZlQ29tbWFuZChudWxsLCBjb21tYW5kLCB0aGlzLm92ZXJsYXlXaW5kb3dTZXJ2aWNlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIGNvbW1hbmRzIHJlY2VpdmVkIGZyb20gdGhlIE1hZ2ljIFdlYkNsaWVudCBlbmdpbmVcclxuICAgKiBAcGFyYW0gY29tbWFuZFxyXG4gICAqL1xyXG4gIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IEd1aUNvbW1hbmQpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoY29tbWFuZC5Db21tYW5kVHlwZSkge1xyXG4gICAgICBjYXNlIENvbW1hbmRUeXBlLk9QRU5fRk9STTpcclxuICAgICAgICAgIHRoaXMuc2V0Q29tcG9uZW50KGNvbW1hbmQuc3RyLCBjb21tYW5kLnN0cmluZ0xpc3RbMF0sIGNvbW1hbmQuc3RyaW5nTGlzdFsxXSwgY29tbWFuZC5Cb29sMSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29tbWFuZFR5cGUuU0VUX0lTX0xPR0dFRF9JTjpcclxuICAgICAgICB0aGlzLmVuZ2luZU1hZ2ljU2VydmljZS5zZXRJc0xvZ2dlZEluKGNvbW1hbmQuQm9vbDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb21tYW5kVHlwZS5DTE9TRV9GT1JNOlxyXG4gICAgICAgIGlmICh0aGlzLlJvb3RDb21wb25lbnQgIT0gbnVsbCAmJiBjb21tYW5kLnN0ciA9PT0gdGhpcy5Sb290Q29tcG9uZW50UGFyYW1ldGVycy50YXNrSWRQYXJhbSkge1xyXG4gICAgICAgICAgdGhpcy5Sb290Q29tcG9uZW50ID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuUm9vdENvbXBvbmVudFBhcmFtZXRlcnMgPSB7fTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7IC8vIENsb3NlIG1vZGFsIHdpbmRvd1xyXG4gICAgICAgICAgdGhpcy5vdmVybGF5V2luZG93U2VydmljZS5jbG9zZShjb21tYW5kLnN0cik7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbW1hbmRUeXBlLlJFTE9BRF9QQUdFOlxyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29tbWFuZFR5cGUuU0hPV19TUElOTkVSOlxyXG4gICAgICAgIGlmICh0aGlzLnNob3dTcGlubmVyICE9IGNvbW1hbmQuQm9vbDEpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NwaW5uZXIgPSBjb21tYW5kLkJvb2wxO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb21tYW5kVHlwZS5FWElUX01BR0lDOlxyXG4gICAgICAgIGlmICh0aGlzLmV4aXRNYWdpY1NlcnZpY2UpXHJcbiAgICAgICAgICB0aGlzLmV4aXRNYWdpY1NlcnZpY2UuZXhpdE1hZ2ljKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbW1hbmRUeXBlLlNIT1dfSFRNTF9FUlJPUjpcclxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQud3JpdGUoY29tbWFuZC5zdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,125 @@
1
+ import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from "@angular/core";
2
+ import { AccessorMagicService } from "../services/accessor.magic.service";
3
+ import { TaskMagicService } from "../services/task.magics.service";
4
+ import { isUndefined } from "@magic-xpa/mscorelib";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/task.magics.service";
7
+ import * as i2 from "../services/accessor.magic.service";
8
+ import * as i3 from "@angular/common";
9
+ const _c0 = ["customContent"];
10
+ const _c1 = ["*"];
11
+ function ErrorMagicComponent_div_0_span_4_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "span");
13
+ i0.ɵɵtext(1);
14
+ i0.ɵɵelementEnd();
15
+ } if (rf & 2) {
16
+ const ctx_r0 = i0.ɵɵnextContext(2);
17
+ i0.ɵɵadvance();
18
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.mgService.getErrMsg(ctx_r0.id, ctx_r0.rowId), " ");
19
+ } }
20
+ function ErrorMagicComponent_div_0_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "div")(1, "div", null, 0);
22
+ i0.ɵɵprojection(3);
23
+ i0.ɵɵelementEnd();
24
+ i0.ɵɵtemplate(4, ErrorMagicComponent_div_0_span_4_Template, 2, 1, "span", 1);
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r0 = i0.ɵɵnextContext();
28
+ i0.ɵɵadvance(4);
29
+ i0.ɵɵproperty("ngIf", ctx_r0.defaultDisplay);
30
+ } }
31
+ export class ErrorMagicComponent {
32
+ _task;
33
+ mgService;
34
+ changeDetectorRef;
35
+ id;
36
+ rowId;
37
+ set magic(val) {
38
+ this.id = val;
39
+ }
40
+ ;
41
+ set rowId1(val) {
42
+ this.rowId = val;
43
+ }
44
+ ;
45
+ defaultDisplay = true;
46
+ set CustomContent(innerComponent) {
47
+ this.defaultDisplay = innerComponent == undefined || this.isEmpty(innerComponent.nativeElement);
48
+ this.changeDetectorRef.detectChanges();
49
+ }
50
+ ;
51
+ constructor(_task, mgService, changeDetectorRef) {
52
+ this._task = _task;
53
+ this.mgService = mgService;
54
+ this.changeDetectorRef = changeDetectorRef;
55
+ this.rowId = "0";
56
+ }
57
+ isEmpty(element) {
58
+ const nodes = element.childNodes;
59
+ for (let i = 0; i < nodes.length; i++) {
60
+ const node = nodes.item(i);
61
+ if (node.nodeType !== 8 && nodes.item(i).textContent.trim().length !== 0) {
62
+ return false;
63
+ }
64
+ }
65
+ return true;
66
+ }
67
+ HasErrors(id) {
68
+ if (!isUndefined(id)) {
69
+ let control = this._task.getFormControl(this.rowId, id);
70
+ if (control !== null) {
71
+ if (control.dirty && (control.hasError('pattern') || control.hasError('required') ||
72
+ control.hasError('rangevalidator') || control.hasError('maxlength') || control.hasError('max')))
73
+ return true;
74
+ if (control.touched && control.hasError('required'))
75
+ return true;
76
+ if (this._task.Records.list[this.rowId] && this._task.Records.list[this.rowId].getControlMetadata(id)) {
77
+ let controlMetadata = this._task.Records.list[this.rowId].getControlMetadata(id);
78
+ for (let customValidator of controlMetadata.customValidators.keys()) {
79
+ if (control.hasError(customValidator))
80
+ return true;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ return false;
86
+ }
87
+ static ɵfac = function ErrorMagicComponent_Factory(t) { return new (t || ErrorMagicComponent)(i0.ɵɵdirectiveInject(i1.TaskMagicService), i0.ɵɵdirectiveInject(i2.AccessorMagicService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
88
+ static ɵcmp = i0.ɵɵdefineComponent({ type: ErrorMagicComponent, selectors: [["mgError"]], viewQuery: function ErrorMagicComponent_Query(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵviewQuery(_c0, 5);
90
+ } if (rf & 2) {
91
+ let _t;
92
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomContent = _t.first);
93
+ } }, inputs: { magic: "magic", rowId1: [i0.ɵɵInputFlags.None, "rowId", "rowId1"] }, ngContentSelectors: _c1, decls: 1, vars: 1, consts: [["customContent", ""], [4, "ngIf"]], template: function ErrorMagicComponent_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵprojectionDef();
95
+ i0.ɵɵtemplate(0, ErrorMagicComponent_div_0_Template, 5, 1, "div", 1);
96
+ } if (rf & 2) {
97
+ i0.ɵɵproperty("ngIf", ctx.HasErrors(ctx.id));
98
+ } }, dependencies: [i3.NgIf], encapsulation: 2 });
99
+ }
100
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorMagicComponent, [{
101
+ type: Component,
102
+ args: [{
103
+ selector: 'mgError',
104
+ template: `<div *ngIf="HasErrors(id)">
105
+ <div #customContent>
106
+ <ng-content></ng-content>
107
+ </div>
108
+ <span *ngIf="defaultDisplay">
109
+ {{mgService.getErrMsg(id, rowId)}}
110
+ </span>
111
+ </div>
112
+ `
113
+ }]
114
+ }], () => [{ type: i1.TaskMagicService }, { type: i2.AccessorMagicService }, { type: i0.ChangeDetectorRef }], { magic: [{
115
+ type: Input,
116
+ args: ['magic']
117
+ }], rowId1: [{
118
+ type: Input,
119
+ args: ['rowId']
120
+ }], CustomContent: [{
121
+ type: ViewChild,
122
+ args: ['customContent', { static: false }]
123
+ }] }); })();
124
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src\\ui\\mgerror.magic.component.ts", lineNumber: 22 }); })();
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWdlcnJvci5tYWdpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9tZ2Vycm9yLm1hZ2ljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7SUFXOUMsNEJBQTZCO0lBQzVCLFlBQ0Y7SUFBQSxpQkFBTzs7O0lBREwsY0FDRjtJQURFLG9GQUNGOzs7SUFMQSxBQURZLDJCQUEyQixtQkFDbkI7SUFDbEIsa0JBQXlCO0lBQzNCLGlCQUFNO0lBQ0wsNEVBQTZCO0lBRzlCLGlCQUFNOzs7SUFIRSxlQUFvQjtJQUFwQiw0Q0FBb0I7O0FBT2hDLE1BQU0sT0FBTyxtQkFBbUI7SUE2QlI7SUFBZ0M7SUFBMkM7SUF6QmpHLEVBQUUsQ0FBUztJQUNYLEtBQUssQ0FBUztJQUlkLElBQW9CLEtBQUssQ0FBQyxHQUFHO1FBQzNCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBb0IsTUFBTSxDQUFDLEdBQUc7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUFBLENBQUM7SUFHRixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBRXRCLElBQW1ELGFBQWEsQ0FBQyxjQUEwQjtRQUN6RixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFD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TSxNQUFNO2tCQUF6QixLQUFLO21CQUFDLE9BQU87WUFPcUMsYUFBYTtrQkFBL0QsU0FBUzttQkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkFwQmxDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FjY2Vzc29yTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi4vc2VydmljZXMvYWNjZXNzb3IubWFnaWMuc2VydmljZVwiO1xyXG5pbXBvcnQge1Rhc2tNYWdpY1NlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy90YXNrLm1hZ2ljcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIE1hZ2ljIHN1YmZvcm1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWdFcnJvcicsXHJcbiAgdGVtcGxhdGU6ICAgIGA8ZGl2ICpuZ0lmPVwiSGFzRXJyb3JzKGlkKVwiPlxyXG4gICAgPGRpdiAjY3VzdG9tQ29udGVudD5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICAgPHNwYW4gKm5nSWY9XCJkZWZhdWx0RGlzcGxheVwiPlxyXG4gICAgICB7e21nU2VydmljZS5nZXRFcnJNc2coaWQsIHJvd0lkKX19IFxyXG4gICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbmB9KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBFcnJvck1hZ2ljQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgaWQ6IHN0cmluZztcclxuICByb3dJZDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBASW5wdXQoJ21hZ2ljJykgc2V0IG1hZ2ljKHZhbCkge1xyXG4gICAgdGhpcy5pZCA9IHZhbDtcclxuICB9O1xyXG5cclxuICBASW5wdXQoJ3Jvd0lkJykgc2V0IHJvd0lkMSh2YWwpIHtcclxuICAgIHRoaXMucm93SWQgPSB2YWw7XHJcbiAgfTtcclxuXHJcbiAgLy8gaWYgdHJ1ZSAtIGRpc3BsYXkgc3RhbmRhcmQgbWFnaWMgZXJyb3IgbWVzc2FnZSwgaWYgZmFsc2UgLSBjdXN0b21lciBoYXMgcHJvdmlkZXMgaGlzIG93biBjb250ZW50IGFuZCB3ZSdsbCB1c2UgaXRcclxuICBkZWZhdWx0RGlzcGxheSA9IHRydWU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbUNvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IEN1c3RvbUNvbnRlbnQoaW5uZXJDb21wb25lbnQ6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMuZGVmYXVsdERpc3BsYXkgPSBpbm5lckNvbXBvbmVudCA9PSB1bmRlZmluZWQgfHwgdGhpcy5pc0VtcHR5KGlubmVyQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2s6IFRhc2tNYWdpY1NlcnZpY2UsIHB1YmxpYyBtZ1NlcnZpY2U6IEFjY2Vzc29yTWFnaWNTZXJ2aWNlLCBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmICkge1xyXG4gICAgdGhpcy5yb3dJZCA9IFwiMFwiO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJucyB0cnVlIGlmIHRoZSBodG1sIGVsZW1lbnQgaGFzIG5vIGNoaWxkcmVuXHJcbiAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgKi9cclxuICBpc0VtcHR5KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub2RlcyA9IGVsZW1lbnQuY2hpbGROb2RlcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzLml0ZW0oaSk7XHJcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSA4ICYmIG5vZGVzLml0ZW0oaSkudGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgSGFzRXJyb3JzKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghaXNVbmRlZmluZWQoaWQpKSB7XHJcbiAgICAgIGxldCBjb250cm9sID0gdGhpcy5fdGFzay5nZXRGb3JtQ29udHJvbCh0aGlzLnJvd0lkLCBpZCk7XHJcbiAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuZGlydHkgJiYgKGNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKSB8fCBjb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpIHx8XHJcbiAgICAgICAgICBjb250cm9sLmhhc0Vycm9yKCdyYW5nZXZhbGlkYXRvcicpIHx8IGNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpIHx8IGNvbnRyb2wuaGFzRXJyb3IoJ21heCcpKSlcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSlcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBpZih0aGlzLl90YXNrLlJlY29yZHMubGlzdFt0aGlzLnJvd0lkXSAmJiB0aGlzLl90YXNrLlJlY29yZHMubGlzdFt0aGlzLnJvd0lkXS5nZXRDb250cm9sTWV0YWRhdGEoaWQpKXtcclxuICAgICAgICAgIGxldCBjb250cm9sTWV0YWRhdGEgPSB0aGlzLl90YXNrLlJlY29yZHMubGlzdFt0aGlzLnJvd0lkXS5nZXRDb250cm9sTWV0YWRhdGEoaWQpO1xyXG4gICAgICAgICAgZm9yIChsZXQgY3VzdG9tVmFsaWRhdG9yIG9mIGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmtleXMoKSkge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5oYXNFcnJvcihjdXN0b21WYWxpZGF0b3IpKVxyXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,106 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DatePipe } from '@angular/common';
3
+ import { TaskMagicService } from '../../services/task.magics.service';
4
+ import { StringBuilder, isNullOrUndefined } from "@magic-xpa/mscorelib";
5
+ import { PICInterface } from "@magic-xpa/utils";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/task.magics.service";
8
+ export class Constants {
9
+ static DATE_FMT = 'dd/MMM/yyyy';
10
+ }
11
+ export class DateMagicPipe extends DatePipe {
12
+ _task;
13
+ constructor(_task) {
14
+ super('en-US');
15
+ this._task = _task;
16
+ }
17
+ transform(value, controlId) {
18
+ let mask = this._task.GetControlPictureMask(controlId).getMask();
19
+ let formatStr = null;
20
+ let mgDateFormatter = new MgDateFormatter();
21
+ if (!isNullOrUndefined(value) && mask !== null) {
22
+ formatStr = mgDateFormatter.ConvertMgDateFormatToAngular(mask);
23
+ if (formatStr != null && this._task.isTableControl(controlId)) {
24
+ if (this._task.mgInputDateFormat == null)
25
+ this._task.mgInputDateFormat = formatStr;
26
+ else
27
+ formatStr = this._task.mgInputDateFormat;
28
+ }
29
+ return super.transform(value, formatStr);
30
+ }
31
+ else
32
+ value = "";
33
+ return value;
34
+ }
35
+ static ɵfac = function DateMagicPipe_Factory(t) { return new (t || DateMagicPipe)(i0.ɵɵdirectiveInject(i1.TaskMagicService, 16)); };
36
+ static ɵpipe = i0.ɵɵdefinePipe({ name: "magicDate", type: DateMagicPipe, pure: true });
37
+ }
38
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DateMagicPipe, [{
39
+ type: Pipe,
40
+ args: [{
41
+ name: 'magicDate'
42
+ }]
43
+ }], () => [{ type: i1.TaskMagicService }], null); })();
44
+ export class MgDateFormatter {
45
+ ConvertMgDateFormatToAngular(mgDateMask) {
46
+ let formatStr = new StringBuilder();
47
+ if (mgDateMask !== null) {
48
+ for (let i = 0; i < mgDateMask.length;) {
49
+ switch (mgDateMask.charCodeAt(i)) {
50
+ case PICInterface.PIC_YYYY:
51
+ formatStr.Append('yyyy');
52
+ i += 4;
53
+ break;
54
+ case PICInterface.PIC_MMD:
55
+ formatStr.Append('MM');
56
+ i += 2;
57
+ break;
58
+ case PICInterface.PIC_YY:
59
+ formatStr.Append('yy');
60
+ i += 2;
61
+ break;
62
+ case PICInterface.PIC_MMM:
63
+ {
64
+ let cnt = 0;
65
+ for (; i < mgDateMask.length; i++)
66
+ if (mgDateMask.charCodeAt(i) == PICInterface.PIC_MMM)
67
+ cnt++;
68
+ else
69
+ break;
70
+ if (cnt == 3)
71
+ formatStr.Append('MMM');
72
+ if (cnt > 3)
73
+ formatStr.Append('MMMM');
74
+ }
75
+ break;
76
+ case PICInterface.PIC_DD:
77
+ formatStr.Append('dd');
78
+ i += 2;
79
+ break;
80
+ case PICInterface.PIC_WWW:
81
+ {
82
+ let cnt = 0;
83
+ for (; i < mgDateMask.length; i++)
84
+ if (mgDateMask.charCodeAt(i) == PICInterface.PIC_WWW)
85
+ cnt++;
86
+ else
87
+ break;
88
+ if (cnt == 3)
89
+ formatStr.Append('EEE');
90
+ if (cnt > 3)
91
+ formatStr.Append('EEEE');
92
+ }
93
+ break;
94
+ default:
95
+ formatStr.Append(mgDateMask.charAt(i));
96
+ i++;
97
+ break;
98
+ }
99
+ }
100
+ return formatStr.ToString();
101
+ }
102
+ else
103
+ return "dd-mm-yyyy";
104
+ }
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5tYWdpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvcGlwZXMvZGF0ZS5tYWdpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDckUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFBOzs7QUFNN0MsTUFBTSxPQUFPLFNBQVM7SUFDcEIsTUFBTSxDQUFVLFFBQVEsR0FBRyxhQUFhLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxhQUFjLFNBQVEsUUFBUTtJQUVuQjtJQUF0QixZQUFzQixLQUF1QjtRQUMzQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtJQUczQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEtBQVUsRUFBRSxTQUFpQjtRQUVyQyxJQUFJLElBQUksR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFFLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFFLElBQUksU0FBUyxHQUFXLElBQUksQ0FBQztRQUM3QixJQUFJLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQzlDLFNBQVMsR0FBRyxlQUFlLENBQUMsNEJBQTRCLENBQUUsSUFBSSxDQUFDLENBQUM7WUFFaEUsSUFBSSxTQUFTLElBQUksSUFB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QVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxDQUFDLEVBQUUsQ0FBQzt3QkFDSixNQUFNO2lCQUNUO2FBQ0Y7WUFDRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM3Qjs7WUFFQyxPQUFPLFlBQVksQ0FBQztJQUV4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLm1hZ2ljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTdHJpbmdCdWlsZGVyLCBpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCJcclxuaW1wb3J0IHtQSUNJbnRlcmZhY2V9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCJcclxuXHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IERBVEVfRk1UID0gJ2RkL01NTS95eXl5JztcclxufVxyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnbWFnaWNEYXRlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZU1hZ2ljUGlwZSBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdGFzazogVGFza01hZ2ljU2VydmljZSkge1xyXG4gICAgc3VwZXIoJ2VuLVVTJyk7XHJcblxyXG4gICAgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgY29udHJvbElkOiBzdHJpbmcpOiBhbnkge1xyXG5cclxuICAgIGxldCBtYXNrOiBzdHJpbmcgPSB0aGlzLl90YXNrLkdldENvbnRyb2xQaWN0dXJlTWFzayAoY29udHJvbElkKS5nZXRNYXNrKCk7XHJcbiAgICBsZXQgZm9ybWF0U3RyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IG1nRGF0ZUZvcm1hdHRlciA9IG5ldyBNZ0RhdGVGb3JtYXR0ZXIoKTtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpICYmIG1hc2sgIT09IG51bGwpIHtcclxuICAgICAgZm9ybWF0U3RyID0gbWdEYXRlRm9ybWF0dGVyLkNvbnZlcnRNZ0RhdGVGb3JtYXRUb0FuZ3VsYXIgKG1hc2spO1xyXG4gICAgICAvLyBJZiBjb250cm9sIGlzIGxhYmVsIGNvbnRyb2wgb2YgdGFibGUsIGR1ZSB0byBxdWVyeSBtb2RlLCB0aGVuIHNhdmUgdGhlIGZvcm1hdCBoZXJlLlxyXG4gICAgICBpZiAoZm9ybWF0U3RyICE9IG51bGwgJiYgdGhpcy5fdGFzay5pc1RhYmxlQ29udHJvbChjb250cm9sSWQpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3Rhc2subWdJbnB1dERhdGVGb3JtYXQgPSBmb3JtYXRTdHI7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgZm9ybWF0U3RyID0gdGhpcy5fdGFzay5tZ0lucHV0RGF0ZUZvcm1hdDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXRTdHIpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB2YWx1ZSA9IFwiXCI7XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0ICBjbGFzcyBNZ0RhdGVGb3JtYXR0ZXIge1xyXG5cclxuICBDb252ZXJ0TWdEYXRlRm9ybWF0VG9Bbmd1bGFyKG1nRGF0ZU1hc2s6IHN0cmluZykgOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgZm9ybWF0U3RyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIgKCk7XHJcblxyXG4gICAgaWYgKG1nRGF0ZU1hc2sgIT09IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG1nRGF0ZU1hc2subGVuZ3RoOykge1xyXG4gICAgICAgIHN3aXRjaCAobWdEYXRlTWFzay5jaGFyQ29kZUF0KGkpKSB7XHJcbiAgICAgICAgICBjYXNlIFBJQ0ludGVyZmFjZS5QSUNfWVlZWTpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgneXl5eScpO1xyXG4gICAgICAgICAgICBpICs9IDQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBQSUNJbnRlcmZhY2UuUElDX01NRDpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnTU0nKTtcclxuICAgICAgICAgICAgaSArPSAyO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19ZWTpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgneXknKTtcclxuICAgICAgICAgICAgaSArPSAyO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19NTU06XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBjbnQgPSAwO1xyXG4gICAgICAgICAgICBmb3IgICg7aSA8IG1nRGF0ZU1hc2subGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgICAgaWYgKG1nRGF0ZU1hc2suY2hhckNvZGVBdChpKSA9PSBQSUNJbnRlcmZhY2UuUElDX01NTSlcclxuICAgICAgICAgICAgICAgIGNudCsrO1xyXG4gICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNudCA9PSAzKVxyXG4gICAgICAgICAgICAgIGZvcm1hdFN0ci5BcHBlbmQoJ01NTScpO1xyXG4gICAgICAgICAgICBpZiAoY250ID4gMylcclxuICAgICAgICAgICAgICBmb3JtYXRTdHIuQXBwZW5kKCdNTU1NJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19ERDpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnZGQnKTtcclxuICAgICAgICAgICAgaSArPSAyO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBQSUNJbnRlcmZhY2UuUElDX1dXVzoge1xyXG4gICAgICAgICAgICBsZXQgY250ID0gMDtcclxuICAgICAgICAgICAgZm9yICAoO2kgPCBtZ0RhdGVNYXNrLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgIGlmIChtZ0RhdGVNYXNrLmNoYXJDb2RlQXQoaSkgPT0gUElDSW50ZXJmYWNlLlBJQ19XV1cpXHJcbiAgICAgICAgICAgICAgICBjbnQrKztcclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGlmIChjbnQgPT0gMylcclxuICAgICAgICAgICAgICBmb3JtYXRTdHIuQXBwZW5kKCdFRUUnKTtcclxuICAgICAgICAgICAgaWYgKGNudCA+IDMpXHJcbiAgICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnRUVFRScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBmb3JtYXRTdHIuQXBwZW5kKG1nRGF0ZU1hc2suY2hhckF0KGkpKTtcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZvcm1hdFN0ci5Ub1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gXCJkZC1tbS15eXl5XCI7IC8vIHJldHVybiBkZWZhdWx0IGZvcm1hdC5cclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DatePipe } from '@angular/common';
3
+ import { TaskMagicService } from '../../services/task.magics.service';
4
+ import { StringBuilder } from "@magic-xpa/mscorelib";
5
+ import { PICInterface } from "@magic-xpa/utils";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/task.magics.service";
8
+ export class TimeMagicPipe extends DatePipe {
9
+ _task;
10
+ constructor(_task) {
11
+ super('en-US');
12
+ this._task = _task;
13
+ }
14
+ transform(value, controlId) {
15
+ let mask = this._task.GetControlPictureMask(controlId).getMask();
16
+ let formatStr = new StringBuilder();
17
+ if (typeof value !== "undefined" && mask !== null) {
18
+ for (let i = 0; i < mask.length;) {
19
+ switch (mask.charCodeAt(i)) {
20
+ case PICInterface.PIC_HH:
21
+ formatStr.Append('hh');
22
+ i += 2;
23
+ break;
24
+ case PICInterface.PIC_MMT:
25
+ formatStr.Append('mm');
26
+ i += 2;
27
+ break;
28
+ case PICInterface.PIC_SS:
29
+ formatStr.Append('ss');
30
+ i += 2;
31
+ break;
32
+ default:
33
+ formatStr.Append(mask.charAt(i));
34
+ i++;
35
+ break;
36
+ }
37
+ }
38
+ formatStr.Append(' a');
39
+ return super.transform(value, formatStr.ToString());
40
+ }
41
+ return value;
42
+ }
43
+ static ɵfac = function TimeMagicPipe_Factory(t) { return new (t || TimeMagicPipe)(i0.ɵɵdirectiveInject(i1.TaskMagicService, 16)); };
44
+ static ɵpipe = i0.ɵɵdefinePipe({ name: "magicTime", type: TimeMagicPipe, pure: true });
45
+ }
46
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeMagicPipe, [{
47
+ type: Pipe,
48
+ args: [{
49
+ name: 'magicTime'
50
+ }]
51
+ }], () => [{ type: i1.TaskMagicService }], null); })();
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5tYWdpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdWkvcGlwZXMvdGltZS5tYWdpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFBOzs7QUFRN0MsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFRO0lBRW5CO0lBQXRCLFlBQXNCLEtBQXVCO1FBQzNDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURLLFVBQUssR0FBTCxLQUFLLENBQWtCO0lBRTdDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLFNBQWlCO1FBQ3JDLElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUUsSUFBSSxTQUFTLEdBQWtCLElBQUksYUFBYSxFQUFHLENBQUM7UUFFcEQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDeEMsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMxQixLQUFLLFlBQVksQ0FBQyxNQUFNO3dCQUN0QixTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN2QixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNQLE1BQU07b0JBQ1IsS0FBSyxZQUFZLENBQUMsT0FBTzt3QkFDdkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDdkIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDUCxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07d0JBQ3RCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3ZCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ1AsTUFBTTtvQkFDUjt3QkFDRSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakMsQ0FBQyxFQUFFLENBQUM7d0JBQ0osTUFBTTtpQkFDVDthQUNGO1lBRUQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VFQXBDVSxhQUFhOzhEQUFiLGFBQWE7O2lGQUFiLGFBQWE7Y0FIekIsSUFBSTtlQUFDO2dCQUNKLElBQUksRUFBRSxXQUFXO2FBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7VGFza01hZ2ljU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzay5tYWdpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCJcclxuaW1wb3J0IHtQSUNJbnRlcmZhY2V9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCJcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ21hZ2ljVGltZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWVNYWdpY1BpcGUgZXh0ZW5kcyBEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2s6IFRhc2tNYWdpY1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCdlbi1VUycpO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGNvbnRyb2xJZDogc3RyaW5nKTogYW55IHtcclxuICAgIGxldCBtYXNrOiBzdHJpbmcgPSB0aGlzLl90YXNrLkdldENvbnRyb2xQaWN0dXJlTWFzayAoY29udHJvbElkKS5nZXRNYXNrKCk7XHJcbiAgICBsZXQgZm9ybWF0U3RyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIgKCk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBtYXNrICE9PSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBtYXNrLmxlbmd0aDspIHtcclxuICAgICAgICBzd2l0Y2ggKG1hc2suY2hhckNvZGVBdChpKSkge1xyXG4gICAgICAgICAgY2FzZSBQSUNJbnRlcmZhY2UuUElDX0hIOlxyXG4gICAgICAgICAgICBmb3JtYXRTdHIuQXBwZW5kKCdoaCcpO1xyXG4gICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBQSUNJbnRlcmZhY2UuUElDX01NVDpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnbW0nKTtcclxuICAgICAgICAgICAgaSArPSAyO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19TUzpcclxuICAgICAgICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnc3MnKTtcclxuICAgICAgICAgICAgaSArPSAyO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGZvcm1hdFN0ci5BcHBlbmQobWFzay5jaGFyQXQoaSkpO1xyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZm9ybWF0U3RyLkFwcGVuZCgnIGEnKTtcclxuICAgICAgcmV0dXJuIHN1cGVyLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0U3RyLlRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { TaskMagicService } from "../../services/task.magics.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/task.magics.service";
5
+ export class Time24MagicPipe {
6
+ _task;
7
+ constructor(_task) {
8
+ this._task = _task;
9
+ }
10
+ transform(value, controlId) {
11
+ let mask = this._task.GetControlPictureMask(controlId).getMask();
12
+ if (typeof value !== "undefined" && mask !== null) {
13
+ const date = new Date(value);
14
+ const hours = date.getHours().toString().padStart(2, '0');
15
+ const minutes = date.getMinutes().toString().padStart(2, '0');
16
+ const seconds = date.getSeconds().toString().padStart(2, '0');
17
+ if (mask.length == 5) {
18
+ return `${hours}:${minutes}`;
19
+ }
20
+ else if (mask.length > 5) {
21
+ return `${hours}:${minutes}:${seconds}`;
22
+ }
23
+ }
24
+ return value;
25
+ }
26
+ static ɵfac = function Time24MagicPipe_Factory(t) { return new (t || Time24MagicPipe)(i0.ɵɵdirectiveInject(i1.TaskMagicService, 16)); };
27
+ static ɵpipe = i0.ɵɵdefinePipe({ name: "magicTime24", type: Time24MagicPipe, pure: true });
28
+ }
29
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Time24MagicPipe, [{
30
+ type: Pipe,
31
+ args: [{
32
+ name: 'magicTime24'
33
+ }]
34
+ }], () => [{ type: i1.TaskMagicService }], null); })();
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZTI0Lm1hZ2ljLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91aS9waXBlcy90aW1lMjQubWFnaWMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBS3BFLE1BQU0sT0FBTyxlQUFlO0lBRUo7SUFBdEIsWUFBc0IsS0FBdUI7UUFBdkIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7SUFFN0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsU0FBaUI7UUFDckMsSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBRWpELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRTlELElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7Z0JBQ2xCLE9BQU8sR0FBRyxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7YUFDOUI7aUJBQUssSUFBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztnQkFDdkIsT0FBTyxHQUFHLEtBQUssSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7YUFDekM7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt5RUF2QlUsZUFBZTtnRUFBZixlQUFlOztpRkFBZixlQUFlO2NBSDNCLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsYUFBYTthQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUYXNrTWFnaWNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdGFzay5tYWdpY3Muc2VydmljZVwiO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdtYWdpY1RpbWUyNCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbWUyNE1hZ2ljUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2s6IFRhc2tNYWdpY1NlcnZpY2UpIHtcclxuXHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgY29udHJvbElkOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3Rhc2suR2V0Q29udHJvbFBpY3R1cmVNYXNrIChjb250cm9sSWQpLmdldE1hc2soKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIG1hc2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgIGlmKG1hc2subGVuZ3RoID09IDUpe1xyXG4gICAgICAgIHJldHVybiBgJHtob3Vyc306JHttaW51dGVzfWA7XHJcbiAgICAgIH1lbHNlIGlmKG1hc2subGVuZ3RoID4gNSl7XHJcbiAgICAgICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc31gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==