@magic-xpa/gui 4.1100.0-dev4110.18 → 4.1100.0-dev4110.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/index.mjs +71 -71
- package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
- package/esm2022/src/Commands.mjs +184 -0
- package/{esm2020 → esm2022}/src/Events.mjs +420 -420
- package/esm2022/src/EventsProcessor.mjs +67 -0
- package/esm2022/src/FocusManager.mjs +34 -0
- package/esm2022/src/GuiConstants.mjs +68 -0
- package/{esm2020 → esm2022}/src/GuiEnums.mjs +299 -299
- package/esm2022/src/GuiEnvironment.mjs +4 -0
- package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
- package/{esm2020 → esm2022}/src/Manager.mjs +91 -91
- package/esm2022/src/UIBridge.mjs +33 -0
- package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
- package/esm2022/src/gui/GuiMgControl.mjs +123 -0
- package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
- package/esm2022/src/gui/KeyboardItem.mjs +135 -0
- package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
- package/esm2022/src/gui/MgValue.mjs +16 -0
- package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
- package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
- package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
- package/esm2022/src/gui/low/GuiInteractive.mjs +177 -0
- package/esm2022/src/gui/low/Style.mjs +20 -0
- package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
- package/esm2022/src/management/data/BlobType.mjs +281 -0
- package/{esm2020 → esm2022}/src/management/data/DcValues.mjs +214 -214
- package/esm2022/src/management/data/DcValuesBuilderBase.mjs +96 -0
- package/esm2022/src/management/data/FieldDef.mjs +331 -0
- package/esm2022/src/management/data/FieldsTable.mjs +54 -0
- package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
- package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
- package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
- package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
- package/esm2022/src/management/data/RecordUtils.mjs +361 -0
- package/esm2022/src/management/data/VectorType.mjs +612 -0
- package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
- package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
- package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
- package/{esm2020 → esm2022}/src/management/exp/GuiExpressionEvaluator.mjs +305 -307
- package/esm2022/src/management/gui/ControlTable.mjs +118 -0
- package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
- package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
- package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
- package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
- package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
- package/esm2022/src/management/gui/Helps.mjs +237 -0
- package/esm2022/src/management/gui/MgControlBase.mjs +1859 -0
- package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
- package/esm2022/src/management/gui/PIC.mjs +1185 -0
- package/esm2022/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +244 -244
- package/esm2022/src/management/gui/PropTable.mjs +221 -0
- package/esm2022/src/management/gui/Property.mjs +1361 -0
- package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
- package/esm2022/src/management/gui/ValidationDetailsBase.mjs +93 -0
- package/esm2022/src/management/gui/WrongFormatException.mjs +29 -0
- package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
- package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
- package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
- package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
- package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
- package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
- package/esm2022/src/util/MemoryUtil.mjs +35 -0
- package/{esm2020 → esm2022}/src/util/ObjectReference.mjs +36 -36
- package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16067 -16074
- package/fesm2022/magic-xpa-gui.mjs.map +1 -0
- package/index.d.ts +70 -70
- package/package.json +6 -12
- package/src/Commands.d.ts +40 -39
- package/src/Events.d.ts +155 -155
- package/src/EventsProcessor.d.ts +13 -13
- package/src/FocusManager.d.ts +8 -8
- package/src/GuiConstants.d.ts +65 -65
- package/src/GuiEnums.d.ts +282 -282
- package/src/GuiEnvironment.d.ts +4 -4
- package/src/IFlowMonitorQueue.d.ts +3 -3
- package/src/Manager.d.ts +26 -26
- package/src/UIBridge.d.ts +16 -16
- package/src/env/IEnvironment.d.ts +31 -31
- package/src/gui/ControlBase.d.ts +4 -4
- package/src/gui/GuiMgControl.d.ts +38 -38
- package/src/gui/GuiMgForm.d.ts +3 -3
- package/src/gui/KeyboardItem.d.ts +18 -18
- package/src/gui/LastFocusedVal.d.ts +7 -7
- package/src/gui/MgValue.d.ts +15 -15
- package/src/gui/PropParentInterface.d.ts +13 -13
- package/src/gui/low/DialogHandler.d.ts +4 -4
- package/src/gui/low/GuiCommand.d.ts +37 -37
- package/src/gui/low/GuiCommandQueue.d.ts +13 -13
- package/src/gui/low/GuiInteractive.d.ts +55 -53
- package/src/gui/low/Style.d.ts +19 -19
- package/src/management/RuntimeContextBase.d.ts +23 -23
- package/src/management/data/BlobType.d.ts +29 -29
- package/src/management/data/DcValues.d.ts +33 -33
- package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
- package/src/management/data/FieldDef.d.ts +53 -53
- package/src/management/data/FieldsTable.d.ts +16 -16
- package/src/management/data/GuiDataViewBase.d.ts +27 -27
- package/src/management/data/GuiFieldBase.d.ts +17 -17
- package/src/management/data/IRecord.d.ts +12 -12
- package/src/management/data/IReferencedObject.d.ts +5 -5
- package/src/management/data/NUM_TYPE.d.ts +103 -103
- package/src/management/data/ObjectReferenceBase.d.ts +16 -16
- package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
- package/src/management/data/RecordUtils.d.ts +21 -21
- package/src/management/data/VectorType.d.ts +52 -52
- package/src/management/data/VectorTypeBase.d.ts +8 -8
- package/src/management/events/IActionManager.d.ts +7 -7
- package/src/management/events/IGuiEventsManager.d.ts +20 -20
- package/src/management/exp/ExpressionInterface.d.ts +242 -242
- package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
- package/src/management/gui/ControlTable.d.ts +28 -28
- package/src/management/gui/DisplayConvertor.d.ts +103 -103
- package/src/management/gui/FieldValidator.d.ts +35 -35
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
- package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
- package/src/management/gui/HebrewDate.d.ts +46 -46
- package/src/management/gui/Helps.d.ts +51 -51
- package/src/management/gui/MgControlBase.d.ts +223 -223
- package/src/management/gui/MgFormBase.d.ts +160 -160
- package/src/management/gui/PIC.d.ts +108 -108
- package/src/management/gui/PropDefaults.d.ts +7 -7
- package/src/management/gui/PropInterface.d.ts +243 -243
- package/src/management/gui/PropTable.d.ts +33 -33
- package/src/management/gui/Property.d.ts +121 -121
- package/src/management/gui/ValidationDetails.d.ts +52 -52
- package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
- package/src/management/gui/WrongFormatException.d.ts +9 -9
- package/src/management/tasks/GuiDataCollection.d.ts +4 -4
- package/src/management/tasks/GuiTaskBase.d.ts +150 -150
- package/src/management/tasks/IMGDataTable.d.ts +10 -10
- package/src/management/tasks/ITask.d.ts +6 -6
- package/src/management/tasks/MgTimer.d.ts +8 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
- package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
- package/src/util/MemoryUtil.d.ts +6 -6
- package/src/util/ObjectReference.d.ts +9 -9
- package/src/util/UsernamePasswordCredentials.d.ts +18 -18
- package/esm2020/src/Commands.mjs +0 -177
- package/esm2020/src/EventsProcessor.mjs +0 -67
- package/esm2020/src/FocusManager.mjs +0 -34
- package/esm2020/src/GuiConstants.mjs +0 -68
- package/esm2020/src/GuiEnvironment.mjs +0 -4
- package/esm2020/src/UIBridge.mjs +0 -32
- package/esm2020/src/gui/GuiMgControl.mjs +0 -125
- package/esm2020/src/gui/KeyboardItem.mjs +0 -135
- package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
- package/esm2020/src/gui/MgValue.mjs +0 -16
- package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
- package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
- package/esm2020/src/gui/low/GuiInteractive.mjs +0 -165
- package/esm2020/src/gui/low/Style.mjs +0 -20
- package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
- package/esm2020/src/management/data/BlobType.mjs +0 -281
- package/esm2020/src/management/data/DcValuesBuilderBase.mjs +0 -96
- package/esm2020/src/management/data/FieldDef.mjs +0 -331
- package/esm2020/src/management/data/FieldsTable.mjs +0 -54
- package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
- package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
- package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
- package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
- package/esm2020/src/management/data/RecordUtils.mjs +0 -361
- package/esm2020/src/management/data/VectorType.mjs +0 -612
- package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
- package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
- package/esm2020/src/management/gui/ControlTable.mjs +0 -118
- package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
- package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
- package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
- package/esm2020/src/management/gui/Helps.mjs +0 -237
- package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
- package/esm2020/src/management/gui/MgFormBase.mjs +0 -738
- package/esm2020/src/management/gui/PIC.mjs +0 -1185
- package/esm2020/src/management/gui/PropDefaults.mjs +0 -230
- package/esm2020/src/management/gui/PropTable.mjs +0 -221
- package/esm2020/src/management/gui/Property.mjs +0 -1356
- package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
- package/esm2020/src/management/gui/ValidationDetailsBase.mjs +0 -93
- package/esm2020/src/management/gui/WrongFormatException.mjs +0 -29
- package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
- package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
- package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
- package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +0 -41
- package/esm2020/src/util/MemoryUtil.mjs +0 -35
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
- package/fesm2015/magic-xpa-gui.mjs +0 -16364
- package/fesm2015/magic-xpa-gui.mjs.map +0 -1
- package/fesm2020/magic-xpa-gui.mjs.map +0 -1
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Dictionary, List, RefParam } from "@magic-xpa/mscorelib";
|
|
2
|
-
import { DcValues, EMPTY_DCREF } from "./DcValues";
|
|
3
|
-
import { Events } from "../../Events";
|
|
4
|
-
import { StorageAttribute } from "@magic-xpa/utils";
|
|
5
|
-
import { PIC } from "../gui/PIC";
|
|
6
|
-
import { DisplayConvertor } from "../gui/DisplayConvertor";
|
|
7
|
-
import { Commands } from "../../Commands";
|
|
8
|
-
import { CommandType } from "../../GuiEnums";
|
|
9
|
-
export class GuiDataViewBase {
|
|
10
|
-
constructor() {
|
|
11
|
-
this._dcValsCollection = new Dictionary();
|
|
12
|
-
this._emptyDataview = false;
|
|
13
|
-
this._fieldsTab = null;
|
|
14
|
-
this._task = null;
|
|
15
|
-
this._emptyChoice = new DcValues(true);
|
|
16
|
-
this._emptyChoiceForVectors = new DcValues(true);
|
|
17
|
-
}
|
|
18
|
-
getField(id) {
|
|
19
|
-
if (this._fieldsTab != null)
|
|
20
|
-
return this._fieldsTab.getField(id);
|
|
21
|
-
Events.WriteExceptionToLog("in DataView.getFieldDef(int): There is no fieldsTab object");
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
isEmptyDataview() {
|
|
25
|
-
return this._emptyDataview;
|
|
26
|
-
}
|
|
27
|
-
setEmptyDataview(emptyDataview) {
|
|
28
|
-
this._emptyDataview = emptyDataview;
|
|
29
|
-
Commands.addBoolWithLine(CommandType.SET_EMPTY_DATAVIEW, this._task.getForm(), 0, emptyDataview);
|
|
30
|
-
}
|
|
31
|
-
getTask() {
|
|
32
|
-
return this._task;
|
|
33
|
-
}
|
|
34
|
-
getDcValues(dcId) {
|
|
35
|
-
if (dcId === EMPTY_DCREF)
|
|
36
|
-
return this.getEmptyChoice();
|
|
37
|
-
let dcValues;
|
|
38
|
-
let dcv = new RefParam(dcValues);
|
|
39
|
-
this._dcValsCollection.TryGetValue(dcId.toString(), dcv);
|
|
40
|
-
return dcv.value;
|
|
41
|
-
}
|
|
42
|
-
getEmptyChoice() {
|
|
43
|
-
return this._emptyChoice;
|
|
44
|
-
}
|
|
45
|
-
getEmptyChoiceForVectors() {
|
|
46
|
-
return this._emptyChoiceForVectors;
|
|
47
|
-
}
|
|
48
|
-
GetFieldsTab() {
|
|
49
|
-
return this._fieldsTab;
|
|
50
|
-
}
|
|
51
|
-
GetRouteParams() {
|
|
52
|
-
let params = new List();
|
|
53
|
-
for (let i = 0; i < this._fieldsTab.getSize(); i++) {
|
|
54
|
-
let field = this._fieldsTab.getField(i);
|
|
55
|
-
let val;
|
|
56
|
-
if (field.IsExposedRouteParam && !field.isNull()) {
|
|
57
|
-
switch (field.getType()) {
|
|
58
|
-
case StorageAttribute.ALPHA:
|
|
59
|
-
case StorageAttribute.UNICODE:
|
|
60
|
-
{
|
|
61
|
-
val = field.getDispValue();
|
|
62
|
-
if (field.isNull())
|
|
63
|
-
val = field.getNullDisplay();
|
|
64
|
-
params.push(val.trim());
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
case StorageAttribute.BOOLEAN:
|
|
68
|
-
{
|
|
69
|
-
if (field.isNull())
|
|
70
|
-
params.push(false);
|
|
71
|
-
else
|
|
72
|
-
params.push(field.getDispValue().charAt(0) === '1' ? true : false);
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case StorageAttribute.NUMERIC: {
|
|
76
|
-
val = field.getDispValue();
|
|
77
|
-
if (field.isNull())
|
|
78
|
-
val = field.getNullDisplay();
|
|
79
|
-
let pic = new PIC(field.getPicture(), field.getType(), this.getTask().getCompIdx());
|
|
80
|
-
val = DisplayConvertor.Instance.mg2disp(val, "", pic, true, 0, false);
|
|
81
|
-
params.push(val);
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return (params.length > 0) ? params : null;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRGF0YVZpZXdCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2RhdGEvR3VpRGF0YVZpZXdCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBS2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFcEMsT0FBTyxFQUFDLGdCQUFnQixFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSzNDLE1BQU0sT0FBZ0IsZUFBZTtJQUFyQztRQUVFLHNCQUFpQixHQUF5QixJQUFJLFVBQVUsRUFBWSxDQUFDO1FBQzdELG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3hDLGVBQVUsR0FBZ0IsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBR2xCLGlCQUFZLEdBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsMkJBQXNCLEdBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFvSGhFLENBQUM7SUFyR0MsUUFBUSxDQUFDLEVBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUk7WUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMs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O3dCQUMvQixJQUFJLEdBQUcsR0FBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RixHQUFHLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNqQixNQUFNO3FCQUNQO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpY3Rpb25hcnksIExpc3QsIFJlZlBhcmFtfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtEY1ZhbHVlcywgRU1QVFlfRENSRUZ9IGZyb20gXCIuL0RjVmFsdWVzXCI7XHJcbmltcG9ydCB7RmllbGRzVGFibGV9IGZyb20gXCIuL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2V9IGZyb20gXCIuLi90YXNrcy9HdWlUYXNrQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkRGVmfSBmcm9tIFwiLi9GaWVsZERlZlwiO1xyXG5pbXBvcnQge0lUYXNrfSBmcm9tIFwiLi4vdGFza3MvSVRhc2tcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuLi8uLi9FdmVudHNcIjtcclxuXHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4uL2d1aS9QSUNcIjtcclxuaW1wb3J0IHtEaXNwbGF5Q29udmVydG9yfSBmcm9tIFwiLi4vZ3VpL0Rpc3BsYXlDb252ZXJ0b3JcIjtcclxuaW1wb3J0IHtDb21tYW5kc30gZnJvbSBcIi4uLy4uL0NvbW1hbmRzXCI7XHJcbmltcG9ydCB7Q29tbWFuZFR5cGV9IGZyb20gXCIuLi8uLi9HdWlFbnVtc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBieSB0aGUgR1VJIG5hbWVzcGFjZSBmcm9tIHRoZSBEYXRhVmlld0Jhc2UgY2xhc3MuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWlEYXRhVmlld0Jhc2Uge1xyXG5cclxuICBfZGNWYWxzQ29sbGVjdGlvbjogRGljdGlvbmFyeTxEY1ZhbHVlcz4gPSBuZXcgRGljdGlvbmFyeTxEY1ZhbHVlcz4oKTtcclxuICBwcml2YXRlIF9lbXB0eURhdGF2aWV3OiBib29sZWFuID0gZmFsc2U7IC8vIEluZGljYXRlcyB0aGUgdGFzayBpcyBpbiBFbXB0eSBEYXRhdmlld1xyXG4gIF9maWVsZHNUYWI6IEZpZWxkc1RhYmxlID0gbnVsbDsgLy8gPGR2aGVhZGVyPiAuLi48L2R2aGVhZGVyPiB0YWdcclxuICBfdGFzazogR3VpVGFza0Jhc2UgPSBudWxsOyAvLyBjb250YWluZXIgdGFza1xyXG5cclxuICAvLyBkdW1teSBEY1ZhbHVlcyBmb3IgdXNlIHdpdGggbm9uLURDIGNob2ljZSBjb250cm9sc1xyXG4gIHByaXZhdGUgX2VtcHR5Q2hvaWNlOiBEY1ZhbHVlcyA9IG5ldyBEY1ZhbHVlcyh0cnVlKTtcclxuICBwcml2YXRlIF9lbXB0eUNob2ljZUZvclZlY3RvcnM6IERjVmFsdWVzID0gbmV3IERjVmFsdWVzKHRydWUpO1xyXG5cclxuXHJcbiAgYWJzdHJhY3QgSW5pdCgpOiB2b2lkO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgdGhlIERWSEVBREVSIHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYWJzdHJhY3QgZmlsbEhlYWRlckRhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBnZXRDaHVua1NpemUoKTogbnVtYmVyO1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSBmaWVsZCBieSBpdHMgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj5maWVsZCBpZCA8L3BhcmFtPlxyXG4gIGdldEZpZWxkKGlkOiBudW1iZXIpOiBGaWVsZERlZiB7XHJcbiAgICBpZiAodGhpcy5fZmllbGRzVGFiICE9IG51bGwpXHJcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHNUYWIuZ2V0RmllbGQoaWQpO1xyXG5cclxuICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKFwiaW4gRGF0YVZpZXcuZ2V0RmllbGREZWYoaW50KTogVGhlcmUgaXMgbm8gZmllbGRzVGFiIG9iamVjdFwiKTtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgZW1wdHlEYXRhdmlldzwvcmV0dXJucz5cclxuICBpc0VtcHR5RGF0YXZpZXcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlEYXRhdmlldztcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZW1wdHlEYXRhdmlld1wiPnRoZSBlbXB0eURhdGF2aWV3IHRvIHNldDwvcGFyYW0+XHJcbiAgc2V0RW1wdHlEYXRhdmlldyhlbXB0eURhdGF2aWV3OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lbXB0eURhdGF2aWV3ID0gZW1wdHlEYXRhdmlldztcclxuICAgIENvbW1hbmRzLmFkZEJvb2xXaXRoTGluZShDb21tYW5kVHlwZS5TRVRfRU1QVFlfREFUQVZJRVcsIHRoaXMuX3Rhc2suZ2V0Rm9ybSgpLCAwLCBlbXB0eURhdGF2aWV3KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIHRhc2sgb2YgdGhpcyBkYXRhdmlld1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VGFzaygpOiBJVGFzayB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFzaztcclxuICB9XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGRjVmFsdWVzIG9iamVjdCBieSBpdHMgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGNJZFwiPmlkIG9mIGEgZGF0YSBjb250cm9sIHZhbHVlcyA8L3BhcmFtPlxyXG4gIGdldERjVmFsdWVzKGRjSWQ6IG51bWJlcik6IERjVmFsdWVzIHtcclxuICAgIGlmIChkY0lkID09PSBFTVBUWV9EQ1JFRilcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RW1wdHlDaG9pY2UoKTtcclxuXHJcbiAgICBsZXQgZGNWYWx1ZXM6IERjVmFsdWVzO1xyXG4gICAgbGV0IGRjdjogUmVmUGFyYW08RGNWYWx1ZXM+ID0gbmV3IFJlZlBhcmFtPERjVmFsdWVzPihkY1ZhbHVlcyk7XHJcbiAgICB0aGlzLl9kY1ZhbHNDb2xsZWN0aW9uLlRyeUdldFZhbHVlKGRjSWQudG9TdHJpbmcoKSwgZGN2KTtcclxuICAgIHJldHVybiBkY3YudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+ZHVtbXkgRGNWYWx1ZXMgZm9yIHVzZSB3aXRoIG5vbi1EQyBjaG9pY2UgY29udHJvbHM8L3JldHVybnM+XHJcbiAgZ2V0RW1wdHlDaG9pY2UoKTogRGNWYWx1ZXMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VtcHR5Q2hvaWNlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEVtcHR5Q2hvaWNlRm9yVmVjdG9ycygpOiBEY1ZhbHVlcyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlDaG9pY2VGb3JWZWN0b3JzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBmaWVsZHMgdGFibGUgKDxkdmhlYWRlcj4pIG9mIHRoZSAoKERhdGFWaWV3KWRhdGFWaWV3KVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0RmllbGRzVGFiKCk6IEZpZWxkc1RhYmxlIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZHNUYWI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJvdXRlIHBhcmFtc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0Um91dGVQYXJhbXMoKTogTGlzdDxhbnk+IHtcclxuICAgIGxldCBwYXJhbXM6IExpc3QgPCBhbnkgPiA9IG5ldyBMaXN0KCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2ZpZWxkc1RhYi5nZXRTaXplKCk7IGkrKykge1xyXG5cclxuICAgICAgbGV0IGZpZWxkOiBhbnkgPSB0aGlzLl9maWVsZHNUYWIuZ2V0RmllbGQoaSk7XHJcbiAgICAgIGxldCB2YWw6IGFueTtcclxuICAgICAgaWYgKGZpZWxkLklzRXhwb3NlZFJvdXRlUGFyYW0gJiYgIWZpZWxkLmlzTnVsbCgpKSB7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC5nZXRUeXBlKCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6IHtcclxuICAgICAgICAgICAgdmFsID0gZmllbGQuZ2V0RGlzcFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5pc051bGwoKSlcclxuICAgICAgICAgICAgICB2YWwgPSBmaWVsZC5nZXROdWxsRGlzcGxheSgpO1xyXG4gICAgICAgICAgICBwYXJhbXMucHVzaCg8c3RyaW5nPnZhbC50cmltKCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjoge1xyXG4gICAgICAgICAgICBpZiAoZmllbGQuaXNOdWxsKCkpXHJcbiAgICAgICAgICAgICAgcGFyYW1zLnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgcGFyYW1zLnB1c2goZmllbGQuZ2V0RGlzcFZhbHVlKCkuY2hhckF0KDApID09PSAnMScgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQzoge1xyXG4gICAgICAgICAgICB2YWwgPSBmaWVsZC5nZXREaXNwVmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLmlzTnVsbCgpKVxyXG4gICAgICAgICAgICAgIHZhbCA9IGZpZWxkLmdldE51bGxEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGxldCBwaWM6IFBJQyA9IG5ldyBQSUMoZmllbGQuZ2V0UGljdHVyZSgpLCBmaWVsZC5nZXRUeXBlKCksIHRoaXMuZ2V0VGFzaygpLmdldENvbXBJZHgoKSk7XHJcbiAgICAgICAgICAgIHZhbCA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UubWcyZGlzcCh2YWwsIFwiXCIsIHBpYywgdHJ1ZSwgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICBwYXJhbXMucHVzaCh2YWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAocGFyYW1zLmxlbmd0aCA+IDApID8gcGFyYW1zIDogbnVsbDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { FieldDef } from "./FieldDef";
|
|
2
|
-
import { List, NString } from "@magic-xpa/mscorelib";
|
|
3
|
-
import { GuiConstants } from "../../GuiConstants";
|
|
4
|
-
export class GuiFieldBase extends FieldDef {
|
|
5
|
-
constructor(id) {
|
|
6
|
-
super(id);
|
|
7
|
-
this.ControlToFocus = null;
|
|
8
|
-
this._controls = null;
|
|
9
|
-
this._dataview = null;
|
|
10
|
-
}
|
|
11
|
-
getTask() {
|
|
12
|
-
return this._dataview.getTask();
|
|
13
|
-
}
|
|
14
|
-
async updateDisplayWithValue(displayValue, isNull) {
|
|
15
|
-
let ctrl = null;
|
|
16
|
-
let ctrlValue = null;
|
|
17
|
-
let defaultValue = GuiConstants.DEFAULT_VALUE_INT.toString();
|
|
18
|
-
if (this._controls !== null) {
|
|
19
|
-
let firstControlValue = null;
|
|
20
|
-
let foundControlValue = false;
|
|
21
|
-
let savedControlToFocus = this.ControlToFocus;
|
|
22
|
-
for (let i = 0; i < this._controls.length; i = i + 1) {
|
|
23
|
-
ctrl = this._controls.get_Item(i);
|
|
24
|
-
if (!ctrl.getForm().inRefreshDisplay()) {
|
|
25
|
-
ctrl.resetPrevVal();
|
|
26
|
-
await ctrl.SetAndRefreshDisplayValue(displayValue, isNull);
|
|
27
|
-
if (!ctrl.isRadio())
|
|
28
|
-
if (ctrlValue === null || ctrl.Value !== null && !(ctrl.Value === defaultValue) && ctrl === savedControlToFocus)
|
|
29
|
-
ctrlValue = ctrl;
|
|
30
|
-
else {
|
|
31
|
-
if (firstControlValue === null)
|
|
32
|
-
firstControlValue = ctrl;
|
|
33
|
-
if (ctrl.Value !== null && !(ctrl.Value === defaultValue)) {
|
|
34
|
-
if (!foundControlValue) {
|
|
35
|
-
firstControlValue = ctrl;
|
|
36
|
-
foundControlValue = true;
|
|
37
|
-
}
|
|
38
|
-
if (ctrl === savedControlToFocus)
|
|
39
|
-
ctrlValue = ctrl;
|
|
40
|
-
else if (ctrlValue === null)
|
|
41
|
-
ctrlValue = firstControlValue;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (ctrlValue !== null) {
|
|
47
|
-
this.ControlToFocus = ctrlValue;
|
|
48
|
-
if (this._controls.length > 1) {
|
|
49
|
-
ctrlValue.resetPrevVal();
|
|
50
|
-
await ctrlValue.SetAndRefreshDisplayValue(displayValue, isNull);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
SetControl(ctrl) {
|
|
56
|
-
if (this._controls === null)
|
|
57
|
-
this._controls = new List();
|
|
58
|
-
if (!this._controls.Contains(ctrl)) {
|
|
59
|
-
this._controls.push(ctrl);
|
|
60
|
-
if (this._controls.length === 1)
|
|
61
|
-
this.ControlToFocus = ctrl;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
RemoveControl(ctrl) {
|
|
65
|
-
this._controls.Remove(ctrl);
|
|
66
|
-
}
|
|
67
|
-
GetRadioCtrls() {
|
|
68
|
-
let list = new List();
|
|
69
|
-
if (this._controls !== null) {
|
|
70
|
-
for (let i = 0; i < this._controls.length; i = i + 1) {
|
|
71
|
-
let ctrl = this._controls[i];
|
|
72
|
-
if (ctrl.isRadio())
|
|
73
|
-
list.push(ctrl);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return list;
|
|
77
|
-
}
|
|
78
|
-
toString() {
|
|
79
|
-
return NString.Format("(Field {0}-{1}) in task {2}", this._id, this._varName, this.getTask());
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRmllbGRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2RhdGEvR3VpRmllbGRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFJcEMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFnQixZQUFhLFNBQVEsUUFBUTtJQVNqRCxZQUFZLEVBQVU7UUFDcEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBVFosbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBb0IsSUFBSSxDQUFDO0lBUTVDLENBQUM7SUFLRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFLRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsWUFBb0IsRUFBRSxNQUFlO1FBQ2hFLElBQUksSUFBSSxHQUFrQixJQUFJLENBQUM7UUFDL0IsSUFBSSxTQUFTLEdBQWtCLElBQUksQ0FBQztRQUNwQyxJQUFJLFlBQVksR0FBVyxZQUFZLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFckUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUMzQixJQUFJLGlCQUFpQixHQUFrQixJQUFJLENBQUM7WUFDNUMsSUFBSSxpQkFBaUIsR0FBWSxLQUFLLENBQUM7WUFDdkMsSUFBSSxtQkFBbUIsR0FBa0IsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFB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QzthQUNuQjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWVsZERlZn0gZnJvbSBcIi4vRmllbGREZWZcIjtcclxuaW1wb3J0IHtHdWlEYXRhVmlld0Jhc2V9IGZyb20gXCIuL0d1aURhdGFWaWV3QmFzZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuLi9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0lUYXNrfSBmcm9tIFwiLi4vdGFza3MvSVRhc2tcIjtcclxuaW1wb3J0IHtMaXN0LCBOU3RyaW5nfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtHdWlDb25zdGFudHN9IGZyb20gXCIuLi8uLi9HdWlDb25zdGFudHNcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWlGaWVsZEJhc2UgZXh0ZW5kcyBGaWVsZERlZiB7XHJcbiAgQ29udHJvbFRvRm9jdXM6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByb3RlY3RlZCBfY29udHJvbHM6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsO1xyXG4gIHByb3RlY3RlZCBfZGF0YXZpZXc6IEd1aURhdGFWaWV3QmFzZSA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgZGF0YXZpZXcgaW4gb3JkZXIgdG8gYWNjZXNzIHJlY29yZCBkYXRhICh1cGRhdGluZywgZXRjLi4uKVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlkXCI+IGlkeCBpbiBGaWVsZHNUYWJsZSA8L3BhcmFtPlxyXG4gIGNvbnN0cnVjdG9yKGlkOiBudW1iZXIpIHtcclxuICAgIHN1cGVyKGlkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSB0YXNrIHdoaWNoIHRoZSBmaWVsZCBiZWxvbmdzIHRvXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUYXNrKCk6IElUYXNrIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhdmlldy5nZXRUYXNrKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdXBkYXRlIHRoZSBkaXNwbGF5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyB1cGRhdGVEaXNwbGF5V2l0aFZhbHVlKGRpc3BsYXlWYWx1ZTogc3RyaW5nLCBpc051bGw6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBjdHJsOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICAgIGxldCBjdHJsVmFsdWU6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nID0gR3VpQ29uc3RhbnRzLkRFRkFVTFRfVkFMVUVfSU5ULnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xzICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBmaXJzdENvbnRyb2xWYWx1ZTogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICAgIGxldCBmb3VuZENvbnRyb2xWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICBsZXQgc2F2ZWRDb250cm9sVG9Gb2N1czogTWdDb250cm9sQmFzZSA9IHRoaXMuQ29udHJvbFRvRm9jdXM7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jb250cm9scy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGN0cmwgPSB0aGlzLl9jb250cm9scy5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgICAgaWYgKCFjdHJsLmdldEZvcm0oKS5pblJlZnJlc2hEaXNwbGF5KCkpIHtcclxuICAgICAgICAgIGN0cmwucmVzZXRQcmV2VmFsKCk7IC8vIGZvcmNlIHVwZGF0ZSBvZiB0aGUgZGlzcGxheVxyXG4gICAgICAgICAgYXdhaXQgY3RybC5TZXRBbmRSZWZyZXNoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZSwgaXNOdWxsKTtcclxuXHJcbiAgICAgICAgICAvLyBFdmVuIGlmIHRoZSBjb250cm9sIHRoYXQgY29udGFpbnMgdGhlIGNvcnJlY3QgdmFsdWUgaXMgZm91bmQgd2UgZG9uJ3QgYnJlYWsgdGhlIGxvb3AgYmVjYXVzZTpcclxuICAgICAgICAgIC8vICgxKSB3ZSBuZWVkIHRvIHJlZnJlc2ggYWxsIHRoZSBjb250cm9sc1xyXG4gICAgICAgICAgLy8gKDIpIHRoZSBsYXN0IGNvbnRyb2wgdGhhdCB3YXMgZm9jdXMgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBpcyB0aGUgb25lIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWRcclxuICAgICAgICAgIGlmICghY3RybC5pc1JhZGlvKCkpXHJcbiAgICAgICAgICAgIGlmIChjdHJsVmFsdWUgPT09IG51bGwgfHwgY3RybC5WYWx1ZSAhPT0gbnVsbCAmJiAhKGN0cmwuVmFsdWUgPT09IGRlZmF1bHRWYWx1ZSkgJiYgY3RybCA9PT0gc2F2ZWRDb250cm9sVG9Gb2N1cylcclxuICAgICAgICAgICAgICBjdHJsVmFsdWUgPSBjdHJsO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEZpeGVkIGJ1ZyM6NzgwMzU5LCBmb3IgcmFkaW8gY29udHJvbCBzZWxlY3QgdGhlIGNvcnJlY3QgY29udHJvbFxyXG4gICAgICAgICAgICAvLyBpZiBub3QgZm91bmQgYW55IGN0cmx2YWx1ZSh0aGUgY29udHJvbCB0aGF0IHdhcyBpbiBmb2N1c2UpXHJcbiAgICAgICAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgY29udHJvbCB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlIGlmIG5vdCBleGlzdCBzZWxlY3QgdGhlIGZpcnN0IGNvbnRyb2wuXHJcblxyXG4gICAgICAgICAgICAvLyBhLiBzYXZlIHRoZSBmaXJzdCBjb250cm9sICh3aXRoIG9yIHdpdGhvdXQgdGhlIGNvcnJlY3QgdmFsdWUpXHJcbiAgICAgICAgICAgIGlmIChmaXJzdENvbnRyb2xWYWx1ZSA9PT0gbnVsbClcclxuICAgICAgICAgICAgICBmaXJzdENvbnRyb2xWYWx1ZSA9IGN0cmw7XHJcbiAgICAgICAgICAgIGlmIChjdHJsLlZhbHVlICE9PSBudWxsICYmICEoY3RybC5WYWx1ZSA9PT0gZGVmYXVsdFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIC8vIGIuIHNhdmUgdGhlIGZpcnN0IGNvbnRyb2wgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZVxyXG4gICAgICAgICAgICAgIGlmICghZm91bmRDb250cm9sVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGZpcnN0Q29udHJvbFZhbHVlID0gY3RybDtcclxuICAgICAgICAgICAgICAgIGZvdW5kQ29udHJvbFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gYy5zYXZlIHRoZSBjb250cm9sIHRoYXQgYmVsb25nIHRvIHRoZSBmb2N1cyBjb250cm9sXHJcbiAgICAgICAgICAgICAgaWYgKGN0cmwgPT09IHNhdmVkQ29udHJvbFRvRm9jdXMpXHJcbiAgICAgICAgICAgICAgICBjdHJsVmFsdWUgPSBjdHJsO1xyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGN0cmxWYWx1ZSA9PT0gbnVsbClcclxuICAgICAgICAgICAgICAgIGN0cmxWYWx1ZSA9IGZpcnN0Q29udHJvbFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBpZiB0aGVyZSB3YXMgYSBjb250cm9sIHRoYXQgaGFkIHRoZSBjb3JyZWN0IHZhbHVlIGFuZCB0aGlzIGZpZWxkIGlzIGxpbmtlZCB0byBtb3JlIHRoYW4gb25lXHJcbiAgICAgIC8vIGNvbnRyb2wgdGhlbiBpdCBtZWFucyB0aGF0IHRoZSBjb250cm9sIHRoYXQgY29udGFpbmVkIHRoZSBjb3JyZWN0IHZhbHVlIG1pZ2h0IGhhdmUgYmVlbiByZXNldCBieVxyXG4gICAgICAvLyBvbmUgb2YgaXRzIHNpYmxpbmdzIHNvIHRoZXJlIGlzIGEgbmVlZCB0byByZWZyZXNoIGl0cyB2YWx1ZSBhZ2Fpbi5cclxuICAgICAgaWYgKGN0cmxWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIC8vIHNhdmUgdGhlIGNvbnRyb2wgdGhhdCBiZWxvbmcgdG8gdGhlIHZhbHVlIG9uIHRoZSBmaWVsZC5cclxuICAgICAgICB0aGlzLkNvbnRyb2xUb0ZvY3VzID0gY3RybFZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLl9jb250cm9scy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBjdHJsVmFsdWUucmVzZXRQcmV2VmFsKCk7IC8vIGZvcmNlIHVwZGF0ZSBvZiB0aGUgZGlzcGxheVxyXG4gICAgICAgICAgYXdhaXQgY3RybFZhbHVlLlNldEFuZFJlZnJlc2hEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlLCBpc051bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgYSByZWZlcmVuY2UgdG8gYSBjb250cm9sIGF0dGFjaGVkIHRvIHRoaXMgZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoaXMgZmllbGQ8L3BhcmFtPlxyXG4gIFNldENvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xzID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9jb250cm9scyA9IG5ldyBMaXN0PE1nQ29udHJvbEJhc2U+KCk7XHJcbiAgICBpZiAoIXRoaXMuX2NvbnRyb2xzLkNvbnRhaW5zKGN0cmwpKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRyb2xzLnB1c2goY3RybCk7XHJcblxyXG4gICAgICAvLyBzYXZlIHRoZSBmaXJzdCBjdHJsXHJcbiAgICAgIGlmICh0aGlzLl9jb250cm9scy5sZW5ndGggPT09IDEpXHJcbiAgICAgICAgdGhpcy5Db250cm9sVG9Gb2N1cyA9IGN0cmw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJlbW92ZXMgYSByZWZlcmVuY2UgdG8gYSBjb250cm9sIGF0dGFjaGVkIHRvIHRoaXMgZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoaXMgZmllbGQ8L3BhcmFtPlxyXG4gIFJlbW92ZUNvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udHJvbHMuUmVtb3ZlKGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIHRoZSBsaXN0IG9mIHJhZGlvIGNvbnRyb2xzIHdoaWNoIGFyZSBhdHRhY2hlZCB0byB0aGUgc2FtZSBmaWVsZCBhbmQgcmVzaWRlcyBvbiB0aGUgc2FtZSB0YXNrLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0UmFkaW9DdHJscygpOiBMaXN0PE1nQ29udHJvbEJhc2U+IHtcclxuICAgIGxldCBsaXN0OiBMaXN0PE1nQ29udHJvbEJhc2U+ID0gbmV3IExpc3Q8TWdDb250cm9sQmFzZT4oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fY29udHJvbHMgIT09IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2NvbnRyb2xzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgbGV0IGN0cmw6IE1nQ29udHJvbEJhc2UgPSB0aGlzLl9jb250cm9sc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKGN0cmwuaXNSYWRpbygpKVxyXG4gICAgICAgICAgbGlzdC5wdXNoKGN0cmwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCIoRmllbGQgezB9LXsxfSkgaW4gdGFzayB7Mn1cIiwgdGhpcy5faWQsIHRoaXMuX3Zhck5hbWUsIHRoaXMuZ2V0VGFzaygpKTtcclxuICB9XHJcbn1cclxuIl19
|