@magic-xpa/gui 4.800.0 → 4.801.0-dev000.0

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 (128) hide show
  1. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  2. package/{esm2015/magic-xpa-gui.js → esm2020/magic-xpa-gui.mjs} +0 -0
  3. package/esm2020/src/Commands.mjs +186 -0
  4. package/esm2020/src/Events.mjs +420 -0
  5. package/esm2020/src/EventsProcessor.mjs +67 -0
  6. package/esm2020/src/FocusManager.mjs +34 -0
  7. package/{esm2015/src/GuiConstants.js → esm2020/src/GuiConstants.mjs} +0 -0
  8. package/{esm2015/src/GuiEnums.js → esm2020/src/GuiEnums.mjs} +0 -0
  9. package/{esm2015/src/GuiEnvironment.js → esm2020/src/GuiEnvironment.mjs} +0 -0
  10. package/{esm2015/src/IFlowMonitorQueue.js → esm2020/src/IFlowMonitorQueue.mjs} +2 -1
  11. package/esm2020/src/Manager.mjs +192 -0
  12. package/{esm2015/src/UIBridge.js → esm2020/src/UIBridge.mjs} +0 -0
  13. package/{esm2015/src/env/IEnvironment.js → esm2020/src/env/IEnvironment.mjs} +1 -0
  14. package/{esm2015/src/gui/ControlBase.js → esm2020/src/gui/ControlBase.mjs} +0 -0
  15. package/{esm2015/src/gui/GuiMgControl.js → esm2020/src/gui/GuiMgControl.mjs} +0 -0
  16. package/{esm2015/src/gui/GuiMgForm.js → esm2020/src/gui/GuiMgForm.mjs} +0 -0
  17. package/{esm2015/src/gui/KeyboardItem.js → esm2020/src/gui/KeyboardItem.mjs} +0 -0
  18. package/{esm2015/src/gui/LastFocusedVal.js → esm2020/src/gui/LastFocusedVal.mjs} +0 -0
  19. package/{esm2015/src/gui/MgValue.js → esm2020/src/gui/MgValue.mjs} +0 -0
  20. package/{esm2015/src/gui/PropParentInterface.js → esm2020/src/gui/PropParentInterface.mjs} +1 -0
  21. package/{esm2015/src/gui/low/DialogHandler.js → esm2020/src/gui/low/DialogHandler.mjs} +0 -0
  22. package/{esm2015/src/gui/low/GuiCommand.js → esm2020/src/gui/low/GuiCommand.mjs} +0 -0
  23. package/{esm2015/src/gui/low/GuiCommandQueue.js → esm2020/src/gui/low/GuiCommandQueue.mjs} +0 -0
  24. package/esm2020/src/gui/low/GuiInteractive.mjs +545 -0
  25. package/{esm2015/src/gui/low/Style.js → esm2020/src/gui/low/Style.mjs} +0 -0
  26. package/{esm2015/src/management/RuntimeContextBase.js → esm2020/src/management/RuntimeContextBase.mjs} +0 -0
  27. package/{esm2015/src/management/data/BlobType.js → esm2020/src/management/data/BlobType.mjs} +0 -0
  28. package/esm2020/src/management/data/DcValues.mjs +214 -0
  29. package/esm2020/src/management/data/DcValuesBuilderBase.mjs +97 -0
  30. package/{esm2015/src/management/data/FieldDef.js → esm2020/src/management/data/FieldDef.mjs} +0 -0
  31. package/{esm2015/src/management/data/FieldsTable.js → esm2020/src/management/data/FieldsTable.mjs} +0 -0
  32. package/esm2020/src/management/data/GuiDataViewBase.mjs +90 -0
  33. package/esm2020/src/management/data/GuiFieldBase.mjs +82 -0
  34. package/{esm2015/src/management/data/IRecord.js → esm2020/src/management/data/IRecord.mjs} +1 -0
  35. package/{esm2015/src/management/data/IReferencedObject.js → esm2020/src/management/data/IReferencedObject.mjs} +1 -0
  36. package/{esm2015/src/management/data/NUM_TYPE.js → esm2020/src/management/data/NUM_TYPE.mjs} +0 -0
  37. package/esm2020/src/management/data/ObjectReferenceBase.mjs +48 -0
  38. package/{esm2015/src/management/data/ObjectReferencesCollection.js → esm2020/src/management/data/ObjectReferencesCollection.mjs} +0 -0
  39. package/esm2020/src/management/data/RecordUtils.mjs +361 -0
  40. package/{esm2015/src/management/data/VectorType.js → esm2020/src/management/data/VectorType.mjs} +0 -0
  41. package/{esm2015/src/management/data/VectorTypeBase.js → esm2020/src/management/data/VectorTypeBase.mjs} +0 -0
  42. package/{esm2015/src/management/events/IActionManager.js → esm2020/src/management/events/IActionManager.mjs} +1 -0
  43. package/esm2020/src/management/events/IGuiEventsManager.mjs +2 -0
  44. package/{esm2015/src/management/exp/ExpressionInterface.js → esm2020/src/management/exp/ExpressionInterface.mjs} +0 -0
  45. package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +333 -0
  46. package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs} +0 -0
  47. package/esm2020/src/management/gui/DisplayConvertor.mjs +1706 -0
  48. package/esm2020/src/management/gui/FieldValidator.mjs +1507 -0
  49. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +22 -0
  50. package/{esm2015/src/management/gui/GuiFormPropertyAdapter.js → esm2020/src/management/gui/GuiFormPropertyAdapter.mjs} +0 -0
  51. package/{esm2015/src/management/gui/HebrewDate.js → esm2020/src/management/gui/HebrewDate.mjs} +0 -0
  52. package/{esm2015/src/management/gui/Helps.js → esm2020/src/management/gui/Helps.mjs} +0 -0
  53. package/esm2020/src/management/gui/MgControlBase.mjs +1873 -0
  54. package/esm2020/src/management/gui/MgFormBase.mjs +748 -0
  55. package/{esm2015/src/management/gui/PIC.js → esm2020/src/management/gui/PIC.mjs} +0 -0
  56. package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
  57. package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +0 -0
  58. package/esm2020/src/management/gui/PropTable.mjs +221 -0
  59. package/esm2020/src/management/gui/Property.mjs +1382 -0
  60. package/{esm2015/src/management/gui/ValidationDetails.js → esm2020/src/management/gui/ValidationDetails.mjs} +0 -0
  61. package/{esm2015/src/management/gui/ValidationDetailsBase.js → esm2020/src/management/gui/ValidationDetailsBase.mjs} +0 -0
  62. package/{esm2015/src/management/gui/WrongFormatException.js → esm2020/src/management/gui/WrongFormatException.mjs} +0 -0
  63. package/{esm2015/src/management/tasks/GuiDataCollection.js → esm2020/src/management/tasks/GuiDataCollection.mjs} +0 -0
  64. package/esm2020/src/management/tasks/GuiTaskBase.mjs +502 -0
  65. package/{esm2015/src/management/tasks/IMGDataTable.js → esm2020/src/management/tasks/IMGDataTable.mjs} +1 -0
  66. package/{esm2015/src/management/tasks/ITask.js → esm2020/src/management/tasks/ITask.mjs} +1 -0
  67. package/esm2020/src/management/tasks/MgTimer.mjs +21 -0
  68. package/{esm2015/src/management/tasks/TaskDefinitionId.js → esm2020/src/management/tasks/TaskDefinitionId.mjs} +0 -0
  69. package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
  70. package/{esm2015/src/util/AuthenticationDialogHandler.js → esm2020/src/util/AuthenticationDialogHandler.mjs} +0 -0
  71. package/{esm2015/src/util/MemoryUtil.js → esm2020/src/util/MemoryUtil.mjs} +0 -0
  72. package/{esm2015/src/util/ObjectReference.js → esm2020/src/util/ObjectReference.mjs} +0 -0
  73. package/esm2020/src/util/ProcessLauncher.mjs +32 -0
  74. package/esm2020/src/util/UsernamePasswordCredentials.mjs +52 -0
  75. package/fesm2015/{magic-xpa-gui.js → magic-xpa-gui.mjs} +133 -175
  76. package/fesm2015/magic-xpa-gui.mjs.map +1 -0
  77. package/fesm2020/magic-xpa-gui.mjs +17805 -0
  78. package/fesm2020/magic-xpa-gui.mjs.map +1 -0
  79. package/package.json +27 -14
  80. package/src/Events.d.ts +2 -2
  81. package/src/EventsProcessor.d.ts +1 -1
  82. package/src/IFlowMonitorQueue.d.ts +1 -1
  83. package/src/Manager.d.ts +2 -3
  84. package/src/management/data/DcValues.d.ts +1 -1
  85. package/src/management/data/DcValuesBuilderBase.d.ts +1 -1
  86. package/src/management/data/RecordUtils.d.ts +0 -3
  87. package/src/management/events/IGuiEventsManager.d.ts +5 -5
  88. package/src/management/exp/GuiExpressionEvaluator.d.ts +2 -2
  89. package/src/management/gui/DisplayConvertor.d.ts +6 -6
  90. package/src/management/gui/GuiControlPropertyAdapter.d.ts +6 -6
  91. package/src/management/gui/MgControlBase.d.ts +2 -4
  92. package/src/management/gui/MgFormBase.d.ts +1 -1
  93. package/src/management/gui/PropTable.d.ts +1 -1
  94. package/src/management/gui/Property.d.ts +2 -2
  95. package/src/management/tasks/GuiTaskBase.d.ts +3 -3
  96. package/src/util/ProcessLauncher.d.ts +1 -3
  97. package/bundles/magic-xpa-gui.umd.js +0 -19431
  98. package/bundles/magic-xpa-gui.umd.js.map +0 -1
  99. package/bundles/magic-xpa-gui.umd.min.js +0 -16
  100. package/bundles/magic-xpa-gui.umd.min.js.map +0 -1
  101. package/esm2015/src/Commands.js +0 -189
  102. package/esm2015/src/Events.js +0 -420
  103. package/esm2015/src/EventsProcessor.js +0 -68
  104. package/esm2015/src/FocusManager.js +0 -41
  105. package/esm2015/src/Manager.js +0 -197
  106. package/esm2015/src/gui/low/GuiInteractive.js +0 -545
  107. package/esm2015/src/management/data/DcValues.js +0 -214
  108. package/esm2015/src/management/data/DcValuesBuilderBase.js +0 -97
  109. package/esm2015/src/management/data/GuiDataViewBase.js +0 -90
  110. package/esm2015/src/management/data/GuiFieldBase.js +0 -85
  111. package/esm2015/src/management/data/ObjectReferenceBase.js +0 -48
  112. package/esm2015/src/management/data/RecordUtils.js +0 -447
  113. package/esm2015/src/management/events/IGuiEventsManager.js +0 -1
  114. package/esm2015/src/management/exp/GuiExpressionEvaluator.js +0 -333
  115. package/esm2015/src/management/gui/DisplayConvertor.js +0 -1706
  116. package/esm2015/src/management/gui/FieldValidator.js +0 -1507
  117. package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +0 -4
  118. package/esm2015/src/management/gui/MgControlBase.js +0 -1981
  119. package/esm2015/src/management/gui/MgFormBase.js +0 -763
  120. package/esm2015/src/management/gui/PropDefaults.js +0 -230
  121. package/esm2015/src/management/gui/PropTable.js +0 -224
  122. package/esm2015/src/management/gui/Property.js +0 -1402
  123. package/esm2015/src/management/tasks/GuiTaskBase.js +0 -506
  124. package/esm2015/src/management/tasks/MgTimer.js +0 -21
  125. package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +0 -41
  126. package/esm2015/src/util/ProcessLauncher.js +0 -32
  127. package/esm2015/src/util/UsernamePasswordCredentials.js +0 -52
  128. package/fesm2015/magic-xpa-gui.js.map +0 -1
@@ -1,230 +0,0 @@
1
- import { RefParam, Debug, NString } from "@magic-xpa/mscorelib";
2
- import { StorageAttribute, ListboxSelectionMode, MgControlType, TransMode } from "@magic-xpa/utils";
3
- import { PIC } from "./PIC";
4
- import { DisplayConvertor } from "./DisplayConvertor";
5
- import { BlobType } from "../data/BlobType";
6
- import { PropInterface } from "./PropInterface";
7
- import { GuiConstants } from "../../GuiConstants";
8
- export class PropDefaults {
9
- static getNumericMgValue(propParent, Value) {
10
- let pic = new PIC("3", StorageAttribute.NUMERIC, propParent.getCompIdx());
11
- return DisplayConvertor.Instance.disp2mg(Value, "", pic, propParent.getCompIdx(), BlobType.CONTENT_TYPE_UNKNOWN);
12
- }
13
- static getDefaultValueForTask(propId, handled) {
14
- let val = null;
15
- handled.value = true;
16
- switch (propId) {
17
- case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_EVENTS:
18
- case PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY:
19
- case PropInterface.PROP_TYPE_PRINT_DATA:
20
- case PropInterface.PROP_TYPE_ALLOW_RANGE:
21
- case PropInterface.PROP_TYPE_ALLOW_LOCATE:
22
- case PropInterface.PROP_TYPE_ALLOW_SORT:
23
- case PropInterface.PROP_TYPE_PRELOAD_VIEW:
24
- case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX:
25
- val = "1";
26
- break;
27
- case PropInterface.PROP_TYPE_CLOSE_TASKS_BY_MDI_MENU:
28
- val = "0";
29
- break;
30
- default:
31
- handled.value = false;
32
- break;
33
- }
34
- return val;
35
- }
36
- static getDefaultValue(propId, parentType, propParent) {
37
- let val = null;
38
- let control = null;
39
- if (parentType === GuiConstants.PARENT_TYPE_TASK) {
40
- let handled = new RefParam(false);
41
- val = this.getDefaultValueForTask(propId, handled);
42
- if (handled.value)
43
- return val;
44
- }
45
- switch (propId) {
46
- case PropInterface.PROP_TYPE_COLOR:
47
- val = this.getNumericMgValue(propParent, "1");
48
- if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
49
- control = propParent;
50
- if (control.Type === MgControlType.CTRL_TYPE_BUTTON && control.IsImageButton())
51
- val = this.getNumericMgValue(propParent, "0");
52
- }
53
- break;
54
- case PropInterface.PROP_TYPE_BORDER:
55
- val = "0";
56
- if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
57
- control = propParent;
58
- switch (control.Type) {
59
- case MgControlType.CTRL_TYPE_SUBFORM:
60
- val = "0";
61
- break;
62
- case MgControlType.CTRL_TYPE_TEXT:
63
- case MgControlType.CTRL_TYPE_TABLE:
64
- case MgControlType.CTRL_TYPE_LIST:
65
- case MgControlType.CTRL_TYPE_BROWSER:
66
- val = "1";
67
- break;
68
- }
69
- }
70
- break;
71
- case PropInterface.PROP_TYPE_MAXBOX:
72
- case PropInterface.PROP_TYPE_MINBOX:
73
- case PropInterface.PROP_TYPE_MUST_INPUT:
74
- case PropInterface.PROP_TYPE_MULTILINE:
75
- case PropInterface.PROP_TYPE_PASSWORD:
76
- case PropInterface.PROP_TYPE_HEBREW:
77
- case PropInterface.PROP_TYPE_MULTILINE_VERTICAL_SCROLL:
78
- case PropInterface.PROP_TYPE_MULTILINE_ALLOW_CR:
79
- case PropInterface.PROP_TYPE_IS_CACHED:
80
- case PropInterface.PROP_TYPE_MODIFY_IN_QUERY:
81
- case PropInterface.PROP_TYPE_SHOW_FULL_ROW:
82
- case PropInterface.PROP_TYPE_TRACK_SELECTION:
83
- case PropInterface.PROP_TYPE_COLUMN_DIVIDER:
84
- case PropInterface.PROP_TYPE_LINE_DIVIDER:
85
- case PropInterface.PROP_TYPE_THREE_STATES:
86
- case PropInterface.PROP_TYPE_REFRESH_WHEN_HIDDEN:
87
- case PropInterface.PROP_TYPE_RETAIN_FOCUS:
88
- case PropInterface.PROP_TYPE_ROW_PLACEMENT:
89
- case PropInterface.PROP_TYPE_SHOW_IN_WINDOW_MENU:
90
- case PropInterface.PROP_TYPE_DATAVIEWCONTROL:
91
- case PropInterface.PROP_TYPE_SORT_COLUMN:
92
- case PropInterface.PROP_TYPE_BEFORE_900_VERSION:
93
- case PropInterface.PROP_TYPE_FILL_WIDTH:
94
- case PropInterface.PROP_TYPE_MULTI_COLUMN_DISPLAY:
95
- case PropInterface.PROP_TYPE_AUTO_COMPLETE_MODE_WC:
96
- val = "0";
97
- break;
98
- case PropInterface.PROP_TYPE_SYSTEM_MENU:
99
- case PropInterface.PROP_TYPE_TITLE_BAR:
100
- case PropInterface.PROP_TYPE_ENABLED:
101
- case PropInterface.PROP_TYPE_VISIBLE:
102
- case PropInterface.PROP_TYPE_TAB_IN:
103
- case PropInterface.PROP_TYPE_MODIFIABLE:
104
- case PropInterface.PROP_TYPE_HIGHLIGHTING:
105
- case PropInterface.PROP_TYPE_AUTO_REFRESH:
106
- case PropInterface.PROP_TYPE_PARK_ON_CLICK:
107
- case PropInterface.PROP_TYPE_DISPLAY_MENU:
108
- case PropInterface.PROP_TYPE_DISPLAY_TOOLBAR:
109
- case PropInterface.PROP_TYPE_SHOW_BUTTONS:
110
- case PropInterface.PROP_TYPE_LINES_AT_ROOT:
111
- case PropInterface.PROP_TYPE_SCROLL_BAR:
112
- case PropInterface.PROP_TYPE_SHOW_LINES:
113
- case PropInterface.PROP_TYPE_ALLOW_QUERY:
114
- case PropInterface.PROP_TYPE_RIGHT_BORDER:
115
- case PropInterface.PROP_TYPE_TOP_BORDER:
116
- case PropInterface.PROP_TYPE_TOP_BORDER_MARGIN:
117
- case PropInterface.PROP_TYPE_SHOW_ELLIPISIS:
118
- val = "1";
119
- break;
120
- case PropInterface.PROP_TYPE_TRIGGER:
121
- case PropInterface.PROP_TYPE_PROMPT:
122
- case PropInterface.PROP_TYPE_DISPLAY_LIST:
123
- case PropInterface.PROP_TYPE_DATA:
124
- case PropInterface.PROP_TYPE_IMAGE_FILENAME:
125
- case PropInterface.PROP_TYPE_LABEL:
126
- case PropInterface.PROP_TYPE_PLACEMENT:
127
- case PropInterface.PROP_TYPE_PULLDOWN_MENU:
128
- case PropInterface.PROP_TYPE_CONTEXT_MENU:
129
- case PropInterface.PROP_TYPE_NODE_ID:
130
- case PropInterface.PROP_TYPE_NODE_PARENTID:
131
- case PropInterface.PROP_TYPE_SELECT_PROGRAM:
132
- case PropInterface.PROP_TYPE_VISIBLE_LAYERS_LIST:
133
- case PropInterface.PROP_TYPE_EXPANDED_IMAGEIDX:
134
- case PropInterface.PROP_TYPE_COLLAPSED_IMAGEIDX:
135
- case PropInterface.PROP_TYPE_OBJECT_TYPE:
136
- case PropInterface.PROP_TYPE_TAB_ORDER:
137
- case PropInterface.PROP_TYPE_LOAD_IMAGE_FROM:
138
- case PropInterface.PROP_TYPE_FORM_NAME:
139
- case PropInterface.PROP_TYPE_COLUMN_TITLE:
140
- case PropInterface.PROP_TYPE_WIDTH:
141
- case PropInterface.PROP_TYPE_PRGTSK_NUM:
142
- break;
143
- case PropInterface.PROP_TYPE_MULTILINE_WORDWRAP_SCROLL:
144
- case PropInterface.PROP_TYPE_BORDER_STYLE:
145
- val = this.getNumericMgValue(propParent, "2");
146
- break;
147
- case PropInterface.PROP_TYPE_WINDOW_TYPE:
148
- val = this.getNumericMgValue(propParent, "6");
149
- break;
150
- case PropInterface.PROP_TYPE_ROW_HIGHLIGHT_STYLE:
151
- val = this.getNumericMgValue(propParent, "4");
152
- break;
153
- case PropInterface.PROP_TYPE_GRADIENT_STYLE:
154
- case PropInterface.PROP_TYPE_TABBING_ORDER:
155
- case PropInterface.PROP_TYPE_STARTUP_MODE:
156
- case PropInterface.PROP_TYPE_CHOICE_COLUMNS:
157
- case PropInterface.PROP_TYPE_HORIZONTAL_ALIGNMENT:
158
- case PropInterface.PROP_TYPE_FONT:
159
- case PropInterface.PROP_TYPE_WALLPAPER_STYLE:
160
- case PropInterface.PROP_TYPE_CHECKBOX_MAIN_STYLE:
161
- case PropInterface.PROP_TYPE_TAB_CONTROL_SIDE:
162
- case PropInterface.PROP_TYPE_RAISE_AT:
163
- case PropInterface.PROP_TYPE_ALLOWED_DIRECTION:
164
- case PropInterface.PROP_TYPE_SUBFORM_TYPE:
165
- case PropInterface.PROP_TYPE_UOM:
166
- case PropInterface.PROP_TYPE_BOTTOM_POSITION_INTERVAL:
167
- val = this.getNumericMgValue(propParent, "1");
168
- break;
169
- case PropInterface.PROP_TYPE_TASK_PROPERTIES_TRANSACTION_MODE:
170
- val = TransMode.Physical;
171
- break;
172
- case PropInterface.PROP_TYPE_PARKED_COLLAPSED_IMAGEIDX:
173
- case PropInterface.PROP_TYPE_PARKED_IMAGEIDX:
174
- case PropInterface.PROP_TYPE_MINIMUM_HEIGHT:
175
- case PropInterface.PROP_TYPE_TOP:
176
- case PropInterface.PROP_TYPE_LEFT:
177
- case PropInterface.PROP_TYPE_TITLE_HEIGHT:
178
- case PropInterface.PROP_TYPE_LAYER:
179
- case PropInterface.PROP_TYPE_VISIBLE_LINES:
180
- case PropInterface.PROP_TYPE_FRAMESET_STYLE:
181
- case PropInterface.PROP_TYPE_TRANSLATOR:
182
- case PropInterface.PROP_TYPE_HOR_FAC:
183
- case PropInterface.PROP_TYPE_VER_FAC:
184
- case PropInterface.PROP_TYPE_FOCUS_COLOR:
185
- val = this.getNumericMgValue(propParent, "0");
186
- break;
187
- case PropInterface.PROP_TYPE_STYLE_3D:
188
- if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
189
- control = propParent;
190
- switch (control.Type) {
191
- case MgControlType.CTRL_TYPE_COMBO:
192
- val = this.getNumericMgValue(propParent, "2");
193
- break;
194
- case MgControlType.CTRL_TYPE_RADIO:
195
- case MgControlType.CTRL_TYPE_CHECKBOX:
196
- val = this.getNumericMgValue(propParent, "3");
197
- break;
198
- }
199
- }
200
- break;
201
- case PropInterface.PROP_TYPE_IMAGE_LIST_INDEXES:
202
- case PropInterface.PROP_TYPE_WALLPAPER:
203
- case PropInterface.PROP_TYPE_TEXT:
204
- case PropInterface.PROP_TYPE_TOOLTIP:
205
- case PropInterface.PROP_TYPE_FORMAT:
206
- val = NString.Empty;
207
- break;
208
- case PropInterface.PROP_TYPE_IMAGE_STYLE:
209
- val = this.getNumericMgValue(propParent, "2");
210
- break;
211
- case PropInterface.PROP_TYPE_SELECTION_MODE:
212
- val = this.getNumericMgValue(propParent, String(ListboxSelectionMode.Single));
213
- break;
214
- case PropInterface.PROP_TYPE_INDEX:
215
- case PropInterface.PROP_TYPE_LINK_FIELD:
216
- case PropInterface.PROP_TYPE_DISPLAY_FIELD:
217
- case PropInterface.PROP_TYPE_PERSISTENT_FORM_STATE_VERSION:
218
- val = this.getNumericMgValue(propParent, "0");
219
- break;
220
- default:
221
- Debug.Assert(false, "Undefined default value", NString.Format("No default value was defined for property {0} ({1}).", PropDefaults.GetPropertyName(propId), propId));
222
- break;
223
- }
224
- return val;
225
- }
226
- static GetPropertyName(propTypeId) {
227
- return "{Field ID " + propTypeId + "}";
228
- }
229
- }
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcERlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Qcm9wRGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTWxELE1BQU0sT0FBTyxZQUFZO0lBT2YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQStCLEVBQUUsS0FBYTtRQUM3RSxJQUFJLEdBQUcsR0FBUSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbkgsQ0FBQztJQU9PLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxNQUFjLEVBQUUsT0FBMEI7UUFDOUUsSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sQ0FB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QzlDLE1BQU07WUFDUjtnQkFDRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSx5QkFBeUIsRUFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzREFBc0QsRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2xJLE1BQU07U0FDVDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBa0I7UUFDdkMsT0FBTyxZQUFZLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZQYXJhbSwgRGVidWcsIE5TdHJpbmcgfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHsgU3RvcmFnZUF0dHJpYnV0ZSwgTGlzdGJveFNlbGVjdGlvbk1vZGUsIE1nQ29udHJvbFR5cGUsIFRyYW5zTW9kZSB9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7IFByb3BQYXJlbnRJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vZ3VpL1Byb3BQYXJlbnRJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgUElDIH0gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7IERpc3BsYXlDb252ZXJ0b3IgfSBmcm9tIFwiLi9EaXNwbGF5Q29udmVydG9yXCI7XHJcbmltcG9ydCB7IEJsb2JUeXBlIH0gZnJvbSBcIi4uL2RhdGEvQmxvYlR5cGVcIjtcclxuaW1wb3J0IHsgUHJvcEludGVyZmFjZSB9IGZyb20gXCIuL1Byb3BJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgR3VpQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL0d1aUNvbnN0YW50c1wiO1xyXG5pbXBvcnQge0d1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXJ9IGZyb20gXCIuL0d1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgUHJvcERlZmF1bHRzIG1hbmFnZXMgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHByb3BlcnRpZXMgYWNjb3JkaW5nIHRvIHRoZSBtb2RlbCB0aGV5IGJlbG9uZyB0b1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgUHJvcERlZmF1bHRzIHtcclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBhIG51bWVyaWMgdmFsdWUgaW4gaXRzIG1hZ2ljIGludGVybmFsIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wUGFyZW50XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIlZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQ6IFByb3BQYXJlbnRJbnRlcmZhY2UsIFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBpYzogUElDID0gbmV3IFBJQyhcIjNcIiwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCBwcm9wUGFyZW50LmdldENvbXBJZHgoKSk7XHJcbiAgICByZXR1cm4gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS5kaXNwMm1nKFZhbHVlLCBcIlwiLCBwaWMsIHByb3BQYXJlbnQuZ2V0Q29tcElkeCgpLCBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5LTk9XTik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm9wSWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RGVmYXVsdFZhbHVlRm9yVGFzayhwcm9wSWQ6IG51bWJlciwgaGFuZGxlZDogUmVmUGFyYW08Ym9vbGVhbj4pOiBzdHJpbmcge1xyXG4gICAgbGV0IHZhbDogc3RyaW5nID0gbnVsbDtcclxuICAgIGhhbmRsZWQudmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIHN3aXRjaCAocHJvcElkKSB7XHJcbiAgICAgIC8vIGZvciB0YXNrIHByb3BlcnRpZXNcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX1BST1BFUlRJRVNfQUxMT1dfRVZFTlRTOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX0xPQ0FURV9JTl9RVUVSWTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QUklOVF9EQVRBOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX1JBTkdFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX0xPQ0FURTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BTExPV19TT1JUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BSRUxPQURfVklFVzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX1BST1BFUlRJRVNfQUxMT1dfSU5ERVg6XHJcbiAgICAgICAgdmFsID0gXCIxXCI7IC8vIHllcyBib29sZWFuXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAvLyBmb3IgdGFzayBwcm9wZXJ0aWVzXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ0xPU0VfVEFTS1NfQllfTURJX01FTlU6XHJcbiAgICAgICAgdmFsID0gXCIwXCI7IC8vIHllcyBib29sZWFuXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGhhbmRsZWQudmFsdWUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldERlZmF1bHRWYWx1ZSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcGVydHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+VGhlIHByb3BlcnR5IGlkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmVudFR5cGVcIj5QQVJFTlRfVFlQRV9DT05UUk9MLCBQQVJFTlRfVFlQRV9GT1JNLCBQQVJFTlRfVFlQRV9UQVNLPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BQYXJlbnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gVGhlIHByb3BlcnR5IGRlZmF1bHQgdmFsdWUgU3RyaW5nIHJlcHJlc2VudGF0aW9uPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXREZWZhdWx0VmFsdWUocHJvcElkOiBudW1iZXIsIHBhcmVudFR5cGU6IHN0cmluZywgcHJvcFBhcmVudDogUHJvcFBhcmVudEludGVyZmFjZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IGNvbnRyb2w6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIgPSBudWxsO1xyXG5cclxuICAgIGlmIChwYXJlbnRUeXBlID09PSBHdWlDb25zdGFudHMuUEFSRU5UX1RZUEVfVEFTSykge1xyXG4gICAgICBsZXQgaGFuZGxlZDogUmVmUGFyYW08Ym9vbGVhbj4gPSBuZXcgUmVmUGFyYW08Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAgICAgdmFsID0gdGhpcy5nZXREZWZhdWx0VmFsdWVGb3JUYXNrKHByb3BJZCwgaGFuZGxlZCk7XHJcblxyXG4gICAgICBpZiAoaGFuZGxlZC52YWx1ZSlcclxuICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAocHJvcElkKSB7XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ09MT1I6XHJcbiAgICAgICAgdmFsID0gdGhpcy5nZXROdW1lcmljTWdWYWx1ZShwcm9wUGFyZW50LCBcIjFcIik7XHJcbiAgICAgICAgaWYgKHBhcmVudFR5cGUgPT09IEd1aUNvbnN0YW50cy5QQVJFTlRfVFlQRV9DT05UUk9MKSB7XHJcbiAgICAgICAgICBjb250cm9sID0gPEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXI+PGFueT5wcm9wUGFyZW50O1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIGNvbnRyb2wuSXNJbWFnZUJ1dHRvbigpKVxyXG4gICAgICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0JPUkRFUjpcclxuICAgICAgICB2YWwgPSBcIjBcIjsgLy8gbm8gYm9vbGVhblxyXG4gICAgICAgIGlmIChwYXJlbnRUeXBlID09PSBHdWlDb25zdGFudHMuUEFSRU5UX1RZUEVfQ09OVFJPTCkge1xyXG4gICAgICAgICAgY29udHJvbCA9IDxHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyPjxhbnk+cHJvcFBhcmVudDtcclxuICAgICAgICAgIHN3aXRjaCAoY29udHJvbC5UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfU1VCRk9STTpcclxuICAgICAgICAgICAgICAvLyBmaXhlZCBidWcgIzc3NzYzMywgdGhlIGRlZmF1bHQgdmFsdWUgb2Ygc3ViZm9ybSBjb250cm9sIGlzIE5vIGFuZCBub3QgWWVzXHJcbiAgICAgICAgICAgICAgdmFsID0gXCIwXCI7IC8vIG5vIGJvb2xlYW5cclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfVEVYVDpcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9UQUJMRTpcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9MSVNUOlxyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0JST1dTRVI6XHJcbiAgICAgICAgICAgICAgdmFsID0gXCIxXCI7IC8vIHllcyBib29sZWFuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NQVhCT1g6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTUlOQk9YOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01VU1RfSU5QVVQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTVVMVElMSU5FOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBU1NXT1JEOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0hFQlJFVzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NVUxUSUxJTkVfVkVSVElDQUxfU0NST0xMOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01VTFRJTElORV9BTExPV19DUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9JU19DQUNIRUQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTU9ESUZZX0lOX1FVRVJZOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NIT1dfRlVMTF9ST1c6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJBQ0tfU0VMRUNUSU9OOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0NPTFVNTl9ESVZJREVSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0xJTkVfRElWSURFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9USFJFRV9TVEFURVM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUkVGUkVTSF9XSEVOX0hJRERFTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9SRVRBSU5fRk9DVVM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUk9XX1BMQUNFTUVOVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TSE9XX0lOX1dJTkRPV19NRU5VOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0RBVEFWSUVXQ09OVFJPTDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TT1JUX0NPTFVNTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9CRUZPUkVfOTAwX1ZFUlNJT046XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRklMTF9XSURUSDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NVUxUSV9DT0xVTU5fRElTUExBWTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BVVRPX0NPTVBMRVRFX01PREVfV0M6XHJcbiAgICAgICAgdmFsID0gXCIwXCI7IC8vIG5vIGJvb2xlYW5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU1lTVEVNX01FTlU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVElUTEVfQkFSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVklTSUJMRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQUJfSU46XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTU9ESUZJQUJMRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ISUdITElHSFRJTkc6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQVVUT19SRUZSRVNIOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBUktfT05fQ0xJQ0s6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRElTUExBWV9NRU5VOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0RJU1BMQVlfVE9PTEJBUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TSE9XX0JVVFRPTlM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTElORVNfQVRfUk9PVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TQ1JPTExfQkFSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NIT1dfTElORVM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfUVVFUlk6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUklHSFRfQk9SREVSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RPUF9CT1JERVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVE9QX0JPUkRFUl9NQVJHSU46XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU0hPV19FTExJUElTSVM6XHJcbiAgICAgICAgdmFsID0gXCIxXCI7IC8vIHllcyBib29sZWFuXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAvLyBhbGwgdGhvc2UgcHJvcGVydGllcyBuZWVkIG5vdCBjcmVhdGUgYSBkZWZhdWx0XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJJR0dFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QUk9NUFQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRElTUExBWV9MSVNUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0RBVEE6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSU1BR0VfRklMRU5BTUU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTEFCRUw6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUExBQ0VNRU5UOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BVTExET1dOX01FTlU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ09OVEVYVF9NRU5VOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX05PREVfSUQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTk9ERV9QQVJFTlRJRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TRUxFQ1RfUFJPR1JBTTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFX0xBWUVSU19MSVNUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VYUEFOREVEX0lNQUdFSURYOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0NPTExBUFNFRF9JTUFHRUlEWDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9PQkpFQ1RfVFlQRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQUJfT1JERVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTE9BRF9JTUFHRV9GUk9NOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1fTkFNRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9DT0xVTU5fVElUTEU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfV0lEVEg6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUFJHVFNLX05VTTpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTVVMVElMSU5FX1dPUkRXUkFQX1NDUk9MTDpcclxuICAgICAgLy8gMi0gSE9SSVpPTlRBTF9TQ1JPTExfTk9cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9CT1JERVJfU1RZTEU6IC8vIEJPUkRFUl9UWVBFX1RISUNLXHJcbiAgICAgICAgdmFsID0gdGhpcy5nZXROdW1lcmljTWdWYWx1ZShwcm9wUGFyZW50LCBcIjJcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfV0lORE9XX1RZUEU6XHJcbiAgICAgICAgdmFsID0gdGhpcy5nZXROdW1lcmljTWdWYWx1ZShwcm9wUGFyZW50LCBcIjZcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUk9XX0hJR0hMSUdIVF9TVFlMRTpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiNFwiKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfR1JBRElFTlRfU1RZTEU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFCQklOR19PUkRFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TVEFSVFVQX01PREU6XHJcbiAgICAgIC8vIDEuREVGQVVMVFxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0NIT0lDRV9DT0xVTU5TOlxyXG4gICAgICAvLyAxXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSE9SSVpPTlRBTF9BTElHTk1FTlQ6XHJcbiAgICAgIC8vIDEgQUxJR05NRU5UX1RZUEVfSE9SSV9MRUZUXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9OVDpcclxuICAgICAgLy8gMVxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1dBTExQQVBFUl9TVFlMRTpcclxuICAgICAgLy8gQ1RSTF9JTUFHRV9TVFlMRV9USUxFRFxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0NIRUNLQk9YX01BSU5fU1RZTEU6XHJcbiAgICAgIC8vIENIRUNLQk9YX01BSU5fU1RZTEVfQk9YXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFCX0NPTlRST0xfU0lERTpcclxuICAgICAgLy8gU0lERV9UWVBFX1RPUDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9SQUlTRV9BVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BTExPV0VEX0RJUkVDVElPTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TVUJGT1JNX1RZUEU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVU9NOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0JPVFRPTV9QT1NJVElPTl9JTlRFUlZBTDpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMVwiKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFTS19QUk9QRVJUSUVTX1RSQU5TQUNUSU9OX01PREU6XHJcbiAgICAgICAgdmFsID0gVHJhbnNNb2RlLlBoeXNpY2FsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QQVJLRURfQ09MTEFQU0VEX0lNQUdFSURYOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBUktFRF9JTUFHRUlEWDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NSU5JTVVNX0hFSUdIVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UT1A6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTEVGVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9USVRMRV9IRUlHSFQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTEFZRVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVklTSUJMRV9MSU5FUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GUkFNRVNFVF9TVFlMRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUkFOU0xBVE9SOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0hPUl9GQUM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVkVSX0ZBQzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GT0NVU19DT0xPUjpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMFwiKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU1RZTEVfM0Q6XHJcbiAgICAgICAgaWYgKHBhcmVudFR5cGUgPT09IEd1aUNvbnN0YW50cy5QQVJFTlRfVFlQRV9DT05UUk9MKSB7XHJcbiAgICAgICAgICBjb250cm9sID0gPEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXI+PGFueT5wcm9wUGFyZW50O1xyXG4gICAgICAgICAgc3dpdGNoIChjb250cm9sLlR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DT01CTzpcclxuICAgICAgICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMlwiKTsgLy8gQ1RSTF9ESU1fM0RcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9SQURJTzpcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWDpcclxuICAgICAgICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiM1wiKTsgLy8gQ1RSTF9ESU1fM0RfU1VOS0VOXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0lNQUdFX0xJU1RfSU5ERVhFUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9XQUxMUEFQRVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEVYVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UT09MVElQOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1BVDpcclxuICAgICAgICB2YWwgPSBOU3RyaW5nLkVtcHR5O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9JTUFHRV9TVFlMRTpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMlwiKTsgLy8gQ1RSTF9JTUFHRV9TVFlMRV9DT1BJRURcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU0VMRUNUSU9OX01PREU6XHJcbiAgICAgICAgdmFsID0gdGhpcy5nZXROdW1lcmljTWdWYWx1ZShwcm9wUGFyZW50LCBTdHJpbmcoTGlzdGJveFNlbGVjdGlvbk1vZGUuU2luZ2xlKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0lOREVYOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0xJTktfRklFTEQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRElTUExBWV9GSUVMRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QRVJTSVNURU5UX0ZPUk1fU1RBVEVfVkVSU0lPTjpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBEZWJ1Zy5Bc3NlcnQoZmFsc2UsIFwiVW5kZWZpbmVkIGRlZmF1bHQgdmFsdWVcIixcclxuICAgICAgICAgICAgICAgICAgICBOU3RyaW5nLkZvcm1hdChcIk5vIGRlZmF1bHQgdmFsdWUgd2FzIGRlZmluZWQgZm9yIHByb3BlcnR5IHswfSAoezF9KS5cIiwgUHJvcERlZmF1bHRzLkdldFByb3BlcnR5TmFtZShwcm9wSWQpLCBwcm9wSWQpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0UHJvcGVydHlOYW1lKHByb3BUeXBlSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gXCJ7RmllbGQgSUQgXCIgKyBwcm9wVHlwZUlkICsgXCJ9XCI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,224 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Hashtable, List, NNumber, NString, ApplicationException } from "@magic-xpa/mscorelib";
3
- import { Property } from "./Property";
4
- import { XmlParser, XMLConstants } from "@magic-xpa/utils";
5
- import { Events } from "../../Events";
6
- import { PropInterface } from "./PropInterface";
7
- import { GuiFormPropertyAdapter } from "./GuiFormPropertyAdapter";
8
- import { GuiControlPropertyAdapter } from "./GuiControlPropertyAdapter";
9
- export class PropTable {
10
- constructor(parent_) {
11
- this._hashTab = null;
12
- this._props = null;
13
- this._parent = null;
14
- if (arguments.length === 0) {
15
- this.constructor_0();
16
- return;
17
- }
18
- this.constructor_1(parent_);
19
- }
20
- constructor_0() {
21
- this._props = new List();
22
- this._hashTab = new Hashtable(20);
23
- }
24
- constructor_1(parent_) {
25
- this.constructor_0();
26
- this._parent = parent_;
27
- }
28
- fillData(parentObj, parType, parser) {
29
- while (this.initInnerObjects(parser.getNextTag(), parentObj, parType, parser)) {
30
- }
31
- }
32
- fillDataByExists(task, parser) {
33
- while (this.fillExistInnerObjects(parser.getNextTag(), task, parser)) {
34
- }
35
- }
36
- initInnerObjects(foundTagName, parentObj, parType, parser) {
37
- if (foundTagName !== null && foundTagName === XMLConstants.MG_TAG_PROP) {
38
- let property = new Property();
39
- property.fillData(parentObj, parType, parser);
40
- this.addProp(property);
41
- }
42
- else
43
- return false;
44
- return true;
45
- }
46
- addProp(prop) {
47
- this._hashTab.set_Item(prop.getID(), prop);
48
- this._props.push(prop);
49
- }
50
- delPropById(id) {
51
- if (this._props === null)
52
- return;
53
- let existingProp = this._hashTab.get_Item(id);
54
- if (existingProp !== null) {
55
- this._props.Remove(existingProp);
56
- this._hashTab.Remove(id);
57
- }
58
- }
59
- fillExistInnerObjects(nameOfFound, task, parser) {
60
- let tokensVector = new List();
61
- let endContext = -1;
62
- if (nameOfFound == null)
63
- return false;
64
- if (nameOfFound === XMLConstants.MG_TAG_CONTROL)
65
- endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex());
66
- else if (nameOfFound === XMLConstants.MG_TAG_PROP)
67
- endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
68
- else if (nameOfFound === ('/' + XMLConstants.MG_TAG_CONTROL) ||
69
- GuiFormPropertyAdapter.IsEndFormTag(nameOfFound)) {
70
- parser.setCurrIndex2EndOfTag();
71
- return false;
72
- }
73
- if (endContext !== -1 && endContext < parser.getXMLdata().length) {
74
- let tag = parser.getXMLsubstring(endContext);
75
- parser.add2CurrIndex(tag.indexOf(nameOfFound) + nameOfFound.length);
76
- tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
77
- if (nameOfFound === XMLConstants.MG_TAG_CONTROL) {
78
- this._parent = task.getCtrl(NNumber.Parse(this.fillName(tokensVector)));
79
- parser.setCurrIndex(++endContext);
80
- return true;
81
- }
82
- else if (nameOfFound === XMLConstants.MG_TAG_PROP) {
83
- if (this._parent != null) {
84
- let strPropId = this.fillName(tokensVector);
85
- let propId = NNumber.Parse(strPropId);
86
- let prop = null;
87
- if (this._parent != null)
88
- prop = this._parent.getProp(propId);
89
- if (prop == null)
90
- Events.WriteExceptionToLog(NString.Format("in PropTable.fillExistInnerObjects() no property with id={0}", strPropId));
91
- else
92
- this.addProp(prop);
93
- parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
94
- return true;
95
- }
96
- else
97
- Events.WriteExceptionToLog("in PropTable.fillExistInnerObjects() missing control");
98
- }
99
- else {
100
- Events.WriteExceptionToLog(NString.Format("in PropTable.fillExistInnerObjects() illegal tag name: {0}", nameOfFound));
101
- parser.setCurrIndex(++endContext);
102
- return true;
103
- }
104
- }
105
- if (nameOfFound === XMLConstants.MG_TAG_CONTROL) {
106
- parser.setCurrIndex(++endContext);
107
- return true;
108
- }
109
- else if (GuiFormPropertyAdapter.IsFormTag(nameOfFound)) {
110
- this._parent = task.getForm();
111
- this._parent.fillName(nameOfFound);
112
- return true;
113
- }
114
- else if (nameOfFound === ('/' + XMLConstants.MG_TAG_FLD))
115
- return false;
116
- parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
117
- return true;
118
- }
119
- fillName(tokensVector) {
120
- let attribute = null;
121
- let valueStr;
122
- for (let j = 0; j < tokensVector.length; j = j + 2) {
123
- attribute = tokensVector.get_Item(j);
124
- valueStr = tokensVector.get_Item(j + 1);
125
- if (attribute === XMLConstants.MG_ATTR_DITIDX || attribute === XMLConstants.MG_ATTR_ID)
126
- return valueStr;
127
- }
128
- Events.WriteExceptionToLog(NString.Format("Unrecognized attribute: '{0}'", attribute));
129
- return null;
130
- }
131
- getSize() {
132
- return this._props.length;
133
- }
134
- getProp(idx) {
135
- if (idx < 0 || idx >= this._props.length)
136
- return null;
137
- return this._props.get_Item(idx);
138
- }
139
- getPropById(id) {
140
- return this._hashTab.get_Item(id);
141
- }
142
- propExists(id) {
143
- return this.getPropById(id) !== null;
144
- }
145
- setProp(propId, val, parent, parentType) {
146
- let prop = this.getPropById(propId);
147
- if (prop === null) {
148
- prop = new Property(propId, parent, parentType);
149
- this.addProp(prop);
150
- }
151
- prop.setValue(val);
152
- prop.setOrgValue();
153
- }
154
- RefreshDisplay(forceRefresh, onlyRepeatableProps) {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- let allPropsRefreshed = true;
157
- let prop;
158
- let i = 0;
159
- let form = null;
160
- let visibleProps = new List();
161
- if (this._parent != null && this._parent instanceof GuiControlPropertyAdapter)
162
- form = this._parent.getForm();
163
- if (form != null)
164
- form.checkAndCreateRow(form.DisplayLine);
165
- for (i = 0; i < this.getSize(); i++) {
166
- prop = this.getProp(i);
167
- try {
168
- if (onlyRepeatableProps && !Property.isRepeatableInTable(prop.getID()))
169
- continue;
170
- if (prop.getID() === PropInterface.PROP_TYPE_VISIBLE)
171
- visibleProps.push(prop);
172
- else
173
- yield prop.RefreshDisplay(forceRefresh);
174
- }
175
- catch (ex) {
176
- if (ex instanceof ApplicationException) {
177
- Events.WriteExceptionToLog(ex);
178
- allPropsRefreshed = false;
179
- }
180
- else
181
- throw ex;
182
- }
183
- }
184
- for (let i = 0; i < visibleProps.length; i++) {
185
- let visibleProp = visibleProps[i];
186
- yield visibleProp.RefreshDisplay(forceRefresh);
187
- }
188
- return allPropsRefreshed;
189
- });
190
- }
191
- updatePrevValueArray(newSize) {
192
- for (let i = 0; i < this._props.length; i = i + 1) {
193
- let property = this._props.get_Item(i);
194
- property.updatePrevValueArray(newSize);
195
- }
196
- }
197
- resetPrevValueArray() {
198
- for (let i = 0; i < this._props.length; i = i + 1) {
199
- let property = this._props.get_Item(i);
200
- property.ResetPrevValueArray();
201
- }
202
- }
203
- resetPrevValAt(index) {
204
- for (let i = 0; i < this._props.length; i = i + 1) {
205
- let property = this._props.get_Item(i);
206
- property.resetPrevValAt(index);
207
- }
208
- }
209
- clearLabelPrevValueArray() {
210
- let labelProperty = this.getPropById(45);
211
- if (labelProperty !== null)
212
- labelProperty.clearPrevValueArray();
213
- }
214
- getCtrlRef() {
215
- return ((this._parent instanceof GuiControlPropertyAdapter) ? this._parent : null);
216
- }
217
- InsertPrevValueArray(idx, count) {
218
- for (let i = 0; i < this._props.length; i++) {
219
- let prop = this._props[i];
220
- prop.InsertPrevValueArray(idx, count);
221
- }
222
- }
223
- }
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Qcm9wVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLeEUsTUFBTSxPQUFPLFNBQVM7SUFZcEIsWUFBWSxPQUE2QjtRQVZqQyxhQUFRLEdBQWdDLElBQUksQ0FBQztRQUM3QyxXQUFNLEdBQW1CLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQXdCLElBQUksQ0FBQztRQVUxQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQVksQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFtQixFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sYUFBYSxD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ImltcG9ydCB7SGFzaHRhYmxlLCBMaXN0LCBOTnVtYmVyLCBOU3RyaW5nLCBBcHBsaWNhdGlvbkV4Y2VwdGlvbn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gXCIuL1Byb3BlcnR5XCI7XHJcbmltcG9ydCB7UHJvcFBhcmVudEludGVyZmFjZX0gZnJvbSBcIi4uLy4uL2d1aS9Qcm9wUGFyZW50SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7WG1sUGFyc2VyLCBYTUxDb25zdGFudHN9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2V9IGZyb20gXCIuLi90YXNrcy9HdWlUYXNrQmFzZVwiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQge1Byb3BJbnRlcmZhY2V9IGZyb20gXCIuL1Byb3BJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgR3VpRm9ybVByb3BlcnR5QWRhcHRlciB9IGZyb20gXCIuL0d1aUZvcm1Qcm9wZXJ0eUFkYXB0ZXJcIjtcclxuaW1wb3J0IHsgR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciB9IGZyb20gXCIuL0d1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgcHJvcGVydGllcyB0YWJsZVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgUHJvcFRhYmxlIHtcclxuXHJcbiAgcHJpdmF0ZSBfaGFzaFRhYjogSGFzaHRhYmxlPG51bWJlciwgUHJvcGVydHk+ID0gbnVsbDsgLy8gZm9yIGZhc3QgYWNjZXNzIHRvIHByb3BlcnRpZXNcclxuICBwcml2YXRlIF9wcm9wczogTGlzdDxQcm9wZXJ0eT4gPSBudWxsO1xyXG4gIHByaXZhdGUgX3BhcmVudDogUHJvcFBhcmVudEludGVyZmFjZSA9IG51bGw7XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihwYXJlbnRfOiBQcm9wUGFyZW50SW50ZXJmYWNlKTtcclxuICBjb25zdHJ1Y3RvcihwYXJlbnRfPzogUHJvcFBhcmVudEludGVyZmFjZSkge1xyXG5cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEocGFyZW50Xyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wcyA9IG5ldyBMaXN0PFByb3BlcnR5PigpO1xyXG4gICAgdGhpcy5faGFzaFRhYiA9IG5ldyBIYXNodGFibGU8bnVtYmVyLCBQcm9wZXJ0eT4oMjApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKHBhcmVudF86IFByb3BQYXJlbnRJbnRlcmZhY2UpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgdGhpcy5fcGFyZW50ID0gcGFyZW50XztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgcHJvcGVydGllc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJlbnRPYmpcIj5yZWZlcmVuY2UgdG8gcGFyZW50IG9iamVjdChHdWlUYXNrQmFzZSk8L3BhcmFtPlxyXG4gIGZpbGxEYXRhKHBhcmVudE9iajogUHJvcFBhcmVudEludGVyZmFjZSwgcGFyVHlwZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIuZ2V0TmV4dFRhZygpLCBwYXJlbnRPYmosIHBhclR5cGUsIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGb3IgcmVjb21wdXRlOiBQYXJzZSB0aGUgZXhpc3RpbmcgcHJvcGVydGllcyBhbmQgY3JlYXRlIHJlZmVyZW5jZXMgdG8gdGhlbVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+cmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgR3VpVGFza0Jhc2U8L3BhcmFtPlxyXG4gIGZpbGxEYXRhQnlFeGlzdHModGFzazogR3VpVGFza0Jhc2UsIHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5maWxsRXhpc3RJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgdGFzaywgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZpbGwgdGhlIGlubmVyIG9iamVjdHMgb2YgdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPm5hbWUgb2YgdGFnLCBvZiBvYmplY3QsIHdoaWNoIG5lZWQgYmUgYWxsb2NhdGVkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmVudE9ialwiPnJlZmVyZW5jZSB0byB0aGUgcGFyZW50IG9iamVjdCwgbmVlZCBiZSBhZGRlZCB0byBldmVyeSBQcm9wZXJ0eTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBNYW5hZ2VyLlhtbFBhcnNlci5nZXRDdXJySW5kZXgoKSwgdGhlIGZvdW5kIG9iamVjdCB0YWcgYW5kIEFMTCBpdHMgc3VidGFncyBmaW5pc2g8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJlbnRPYmo6IFByb3BQYXJlbnRJbnRlcmZhY2UsIHBhclR5cGU6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgIT09IG51bGwgJiYgZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX1BST1ApIHtcclxuICAgICAgbGV0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IG5ldyBQcm9wZXJ0eSgpO1xyXG4gICAgICBwcm9wZXJ0eS5maWxsRGF0YShwYXJlbnRPYmosIHBhclR5cGUsIHBhcnNlcik7XHJcbiAgICAgIHRoaXMuYWRkUHJvcChwcm9wZXJ0eSk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZGluZyBwcm9wZXJ0eSBieSBrZXlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcFwiPjwvcGFyYW0+XHJcbiAgYWRkUHJvcChwcm9wOiBQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFzaFRhYi5zZXRfSXRlbShwcm9wLmdldElEKCksIHByb3ApO1xyXG4gICAgdGhpcy5fcHJvcHMucHVzaChwcm9wKTtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj48L3BhcmFtPlxyXG4gIGRlbFByb3BCeUlkKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wcm9wcyA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCBleGlzdGluZ1Byb3A6IFByb3BlcnR5ID0gPFByb3BlcnR5PnRoaXMuX2hhc2hUYWIuZ2V0X0l0ZW0oaWQpO1xyXG4gICAgaWYgKGV4aXN0aW5nUHJvcCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9wcm9wcy5SZW1vdmUoZXhpc3RpbmdQcm9wKTtcclxuICAgICAgdGhpcy5faGFzaFRhYi5SZW1vdmUoaWQpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGb3IgUmVjb21wdXRlOiBGaWxsIFByb3BUYWJsZSB3aXRoIHJlZmVyZW5jZSB0byBleGlzdGluZyBQcm9wVGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnJlZmVyZW5jZSB0byBwYXJlbnQgR3VpVGFza0Jhc2U8L3BhcmFtPlxyXG4gIHByaXZhdGUgZmlsbEV4aXN0SW5uZXJPYmplY3RzKG5hbWVPZkZvdW5kOiBzdHJpbmcsIHRhc2s6IEd1aVRhc2tCYXNlLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgICBpZiAobmFtZU9mRm91bmQgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChuYW1lT2ZGb3VuZCA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MKVxyXG4gICAgICBlbmRDb250ZXh0ID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBlbHNlIGlmIChuYW1lT2ZGb3VuZCA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19QUk9QKVxyXG4gICAgICBlbmRDb250ZXh0ID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfVEVSTSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGVsc2UgaWYgKG5hbWVPZkZvdW5kID09PSAoJy8nICsgWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MKSB8fFxyXG4gICAgICBHdWlGb3JtUHJvcGVydHlBZGFwdGVyLklzRW5kRm9ybVRhZyhuYW1lT2ZGb3VuZCkpIHtcclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YobmFtZU9mRm91bmQpICsgbmFtZU9mRm91bmQubGVuZ3RoKTtcclxuICAgICAgdG9rZW5zVmVjdG9yID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG4gICAgICBpZiAobmFtZU9mRm91bmQgPT09IFhNTENvbnN0YW50cy5NR19UQUdfQ09OVFJPTCkge1xyXG4gICAgICAgIC8vIGRpdGlkeCBvZiBFeGlzdHMgQ29udHJvbFxyXG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHRhc2suZ2V0Q3RybChOTnVtYmVyLlBhcnNlKHRoaXMuZmlsbE5hbWUodG9rZW5zVmVjdG9yKSkpO1xyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoKytlbmRDb250ZXh0KTsgLy8gdG8gZGVsZXRlIFwiPlwiXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobmFtZU9mRm91bmQgPT09IFhNTENvbnN0YW50cy5NR19UQUdfUFJPUCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgbGV0IHN0clByb3BJZDogc3RyaW5nID0gdGhpcy5maWxsTmFtZSh0b2tlbnNWZWN0b3IpO1xyXG4gICAgICAgICAgbGV0IHByb3BJZDogbnVtYmVyID0gTk51bWJlci5QYXJzZShzdHJQcm9wSWQpO1xyXG4gICAgICAgICAgbGV0IHByb3A6IFByb3BlcnR5ID0gbnVsbDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5fcGFyZW50ICE9IG51bGwpXHJcbiAgICAgICAgICAgIHByb3AgPSB0aGlzLl9wYXJlbnQuZ2V0UHJvcChwcm9wSWQpO1xyXG5cclxuICAgICAgICAgIGlmIChwcm9wID09IG51bGwpXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiaW4gUHJvcFRhYmxlLmZpbGxFeGlzdElubmVyT2JqZWN0cygpIG5vIHByb3BlcnR5IHdpdGggaWQ9ezB9XCIsIHN0clByb3BJZCkpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3AocHJvcCk7XHJcbiAgICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcImluIFByb3BUYWJsZS5maWxsRXhpc3RJbm5lck9iamVjdHMoKSBtaXNzaW5nIGNvbnRyb2xcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJpbiBQcm9wVGFibGUuZmlsbEV4aXN0SW5uZXJPYmplY3RzKCkgaWxsZWdhbCB0YWcgbmFtZTogezB9XCIsIG5hbWVPZkZvdW5kKSk7XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5hbWVPZkZvdW5kID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0NPTlRST0wpIHtcclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKEd1aUZvcm1Qcm9wZXJ0eUFkYXB0ZXIuSXNGb3JtVGFnKG5hbWVPZkZvdW5kKSkge1xyXG4gICAgICB0aGlzLl9wYXJlbnQgPSB0YXNrLmdldEZvcm0oKTtcclxuICAgICAgKDxHdWlGb3JtUHJvcGVydHlBZGFwdGVyPjxhbnk+dGhpcy5fcGFyZW50KS5maWxsTmFtZShuYW1lT2ZGb3VuZCk7XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5hbWVPZkZvdW5kID09PSAoJy8nICsgWE1MQ29uc3RhbnRzLk1HX1RBR19GTEQpKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0ICsgWE1MQ29uc3RhbnRzLlRBR19URVJNLmxlbmd0aCk7IC8vIGV4aXQgb2YgYm91bmRzXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgQ29udHJvbCwgb3Igb2YgYW4gZXhpc3RpbmcgUHJvcGVydHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gTmFtZSBvZiBjb250cm9sPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZmlsbE5hbWUodG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4pOiBzdHJpbmcge1xyXG4gICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nO1xyXG5cclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcblxyXG4gICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9ESVRJRFggfHwgYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRClcclxuICAgICAgICByZXR1cm4gdmFsdWVTdHI7XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlVucmVjb2duaXplZCBhdHRyaWJ1dGU6ICd7MH0nXCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHNpemUgb2YgdGhlIHZlY3RvciBwcm9wc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBzaXplIG9mIHRoZSBwcm9wcyBtZW1iZXI8L3JldHVybnM+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb3BzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSBQcm9wZXJ0eSBieSBpdHMgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gcmVmZXJlbmNlIHRvIHRoZSByZXF1aXJlZCBQcm9wZXJ0eTwvcmV0dXJucz5cclxuICBnZXRQcm9wKGlkeDogbnVtYmVyKTogUHJvcGVydHkge1xyXG4gICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHRoaXMuX3Byb3BzLmxlbmd0aClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJvcHMuZ2V0X0l0ZW0oaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSBQcm9wZXJ0eSBieSBpdHMgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5vZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIGdldFByb3BCeUlkKGlkOiBudW1iZXIpOiBQcm9wZXJ0eSB7XHJcbiAgICByZXR1cm4gPFByb3BlcnR5PnRoaXMuX2hhc2hUYWIuZ2V0X0l0ZW0oaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvcEV4aXN0cyhpZDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9wQnlJZChpZCkgIT09IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgcHJvcGVydHkgdmFsdWUuIGluIGNhc2UgdGhlIHRhYmxlIGRvZXNuJ3QgY29udGFpbiBzdWNoIHByb3BlcnR5LCBjcmVhdGVzIGEgbmV3IFByb3BlcnR5IG9iamVjdCBhbmQgYWRkIGl0IHRvIHRoZSB0YWJsZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+dGhlIGlkIG9mIHRoZSBwcm9wZXJ0eTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj50aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmVudFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgb2JqZWN0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmVudFR5cGVcIj50aGUgdHlwZSBvZiB0aGUgcGFyZW50IG9iamVjdDwvcGFyYW0+XHJcbiAgc2V0UHJvcChwcm9wSWQ6IG51bWJlciwgdmFsOiBzdHJpbmcsIHBhcmVudDogUHJvcFBhcmVudEludGVyZmFjZSwgcGFyZW50VHlwZTogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG4gICAgaWYgKHByb3AgPT09IG51bGwpIHtcclxuICAgICAgcHJvcCA9IG5ldyBQcm9wZXJ0eShwcm9wSWQsIHBhcmVudCwgcGFyZW50VHlwZSk7XHJcbiAgICAgIHRoaXMuYWRkUHJvcChwcm9wKTtcclxuICAgIH1cclxuICAgIHByb3Auc2V0VmFsdWUodmFsKTtcclxuICAgIHByb3Auc2V0T3JnVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZWZyZXNoIGRpc3BsYXkgb2YgdGhlIHByb3BlcnRpZXMgaW4gdGhlIFRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvcmNlUmVmcmVzaFwiPmlmIHRydWUsIHJlZnJlc2ggaXMgZm9yY2VkIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZXZpb3VzIHZhbHVlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9ubHlSZXBlYXRhYmxlUHJvcHNcIj5pZiB0cnVlLCByZWZyZXNoZXMgb25seSByZXBlYXRhYmxlIHRyZWUgcHJvcGVydGllczwvcGFyYW0+XHJcbiAgYXN5bmMgUmVmcmVzaERpc3BsYXkoZm9yY2VSZWZyZXNoOiBib29sZWFuLCBvbmx5UmVwZWF0YWJsZVByb3BzOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcblxyXG4gICAgbGV0IGFsbFByb3BzUmVmcmVzaGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eTtcclxuICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGZvcm06IEd1aUZvcm1Qcm9wZXJ0eUFkYXB0ZXIgPSBudWxsO1xyXG4gICAgbGV0IHZpc2libGVQcm9wczogTGlzdDxQcm9wZXJ0eT4gPSBuZXcgTGlzdCgpO1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5fcGFyZW50ICE9IG51bGwgJiYgdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcilcclxuICAgICAgZm9ybSA9ICg8R3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcj50aGlzLl9wYXJlbnQpLmdldEZvcm0oKTtcclxuXHJcbiAgICBpZiAoZm9ybSAhPSBudWxsKVxyXG4gICAgICBmb3JtLmNoZWNrQW5kQ3JlYXRlUm93KGZvcm0uRGlzcGxheUxpbmUpO1xyXG5cclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCk7IGkrKykge1xyXG4gICAgICBwcm9wID0gdGhpcy5nZXRQcm9wKGkpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIGlmIHRoaXMgcHJvcGVydHkgaXMgbm90IHJlcGVhdGFibGUgaW4gdHJlZSBvciB0YWJsZSwgYW5kIG9ubHlSZXBlYXRhYmxlUHJvcHMgdHVybmVkIG9uXHJcbiAgICAgICAgLy8gZG8gbm90IHJlZnJlc2ggdGhpcyBwcm9wZXJ0eVxyXG4gICAgICAgIGlmIChvbmx5UmVwZWF0YWJsZVByb3BzICYmICFQcm9wZXJ0eS5pc1JlcGVhdGFibGVJblRhYmxlKHByb3AuZ2V0SUQoKSkpXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgLy8gUmVmcmVzaCBWaXNpYmxlIHByb3Agb25seSBhZnRlciByZWZyZXNoaW5nIHRoZSBuYXZpZ2F0aW9uIHByb3BzIGxpa2UgWCwgWS5cclxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBjb250cm9sIGlzIHNob3duIG9uIGl0cyBkZWZhdWx0IGxvY2F0aW9uIGZpcnN0IGFuZFxyXG4gICAgICAgIC8vIHRoZW4gbW92ZWQgc29tZXdoZXJlIGVsc2UuIEFuZCB0aGlzIGlzIGNsZWFybHkgdmlzaWJsZS5cclxuICAgICAgICBpZiAocHJvcC5nZXRJRCgpID09PSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFKVxyXG4gICAgICAgICAgdmlzaWJsZVByb3BzLnB1c2gocHJvcCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgcHJvcC5SZWZyZXNoRGlzcGxheShmb3JjZVJlZnJlc2gpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhleCk7XHJcbiAgICAgICAgICBhbGxQcm9wc1JlZnJlc2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aHJvdyAgZXg7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpYmxlUHJvcHMubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgIGxldCB2aXNpYmxlUHJvcCA9IHZpc2libGVQcm9wc1tpXTtcclxuICAgICAgYXdhaXQgdmlzaWJsZVByb3AuUmVmcmVzaERpc3BsYXkoZm9yY2VSZWZyZXNoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWxsUHJvcHNSZWZyZXNoZWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdXBkYXRlIGFsbCBwcm9wZXJ0aWVzIGFycmF5IHNpemVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibmV3U2l6ZVwiPjwvcGFyYW0+XHJcbiAgdXBkYXRlUHJldlZhbHVlQXJyYXkobmV3U2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcHJvcHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BzLmdldF9JdGVtKGkpO1xyXG4gICAgICBwcm9wZXJ0eS51cGRhdGVQcmV2VmFsdWVBcnJheShuZXdTaXplKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdXBkYXRlIGFsbCBwcm9wZXJ0aWVzIGFycmF5IHNpemVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHJlc2V0UHJldlZhbHVlQXJyYXkoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcHJvcHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BzLmdldF9JdGVtKGkpO1xyXG4gICAgICBwcm9wZXJ0eS5SZXNldFByZXZWYWx1ZUFycmF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJlc2V0IHByZXYgdmFsdWUgYXQgaW5kZXguXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZXNldFByZXZWYWxBdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcHJvcHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BzLmdldF9JdGVtKGkpO1xyXG4gICAgICBwcm9wZXJ0eS5yZXNldFByZXZWYWxBdChpbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNsZWFyIHByZXZWYWx1ZSBhcnJheSBvZiBMYWJlbCBwcm9wZXJ0eSBpZiBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsZWFyTGFiZWxQcmV2VmFsdWVBcnJheSgpOiB2b2lkIHtcclxuICAgIGxldCBsYWJlbFByb3BlcnR5OiBQcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcEJ5SWQoNDUpO1xyXG4gICAgaWYgKGxhYmVsUHJvcGVydHkgIT09IG51bGwpXHJcbiAgICAgIGxhYmVsUHJvcGVydHkuY2xlYXJQcmV2VmFsdWVBcnJheSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRDdHJsUmVmKCk6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIge1xyXG4gICAgcmV0dXJuICgodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcikgPyA8R3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcj50aGlzLl9wYXJlbnQgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBJbnNlcnRQcmV2VmFsdWVBcnJheShpZHg6IG51bWJlciwgY291bnQ6IG51bWJlcikge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3Byb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IHRoaXMuX3Byb3BzW2ldO1xyXG4gICAgICBwcm9wLkluc2VydFByZXZWYWx1ZUFycmF5KGlkeCwgY291bnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=