@magic-xpa/gui 4.800.0-dev480.21 → 4.800.0-dev480.213
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/bundles/magic-xpa-gui.umd.js +1055 -7529
- package/bundles/magic-xpa-gui.umd.js.map +1 -1
- package/bundles/magic-xpa-gui.umd.min.js +1 -1
- package/bundles/magic-xpa-gui.umd.min.js.map +1 -1
- package/esm2015/index.js +1 -1
- package/esm2015/magic-xpa-gui.js +1 -4
- package/esm2015/src/Commands.js +11 -114
- package/esm2015/src/Events.js +1 -517
- package/esm2015/src/EventsProcessor.js +1 -51
- package/esm2015/src/FocusManager.js +1 -13
- package/esm2015/src/GuiConstants.js +2 -11
- package/esm2015/src/GuiEnums.js +126 -130
- package/esm2015/src/GuiEnvironment.js +1 -1
- package/esm2015/src/IFlowMonitorQueue.js +1 -1
- package/esm2015/src/Manager.js +10 -148
- package/esm2015/src/UIBridge.js +1 -6
- package/esm2015/src/env/IEnvironment.js +1 -1
- package/esm2015/src/gui/ControlBase.js +1 -1
- package/esm2015/src/gui/GuiMgControl.js +1 -94
- package/esm2015/src/gui/GuiMgForm.js +1 -1
- package/esm2015/src/gui/KeyboardItem.js +5 -46
- package/esm2015/src/gui/LastFocusedVal.js +1 -5
- package/esm2015/src/gui/MgValue.js +1 -1
- package/esm2015/src/gui/PropParentInterface.js +1 -1
- package/esm2015/src/gui/low/DialogHandler.js +1 -10
- package/esm2015/src/gui/low/GuiCommand.js +1 -12
- package/esm2015/src/gui/low/GuiCommandQueue.js +1 -66
- package/esm2015/src/gui/low/GuiInteractive.js +8 -465
- package/esm2015/src/gui/low/Style.js +1 -9
- package/esm2015/src/management/RuntimeContextBase.js +11 -14
- package/esm2015/src/management/data/BlobType.js +0 -0
- package/esm2015/src/management/data/DcValues.js +8 -67
- package/esm2015/src/management/data/DcValuesBuilderBase.js +2 -37
- package/esm2015/src/management/data/FieldDef.js +1 -95
- package/esm2015/src/management/data/FieldsTable.js +2 -28
- package/esm2015/src/management/data/GuiDataViewBase.js +33 -72
- package/esm2015/src/management/data/GuiFieldBase.js +4 -39
- package/esm2015/src/management/data/IRecord.js +1 -1
- package/esm2015/src/management/data/IReferencedObject.js +1 -8
- package/esm2015/src/management/data/NUM_TYPE.js +14 -485
- package/esm2015/src/management/data/ObjectReferenceBase.js +1 -3
- package/esm2015/src/management/data/ObjectReferencesCollection.js +1 -2
- package/esm2015/src/management/data/RecordUtils.js +6 -112
- package/esm2015/src/management/data/VectorType.js +17 -252
- package/esm2015/src/management/data/VectorTypeBase.js +1 -35
- package/esm2015/src/management/events/IActionManager.js +1 -1
- package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
- package/esm2015/src/management/exp/ExpressionInterface.js +5 -3
- package/esm2015/src/management/exp/GuiExpressionEvaluator.js +38 -155
- package/esm2015/src/management/gui/ControlTable.js +18 -72
- package/esm2015/src/management/gui/DisplayConvertor.js +43 -493
- package/esm2015/src/management/gui/FieldValidator.js +58 -339
- package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +1 -1
- package/esm2015/src/management/gui/GuiFormPropertyAdapter.js +1 -8
- package/esm2015/src/management/gui/HebrewDate.js +3 -140
- package/esm2015/src/management/gui/Helps.js +2 -48
- package/esm2015/src/management/gui/MgControlBase.js +143 -876
- package/esm2015/src/management/gui/MgFormBase.js +68 -407
- package/esm2015/src/management/gui/PIC.js +58 -285
- package/esm2015/src/management/gui/PropDefaults.js +13 -48
- package/esm2015/src/management/gui/PropInterface.js +2 -4
- package/esm2015/src/management/gui/PropTable.js +72 -183
- package/esm2015/src/management/gui/Property.js +38 -372
- package/esm2015/src/management/gui/ValidationDetails.js +10 -52
- package/esm2015/src/management/gui/ValidationDetailsBase.js +12 -45
- package/esm2015/src/management/gui/WrongFormatException.js +1 -15
- package/esm2015/src/management/tasks/GuiDataCollection.js +1 -1
- package/esm2015/src/management/tasks/GuiTaskBase.js +38 -383
- package/esm2015/src/management/tasks/IMGDataTable.js +1 -1
- package/esm2015/src/management/tasks/ITask.js +1 -1
- package/esm2015/src/management/tasks/MgTimer.js +1 -16
- package/esm2015/src/management/tasks/TaskDefinitionId.js +8 -18
- package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +1 -13
- package/esm2015/src/util/AuthenticationDialogHandler.js +1 -4
- package/esm2015/src/util/MemoryUtil.js +1 -41
- package/esm2015/src/util/ObjectReference.js +1 -8
- package/esm2015/src/util/ProcessLauncher.js +3 -21
- package/esm2015/src/util/UsernamePasswordCredentials.js +1 -9
- package/fesm2015/magic-xpa-gui.js +859 -7052
- package/fesm2015/magic-xpa-gui.js.map +1 -1
- package/magic-xpa-gui.d.ts +0 -3
- package/package.json +2 -2
- package/src/Commands.d.ts +2 -0
- package/src/Events.d.ts +0 -2
- package/src/GuiEnums.d.ts +125 -128
- package/src/env/IEnvironment.d.ts +3 -0
- package/src/gui/PropParentInterface.d.ts +1 -1
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/gui/low/Style.d.ts +0 -3
- package/src/management/RuntimeContextBase.d.ts +2 -0
- package/src/management/data/GuiDataViewBase.d.ts +4 -4
- package/src/management/data/IRecord.d.ts +1 -1
- package/src/management/exp/ExpressionInterface.d.ts +4 -0
- package/src/management/exp/GuiExpressionEvaluator.d.ts +4 -6
- package/src/management/gui/ControlTable.d.ts +1 -1
- package/src/management/gui/DisplayConvertor.d.ts +1 -1
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +1 -1
- package/src/management/gui/MgControlBase.d.ts +7 -7
- package/src/management/gui/MgFormBase.d.ts +6 -6
- package/src/management/gui/PIC.d.ts +1 -0
- package/src/management/gui/PropInterface.d.ts +2 -4
- package/src/management/gui/PropTable.d.ts +4 -5
- package/src/management/gui/Property.d.ts +1 -1
- package/src/management/tasks/GuiTaskBase.d.ts +8 -14
- package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
|
@@ -33,25 +33,18 @@ export class GuiCommand {
|
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
else if (arguments.length === 2) {
|
|
36
|
-
// && (commandTypeOrObjOrParentObject === null || commandTypeOrObjOrParentObject.constructor === Object) && (strOrCommandTypeOrObj === null || strOrCommandTypeOrObj.constructor === Number)) {
|
|
37
36
|
this.constructor_2(commandTypeOrObjOrParentObject, strOrCommandTypeOrObj);
|
|
38
37
|
return;
|
|
39
38
|
}
|
|
40
39
|
this.constructor_3(commandTypeOrObjOrParentObject, strOrCommandTypeOrObj, cmmandType);
|
|
41
40
|
}
|
|
42
|
-
/// <summary>
|
|
43
|
-
/// </summary>
|
|
44
41
|
constructor_0(commandType) {
|
|
45
42
|
this.CommandType = commandType;
|
|
46
43
|
}
|
|
47
|
-
/// <summary></summary>
|
|
48
|
-
/// <param name = "commandType"></param>
|
|
49
|
-
/// <param name = "str"></param>
|
|
50
44
|
constructor_1(commandType, str) {
|
|
51
45
|
this.constructor_0(commandType);
|
|
52
46
|
this.str = str;
|
|
53
47
|
}
|
|
54
|
-
/// <summary></summary>
|
|
55
48
|
constructor_2(obj, commandType) {
|
|
56
49
|
this.constructor_0(commandType);
|
|
57
50
|
this.obj = obj;
|
|
@@ -62,10 +55,6 @@ export class GuiCommand {
|
|
|
62
55
|
else if (obj === null)
|
|
63
56
|
this.TaskTag = "0";
|
|
64
57
|
}
|
|
65
|
-
/// <summary>
|
|
66
|
-
/// this is my comment
|
|
67
|
-
/// </summary>
|
|
68
|
-
/// <param name = "parentObject">the parent object of the object</param>
|
|
69
58
|
constructor_3(parentObject, obj, cmmandType) {
|
|
70
59
|
this.constructor_2(obj, cmmandType);
|
|
71
60
|
this.parentObject = parentObject;
|
|
@@ -74,4 +63,4 @@ export class GuiCommand {
|
|
|
74
63
|
return "{" + this.CommandType + "}";
|
|
75
64
|
}
|
|
76
65
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvZ3VpL2xvdy9HdWlDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxNQUFNLE9BQU8sVUFBVTtJQWdDckIsWUFBWSw4QkFBbUMsRUFBRSxxQkFBMkIsRUFBRSxVQUF3QjtRQS9CdEcsWUFBTyxHQUFXLElBQUksQ0FBQztRQUV2QixnQkFBVyxHQUFnQixDQUFDLENBQUM7UUFDN0IsWUFBTyxHQUFRLElBQUksQ0FBQztRQUNwQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQU0sR0FBYyxJQUFJLENBQUM7UUFDekIsYUFBUSxHQUFXLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFFBQUcsR0FBUSxJQUFJLENBQUM7UUFDaEIsaUJBQVksR0FBUSxJQUFJLENBQUM7UUFDekIsU0FBSSxHQUFRLElBQUksQ0FBQztRQUNqQixRQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ25CLFVBQUssR0FBUSxJQUFJLENBQUM7UUFDbEIsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFDaEMsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLE1BQUMsR0FBVyxDQUFDLENBQUM7UUFDZCxNQUFDLEdBQVcsQ0FBQyxDQUFDO1FBQ2QsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDOUIsY0FBUyxHQUFXLElBQUksQ0FBQztRQVV2QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsOEJBQThCLEtBQUssSUFBSSxJQUFJLDhCQUE4QixDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsRUFBRTtZQUNoSSxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDbkQsT0FBTztTQUNSO1FBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLDhCQUE4QixLQUFLLElBQUksSUFBSSw4QkFBOEIsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDO2VBQzNILENBQUMscUJBQXFCLEtBQUssSUFBSSxJQUFJLHFCQUFxQixDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDMUUsT0FBTztTQUNSO2FBQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUVqQyxJQUFJLENBQUMsYUFBYSxDQUFDLDhCQUE4QixFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDMUUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBSU8sYUFBYSxDQUFDLFdBQXdCO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFLTyxhQUFhLENBQUMsV0FBd0IsRUFBRSxHQUFXO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUdPLGFBQWEsQ0FBQyxHQUFRLEVBQUUsV0FBd0I7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxXQUFXLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBaUIsSUFBSSxDQUFDLEdBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBaUIsSUFBSSxDQUFDLEdBQUksQ0FBQyxPQUFPLENBQUM7U0FDaEQ7YUFDSSxJQUFHLEdBQUcsS0FBSyxJQUFJO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFNTyxhQUFhLENBQUMsWUFBaUIsRUFBRSxHQUFRLEVBQUUsVUFBdUI7UUFDeEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUdELFFBQVE7UUFDTixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1hbmRUeXBlfSBmcm9tIFwiLi4vLi4vR3VpRW51bXNcIjtcclxuaW1wb3J0IHtDb250cm9sQmFzZX0gZnJvbSBcIi4uL0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7TGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpQ29tbWFuZCB7XHJcbiAgVGFza1RhZzogc3RyaW5nID0gbnVsbDtcclxuICBPcGVyYXRpb246IHN0cmluZztcclxuICBDb21tYW5kVHlwZTogQ29tbWFuZFR5cGUgPSAwO1xyXG4gIG9wdGlvbnM6IGFueSA9IG51bGw7XHJcbiAgQm9vbDE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcbiAgZmlsZU5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGxheWVyOiBudW1iZXIgPSAwO1xyXG4gIGxpbmU6IG51bWJlciA9IDA7XHJcbiAgbnVtYmVyOiBudW1iZXIgPSAwO1xyXG4gIG9iajogYW55ID0gbnVsbDtcclxuICBwYXJlbnRPYmplY3Q6IGFueSA9IG51bGw7XHJcbiAgb2JqMTogYW55ID0gbnVsbDtcclxuICBzdHI6IHN0cmluZyA9IG51bGw7XHJcbiAgdmFsdWU6IGFueSA9IG51bGw7XHJcbiAgc3RyaW5nTGlzdDogTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuICBzdHlsZTogbnVtYmVyID0gMDtcclxuICB3aWR0aDogbnVtYmVyID0gMDtcclxuICB4OiBudW1iZXIgPSAwO1xyXG4gIHk6IG51bWJlciA9IDA7XHJcbiAgdXNlckRyb3BGb3JtYXQ6IHN0cmluZyA9IG51bGw7XHJcbiAgY29udGV4dElEOiBzdHJpbmcgPSAnXFwwJztcclxuXHJcblxyXG4gIHB1YmxpYyBDdHJsTmFtZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgc3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKG9iajogYW55LCBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUpO1xyXG4gIGNvbnN0cnVjdG9yKHBhcmVudE9iamVjdDogYW55LCBvYmo6IGFueSwgY21tYW5kVHlwZTogQ29tbWFuZFR5cGUpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbW1hbmRUeXBlT3JPYmpPclBhcmVudE9iamVjdDogYW55LCBzdHJPckNvbW1hbmRUeXBlT3JPYmo/OiBhbnksIGNtbWFuZFR5cGU/OiBDb21tYW5kVHlwZSkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKGNvbW1hbmRUeXBlT3JPYmpPclBhcmVudE9iamVjdCA9PT0gbnVsbCB8fCBjb21tYW5kVHlwZU9yT2JqT3JQYXJlbnRPYmplY3QuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKGNvbW1hbmRUeXBlT3JPYmpPclBhcmVudE9iamVjdCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmIChjb21tYW5kVHlwZU9yT2JqT3JQYXJlbnRPYmplY3QgPT09IG51bGwgfHwgY29tbWFuZFR5cGVPck9iak9yUGFyZW50T2JqZWN0LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpXHJcbiAgICAgICYmIChzdHJPckNvbW1hbmRUeXBlT3JPYmogPT09IG51bGwgfHwgc3RyT3JDb21tYW5kVHlwZU9yT2JqLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMShjb21tYW5kVHlwZU9yT2JqT3JQYXJlbnRPYmplY3QsIHN0ck9yQ29tbWFuZFR5cGVPck9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAvLyAmJiAoY29tbWFuZFR5cGVPck9iak9yUGFyZW50T2JqZWN0ID09PSBudWxsIHx8IGNvbW1hbmRUeXBlT3JPYmpPclBhcmVudE9iamVjdC5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSAmJiAoc3RyT3JDb21tYW5kVHlwZU9yT2JqID09PSBudWxsIHx8IHN0ck9yQ29tbWFuZFR5cGVPck9iai5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzIoY29tbWFuZFR5cGVPck9iak9yUGFyZW50T2JqZWN0LCBzdHJPckNvbW1hbmRUeXBlT3JPYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoY29tbWFuZFR5cGVPck9iak9yUGFyZW50T2JqZWN0LCBzdHJPckNvbW1hbmRUeXBlT3JPYmosIGNtbWFuZFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5Db21tYW5kVHlwZSA9IGNvbW1hbmRUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbW1hbmRUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgc3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMChjb21tYW5kVHlwZSk7XHJcbiAgICB0aGlzLnN0ciA9IHN0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8yKG9iajogYW55LCBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfMChjb21tYW5kVHlwZSk7XHJcbiAgICB0aGlzLm9iaiA9IG9iajtcclxuICAgIGlmICh0aGlzLm9iaiBpbnN0YW5jZW9mIENvbnRyb2xCYXNlKSB7XHJcbiAgICAgIHRoaXMuQ3RybE5hbWUgPSAoPENvbnRyb2xCYXNlPnRoaXMub2JqKS5VbmlxdWVOYW1lO1xyXG4gICAgICB0aGlzLlRhc2tUYWcgPSAoPENvbnRyb2xCYXNlPnRoaXMub2JqKS5UYXNrVGFnO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihvYmogPT09IG51bGwpXHJcbiAgICAgIHRoaXMuVGFza1RhZyA9IFwiMFwiO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRoaXMgaXMgbXkgY29tbWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJlbnRPYmplY3RcIj50aGUgcGFyZW50IG9iamVjdCBvZiB0aGUgb2JqZWN0PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzMocGFyZW50T2JqZWN0OiBhbnksIG9iajogYW55LCBjbW1hbmRUeXBlOiBDb21tYW5kVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9iaiwgY21tYW5kVHlwZSk7XHJcbiAgICB0aGlzLnBhcmVudE9iamVjdCA9IHBhcmVudE9iamVjdDtcclxuICB9XHJcblxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFwie1wiICsgdGhpcy5Db21tYW5kVHlwZSArIFwifVwiO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,92 +1,27 @@
|
|
|
1
|
-
/// <summary>
|
|
2
|
-
/// <summary>
|
|
3
|
-
/// Gui command queue
|
|
4
|
-
/// </summary>
|
|
5
1
|
import { UIBridge } from "../../UIBridge";
|
|
6
2
|
export class GuiCommandQueue {
|
|
7
|
-
/// <summary>
|
|
8
|
-
/// basis Constructor
|
|
9
|
-
/// </summary>
|
|
10
3
|
constructor() {
|
|
11
4
|
this._commandsQueue = null;
|
|
12
5
|
this._executingGuiCommands = false;
|
|
13
6
|
this.init();
|
|
14
7
|
}
|
|
15
|
-
/// <summary>
|
|
16
|
-
/// end inner class GuiCommand
|
|
17
|
-
/// </summary>
|
|
18
|
-
/// <summary>singleton</summary>
|
|
19
|
-
/// <returns> reference to GuiCommandQueue object</returns>
|
|
20
8
|
static getInstance() {
|
|
21
9
|
if (GuiCommandQueue._instance === null)
|
|
22
10
|
GuiCommandQueue._instance = new GuiCommandQueue();
|
|
23
11
|
return GuiCommandQueue._instance;
|
|
24
12
|
}
|
|
25
|
-
/// <summary>Constructor</summary>
|
|
26
13
|
init() {
|
|
27
14
|
this._commandsQueue = new Array();
|
|
28
15
|
}
|
|
29
16
|
addCommand(guiCommand) {
|
|
30
17
|
this.put(guiCommand);
|
|
31
18
|
}
|
|
32
|
-
/// <summary>
|
|
33
|
-
/// Adds a command to the queue. If there are already enough commands in the queue then
|
|
34
|
-
/// it will wait till the queue is emptied bu Gui thread.
|
|
35
|
-
/// </summary>
|
|
36
|
-
/// <param name="guiCommand"></param>
|
|
37
19
|
put(guiCommand) {
|
|
38
|
-
// const QUEUE_SIZE_THRESHOLD: number = 1200; // a threshold above which commands will not be inserted to the queue until the queue will be empty.
|
|
39
|
-
// const MAX_SLEEP_DURATION: number = 4;// duration, in ms, between checking that the queue is empty.
|
|
40
|
-
//
|
|
41
|
-
// // If worker thread wants to add a command and there are too many commands in the queue pending
|
|
42
|
-
// // to be processed by Gui thread then suspend current thread till the commands are over. If we keep
|
|
43
|
-
// // on adding commands to the queue and Gui thread enters Run(), then sometimes (specially in cases of
|
|
44
|
-
// // batch tasks) Gui thread remains in Run() for a long time and hence it is unable to process user
|
|
45
|
-
// // interactions (as described in QCR#722145)
|
|
46
|
-
// // Before entering the loop confirm that the command is NOT being added by Gui thread itself and Gui
|
|
47
|
-
// // thread is already processing the commands. This is to ensure that the commands will be processed by
|
|
48
|
-
// // Gui thread. If Gui thread is not processing commands, then it will never process it again as it is
|
|
49
|
-
// // the worker thread that invokes Gui thread for processing commands
|
|
50
|
-
// // Also, suspend worker thread from adding new commands to the queue till SHOW_FORM for modal window
|
|
51
|
-
// // is processed. Problem occurs if SHOW_FORM is followed by few more commands and then a call to
|
|
52
|
-
// // GuiInteractive that depends on the earlier commands. In such cases, GuiInteractive will not process
|
|
53
|
-
// // commands between SHOW_FORM and interactive command because GuiThreadIsAvailableToProcessCommands
|
|
54
|
-
// // was set to false before opening the dialog.
|
|
55
|
-
// if (((this._commandsQueue.Size() > QUEUE_SIZE_THRESHOLD ) || this._modalShowFormCommandPresentInQueue)) {
|
|
56
|
-
// let sleepDuration: number = MAX_SLEEP_DURATION;
|
|
57
|
-
// do {
|
|
58
|
-
// // get current size of the queue and wait for some time
|
|
59
|
-
// const size: number = this._commandsQueue.Size();
|
|
60
|
-
// //System.Threading.Thread.Sleep(sleepDuration);
|
|
61
|
-
// const newSize: number = this._commandsQueue.Size();
|
|
62
|
-
//
|
|
63
|
-
// // while current thread was sleeping, gui thread should have processed some commands.
|
|
64
|
-
// // get average duration required by gui thread for processing a command and estimate new duration for remaining commands.
|
|
65
|
-
// if (size > newSize) {
|
|
66
|
-
// let averageDurationPerCommand: number = sleepDuration / (size - newSize);
|
|
67
|
-
// let newSleepDuration: number = <number>(newSize * averageDurationPerCommand);
|
|
68
|
-
// if (newSleepDuration > 0)
|
|
69
|
-
// sleepDuration = Math.min(MAX_SLEEP_DURATION, newSleepDuration);
|
|
70
|
-
// }
|
|
71
|
-
// }
|
|
72
|
-
// while (this._commandsQueue.Size() > 0);
|
|
73
20
|
this._commandsQueue.push(guiCommand);
|
|
74
|
-
// if (guiCommand.CommandType === CommandType.REFRESH_TABLE && guiCommand.Bool3) {
|
|
75
|
-
// let mgControl: MgControlBase = <MgControlBase>(guiCommand.obj);
|
|
76
|
-
// mgControl.refreshTableCommandCount++;
|
|
77
|
-
// }
|
|
78
|
-
// else if (guiCommand.IsModalShowFormCommand())
|
|
79
|
-
// this._modalShowFormCommandPresentInQueue = true;
|
|
80
21
|
}
|
|
81
|
-
/// <summary>
|
|
82
|
-
/// execute all pending commands, asynchronously
|
|
83
|
-
/// </summary>
|
|
84
22
|
beginInvoke() {
|
|
85
23
|
this.invoke();
|
|
86
24
|
}
|
|
87
|
-
/// <summary>
|
|
88
|
-
/// execute all pending commands, synchronously
|
|
89
|
-
/// </summary>
|
|
90
25
|
invoke() {
|
|
91
26
|
if (!this._executingGuiCommands) {
|
|
92
27
|
this._executingGuiCommands = true;
|
|
@@ -97,4 +32,4 @@ export class GuiCommandQueue {
|
|
|
97
32
|
}
|
|
98
33
|
}
|
|
99
34
|
GuiCommandQueue._instance = null;
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpQ29tbWFuZFF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9ndWkvbG93L0d1aUNvbW1hbmRRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsTUFBTSxPQUFPLGVBQWU7SUFTMUI7UUFOUSxtQkFBYyxHQUFzQixJQUFJLENBQUM7UUFDekMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBTTdDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFPRCxNQUFNLENBQUMsV0FBVztRQUNoQixJQUFJLGVBQWUsQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUNwQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEQsT0FBTyxlQUFlLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFHRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQ2hELENBQUM7SUFHRCxVQUFVLENBQUMsVUFBc0I7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBT08sR0FBRyxDQUFDLFVBQXNCO1FBb0NoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQVF2QyxDQUFDO0lBS0QsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVoQixDQUFDO0lBS0QsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7O0FBdEdjLHlCQUFTLEdBQW9CLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBHdWkgY29tbWFuZCBxdWV1ZVxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5pbXBvcnQge1VJQnJpZGdlfSBmcm9tIFwiLi4vLi4vVUlCcmlkZ2VcIjtcclxuaW1wb3J0IHtHdWlDb21tYW5kfSBmcm9tIFwiLi9HdWlDb21tYW5kXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpQ29tbWFuZFF1ZXVlIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEd1aUNvbW1hbmRRdWV1ZSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2NvbW1hbmRzUXVldWU6IEFycmF5PEd1aUNvbW1hbmQ+ID0gbnVsbDtcclxuICBwcml2YXRlIF9leGVjdXRpbmdHdWlDb21tYW5kczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYmFzaXMgQ29uc3RydWN0b3JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZW5kIGlubmVyIGNsYXNzIEd1aUNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5zaW5nbGV0b248L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiByZWZlcmVuY2UgdG8gR3VpQ29tbWFuZFF1ZXVlIG9iamVjdDwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogR3VpQ29tbWFuZFF1ZXVlIHtcclxuICAgIGlmIChHdWlDb21tYW5kUXVldWUuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBHdWlDb21tYW5kUXVldWUuX2luc3RhbmNlID0gbmV3IEd1aUNvbW1hbmRRdWV1ZSgpO1xyXG4gICAgcmV0dXJuIEd1aUNvbW1hbmRRdWV1ZS5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Q29uc3RydWN0b3I8L3N1bW1hcnk+XHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbW1hbmRzUXVldWUgPSBuZXcgQXJyYXk8R3VpQ29tbWFuZD4oKTtcclxuICB9XHJcblxyXG5cclxuICBhZGRDb21tYW5kKGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQpOiB2b2lkIHtcclxuICAgIHRoaXMucHV0KGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBBZGRzIGEgY29tbWFuZCB0byB0aGUgcXVldWUuIElmIHRoZXJlIGFyZSBhbHJlYWR5IGVub3VnaCBjb21tYW5kcyBpbiB0aGUgcXVldWUgdGhlblxyXG4gIC8vLyBpdCB3aWxsIHdhaXQgdGlsbCB0aGUgcXVldWUgaXMgZW1wdGllZCBidSBHdWkgdGhyZWFkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpQ29tbWFuZFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwdXQoZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCk6IHZvaWQge1xyXG4gICAgLy8gY29uc3QgUVVFVUVfU0laRV9USFJFU0hPTEQ6IG51bWJlciA9IDEyMDA7IC8vIGEgdGhyZXNob2xkIGFib3ZlIHdoaWNoIGNvbW1hbmRzIHdpbGwgbm90IGJlIGluc2VydGVkIHRvIHRoZSBxdWV1ZSB1bnRpbCB0aGUgcXVldWUgd2lsbCBiZSBlbXB0eS5cclxuICAgIC8vIGNvbnN0IE1BWF9TTEVFUF9EVVJBVElPTjogbnVtYmVyID0gNDsvLyBkdXJhdGlvbiwgaW4gbXMsIGJldHdlZW4gY2hlY2tpbmcgdGhhdCB0aGUgcXVldWUgaXMgZW1wdHkuXHJcbiAgICAvL1xyXG4gICAgLy8gLy8gSWYgd29ya2VyIHRocmVhZCB3YW50cyB0byBhZGQgYSBjb21tYW5kIGFuZCB0aGVyZSBhcmUgdG9vIG1hbnkgY29tbWFuZHMgaW4gdGhlIHF1ZXVlIHBlbmRpbmdcclxuICAgIC8vIC8vIHRvIGJlIHByb2Nlc3NlZCBieSBHdWkgdGhyZWFkIHRoZW4gc3VzcGVuZCBjdXJyZW50IHRocmVhZCB0aWxsIHRoZSBjb21tYW5kcyBhcmUgb3Zlci4gSWYgd2Uga2VlcFxyXG4gICAgLy8gLy8gb24gYWRkaW5nIGNvbW1hbmRzIHRvIHRoZSBxdWV1ZSBhbmQgR3VpIHRocmVhZCBlbnRlcnMgUnVuKCksIHRoZW4gc29tZXRpbWVzIChzcGVjaWFsbHkgaW4gY2FzZXMgb2ZcclxuICAgIC8vIC8vIGJhdGNoIHRhc2tzKSBHdWkgdGhyZWFkIHJlbWFpbnMgaW4gUnVuKCkgZm9yIGEgbG9uZyB0aW1lIGFuZCBoZW5jZSBpdCBpcyB1bmFibGUgdG8gcHJvY2VzcyB1c2VyXHJcbiAgICAvLyAvLyBpbnRlcmFjdGlvbnMgKGFzIGRlc2NyaWJlZCBpbiBRQ1IjNzIyMTQ1KVxyXG4gICAgLy8gLy8gQmVmb3JlIGVudGVyaW5nIHRoZSBsb29wIGNvbmZpcm0gdGhhdCB0aGUgY29tbWFuZCBpcyBOT1QgYmVpbmcgYWRkZWQgYnkgR3VpIHRocmVhZCBpdHNlbGYgYW5kIEd1aVxyXG4gICAgLy8gLy8gdGhyZWFkIGlzIGFscmVhZHkgcHJvY2Vzc2luZyB0aGUgY29tbWFuZHMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbW1hbmRzIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5XHJcbiAgICAvLyAvLyBHdWkgdGhyZWFkLiBJZiBHdWkgdGhyZWFkIGlzIG5vdCBwcm9jZXNzaW5nIGNvbW1hbmRzLCB0aGVuIGl0IHdpbGwgbmV2ZXIgcHJvY2VzcyBpdCBhZ2FpbiBhcyBpdCBpc1xyXG4gICAgLy8gLy8gdGhlIHdvcmtlciB0aHJlYWQgdGhhdCBpbnZva2VzIEd1aSB0aHJlYWQgZm9yIHByb2Nlc3NpbmcgY29tbWFuZHNcclxuICAgIC8vIC8vIEFsc28sIHN1c3BlbmQgd29ya2VyIHRocmVhZCBmcm9tIGFkZGluZyBuZXcgY29tbWFuZHMgdG8gdGhlIHF1ZXVlIHRpbGwgU0hPV19GT1JNIGZvciBtb2RhbCB3aW5kb3dcclxuICAgIC8vIC8vIGlzIHByb2Nlc3NlZC4gUHJvYmxlbSBvY2N1cnMgaWYgU0hPV19GT1JNIGlzIGZvbGxvd2VkIGJ5IGZldyBtb3JlIGNvbW1hbmRzIGFuZCB0aGVuIGEgY2FsbCB0b1xyXG4gICAgLy8gLy8gR3VpSW50ZXJhY3RpdmUgIHRoYXQgZGVwZW5kcyBvbiB0aGUgZWFybGllciBjb21tYW5kcy4gSW4gc3VjaCBjYXNlcywgR3VpSW50ZXJhY3RpdmUgd2lsbCBub3QgcHJvY2Vzc1xyXG4gICAgLy8gLy8gY29tbWFuZHMgYmV0d2VlbiBTSE9XX0ZPUk0gYW5kIGludGVyYWN0aXZlIGNvbW1hbmQgYmVjYXVzZSBHdWlUaHJlYWRJc0F2YWlsYWJsZVRvUHJvY2Vzc0NvbW1hbmRzXHJcbiAgICAvLyAvLyB3YXMgc2V0IHRvIGZhbHNlIGJlZm9yZSBvcGVuaW5nIHRoZSBkaWFsb2cuXHJcbiAgICAvLyBpZiAoKCh0aGlzLl9jb21tYW5kc1F1ZXVlLlNpemUoKSA+IFFVRVVFX1NJWkVfVEhSRVNIT0xEICkgfHwgdGhpcy5fbW9kYWxTaG93Rm9ybUNvbW1hbmRQcmVzZW50SW5RdWV1ZSkpIHtcclxuICAgIC8vICAgbGV0IHNsZWVwRHVyYXRpb246IG51bWJlciA9IE1BWF9TTEVFUF9EVVJBVElPTjtcclxuICAgIC8vICAgZG8ge1xyXG4gICAgLy8gICAgIC8vIGdldCBjdXJyZW50IHNpemUgb2YgdGhlIHF1ZXVlIGFuZCB3YWl0IGZvciBzb21lIHRpbWVcclxuICAgIC8vICAgICBjb25zdCBzaXplOiBudW1iZXIgPSB0aGlzLl9jb21tYW5kc1F1ZXVlLlNpemUoKTtcclxuICAgIC8vICAgICAvL1N5c3RlbS5UaHJlYWRpbmcuVGhyZWFkLlNsZWVwKHNsZWVwRHVyYXRpb24pO1xyXG4gICAgLy8gICAgIGNvbnN0IG5ld1NpemU6IG51bWJlciA9IHRoaXMuX2NvbW1hbmRzUXVldWUuU2l6ZSgpO1xyXG4gICAgLy9cclxuICAgIC8vICAgICAvLyB3aGlsZSBjdXJyZW50IHRocmVhZCB3YXMgc2xlZXBpbmcsIGd1aSB0aHJlYWQgc2hvdWxkIGhhdmUgcHJvY2Vzc2VkIHNvbWUgY29tbWFuZHMuXHJcbiAgICAvLyAgICAgLy8gZ2V0IGF2ZXJhZ2UgZHVyYXRpb24gcmVxdWlyZWQgYnkgZ3VpIHRocmVhZCBmb3IgcHJvY2Vzc2luZyBhIGNvbW1hbmQgYW5kIGVzdGltYXRlIG5ldyBkdXJhdGlvbiBmb3IgcmVtYWluaW5nIGNvbW1hbmRzLlxyXG4gICAgLy8gICAgIGlmIChzaXplID4gbmV3U2l6ZSkge1xyXG4gICAgLy8gICAgICAgbGV0IGF2ZXJhZ2VEdXJhdGlvblBlckNvbW1hbmQ6IG51bWJlciA9IHNsZWVwRHVyYXRpb24gLyAoc2l6ZSAtIG5ld1NpemUpO1xyXG4gICAgLy8gICAgICAgbGV0IG5ld1NsZWVwRHVyYXRpb246IG51bWJlciA9IDxudW1iZXI+KG5ld1NpemUgKiBhdmVyYWdlRHVyYXRpb25QZXJDb21tYW5kKTtcclxuICAgIC8vICAgICAgIGlmIChuZXdTbGVlcER1cmF0aW9uID4gMClcclxuICAgIC8vICAgICAgICAgc2xlZXBEdXJhdGlvbiA9IE1hdGgubWluKE1BWF9TTEVFUF9EVVJBVElPTiwgbmV3U2xlZXBEdXJhdGlvbik7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIHdoaWxlICh0aGlzLl9jb21tYW5kc1F1ZXVlLlNpemUoKSA+IDApO1xyXG4gICAgdGhpcy5fY29tbWFuZHNRdWV1ZS5wdXNoKGd1aUNvbW1hbmQpO1xyXG5cclxuICAgIC8vIGlmIChndWlDb21tYW5kLkNvbW1hbmRUeXBlID09PSBDb21tYW5kVHlwZS5SRUZSRVNIX1RBQkxFICYmIGd1aUNvbW1hbmQuQm9vbDMpIHtcclxuICAgIC8vICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPihndWlDb21tYW5kLm9iaik7XHJcbiAgICAvLyAgIG1nQ29udHJvbC5yZWZyZXNoVGFibGVDb21tYW5kQ291bnQrKztcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKGd1aUNvbW1hbmQuSXNNb2RhbFNob3dGb3JtQ29tbWFuZCgpKVxyXG4gICAgLy8gICB0aGlzLl9tb2RhbFNob3dGb3JtQ29tbWFuZFByZXNlbnRJblF1ZXVlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIGFsbCBwZW5kaW5nIGNvbW1hbmRzLCBhc3luY2hyb25vdXNseVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYmVnaW5JbnZva2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmludm9rZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIGFsbCBwZW5kaW5nIGNvbW1hbmRzLCBzeW5jaHJvbm91c2x5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpbnZva2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2V4ZWN1dGluZ0d1aUNvbW1hbmRzKSB7XHJcbiAgICAgIHRoaXMuX2V4ZWN1dGluZ0d1aUNvbW1hbmRzID0gdHJ1ZTtcclxuICAgICAgVUlCcmlkZ2UuZ2V0SW5zdGFuY2UoKS5leGVjdXRlQ29tbWFuZHModGhpcy5fY29tbWFuZHNRdWV1ZSk7XHJcbiAgICAgIHRoaXMuX2NvbW1hbmRzUXVldWUubGVuZ3RoID0gMDtcclxuICAgICAgdGhpcy5fZXhlY3V0aW5nR3VpQ29tbWFuZHMgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19
|