@magic-xpa/engine 4.1000.0-dev4100.33 → 4.1000.0-dev4100.331

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 (56) hide show
  1. package/esm2020/src/ClientManager.mjs +12 -12
  2. package/esm2020/src/ConstInterface.mjs +3 -1
  3. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  4. package/esm2020/src/commands/ClientToServer/DataviewCommand.mjs +6 -6
  5. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +4 -4
  6. package/esm2020/src/commands/ClientToServer/EventCommand.mjs +8 -8
  7. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +4 -4
  8. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +5 -5
  9. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +7 -7
  10. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +6 -6
  11. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +8 -8
  12. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +7 -7
  13. package/esm2020/src/data/DataView.mjs +34 -34
  14. package/esm2020/src/data/DataviewManager.mjs +7 -7
  15. package/esm2020/src/data/Record.mjs +10 -10
  16. package/esm2020/src/data/TaskTransactionManager.mjs +4 -4
  17. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +5 -5
  18. package/esm2020/src/env/Environment.mjs +14 -7
  19. package/esm2020/src/env/MirrorString.mjs +2 -3
  20. package/esm2020/src/event/Event.mjs +4 -1
  21. package/esm2020/src/event/EventHandler.mjs +8 -3
  22. package/esm2020/src/event/EventHandlerPosition.mjs +5 -1
  23. package/esm2020/src/event/EventsManager.mjs +10 -1
  24. package/esm2020/src/event/IEventsManager.mjs +1 -1
  25. package/esm2020/src/event/RunTimeEvent.mjs +16 -16
  26. package/esm2020/src/exp/ExpressionDict.mjs +8 -8
  27. package/esm2020/src/exp/ExpressionEvaluator.mjs +4 -178
  28. package/esm2020/src/gui/FormsTable.mjs +8 -8
  29. package/esm2020/src/gui/MgControl.mjs +10 -13
  30. package/esm2020/src/gui/MgForm.mjs +10 -23
  31. package/esm2020/src/http/HttpManager.mjs +8 -8
  32. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +47 -27
  33. package/esm2020/src/rt/DataviewHeaderBase.mjs +16 -16
  34. package/esm2020/src/security/UserDetails.mjs +12 -12
  35. package/esm2020/src/tasks/MGData.mjs +4 -4
  36. package/esm2020/src/tasks/RCTimer.mjs +10 -10
  37. package/esm2020/src/tasks/Task.mjs +43 -42
  38. package/esm2020/src/util/FlowMonitorQueue.mjs +107 -2
  39. package/esm2020/src/util/PrmMap.mjs +6 -6
  40. package/esm2020/src/util/ReturnResult.mjs +7 -7
  41. package/fesm2015/magic-xpa-engine.mjs +491 -563
  42. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  43. package/fesm2020/magic-xpa-engine.mjs +514 -550
  44. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  45. package/package.json +6 -6
  46. package/src/ConstInterface.d.ts +2 -0
  47. package/src/env/Environment.d.ts +2 -0
  48. package/src/event/EventsManager.d.ts +3 -0
  49. package/src/event/IEventsManager.d.ts +2 -0
  50. package/src/exp/ExpressionEvaluator.d.ts +0 -9
  51. package/src/gui/MgControl.d.ts +0 -1
  52. package/src/gui/MgForm.d.ts +1 -3
  53. package/src/remote/RemoteCommandsProcessor.d.ts +1 -0
  54. package/src/util/FlowMonitorQueue.d.ts +8 -0
  55. package/src/util/PrmMap.d.ts +1 -1
  56. package/magic-xpa-engine.d.ts +0 -2
@@ -1,6 +1,6 @@
1
1
  import { StringBuilder, Int32, NString, ApplicationException, NNumber, List, Debug, Char, RefParam, NumberStyles, HashUtils, DateTime, Dictionary, Stack, NChar, isNullOrUndefined, WebException, Thread, Encoding, Exception, isUndefined, Hashtable, NotImplementedException, Array_Enumerator, ISO_8859_1_Encoding, Int64 } from '@magic-xpa/mscorelib';
2
2
  import { XMLConstants, StorageAttribute, ViewRefreshMode, InternalInterface, Logger, StorageAttributeCheck, StrUtil, SubformType, TableBehaviour, MgControlType, ScrollBarThumbType, ForceExit, XmlParser, Misc, Base64, Priority, SyncExecutionHelper, Queue, Constants, DateTimeUtils, Logger_LogLevels, Logger_MessageDirection, MsgInterface, RequestInfo, OSEnvironment, JSON_Utils, UtilDateJpn, UtilStrByteMode, PICInterface, WindowType, BrkScope, RaiseAt, CtrlButtonTypeGui } from '@magic-xpa/utils';
3
- import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, ControlTable, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, VectorType, GuiExpressionEvaluator, ExpressionInterface, PIC, DataModificationTypes, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
3
+ import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, ControlTable, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, VectorType, PIC, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, GuiExpressionEvaluator, ExpressionInterface, DataModificationTypes, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
4
4
  import { HttpHeaders, HttpErrorResponse } from '@angular/common/http';
5
5
  import { timer, Subject } from 'rxjs';
6
6
 
@@ -271,6 +271,7 @@ ConstInterface.MG_ATTR_LOCAL_AS400SET = "local_as400set";
271
271
  ConstInterface.MG_ATTR_LOCAL_EXTRA_GENGO = "local_extraGengo";
272
272
  ConstInterface.MG_ATTR_LOCAL_FLAGS = "local_flags";
273
273
  ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP = "SpecialAnsiExpression";
274
+ ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END = "SpecialImmediateHandlerEnd";
274
275
  ConstInterface.MG_ATTR_SPECIAL_SHOW_STATUSBAR_PANES = "SpecialShowStatusBarPanes";
275
276
  ConstInterface.MG_ATTR_SPECIAL_ROUTE_TO_ROOT_PROG_ON_CONTEXT_RECREATION = "SpecialRouteToRootProgramOnContextRecreation";
276
277
  ConstInterface.MG_ATTR_SPECIAL_SPECIAL_EDIT_LEFT_ALIGN = "SpecialEditLeftAlign";
@@ -475,6 +476,7 @@ ConstInterface.RC_TOKEN_DATA = "DATA=";
475
476
  ConstInterface.WEBCLIENT_REINITIALIZE_REQUEST = "WCREINITIALIZEREQUEST=Y";
476
477
  ConstInterface.MAIN_PROG_VIEW = "MainProgramsDataView";
477
478
  ConstInterface.GLOBAL_PARAM_LIST = "GlobalParamList";
479
+ ConstInterface.ENV_VAR_LIST = "EnvVarList";
478
480
  ConstInterface.LAST_EXCEPTION = "LastException";
479
481
  ConstInterface.CTX_REMOVED_FROM_SRVR = "CtxRemovedFromSrvr";
480
482
  ConstInterface.LAST_ROUTE_EVENT = "LastRouteEvent";
@@ -640,13 +642,6 @@ class CommandSerializationHelper {
640
642
  }
641
643
 
642
644
  class EventCommand extends ClientOriginatedCommandTaskTag {
643
- constructor(magicEvent) {
644
- super();
645
- this.TaskTag = null;
646
- this.MagicEvent = 0;
647
- this.ClientRecId = 0;
648
- this.MagicEvent = magicEvent;
649
- }
650
645
  get CommandTypeAttribute() {
651
646
  return ConstInterface.MG_ATTR_VAL_EVENT;
652
647
  }
@@ -662,6 +657,13 @@ class EventCommand extends ClientOriginatedCommandTaskTag {
662
657
  return false;
663
658
  return true;
664
659
  }
660
+ constructor(magicEvent) {
661
+ super();
662
+ this.TaskTag = null;
663
+ this.MagicEvent = 0;
664
+ this.ClientRecId = 0;
665
+ this.MagicEvent = magicEvent;
666
+ }
665
667
  SerializeCommandData() {
666
668
  let helper = new CommandSerializationHelper();
667
669
  helper.SerializeTaskTag(this.TaskTag);
@@ -1171,15 +1173,6 @@ class OpeningTaskDetails {
1171
1173
  }
1172
1174
 
1173
1175
  class MgControl extends MgControlBase {
1174
- constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1175
- if (arguments.length === 0)
1176
- super();
1177
- else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1178
- super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1179
- else
1180
- super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1181
- this.initialize();
1182
- }
1183
1176
  initialize() {
1184
1177
  this._focusedStopExecution = false;
1185
1178
  this._inControlSuffix = false;
@@ -1192,6 +1185,15 @@ class MgControl extends MgControlBase {
1192
1185
  this.HasZoomHandler = false;
1193
1186
  this.ArgList = null;
1194
1187
  }
1188
+ constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1189
+ if (arguments.length === 0)
1190
+ super();
1191
+ else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1192
+ super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1193
+ else
1194
+ super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1195
+ this.initialize();
1196
+ }
1195
1197
  GetVarIndex() {
1196
1198
  return super.getForm().getTask().DataView.Dvcount + this.veeIndx;
1197
1199
  }
@@ -1458,9 +1460,6 @@ class MgControl extends MgControlBase {
1458
1460
  this.KeyStrokeOn = false;
1459
1461
  }
1460
1462
  }
1461
- async refreshAndSetItemsListForRadioButton(line, execComputeChoice) {
1462
- await super.refreshAndSetItemsListForRadioButton(line, execComputeChoice);
1463
- }
1464
1463
  getSubformTask() {
1465
1464
  return this._subformTask;
1466
1465
  }
@@ -2817,6 +2816,9 @@ class Event {
2817
2816
  case InternalInterface.MG_ACT_INDEX_CHANGE:
2818
2817
  description = 'Index Change';
2819
2818
  break;
2819
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
2820
+ description = 'Dump Environment';
2821
+ break;
2820
2822
  default:
2821
2823
  description = '';
2822
2824
  break;
@@ -3124,6 +3126,21 @@ class MgPriorityBlockingQueue {
3124
3126
  }
3125
3127
 
3126
3128
  class RunTimeEvent extends RunTimeEventBase {
3129
+ set Control(value) {
3130
+ this._ctrl = value;
3131
+ }
3132
+ set DisplayLine(value) {
3133
+ this._displayLine = value;
3134
+ }
3135
+ get Control() {
3136
+ return this._ctrl;
3137
+ }
3138
+ get ControlsList() {
3139
+ return this._controlsList;
3140
+ }
3141
+ get Direction() {
3142
+ return this._direction;
3143
+ }
3127
3144
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3128
3145
  super();
3129
3146
  this._controlsList = null;
@@ -3185,21 +3202,6 @@ class RunTimeEvent extends RunTimeEventBase {
3185
3202
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3186
3203
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3187
3204
  }
3188
- set Control(value) {
3189
- this._ctrl = value;
3190
- }
3191
- set DisplayLine(value) {
3192
- this._displayLine = value;
3193
- }
3194
- get Control() {
3195
- return this._ctrl;
3196
- }
3197
- get ControlsList() {
3198
- return this._controlsList;
3199
- }
3200
- get Direction() {
3201
- return this._direction;
3202
- }
3203
3205
  constructor_5(taskRef) {
3204
3206
  this.init(taskRef);
3205
3207
  }
@@ -3529,7 +3531,17 @@ class FlowMonitorQueue {
3529
3531
  this._isRecompute = false;
3530
3532
  this._isTask = false;
3531
3533
  this._isTaskFlow = false;
3534
+ this._isDataView = false;
3532
3535
  this.ShouldSerialize = false;
3536
+ this.padRight = (string, length, character = ' ') => {
3537
+ let result = "";
3538
+ let totalLength = length - string.length;
3539
+ for (let i = 0; i < totalLength; i++) {
3540
+ result = character + result;
3541
+ }
3542
+ result = result + string;
3543
+ return result;
3544
+ };
3533
3545
  }
3534
3546
  static get Instance() {
3535
3547
  if (FlowMonitorQueue._instance === null)
@@ -3587,6 +3599,9 @@ class FlowMonitorQueue {
3587
3599
  case ConstInterface.MG_ATTR_TASKFLW:
3588
3600
  this._isTaskFlow = XmlParser.getBoolean(valueStr);
3589
3601
  break;
3602
+ case ConstInterface.MG_TAG_DATAVIEW:
3603
+ this._isDataView = XmlParser.getBoolean(valueStr);
3604
+ break;
3590
3605
  case ConstInterface.MG_ATTR_RECOMP:
3591
3606
  this._isRecompute = XmlParser.getBoolean(valueStr);
3592
3607
  break;
@@ -3644,6 +3659,96 @@ class FlowMonitorQueue {
3644
3659
  Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
3645
3660
  }
3646
3661
  }
3662
+ appendVirtualsAndParameters(currentValues) {
3663
+ let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, InternalInterface.MG_ACT_REC_PREFIX);
3664
+ act.setInfo(currentValues);
3665
+ this._queue.put(act);
3666
+ }
3667
+ addDataViewFlow(task) {
3668
+ if (this._isDataView) {
3669
+ let fldTab = task.DataView.GetFieldsTab();
3670
+ let preparedDisplayString = "";
3671
+ let finaldisplayData = "\n";
3672
+ let fldValue;
3673
+ let data = "";
3674
+ for (let i = 0; i < fldTab.getSize(); i++) {
3675
+ let fldDef = fldTab.getField(i);
3676
+ if (!fldDef.IsEventHandlerField && (fldDef.IsVirtual && !fldDef.VirAsReal) || fldDef.isParam()) {
3677
+ fldValue = fldDef.isNull() ? fldDef.getNullValue() : fldDef.getValue(true);
3678
+ data = this.getFieldData(fldDef.getType(), fldValue, fldDef.getPicture(), fldDef.getCellsType(), task);
3679
+ preparedDisplayString = this.PrepareDisplayString(fldDef.isParam(), fldDef.getVarName(), data, true);
3680
+ finaldisplayData = finaldisplayData + preparedDisplayString + "\n";
3681
+ }
3682
+ }
3683
+ this.appendVirtualsAndParameters(finaldisplayData);
3684
+ }
3685
+ }
3686
+ getFieldData(Storagetype, data, picture, vecCellType, task) {
3687
+ switch (Storagetype) {
3688
+ case StorageAttribute.DOTNET:
3689
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3690
+ break;
3691
+ case StorageAttribute.BLOB:
3692
+ {
3693
+ if (BlobType.isValidBlob(data)) {
3694
+ let contentType = BlobType.getContentType(data);
3695
+ if (contentType == BlobType.CONTENT_TYPE_ANSI || contentType == BlobType.CONTENT_TYPE_UNICODE)
3696
+ data = data != null ? BlobType.getString(data) : "";
3697
+ else
3698
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3699
+ }
3700
+ else
3701
+ data = "";
3702
+ }
3703
+ break;
3704
+ case StorageAttribute.NUMERIC:
3705
+ case StorageAttribute.DATE:
3706
+ case StorageAttribute.TIME:
3707
+ let conv = DisplayConvertor.Instance;
3708
+ data = conv.mg2disp(data, " ", new PIC(picture, Storagetype, task.getCompIdx()), false, task.getCompIdx(), false);
3709
+ break;
3710
+ case StorageAttribute.BLOB_VECTOR:
3711
+ let vecOutData;
3712
+ if (data == null) {
3713
+ vecOutData = "[]";
3714
+ }
3715
+ else {
3716
+ let cellAtt = vecCellType;
3717
+ let vector = new VectorType(data);
3718
+ if (cellAtt == StorageAttribute.BLOB && !VectorType.validateBlobContents(data))
3719
+ vecOutData = "[]";
3720
+ else {
3721
+ let vecSize = VectorType.getVecSize(data);
3722
+ let cellPicture = (cellAtt == StorageAttribute.NUMERIC || cellAtt == StorageAttribute.DATE || cellAtt == StorageAttribute.TIME) ? PIC.buildPicture(cellAtt, vector.getVecCell(1), task.getCompIdx(), true).getFormat() : picture;
3723
+ vecOutData = "[";
3724
+ for (let i = 0; i < vecSize; i++) {
3725
+ vecOutData += this.getFieldData(cellAtt, vector.getVecCell(i + 1), cellPicture, vecCellType, task);
3726
+ vecOutData += i < vecSize - 1 ? "," : "]";
3727
+ }
3728
+ }
3729
+ }
3730
+ data = vecOutData;
3731
+ break;
3732
+ case StorageAttribute.BOOLEAN:
3733
+ data = data == "1" ? "TRUE" : "FALSE";
3734
+ break;
3735
+ }
3736
+ return data;
3737
+ }
3738
+ PrepareDisplayString(mode, name, valueContent, addDoubleQuotes) {
3739
+ let str = "";
3740
+ let finalStringToDisplay = "";
3741
+ if (addDoubleQuotes)
3742
+ finalStringToDisplay = finalStringToDisplay + "\"";
3743
+ finalStringToDisplay = finalStringToDisplay + name;
3744
+ if (addDoubleQuotes)
3745
+ finalStringToDisplay = finalStringToDisplay + "\"";
3746
+ let paddedName = this.padRight(name, 34);
3747
+ let formatOfStringVirtual = `Virtual`;
3748
+ let formatOfStringParameter = `Parameter`;
3749
+ str = (mode ? formatOfStringParameter : formatOfStringVirtual) + " : " + `${paddedName}` + " : " + `${valueContent.trim()}`;
3750
+ return str;
3751
+ }
3647
3752
  addTaskFlowRec(id, state, taskInfo) {
3648
3753
  if (this._enabled && this._isTaskFlow) {
3649
3754
  let info;
@@ -3808,6 +3913,7 @@ class FlowMonitorQueue {
3808
3913
  }
3809
3914
  }
3810
3915
  FlowMonitorQueue._instance = null;
3916
+ FlowMonitorQueue.UNPRINTABLE_STR_LOG = "#UNPRINTABLE#";
3811
3917
  FlowMonitorQueue.S_EVENT_STR1 = ">>Starts ";
3812
3918
  FlowMonitorQueue.S_EVENT_STR2 = " Event";
3813
3919
  FlowMonitorQueue.S_EVENT_PROPAGATED = "Event was propagated";
@@ -3869,6 +3975,15 @@ class TimerObjectCollection {
3869
3975
  }
3870
3976
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3871
3977
  class RCTimer extends MgTimer {
3978
+ get TimerIntervalMiliSeconds() {
3979
+ return this._timerIntervalMilliSeconds;
3980
+ }
3981
+ set IsIdleTimer(value) {
3982
+ this._isIdle = value;
3983
+ }
3984
+ get IsIdleTimer() {
3985
+ return this._isIdle;
3986
+ }
3872
3987
  constructor(mgData, milliseconds, isIdle) {
3873
3988
  super(milliseconds);
3874
3989
  this._mgData = null;
@@ -3880,15 +3995,6 @@ class RCTimer extends MgTimer {
3880
3995
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3881
3996
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3882
3997
  }
3883
- get TimerIntervalMiliSeconds() {
3884
- return this._timerIntervalMilliSeconds;
3885
- }
3886
- set IsIdleTimer(value) {
3887
- this._isIdle = value;
3888
- }
3889
- get IsIdleTimer() {
3890
- return this._isIdle;
3891
- }
3892
3998
  GetMgdata() {
3893
3999
  return this._mgData;
3894
4000
  }
@@ -4034,6 +4140,9 @@ class ExecutionStack {
4034
4140
  }
4035
4141
 
4036
4142
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4143
+ get CommandTypeAttribute() {
4144
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4145
+ }
4037
4146
  constructor() {
4038
4147
  super();
4039
4148
  this.ExecutionStack = null;
@@ -4047,9 +4156,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4047
4156
  this.CheckOnly = false;
4048
4157
  this.DitIdx = Int32.MinValue;
4049
4158
  }
4050
- get CommandTypeAttribute() {
4051
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4052
- }
4053
4159
  SerializeCommandData() {
4054
4160
  let helper = new CommandSerializationHelper();
4055
4161
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4504,13 +4610,6 @@ class HttpClientAsync extends HttpClientBase {
4504
4610
  }
4505
4611
 
4506
4612
  class HttpManager {
4507
- constructor() {
4508
- this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4509
- this._httpClientAsync = null;
4510
- this._isAbortingMagicEngine = false;
4511
- this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4512
- this.RegisterBasicDelegates();
4513
- }
4514
4613
  getHttpClient() {
4515
4614
  if (this.IsAbortingMagicEngine)
4516
4615
  return new HttpClientSync();
@@ -4530,6 +4629,13 @@ class HttpManager {
4530
4629
  }
4531
4630
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4532
4631
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4632
+ constructor() {
4633
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4634
+ this._httpClientAsync = null;
4635
+ this._isAbortingMagicEngine = false;
4636
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4637
+ this.RegisterBasicDelegates();
4638
+ }
4533
4639
  RegisterBasicDelegates() {
4534
4640
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4535
4641
  }
@@ -5075,6 +5181,12 @@ var RequestStatus;
5075
5181
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5076
5182
  })(RequestStatus || (RequestStatus = {}));
5077
5183
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5184
+ static GetInstance() {
5185
+ if (RemoteCommandsProcessor._instance === null) {
5186
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5187
+ }
5188
+ return RemoteCommandsProcessor._instance;
5189
+ }
5078
5190
  constructor() {
5079
5191
  super();
5080
5192
  this._lastRequestTime = 0;
@@ -5085,12 +5197,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5085
5197
  HttpManager.GetInstance();
5086
5198
  this.RegisterDelegates();
5087
5199
  }
5088
- static GetInstance() {
5089
- if (RemoteCommandsProcessor._instance === null) {
5090
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5091
- }
5092
- return RemoteCommandsProcessor._instance;
5093
- }
5094
5200
  CheckAndSetSessionCounter(newSessionCounter) {
5095
5201
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5096
5202
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5123,10 +5229,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5229
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5230
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5231
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5232
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5233
  let dataStorage = window.localStorage;
5127
5234
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5235
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5236
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5237
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5238
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5239
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5240
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5461,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5461
  let reqBuf;
5354
5462
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5463
  let globalParamsString = null;
5464
+ let envVarsString = null;
5356
5465
  if (this.DelayCommandExecution)
5357
5466
  return;
5358
5467
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5487,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5487
  let buffer = new StringBuilder();
5379
5488
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5489
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5490
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5491
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5492
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5493
+ }
5494
+ else {
5384
5495
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5496
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5497
+ }
5385
5498
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5499
+ changes.Append(envVarsString);
5387
5500
  if (changes.Length > 0) {
5388
5501
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5502
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5535,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5535
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5536
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5537
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5538
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5539
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5540
  }
5427
5541
  }
5428
5542
  FlowMonitorQueue.Instance.enable(false);
5429
5543
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5544
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5545
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5546
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5547
  let dataStorage = window.localStorage;
5433
5548
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5549
  if (ctxRemoved === "1") {
@@ -5524,11 +5639,22 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5524
5639
  }
5525
5640
  }
5526
5641
  }
5527
- window.localStorage.clear();
5642
+ this.clearLocalStorage();
5528
5643
  throw ex;
5529
5644
  }
5530
5645
  return response;
5531
5646
  }
5647
+ clearLocalStorage() {
5648
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT);
5649
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK);
5650
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST);
5651
+ window.localStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5652
+ window.localStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5653
+ window.localStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5654
+ window.localStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5655
+ window.localStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5656
+ window.localStorage.removeItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5657
+ }
5532
5658
  HandleErrorResponse(response) {
5533
5659
  try {
5534
5660
  Logger.Instance.WriteServerMessagesToLog("MESSAGE FROM SERVER: " + response);
@@ -5730,21 +5856,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5730
5856
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5731
5857
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5732
5858
  class HandshakeResponse {
5733
- constructor(responseXML) {
5734
- this._scrambleMessages = true;
5735
- this._contextId = null;
5736
- this._privateSessionId = null;
5737
- this._inputPassword = false;
5738
- this._httpTimeout = 0;
5739
- this._systemLogin = null;
5740
- this._maxInternalLogLevel = null;
5741
- try {
5742
- JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5743
- }
5744
- catch (ex) {
5745
- Logger.Instance.WriteExceptionToLog(ex, responseXML);
5746
- }
5747
- }
5748
5859
  get ScrambleMessages() {
5749
5860
  return this._scrambleMessages;
5750
5861
  }
@@ -5766,6 +5877,21 @@ class HandshakeResponse {
5766
5877
  get MaxInternalLogLevel() {
5767
5878
  return this._maxInternalLogLevel;
5768
5879
  }
5880
+ constructor(responseXML) {
5881
+ this._scrambleMessages = true;
5882
+ this._contextId = null;
5883
+ this._privateSessionId = null;
5884
+ this._inputPassword = false;
5885
+ this._httpTimeout = 0;
5886
+ this._systemLogin = null;
5887
+ this._maxInternalLogLevel = null;
5888
+ try {
5889
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5890
+ }
5891
+ catch (ex) {
5892
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5893
+ }
5894
+ }
5769
5895
  FillFromJSON(error, result) {
5770
5896
  if (error != null) {
5771
5897
  throw error;
@@ -6722,7 +6848,7 @@ ExpressionDict.expDesc = [
6722
6848
  null,
6723
6849
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6850
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6851
+ null,
6726
6852
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6853
  null,
6728
6854
  null,
@@ -7171,12 +7297,12 @@ ExpressionDict.expDesc = [
7171
7297
  null,
7172
7298
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7299
  new ExpDesc('N', 0, 2, 2, "AA", false),
7174
- new ExpDesc('B', 0, -2, -2, "V ", false),
7175
- new ExpDesc('B', 0, 1, 1, "N", false),
7176
- new ExpDesc('B', 0, -2, -2, "V ", false),
7177
- new ExpDesc('B', 0, 1, 1, "N", false),
7178
- new ExpDesc('B', 0, 2, 2, "VB", false),
7179
- new ExpDesc('B', 0, 1, 1, "N", false),
7300
+ null,
7301
+ null,
7302
+ null,
7303
+ null,
7304
+ null,
7305
+ null,
7180
7306
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7307
  null,
7182
7308
  null,
@@ -7263,48 +7389,6 @@ ExpressionDict.expDesc = [
7263
7389
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7390
  ];
7265
7391
 
7266
- var DataViewCommandType;
7267
- (function (DataViewCommandType) {
7268
- DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7269
- DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7270
- DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7271
- DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7272
- DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7273
- DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7274
- DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7275
- DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7276
- DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7277
- DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7278
- DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7279
- DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7280
- DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7281
- DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7282
- DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7283
- DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7284
- DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7285
- DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7286
- DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7287
- DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7288
- DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7289
- })(DataViewCommandType || (DataViewCommandType = {}));
7290
- class DataviewCommand extends ClientOriginatedCommandTaskTag {
7291
- constructor() {
7292
- super();
7293
- this.CommandType = 0;
7294
- this.TaskTag = null;
7295
- }
7296
- get CommandTypeAttribute() {
7297
- throw new NotImplementedException();
7298
- }
7299
- SerializeCommandData() {
7300
- Debug.Assert(false, "Dataview commands need not be serialized");
7301
- return null;
7302
- }
7303
- get ShouldSerialize() {
7304
- return false;
7305
- }
7306
- }
7307
-
7308
7392
  class EventHandlerPosition {
7309
7393
  constructor() {
7310
7394
  this._handlerIdx = 0;
@@ -7361,6 +7445,9 @@ class EventHandlerPosition {
7361
7445
  case InternalInterface.MG_ACT_REC_SUFFIX:
7362
7446
  case InternalInterface.MG_ACT_CTRL_PREFIX:
7363
7447
  case InternalInterface.MG_ACT_CTRL_SUFFIX: {
7448
+ if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
7449
+ FlowMonitorQueue.Instance.addDataViewFlow(this._task);
7450
+ }
7364
7451
  if (this._handlerIdx === -1) {
7365
7452
  for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
7366
7453
  let handler = this._handlersTab.getHandler(this._handlerIdx);
@@ -7501,6 +7588,48 @@ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7501
7588
  EventHandlerPosition.PHASE_GLOBAL = 3;
7502
7589
  EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7503
7590
 
7591
+ var DataViewCommandType;
7592
+ (function (DataViewCommandType) {
7593
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7594
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7595
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7596
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7597
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7598
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7599
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7600
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7601
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7602
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7603
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7604
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7605
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7606
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7607
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7608
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7609
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7610
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7611
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7612
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7613
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7614
+ })(DataViewCommandType || (DataViewCommandType = {}));
7615
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7616
+ get CommandTypeAttribute() {
7617
+ throw new NotImplementedException();
7618
+ }
7619
+ SerializeCommandData() {
7620
+ Debug.Assert(false, "Dataview commands need not be serialized");
7621
+ return null;
7622
+ }
7623
+ get ShouldSerialize() {
7624
+ return false;
7625
+ }
7626
+ constructor() {
7627
+ super();
7628
+ this.CommandType = 0;
7629
+ this.TaskTag = null;
7630
+ }
7631
+ }
7632
+
7504
7633
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7634
  constructor() {
7506
7635
  super();
@@ -7720,12 +7849,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7720
7849
  }
7721
7850
 
7722
7851
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7723
- constructor() {
7724
- super();
7725
- this.TaskTag = null;
7726
- this.FldId = 0;
7727
- this.IgnoreSubformRecompute = false;
7728
- }
7729
7852
  get CommandTypeAttribute() {
7730
7853
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7731
7854
  }
@@ -7737,17 +7860,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7737
7860
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7738
7861
  return helper.GetString();
7739
7862
  }
7863
+ constructor() {
7864
+ super();
7865
+ this.TaskTag = null;
7866
+ this.FldId = 0;
7867
+ this.IgnoreSubformRecompute = false;
7868
+ }
7740
7869
  getCommandInfo() {
7741
7870
  return NString.Format('[{0} in {1} for Field {2}]', this.CommandTypeAttribute.charAt(0).toUpperCase() + this.CommandTypeAttribute.substr(1, this.CommandTypeAttribute.length), this.Task.getTaskInfo(), this.Task.getFieldDef(this.FldId).getName());
7742
7871
  }
7743
7872
  }
7744
7873
 
7745
7874
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7746
- constructor() {
7747
- super();
7748
- this.TaskTag = null;
7749
- this.ReversibleExit = false;
7750
- }
7751
7875
  get CommandTypeAttribute() {
7752
7876
  return ConstInterface.MG_ATTR_VAL_TRANS;
7753
7877
  }
@@ -7761,6 +7885,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7761
7885
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7762
7886
  return helper.GetString();
7763
7887
  }
7888
+ constructor() {
7889
+ super();
7890
+ this.TaskTag = null;
7891
+ this.ReversibleExit = false;
7892
+ }
7764
7893
  getCommandInfo() {
7765
7894
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7766
7895
  }
@@ -7779,16 +7908,16 @@ class UnloadCommand extends ClientOriginatedCommand {
7779
7908
  }
7780
7909
 
7781
7910
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7911
+ get CommandTypeAttribute() {
7912
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7913
+ }
7782
7914
  constructor() {
7783
7915
  super();
7784
7916
  this.TaskTag = null;
7785
7917
  this.ExpIdx = 0;
7786
7918
  this.LengthExpVal = 0;
7787
7919
  this.MprgCreator = null;
7788
- this.LengthExpVal = Int32.MinValue;
7789
- }
7790
- get CommandTypeAttribute() {
7791
- return ConstInterface.MG_ATTR_VAL_EVAL;
7920
+ this.LengthExpVal = Int32.MinValue;
7792
7921
  }
7793
7922
  SerializeCommandData() {
7794
7923
  let helper = new CommandSerializationHelper();
@@ -7837,10 +7966,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7837
7966
  }
7838
7967
 
7839
7968
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7840
- constructor() {
7841
- super();
7842
- this.Text = null;
7843
- }
7844
7969
  get CommandTypeAttribute() {
7845
7970
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7846
7971
  }
@@ -7850,6 +7975,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7850
7975
  SerializeCommandData() {
7851
7976
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7852
7977
  }
7978
+ constructor() {
7979
+ super();
7980
+ this.Text = null;
7981
+ }
7853
7982
  getCommandInfo() {
7854
7983
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7855
7984
  }
@@ -8136,13 +8265,6 @@ class CommandFactory {
8136
8265
  }
8137
8266
  }
8138
8267
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8268
  var ParamParseResult;
8147
8269
  (function (ParamParseResult) {
8148
8270
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8152,10 +8274,6 @@ var ParamParseResult;
8152
8274
  })(ParamParseResult || (ParamParseResult = {}));
8153
8275
 
8154
8276
  class PrmMap {
8155
- constructor() {
8156
- this.values = null;
8157
- this.values = new Dictionary();
8158
- }
8159
8277
  getvalue(s) {
8160
8278
  if (this.values.ContainsKey(s))
8161
8279
  return this.values.get_Item(s);
@@ -8168,6 +8286,10 @@ class PrmMap {
8168
8286
  remove(s) {
8169
8287
  this.values.Remove(s);
8170
8288
  }
8289
+ constructor() {
8290
+ this.values = null;
8291
+ this.values = new Dictionary();
8292
+ }
8171
8293
  }
8172
8294
  class MirrorPrmMap extends PrmMap {
8173
8295
  constructor(type) {
@@ -8248,7 +8370,7 @@ class MirrorPrmMap extends PrmMap {
8248
8370
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8371
  }
8250
8372
  }
8251
- RestoreGlobalParams(xml) {
8373
+ RestoreParams(xml) {
8252
8374
  let parser = new XmlParser(xml);
8253
8375
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8376
  }
@@ -8323,6 +8445,7 @@ class Environment {
8323
8445
  this._debugMode = 0;
8324
8446
  this._significantNumSize = 0;
8325
8447
  this._specialAnsiExpression = false;
8448
+ this._specialImmediatehandlerEnd = false;
8326
8449
  this._specialShowStatusBarPanes = false;
8327
8450
  this._specialRouteToRootProgOnContextRecreation = false;
8328
8451
  this._specialCancelOnCreate = false;
@@ -8476,6 +8599,9 @@ class Environment {
8476
8599
  case ConstInterface.MG_ATTR_LOCAL_FLAGS:
8477
8600
  this._localFlags = valueStr;
8478
8601
  break;
8602
+ case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
8603
+ this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
8604
+ break;
8479
8605
  case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
8480
8606
  this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
8481
8607
  break;
@@ -8680,6 +8806,9 @@ class Environment {
8680
8806
  GetLocalFlag(f) {
8681
8807
  return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
8682
8808
  }
8809
+ getSpecialImmediateHandlerEnd() {
8810
+ return this._specialImmediatehandlerEnd;
8811
+ }
8683
8812
  getSpecialAnsiExpression() {
8684
8813
  return this._specialAnsiExpression;
8685
8814
  }
@@ -8749,6 +8878,12 @@ class Environment {
8749
8878
  }
8750
8879
  Environment.Instance = new Environment();
8751
8880
  class EnvironmentDetails {
8881
+ set UpdateInQueryMode(value) {
8882
+ this._updateInQueryMode = value;
8883
+ }
8884
+ set CreateInModifyMode(value) {
8885
+ this._createInModifyMode = value;
8886
+ }
8752
8887
  constructor() {
8753
8888
  this._createInModifyMode = false;
8754
8889
  this._updateInQueryMode = false;
@@ -8759,12 +8894,6 @@ class EnvironmentDetails {
8759
8894
  this.ProjDir = null;
8760
8895
  this.CompIdx = 0;
8761
8896
  }
8762
- set UpdateInQueryMode(value) {
8763
- this._updateInQueryMode = value;
8764
- }
8765
- set CreateInModifyMode(value) {
8766
- this._createInModifyMode = value;
8767
- }
8768
8897
  allowUpdateInQueryMode() {
8769
8898
  return this._updateInQueryMode;
8770
8899
  }
@@ -8852,17 +8981,6 @@ class GlobalParams extends MirrorPrmMap {
8852
8981
  GlobalParams.Instance = new GlobalParams();
8853
8982
 
8854
8983
  class UserDetails {
8855
- constructor() {
8856
- this.UserName = null;
8857
- this.UserID = null;
8858
- this.UserInfo = null;
8859
- this.Password = null;
8860
- this.IsLoggedIn = false;
8861
- this.UserName = NString.Empty;
8862
- this.UserInfo = NString.Empty;
8863
- this.IsLoggedIn = false;
8864
- this.setUserID(NString.Empty);
8865
- }
8866
8984
  setIsLoggedIn(value) {
8867
8985
  this.IsLoggedIn = value;
8868
8986
  }
@@ -8882,6 +9000,17 @@ class UserDetails {
8882
9000
  UserDetails._instance = new UserDetails();
8883
9001
  return UserDetails._instance;
8884
9002
  }
9003
+ constructor() {
9004
+ this.UserName = null;
9005
+ this.UserID = null;
9006
+ this.UserInfo = null;
9007
+ this.Password = null;
9008
+ this.IsLoggedIn = false;
9009
+ this.UserName = NString.Empty;
9010
+ this.UserInfo = NString.Empty;
9011
+ this.IsLoggedIn = false;
9012
+ this.setUserID(NString.Empty);
9013
+ }
8885
9014
  fillData(parser) {
8886
9015
  let tokensVector;
8887
9016
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9690,8 +9819,7 @@ class MirrorString {
9690
9819
  this._reserved = false;
9691
9820
  }
9692
9821
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9822
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9823
  }
9696
9824
  init(name, xmlParser) {
9697
9825
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -10867,7 +10995,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
10867
10995
  case ExpressionInterface.EXP_OP_CONTROL_ITEMS_REFRESH:
10868
10996
  val2 = valStack.pop();
10869
10997
  val1 = valStack.pop();
10870
- this.eval_op_controlItemRefresh(val1, val2, resVal);
10998
+ await this.eval_op_controlItemRefresh(val1, val2, resVal);
10871
10999
  break;
10872
11000
  case ExpressionInterface.EXP_OP_VARCONTROLID:
10873
11001
  val1 = valStack.pop();
@@ -11257,11 +11385,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11385
  val1 = valStack.pop();
11258
11386
  this.eval_op_eoy(resVal, val1);
11259
11387
  break;
11260
- case ExpressionInterface.EXP_OP_ROLLBACK:
11261
- val2 = valStack.pop();
11262
- val1 = valStack.pop();
11263
- await this.eval_op_rollback(resVal);
11264
- break;
11265
11388
  case ExpressionInterface.EXP_OP_VARSET:
11266
11389
  val2 = valStack.pop();
11267
11390
  val1 = valStack.pop();
@@ -11626,41 +11749,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11749
  val1 = valStack.pop();
11627
11750
  this.eval_op_taskType(resVal, val1);
11628
11751
  break;
11629
- case ExpressionInterface.EXP_OP_RANGE_ADD:
11630
- nArgs = valStack.pop();
11631
- if (nArgs > 0) {
11632
- Exp_params = new Array(nArgs);
11633
- for (j = 0; j < nArgs; j++)
11634
- Exp_params[nArgs - 1 - j] = valStack.pop();
11635
- await this.eval_op_range_add(resVal, Exp_params);
11636
- }
11637
- break;
11638
- case ExpressionInterface.EXP_OP_RANGE_RESET:
11639
- val1 = valStack.pop();
11640
- await this.eval_op_range_reset(resVal, val1);
11641
- break;
11642
- case ExpressionInterface.EXP_OP_LOCATE_ADD:
11643
- nArgs = valStack.pop();
11644
- if (nArgs > 0) {
11645
- Exp_params = new Array(nArgs);
11646
- for (j = 0; j < nArgs; j++)
11647
- Exp_params[nArgs - 1 - j] = valStack.pop();
11648
- await this.eval_op_locate_add(resVal, Exp_params);
11649
- }
11650
- break;
11651
- case ExpressionInterface.EXP_OP_LOCATE_RESET:
11652
- val1 = valStack.pop();
11653
- await this.eval_op_locate_reset(resVal, val1);
11654
- break;
11655
- case ExpressionInterface.EXP_OP_SORT_ADD:
11656
- val2 = valStack.pop();
11657
- val1 = valStack.pop();
11658
- await this.eval_op_sort_add(resVal, val1, val2);
11659
- break;
11660
- case ExpressionInterface.EXP_OP_SORT_RESET:
11661
- val1 = valStack.pop();
11662
- await this.eval_op_sort_reset(resVal, val1);
11663
- break;
11664
11752
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11753
  val1 = valStack.pop();
11666
11754
  this.eval_op_tsk_instance(resVal, val1);
@@ -13003,7 +13091,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13003
13091
  resVal.Attr = StorageAttribute.BOOLEAN;
13004
13092
  if ((parent >= 0 && parent < (this.ExpTask.getTaskDepth(false))) || parent === ExpressionEvaluator.TRIGGER_TASK) {
13005
13093
  let tsk = super.GetContextTask(parent);
13006
- if (tsk != null) {
13094
+ if (tsk != null && tsk.getForm() != null) {
13007
13095
  let control = tsk.getForm().GetCtrl(val1.StrVal);
13008
13096
  if (control != null && control.isChoiceControl() && control.isDataCtrl()) {
13009
13097
  let command = CommandFactory.CreateControlItemsRefreshCommand(tsk.getTaskTag(), control);
@@ -13299,12 +13387,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13387
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13388
  await fld.updateDisplay();
13301
13389
  }
13302
- async eval_op_rollback(resVal) {
13303
- let task = this.ExpTask.GetContextTask() || this.ExpTask;
13304
- await AccessHelper.eventsManager.handleInternalEventWithTask(task, InternalInterface.MG_ACT_ROLLBACK);
13305
- resVal.Attr = StorageAttribute.BOOLEAN;
13306
- resVal.BoolVal = true;
13307
- }
13308
13390
  eval_op_like(source, maskOrg, resVal) {
13309
13391
  let i;
13310
13392
  let j;
@@ -13861,54 +13943,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13943
  resultStr.Replace('\\@', '@');
13862
13944
  resVal.StrVal = resultStr.ToString();
13863
13945
  }
13864
- async eval_op_range_add(resVal, Exp_params) {
13865
- resVal.Attr = StorageAttribute.BOOLEAN;
13866
- resVal.BoolVal = await this.add_rt_ranges(Exp_params, false);
13867
- }
13868
- async eval_op_range_reset(resVal, parent) {
13869
- resVal.Attr = StorageAttribute.BOOLEAN;
13870
- let iParent = parent.MgNumVal.NUM_2_LONG();
13871
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13872
- let task = super.GetContextTask(iParent);
13873
- if (task !== null) {
13874
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserRange);
13875
- await task.DataviewManager.Execute(command);
13876
- resVal.BoolVal = true;
13877
- }
13878
- }
13879
- }
13880
- async eval_op_locate_add(resVal, Exp_params) {
13881
- resVal.Attr = StorageAttribute.BOOLEAN;
13882
- resVal.BoolVal = await this.add_rt_ranges(Exp_params, true);
13883
- }
13884
- async eval_op_locate_reset(resVal, parent) {
13885
- resVal.Attr = StorageAttribute.BOOLEAN;
13886
- let iParent = parent.MgNumVal.NUM_2_LONG();
13887
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13888
- let task = super.GetContextTask(iParent);
13889
- if (task !== null) {
13890
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserLocate);
13891
- await task.DataviewManager.Execute(command);
13892
- resVal.BoolVal = true;
13893
- }
13894
- }
13895
- }
13896
- async eval_op_sort_add(resVal, varnum, dir) {
13897
- resVal.Attr = StorageAttribute.BOOLEAN;
13898
- resVal.BoolVal = await this.add_sort(varnum, dir);
13899
- }
13900
- async eval_op_sort_reset(resVal, parent) {
13901
- resVal.Attr = StorageAttribute.BOOLEAN;
13902
- let iParent = parent.MgNumVal.NUM_2_LONG();
13903
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13904
- let task = super.GetContextTask(iParent);
13905
- if (task !== null) {
13906
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserSort);
13907
- await task.DataviewManager.Execute(command);
13908
- resVal.BoolVal = true;
13909
- }
13910
- }
13911
- }
13912
13946
  eval_op_tsk_instance(resVal, Parent) {
13913
13947
  let tag = 0;
13914
13948
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13956,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13956
  resVal.MgNumVal = new NUM_TYPE();
13923
13957
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13958
  }
13925
- async add_sort(varnum, dir) {
13926
- if (varnum.MgNumVal === null)
13927
- return false;
13928
- let itm = varnum.MgNumVal.NUM_2_LONG();
13929
- if (itm === 0)
13930
- return false;
13931
- let fld = this.GetFieldOfContextTask(itm);
13932
- if (fld === null)
13933
- return false;
13934
- let task = fld.getTask();
13935
- let vee_idx = fld.getId() + 1;
13936
- let expr_64 = new Sort();
13937
- expr_64.fldIdx = vee_idx;
13938
- expr_64.dir = dir.BoolVal;
13939
- let sort = expr_64;
13940
- let command = CommandFactory.CreateAddUserSortDataviewCommand(task.getTaskTag(), sort);
13941
- await task.DataviewManager.Execute(command);
13942
- return true;
13943
- }
13944
- async add_rt_ranges(Exp_params, locate) {
13945
- let varnum = Exp_params[0];
13946
- let min = Exp_params[1];
13947
- if (varnum.MgNumVal === null)
13948
- return false;
13949
- let itm = varnum.MgNumVal.NUM_2_LONG();
13950
- if (itm === 0)
13951
- return false;
13952
- let fld = this.GetFieldOfContextTask(itm);
13953
- if (fld === null)
13954
- return false;
13955
- let task = fld.getTask();
13956
- let vee_idx = fld.getId() + 1;
13957
- let expr_78 = new UserRange();
13958
- expr_78.veeIdx = vee_idx;
13959
- let rng = expr_78;
13960
- if (min.IsNull)
13961
- rng.nullMin = true;
13962
- if (!rng.nullMin && (min.Attr === StorageAttribute.ALPHA || min.Attr === StorageAttribute.UNICODE) && min.StrVal.length === 0)
13963
- rng.discardMin = true;
13964
- else {
13965
- if (!rng.nullMin) {
13966
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), min.Attr))
13967
- return false;
13968
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), min.Attr))
13969
- this.ConvertExpVal(min, fld.getType());
13970
- rng.min = min.ToMgVal();
13971
- }
13972
- }
13973
- if (Exp_params.length === 3) {
13974
- let max = Exp_params[2];
13975
- if (max.IsNull)
13976
- rng.nullMax = true;
13977
- if (!rng.nullMax && (max.Attr === StorageAttribute.ALPHA || max.Attr === StorageAttribute.UNICODE) && max.StrVal.length === 0)
13978
- rng.discardMax = true;
13979
- else {
13980
- if (!rng.nullMax) {
13981
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), max.Attr))
13982
- return false;
13983
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), max.Attr))
13984
- this.ConvertExpVal(max, fld.getType());
13985
- rng.max = max.ToMgVal();
13986
- }
13987
- }
13988
- }
13989
- else
13990
- rng.discardMax = true;
13991
- if (!rng.discardMin || !rng.discardMax) {
13992
- if (locate) {
13993
- let command = CommandFactory.CreateAddUserLocateDataviewCommand(task.getTaskTag(), rng);
13994
- await task.DataviewManager.Execute(command);
13995
- }
13996
- else {
13997
- let command2 = CommandFactory.CreateAddUserRangeDataviewCommand(task.getTaskTag(), rng);
13998
- await task.DataviewManager.Execute(command2);
13999
- }
14000
- }
14001
- return true;
14002
- }
14003
13959
  eval_op_getParam(resVal, name) {
14004
13960
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13961
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -14517,6 +14473,12 @@ class DataViewBase extends GuiDataViewBase {
14517
14473
  }
14518
14474
 
14519
14475
  class Record {
14476
+ get InCompute() {
14477
+ return this._inCompute;
14478
+ }
14479
+ get InRecompute() {
14480
+ return this._inRecompute;
14481
+ }
14520
14482
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14521
14483
  this._id = Int32.MinValue;
14522
14484
  this.dbViewRowIdx = 0;
@@ -14534,12 +14496,6 @@ class Record {
14534
14496
  else
14535
14497
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14536
14498
  }
14537
- get InCompute() {
14538
- return this._inCompute;
14539
- }
14540
- get InRecompute() {
14541
- return this._inRecompute;
14542
- }
14543
14499
  constructor_0(dvOrTableCache) {
14544
14500
  if (dvOrTableCache instanceof DataViewBase)
14545
14501
  this._dataview = dvOrTableCache;
@@ -15335,14 +15291,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15335
15291
  Record.INCREASE = true;
15336
15292
  Record.DECREASE = false;
15337
15293
  class DcValuesReference extends ObjectReferenceBase {
15294
+ get DcValues() {
15295
+ return this.Referent;
15296
+ }
15338
15297
  constructor(controlId, referencedDcValues) {
15339
15298
  super(referencedDcValues);
15340
15299
  this.ditIdx = 0;
15341
15300
  this.ditIdx = controlId;
15342
15301
  }
15343
- get DcValues() {
15344
- return this.Referent;
15345
- }
15346
15302
  Clone() {
15347
15303
  return new DcValuesReference(this.ditIdx, this.Referent);
15348
15304
  }
@@ -15618,21 +15574,6 @@ class RecordsTable {
15618
15574
  RecordsTable.REC_NOT_FOUND = -1;
15619
15575
 
15620
15576
  class DataviewHeaderBase {
15621
- constructor(task) {
15622
- this._cond = null;
15623
- this._task = null;
15624
- this.Loc = null;
15625
- this._dir = '\0';
15626
- this._id = 0;
15627
- this._keyIdx = 0;
15628
- this._retVal = null;
15629
- this.returnfield = null;
15630
- this.LinkStartAfterField = 0;
15631
- this.KeyExpression = 0;
15632
- this._task = task;
15633
- this._keyIdx = -1;
15634
- this._cond = new YesNoExp(true);
15635
- }
15636
15577
  get ReturnField() {
15637
15578
  if (this.returnfield === null && this._retVal !== null)
15638
15579
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15653,6 +15594,21 @@ class DataviewHeaderBase {
15653
15594
  get LinkEvaluateCondition() {
15654
15595
  return this._linkEvalCondition;
15655
15596
  }
15597
+ constructor(task) {
15598
+ this._cond = null;
15599
+ this._task = null;
15600
+ this.Loc = null;
15601
+ this._dir = '\0';
15602
+ this._id = 0;
15603
+ this._keyIdx = 0;
15604
+ this._retVal = null;
15605
+ this.returnfield = null;
15606
+ this.LinkStartAfterField = 0;
15607
+ this.KeyExpression = 0;
15608
+ this._task = task;
15609
+ this._keyIdx = -1;
15610
+ this._cond = new YesNoExp(true);
15611
+ }
15656
15612
  SetAttributes(attributes) {
15657
15613
  let keys = attributes.Keys;
15658
15614
  keys.forEach((text) => {
@@ -16943,16 +16899,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16943
16899
  }
16944
16900
 
16945
16901
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16902
+ set SerializedDCVals(value) {
16903
+ this.parser.setXMLdata(value);
16904
+ this.parser.setCurrIndex(0);
16905
+ }
16946
16906
  constructor() {
16947
16907
  super();
16948
16908
  this.dcv = null;
16949
16909
  this.parser = null;
16950
16910
  this.parser = new XmlParser();
16951
16911
  }
16952
- set SerializedDCVals(value) {
16953
- this.parser.setXMLdata(value);
16954
- this.parser.setCurrIndex(0);
16955
- }
16956
16912
  Build() {
16957
16913
  this.dcv = null;
16958
16914
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17010,28 +16966,61 @@ class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
17010
16966
  }
17011
16967
  return super.ParseValues(valueStr, dataType, useHex);
17012
16968
  }
17013
- }
17014
-
17015
- const SET_DISPLAYLINE_BY_DV = Int32.MinValue;
17016
- const COMPUTE_NEWREC_ON_CLIENT = 'C';
17017
- const UNKNOWN_RCMPS_NOT_INITED = 'M';
17018
- const UNKNOWN_RCMPS_FOUND = 'Y';
17019
- const INVOKED_FROM_OFFLINE_TASK = '-99999';
17020
- const CHUNK_CACHE_NEXT = 'N';
17021
- const CHUNK_CACHE_PREV = 'P';
17022
- const CHUNK_DV_BOTTOM = 'B';
17023
- const CHUNK_DV_TOP = 'T';
17024
- const COMPUTE_FLUSH_UPDATES = 'H';
17025
- const COMPUTE_NEWREC_ON_SERVER = 'S';
17026
- const END_DV_TAG = '</' + ConstInterface.MG_TAG_DATAVIEW + '>';
17027
- const RECOVERY_ACT_BEGIN_SCREEN = 'S';
17028
- const RECOVERY_ACT_BEGIN_TABLE = 'T';
17029
- const RECOVERY_ACT_CANCEL = 'C';
17030
- const RECOVERY_ACT_MOVE_DIRECTION_BEGIN = 'B';
17031
- const RECOVERY_ACT_NONE = 'N';
17032
- const TRANS_STAT_CLOSED = 'C';
17033
- const TRANS_STAT_OPENED = 'O';
17034
- class DataView extends DataViewBase {
16969
+ }
16970
+
16971
+ const SET_DISPLAYLINE_BY_DV = Int32.MinValue;
16972
+ const COMPUTE_NEWREC_ON_CLIENT = 'C';
16973
+ const UNKNOWN_RCMPS_NOT_INITED = 'M';
16974
+ const UNKNOWN_RCMPS_FOUND = 'Y';
16975
+ const INVOKED_FROM_OFFLINE_TASK = '-99999';
16976
+ const CHUNK_CACHE_NEXT = 'N';
16977
+ const CHUNK_CACHE_PREV = 'P';
16978
+ const CHUNK_DV_BOTTOM = 'B';
16979
+ const CHUNK_DV_TOP = 'T';
16980
+ const COMPUTE_FLUSH_UPDATES = 'H';
16981
+ const COMPUTE_NEWREC_ON_SERVER = 'S';
16982
+ const END_DV_TAG = '</' + ConstInterface.MG_TAG_DATAVIEW + '>';
16983
+ const RECOVERY_ACT_BEGIN_SCREEN = 'S';
16984
+ const RECOVERY_ACT_BEGIN_TABLE = 'T';
16985
+ const RECOVERY_ACT_CANCEL = 'C';
16986
+ const RECOVERY_ACT_MOVE_DIRECTION_BEGIN = 'B';
16987
+ const RECOVERY_ACT_NONE = 'N';
16988
+ const TRANS_STAT_CLOSED = 'C';
16989
+ const TRANS_STAT_OPENED = 'O';
16990
+ class DataView extends DataViewBase {
16991
+ set InsertAt(value) {
16992
+ this._insertAt = value;
16993
+ }
16994
+ get InsertAt() {
16995
+ return this._insertAt;
16996
+ }
16997
+ get CurrRec() {
16998
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
16999
+ }
17000
+ set CurrRec(value) {
17001
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17002
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17003
+ }
17004
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17005
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17006
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17007
+ }
17008
+ }
17009
+ get FlushUpdates() {
17010
+ return this._flushUpdates;
17011
+ }
17012
+ get HasMainTable() {
17013
+ return this._hasMainTable;
17014
+ }
17015
+ get CurrentRecId() {
17016
+ return this._currRecId;
17017
+ }
17018
+ get FirstRecord() {
17019
+ return this._recordsTab.getRecByIdx(0);
17020
+ }
17021
+ get LastRecord() {
17022
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17023
+ }
17035
17024
  constructor(taskOrDataView) {
17036
17025
  super();
17037
17026
  this._cacheLruTimeStamp = 0;
@@ -17083,39 +17072,6 @@ class DataView extends DataViewBase {
17083
17072
  Object.assign(this, taskOrDataView);
17084
17073
  }
17085
17074
  }
17086
- set InsertAt(value) {
17087
- this._insertAt = value;
17088
- }
17089
- get InsertAt() {
17090
- return this._insertAt;
17091
- }
17092
- get CurrRec() {
17093
- return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17094
- }
17095
- set CurrRec(value) {
17096
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17097
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17098
- }
17099
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17100
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17101
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17102
- }
17103
- }
17104
- get FlushUpdates() {
17105
- return this._flushUpdates;
17106
- }
17107
- get HasMainTable() {
17108
- return this._hasMainTable;
17109
- }
17110
- get CurrentRecId() {
17111
- return this._currRecId;
17112
- }
17113
- get FirstRecord() {
17114
- return this._recordsTab.getRecByIdx(0);
17115
- }
17116
- get LastRecord() {
17117
- return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17118
- }
17119
17075
  Init() {
17120
17076
  this.init();
17121
17077
  }
@@ -18688,6 +18644,12 @@ class ReturnResultBase {
18688
18644
  }
18689
18645
 
18690
18646
  class ReturnResult extends ReturnResultBase {
18647
+ get Success() {
18648
+ return this.success;
18649
+ }
18650
+ get ErrorDescription() {
18651
+ return this.errorDescription;
18652
+ }
18691
18653
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18692
18654
  super();
18693
18655
  this.errorDescription = null;
@@ -18702,12 +18664,6 @@ class ReturnResult extends ReturnResultBase {
18702
18664
  else
18703
18665
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18704
18666
  }
18705
- get Success() {
18706
- return this.success;
18707
- }
18708
- get ErrorDescription() {
18709
- return this.errorDescription;
18710
- }
18711
18667
  constructor_00(errorDescriptionCode) {
18712
18668
  this.success = false;
18713
18669
  this.ErrorId = errorDescriptionCode;
@@ -18807,13 +18763,13 @@ class Transaction {
18807
18763
  }
18808
18764
 
18809
18765
  class TaskTransactionManager {
18766
+ get isClosingTopmostTask() {
18767
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18768
+ }
18810
18769
  constructor(task) {
18811
18770
  this.task = null;
18812
18771
  this.task = task;
18813
18772
  }
18814
- get isClosingTopmostTask() {
18815
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18816
- }
18817
18773
  AllowTransaction(transBegin, forLocal) {
18818
18774
  let result;
18819
18775
  if (forLocal)
@@ -19157,12 +19113,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19157
19113
  }
19158
19114
 
19159
19115
  class DataviewManager extends DataviewManagerBase {
19160
- constructor(task) {
19161
- super(task);
19162
- this.RemoteDataviewManager = null;
19163
- this.HasRemoteData = true;
19164
- this.RemoteDataviewManager = new RemoteDataviewManager(task);
19165
- }
19166
19116
  get TaskService() {
19167
19117
  return this.Task.TaskService;
19168
19118
  }
@@ -19177,11 +19127,24 @@ class DataviewManager extends DataviewManagerBase {
19177
19127
  get VirtualDataviewManager() {
19178
19128
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19179
19129
  }
19130
+ constructor(task) {
19131
+ super(task);
19132
+ this.RemoteDataviewManager = null;
19133
+ this.HasRemoteData = true;
19134
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19135
+ }
19180
19136
  async Execute(command) {
19181
19137
  return await this.CurrentDataviewManager.Execute(command);
19182
19138
  }
19183
19139
  }
19184
19140
 
19141
+ class Sort {
19142
+ constructor() {
19143
+ this.fldIdx = 0;
19144
+ this.dir = false;
19145
+ }
19146
+ }
19147
+
19185
19148
  class SortCollection {
19186
19149
  constructor() {
19187
19150
  this._sortTab = null;
@@ -19308,18 +19271,8 @@ class MgForm extends MgFormBase {
19308
19271
  dv = this._task.DataView;
19309
19272
  return (dv);
19310
19273
  }
19311
- async moveInView(unit, direction, returnToCtrl) {
19312
- if (isNullOrUndefined(returnToCtrl))
19313
- await this.moveInView_0(unit, direction);
19314
- else
19315
- await this.moveInView_1(unit, direction, returnToCtrl);
19316
- }
19317
- async moveInView_0(unit, direction) {
19318
- await this.moveInView(unit, direction, true);
19319
- }
19320
- async moveInView_1(unit, direction, returnToCtrl) {
19274
+ async moveInView(unit, direction) {
19321
19275
  let oldRecId = Int32.MinValue;
19322
- let lastParkedCtrl;
19323
19276
  let currRec = this.GetDataview().getCurrRec();
19324
19277
  let oldTaskMode = ' ';
19325
19278
  let returnToVisibleLine = false;
@@ -19450,6 +19403,7 @@ class MgForm extends MgFormBase {
19450
19403
  try {
19451
19404
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19452
19405
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19406
+ visibleLine = this.getLastValidRow();
19453
19407
  }
19454
19408
  catch (Exception) {
19455
19409
  }
@@ -19573,15 +19527,6 @@ class MgForm extends MgFormBase {
19573
19527
  else
19574
19528
  this.SetTableTopIndex();
19575
19529
  await AccessHelper.eventsManager.handleInternalEventWithTask(this._task, InternalInterface.MG_ACT_REC_PREFIX);
19576
- if (returnToCtrl) {
19577
- lastParkedCtrl = this._task.getLastParkedCtrl();
19578
- if (lastParkedCtrl != null) {
19579
- let cursorMoved = await lastParkedCtrl.invoke();
19580
- if (!cursorMoved) {
19581
- await AccessHelper.eventsManager.HandleNonParkableControls(this._task);
19582
- }
19583
- }
19584
- }
19585
19530
  }
19586
19531
  catch (e) {
19587
19532
  if (e instanceof RecordOutOfDataViewException) {
@@ -20113,8 +20058,13 @@ class MgForm extends MgFormBase {
20113
20058
  finally {
20114
20059
  this._inRefreshDisp = false;
20115
20060
  }
20116
- if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed))
20061
+ if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed)) {
20117
20062
  this.FormRefreshed = true;
20063
+ if (this._task.isFirstRecordCycle() || AccessHelper.eventsManager.getIsInViewRefresh()) {
20064
+ Commands.addNoParameters(CommandType.SET_WC_IDLE, this);
20065
+ AccessHelper.eventsManager.setIsInViewRefresh(false);
20066
+ }
20067
+ }
20118
20068
  return true;
20119
20069
  }
20120
20070
  RefreshUI() {
@@ -21522,8 +21472,12 @@ class EventHandler {
21522
21472
  continue;
21523
21473
  else if (this._operationTab.getOperation(oper.getBlockEnd()).getServerId() < nextOperIdx)
21524
21474
  continue;
21525
- if (!taskEnd)
21526
- await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE);
21475
+ if (!taskEnd) {
21476
+ let mainLevel = this._task.getMainLevel().toLowerCase();
21477
+ if (await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE) && Environment.Instance.getSpecialImmediateHandlerEnd() &&
21478
+ mainLevel != "RP".toLowerCase() && mainLevel != "TP".toLowerCase() && mainLevel != "RS".toLowerCase() && mainLevel != "TS".toLowerCase())
21479
+ break;
21480
+ }
21527
21481
  if (this._taskMgdID !== mgdID)
21528
21482
  isChangedCurrWndRef.value = true;
21529
21483
  if (!this._task.isMainProg() && this._task.isOpenWin())
@@ -22317,13 +22271,6 @@ class UserEventsTable {
22317
22271
  }
22318
22272
 
22319
22273
  class FormsTable {
22320
- constructor(task, parentForm) {
22321
- this._task = null;
22322
- this._parentForm = null;
22323
- this._formsStringXml = null;
22324
- this._task = task;
22325
- this._parentForm = parentForm;
22326
- }
22327
22274
  get Count() {
22328
22275
  return this._formsStringXml.length;
22329
22276
  }
@@ -22332,6 +22279,13 @@ class FormsTable {
22332
22279
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22333
22280
  return null;
22334
22281
  }
22282
+ constructor(task, parentForm) {
22283
+ this._task = null;
22284
+ this._parentForm = null;
22285
+ this._formsStringXml = null;
22286
+ this._task = task;
22287
+ this._parentForm = parentForm;
22288
+ }
22335
22289
  async fillData() {
22336
22290
  this._formsStringXml = new List();
22337
22291
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22521,6 +22475,47 @@ var Task_Direction;
22521
22475
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22522
22476
  })(Task_Direction || (Task_Direction = {}));
22523
22477
  class Task extends TaskBase {
22478
+ get ParentTask() {
22479
+ return this._parentTask;
22480
+ }
22481
+ set TryingToCommit(value) {
22482
+ this._tryingToCommit = value;
22483
+ }
22484
+ get TryingToCommit() {
22485
+ return this._tryingToCommit;
22486
+ }
22487
+ get TaskService() {
22488
+ if (this._taskService == null)
22489
+ this._taskService = new RemoteTaskService();
22490
+ return this._taskService;
22491
+ }
22492
+ static get CommandsProcessor() {
22493
+ return CommandsProcessorManager.GetCommandsProcessor();
22494
+ }
22495
+ get LogicalStudioParentTask() {
22496
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22497
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22498
+ }
22499
+ return this.StudioParentTask;
22500
+ }
22501
+ get KnownToServer() {
22502
+ return this._knownToServer;
22503
+ }
22504
+ set Transaction(value) {
22505
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22506
+ }
22507
+ get Transaction() {
22508
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22509
+ }
22510
+ get TaskDefinitionId() {
22511
+ if (this.taskDefinitionId === null) {
22512
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22513
+ }
22514
+ return this.taskDefinitionId;
22515
+ }
22516
+ static get IsBlockingBatch() {
22517
+ return false;
22518
+ }
22524
22519
  constructor(parent) {
22525
22520
  super();
22526
22521
  this._dvCache = null;
@@ -22589,47 +22584,6 @@ class Task extends TaskBase {
22589
22584
  }
22590
22585
  this.constructor_1(parent);
22591
22586
  }
22592
- get ParentTask() {
22593
- return this._parentTask;
22594
- }
22595
- set TryingToCommit(value) {
22596
- this._tryingToCommit = value;
22597
- }
22598
- get TryingToCommit() {
22599
- return this._tryingToCommit;
22600
- }
22601
- get TaskService() {
22602
- if (this._taskService == null)
22603
- this._taskService = new RemoteTaskService();
22604
- return this._taskService;
22605
- }
22606
- static get CommandsProcessor() {
22607
- return CommandsProcessorManager.GetCommandsProcessor();
22608
- }
22609
- get LogicalStudioParentTask() {
22610
- if (this.StudioParentTask === null && !super.isMainProg()) {
22611
- return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22612
- }
22613
- return this.StudioParentTask;
22614
- }
22615
- get KnownToServer() {
22616
- return this._knownToServer;
22617
- }
22618
- set Transaction(value) {
22619
- this.DataviewManager.CurrentDataviewManager.Transaction = value;
22620
- }
22621
- get Transaction() {
22622
- return this.DataviewManager.CurrentDataviewManager.Transaction;
22623
- }
22624
- get TaskDefinitionId() {
22625
- if (this.taskDefinitionId === null) {
22626
- this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22627
- }
22628
- return this.taskDefinitionId;
22629
- }
22630
- static get IsBlockingBatch() {
22631
- return false;
22632
- }
22633
22587
  constructor_0() {
22634
22588
  this.ActionManager = new ActionManager();
22635
22589
  this.DataView = new DataView(this);
@@ -24440,6 +24394,7 @@ class Task extends TaskBase {
24440
24394
  this.ActionManager.enable(InternalInterface.MG_ACT_SORT_RECORDS, enable);
24441
24395
  enable = await this.checkProp(PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX, true);
24442
24396
  this.ActionManager.enable(InternalInterface.MG_ACT_VIEW_BY_KEY, enable);
24397
+ this.ActionManager.enable(InternalInterface.MG_ACT_DUMP_ENVIRONMENT, true);
24443
24398
  }
24444
24399
  setEnableZoomHandler() {
24445
24400
  this._enableZoomHandler = true;
@@ -25026,6 +24981,9 @@ class CompMainPrgTable {
25026
24981
  }
25027
24982
 
25028
24983
  class MGData {
24984
+ get ForceModal() {
24985
+ return this.forceModal;
24986
+ }
25029
24987
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25030
24988
  this._expHandlers = null;
25031
24989
  this._id = 0;
@@ -25046,9 +25004,6 @@ class MGData {
25046
25004
  else
25047
25005
  this.constructor_1(id, parent, isModal, forceModal);
25048
25006
  }
25049
- get ForceModal() {
25050
- return this.forceModal;
25051
- }
25052
25007
  constructor_0(id, parent, isModal) {
25053
25008
  this._timerHandlers = new HandlersTable();
25054
25009
  this._expHandlers = new HandlersTable();
@@ -25647,6 +25602,7 @@ class EventsManager {
25647
25602
  this.confirmationDialogTitle = 'Session is about to be terminated!';
25648
25603
  this._lastFailedFocusedControl = null;
25649
25604
  this.isSpinnerShown = false;
25605
+ this.isInViewRefresh = false;
25650
25606
  this.SpinnerStopped = new Subject();
25651
25607
  this._rtEvents = new Stack();
25652
25608
  this._eventsQueue = new MgPriorityBlockingQueue();
@@ -27486,6 +27442,7 @@ class EventsManager {
27486
27442
  }
27487
27443
  break;
27488
27444
  case InternalInterface.MG_ACT_SERVER_TERMINATION:
27445
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
27489
27446
  cmd = CommandFactory.CreateEventCommand(task.getTaskTag(), intEvtCode);
27490
27447
  cmdsToServer.Add(cmd);
27491
27448
  await CommandsProcessorManager.GetCommandsProcessor().Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
@@ -27805,6 +27762,7 @@ class EventsManager {
27805
27762
  else if (intEvtCode === InternalInterface.MG_ACT_RT_REFRESH_SCREEN && task.getMode() !== Constants.TASK_MODE_QUERY && !task.getAfterRetry()) {
27806
27763
  await dv.currRecCompute(true);
27807
27764
  }
27765
+ this.setIsInViewRefresh(true);
27808
27766
  await this.handleInternalEventWithTask(task, InternalInterface.MG_ACT_REC_PREFIX);
27809
27767
  if (!this.GetStopExecutionFlag() && !task.getPreventControlChange()) {
27810
27768
  if (!(task === LastFocusedManager.Instance.getLastFocusedTask() || !task.pathContains(LastFocusedManager.Instance.getLastFocusedTask())))
@@ -28534,6 +28492,12 @@ class EventsManager {
28534
28492
  return false;
28535
28493
  return true;
28536
28494
  }
28495
+ getIsInViewRefresh() {
28496
+ return this.isInViewRefresh;
28497
+ }
28498
+ setIsInViewRefresh(inViewRefresh) {
28499
+ this.isInViewRefresh = inViewRefresh;
28500
+ }
28537
28501
  }
28538
28502
  EventsManager.REAL_ONLY = true;
28539
28503
  EventsManager.MAX_OPER = 9999;
@@ -29050,13 +29014,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29050
29014
  }
29051
29015
 
29052
29016
  class EnhancedVerifyCommand extends VerifyCommand {
29053
- constructor() {
29054
- super();
29055
- this._buttonsID = '\0';
29056
- this._image = '\0';
29057
- this._returnValStr = null;
29058
- this._returnVal = null;
29059
- }
29060
29017
  async ProcessMessageBoxResponse(task, returnValue) {
29061
29018
  if (task !== null)
29062
29019
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29087,6 +29044,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29087
29044
  break;
29088
29045
  }
29089
29046
  }
29047
+ constructor() {
29048
+ super();
29049
+ this._buttonsID = '\0';
29050
+ this._image = '\0';
29051
+ this._returnValStr = null;
29052
+ this._returnVal = null;
29053
+ }
29090
29054
  }
29091
29055
 
29092
29056
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29183,12 +29147,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29183
29147
  }
29184
29148
 
29185
29149
  class ResultCommand extends ClientTargetedCommandBase {
29186
- constructor() {
29187
- super();
29188
- this._isNull = false;
29189
- this._attr = StorageAttribute.NONE;
29190
- this._val = null;
29191
- }
29192
29150
  async Execute(res) {
29193
29151
  if (this._isNull)
29194
29152
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29214,6 +29172,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29214
29172
  break;
29215
29173
  }
29216
29174
  }
29175
+ constructor() {
29176
+ super();
29177
+ this._isNull = false;
29178
+ this._attr = StorageAttribute.NONE;
29179
+ this._val = null;
29180
+ }
29217
29181
  }
29218
29182
 
29219
29183
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29578,19 +29542,9 @@ class CommandsTable {
29578
29542
  }
29579
29543
  }
29580
29544
 
29581
- let CurrentClientVersion = '4.1000.0-dev4100.33';
29545
+ let CurrentClientVersion = '4.1000.0-dev4100.331';
29582
29546
 
29583
29547
  class ClientManager {
29584
- constructor() {
29585
- this._globalUniqueSessionId = null;
29586
- this._buttonIsClicked = false;
29587
- RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29588
- LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29589
- LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29590
- RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29591
- this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29592
- this.RegisterDelegates();
29593
- }
29594
29548
  static get Instance() {
29595
29549
  if (ClientManager._instance === null)
29596
29550
  ClientManager._instance = new ClientManager();
@@ -29790,6 +29744,16 @@ class ClientManager {
29790
29744
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29791
29745
  }
29792
29746
  }
29747
+ constructor() {
29748
+ this._globalUniqueSessionId = null;
29749
+ this._buttonIsClicked = false;
29750
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29751
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29752
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29753
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29754
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29755
+ this.RegisterDelegates();
29756
+ }
29793
29757
  InitGuiManager() {
29794
29758
  Manager.EventsManager = EventsManager.Instance;
29795
29759
  Manager.DefaultServerName = ServerConfig.Instance.getServer();
@@ -29842,7 +29806,7 @@ class ClientManager {
29842
29806
  await MGDataCollection.Instance.addMGData(mgd, 0, true);
29843
29807
  await ClientManager.Instance.WorkThreadExecution();
29844
29808
  if (Logger.Instance.ShouldLog()) {
29845
- Logger.Instance.WriteToLog(OSEnvironment.EolSeq + "Ended on " + DateTimeUtils.ToString(DateTime.Now, "dd/MM/yyyy", Logger.Instance) + OSEnvironment.EolSeq + OSEnvironment.EolSeq, false);
29809
+ Logger.Instance.WriteToLog(OSEnvironment.EolSeq + "Ended on " + DateTimeUtils.ToString(DateTime.Now, XMLConstants.ERROR_LOG_DATE_FORMAT, Logger.Instance) + OSEnvironment.EolSeq + OSEnvironment.EolSeq, false);
29846
29810
  }
29847
29811
  }
29848
29812
  else {