@magic-xpa/engine 4.1000.0-dev4100.43 → 4.1000.0-dev4100.436

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 (60) hide show
  1. package/esm2020/index.mjs +1 -1
  2. package/esm2020/src/ClientManager.mjs +17 -14
  3. package/esm2020/src/ConstInterface.mjs +3 -1
  4. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  5. package/esm2020/src/GuiEventsProcessor.mjs +5 -5
  6. package/esm2020/src/commands/ClientToServer/DataviewCommand.mjs +6 -6
  7. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +4 -4
  8. package/esm2020/src/commands/ClientToServer/EventCommand.mjs +8 -8
  9. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +4 -4
  10. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +5 -5
  11. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +7 -7
  12. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +6 -6
  13. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +8 -8
  14. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +7 -7
  15. package/esm2020/src/data/DataView.mjs +34 -34
  16. package/esm2020/src/data/DataviewManager.mjs +7 -7
  17. package/esm2020/src/data/Record.mjs +10 -10
  18. package/esm2020/src/data/TaskTransactionManager.mjs +4 -4
  19. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +5 -5
  20. package/esm2020/src/env/Environment.mjs +14 -7
  21. package/esm2020/src/env/MirrorString.mjs +2 -3
  22. package/esm2020/src/event/Event.mjs +4 -1
  23. package/esm2020/src/event/EventHandler.mjs +8 -3
  24. package/esm2020/src/event/EventHandlerPosition.mjs +5 -1
  25. package/esm2020/src/event/EventsManager.mjs +27 -5
  26. package/esm2020/src/event/IEventsManager.mjs +1 -1
  27. package/esm2020/src/event/RunTimeEvent.mjs +23 -16
  28. package/esm2020/src/exp/ExpressionDict.mjs +8 -8
  29. package/esm2020/src/exp/ExpressionEvaluator.mjs +9 -179
  30. package/esm2020/src/gui/FormsTable.mjs +8 -8
  31. package/esm2020/src/gui/MgControl.mjs +10 -13
  32. package/esm2020/src/gui/MgForm.mjs +11 -28
  33. package/esm2020/src/http/HttpManager.mjs +8 -8
  34. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +47 -27
  35. package/esm2020/src/rt/DataviewHeaderBase.mjs +16 -16
  36. package/esm2020/src/security/UserDetails.mjs +12 -12
  37. package/esm2020/src/tasks/MGData.mjs +4 -4
  38. package/esm2020/src/tasks/RCTimer.mjs +10 -10
  39. package/esm2020/src/tasks/Task.mjs +43 -42
  40. package/esm2020/src/util/FlowMonitorQueue.mjs +107 -2
  41. package/esm2020/src/util/PrmMap.mjs +6 -6
  42. package/esm2020/src/util/ReturnResult.mjs +7 -7
  43. package/esm2020/src/util/Scrambler.mjs +3 -1
  44. package/fesm2015/magic-xpa-engine.mjs +548 -591
  45. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  46. package/fesm2020/magic-xpa-engine.mjs +536 -547
  47. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  48. package/package.json +6 -6
  49. package/src/ConstInterface.d.ts +2 -0
  50. package/src/env/Environment.d.ts +2 -0
  51. package/src/event/EventsManager.d.ts +4 -0
  52. package/src/event/IEventsManager.d.ts +2 -0
  53. package/src/event/RunTimeEvent.d.ts +3 -0
  54. package/src/exp/ExpressionEvaluator.d.ts +1 -10
  55. package/src/gui/MgControl.d.ts +0 -1
  56. package/src/gui/MgForm.d.ts +1 -3
  57. package/src/remote/RemoteCommandsProcessor.d.ts +1 -0
  58. package/src/util/FlowMonitorQueue.d.ts +8 -0
  59. package/src/util/PrmMap.d.ts +1 -1
  60. 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,27 @@ class MgPriorityBlockingQueue {
3124
3126
  }
3125
3127
 
3126
3128
  class RunTimeEvent extends RunTimeEventBase {
3129
+ set ShouldHandleZoom(value) {
3130
+ this._shouldHandleZoom = value;
3131
+ }
3132
+ get ShouldHandleZoom() {
3133
+ return this._shouldHandleZoom;
3134
+ }
3135
+ set Control(value) {
3136
+ this._ctrl = value;
3137
+ }
3138
+ set DisplayLine(value) {
3139
+ this._displayLine = value;
3140
+ }
3141
+ get Control() {
3142
+ return this._ctrl;
3143
+ }
3144
+ get ControlsList() {
3145
+ return this._controlsList;
3146
+ }
3147
+ get Direction() {
3148
+ return this._direction;
3149
+ }
3127
3150
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3128
3151
  super();
3129
3152
  this._controlsList = null;
@@ -3152,6 +3175,7 @@ class RunTimeEvent extends RunTimeEventBase {
3152
3175
  this._task = null;
3153
3176
  this._taskTag = null;
3154
3177
  this._val = null;
3178
+ this._shouldHandleZoom = false;
3155
3179
  this.IgnoreSpecifiedControl = false;
3156
3180
  this.LastFocusedVal = null;
3157
3181
  if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase))
@@ -3185,21 +3209,6 @@ class RunTimeEvent extends RunTimeEventBase {
3185
3209
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3186
3210
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3187
3211
  }
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
3212
  constructor_5(taskRef) {
3204
3213
  this.init(taskRef);
3205
3214
  }
@@ -3529,7 +3538,17 @@ class FlowMonitorQueue {
3529
3538
  this._isRecompute = false;
3530
3539
  this._isTask = false;
3531
3540
  this._isTaskFlow = false;
3541
+ this._isDataView = false;
3532
3542
  this.ShouldSerialize = false;
3543
+ this.padRight = (string, length, character = ' ') => {
3544
+ let result = "";
3545
+ let totalLength = length - string.length;
3546
+ for (let i = 0; i < totalLength; i++) {
3547
+ result = character + result;
3548
+ }
3549
+ result = result + string;
3550
+ return result;
3551
+ };
3533
3552
  }
3534
3553
  static get Instance() {
3535
3554
  if (FlowMonitorQueue._instance === null)
@@ -3587,6 +3606,9 @@ class FlowMonitorQueue {
3587
3606
  case ConstInterface.MG_ATTR_TASKFLW:
3588
3607
  this._isTaskFlow = XmlParser.getBoolean(valueStr);
3589
3608
  break;
3609
+ case ConstInterface.MG_TAG_DATAVIEW:
3610
+ this._isDataView = XmlParser.getBoolean(valueStr);
3611
+ break;
3590
3612
  case ConstInterface.MG_ATTR_RECOMP:
3591
3613
  this._isRecompute = XmlParser.getBoolean(valueStr);
3592
3614
  break;
@@ -3644,6 +3666,96 @@ class FlowMonitorQueue {
3644
3666
  Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
3645
3667
  }
3646
3668
  }
3669
+ appendVirtualsAndParameters(currentValues) {
3670
+ let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, InternalInterface.MG_ACT_REC_PREFIX);
3671
+ act.setInfo(currentValues);
3672
+ this._queue.put(act);
3673
+ }
3674
+ addDataViewFlow(task) {
3675
+ if (this._isDataView) {
3676
+ let fldTab = task.DataView.GetFieldsTab();
3677
+ let preparedDisplayString = "";
3678
+ let finaldisplayData = "\n";
3679
+ let fldValue;
3680
+ let data = "";
3681
+ for (let i = 0; i < fldTab.getSize(); i++) {
3682
+ let fldDef = fldTab.getField(i);
3683
+ if (!fldDef.IsEventHandlerField && (fldDef.IsVirtual && !fldDef.VirAsReal) || fldDef.isParam()) {
3684
+ fldValue = fldDef.isNull() ? fldDef.getNullValue() : fldDef.getValue(true);
3685
+ data = this.getFieldData(fldDef.getType(), fldValue, fldDef.getPicture(), fldDef.getCellsType(), task);
3686
+ preparedDisplayString = this.PrepareDisplayString(fldDef.isParam(), fldDef.getVarName(), data, true);
3687
+ finaldisplayData = finaldisplayData + preparedDisplayString + "\n";
3688
+ }
3689
+ }
3690
+ this.appendVirtualsAndParameters(finaldisplayData);
3691
+ }
3692
+ }
3693
+ getFieldData(Storagetype, data, picture, vecCellType, task) {
3694
+ switch (Storagetype) {
3695
+ case StorageAttribute.DOTNET:
3696
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3697
+ break;
3698
+ case StorageAttribute.BLOB:
3699
+ {
3700
+ if (BlobType.isValidBlob(data)) {
3701
+ let contentType = BlobType.getContentType(data);
3702
+ if (contentType == BlobType.CONTENT_TYPE_ANSI || contentType == BlobType.CONTENT_TYPE_UNICODE)
3703
+ data = data != null ? BlobType.getString(data) : "";
3704
+ else
3705
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3706
+ }
3707
+ else
3708
+ data = "";
3709
+ }
3710
+ break;
3711
+ case StorageAttribute.NUMERIC:
3712
+ case StorageAttribute.DATE:
3713
+ case StorageAttribute.TIME:
3714
+ let conv = DisplayConvertor.Instance;
3715
+ data = conv.mg2disp(data, " ", new PIC(picture, Storagetype, task.getCompIdx()), false, task.getCompIdx(), false);
3716
+ break;
3717
+ case StorageAttribute.BLOB_VECTOR:
3718
+ let vecOutData;
3719
+ if (data == null) {
3720
+ vecOutData = "[]";
3721
+ }
3722
+ else {
3723
+ let cellAtt = vecCellType;
3724
+ let vector = new VectorType(data);
3725
+ if (cellAtt == StorageAttribute.BLOB && !VectorType.validateBlobContents(data))
3726
+ vecOutData = "[]";
3727
+ else {
3728
+ let vecSize = VectorType.getVecSize(data);
3729
+ let cellPicture = (cellAtt == StorageAttribute.NUMERIC || cellAtt == StorageAttribute.DATE || cellAtt == StorageAttribute.TIME) ? PIC.buildPicture(cellAtt, vector.getVecCell(1), task.getCompIdx(), true).getFormat() : picture;
3730
+ vecOutData = "[";
3731
+ for (let i = 0; i < vecSize; i++) {
3732
+ vecOutData += this.getFieldData(cellAtt, vector.getVecCell(i + 1), cellPicture, vecCellType, task);
3733
+ vecOutData += i < vecSize - 1 ? "," : "]";
3734
+ }
3735
+ }
3736
+ }
3737
+ data = vecOutData;
3738
+ break;
3739
+ case StorageAttribute.BOOLEAN:
3740
+ data = data == "1" ? "TRUE" : "FALSE";
3741
+ break;
3742
+ }
3743
+ return data;
3744
+ }
3745
+ PrepareDisplayString(mode, name, valueContent, addDoubleQuotes) {
3746
+ let str = "";
3747
+ let finalStringToDisplay = "";
3748
+ if (addDoubleQuotes)
3749
+ finalStringToDisplay = finalStringToDisplay + "\"";
3750
+ finalStringToDisplay = finalStringToDisplay + name;
3751
+ if (addDoubleQuotes)
3752
+ finalStringToDisplay = finalStringToDisplay + "\"";
3753
+ let paddedName = this.padRight(name, 34);
3754
+ let formatOfStringVirtual = `Virtual`;
3755
+ let formatOfStringParameter = `Parameter`;
3756
+ str = (mode ? formatOfStringParameter : formatOfStringVirtual) + " : " + `${paddedName}` + " : " + `${valueContent.trim()}`;
3757
+ return str;
3758
+ }
3647
3759
  addTaskFlowRec(id, state, taskInfo) {
3648
3760
  if (this._enabled && this._isTaskFlow) {
3649
3761
  let info;
@@ -3808,6 +3920,7 @@ class FlowMonitorQueue {
3808
3920
  }
3809
3921
  }
3810
3922
  FlowMonitorQueue._instance = null;
3923
+ FlowMonitorQueue.UNPRINTABLE_STR_LOG = "#UNPRINTABLE#";
3811
3924
  FlowMonitorQueue.S_EVENT_STR1 = ">>Starts ";
3812
3925
  FlowMonitorQueue.S_EVENT_STR2 = " Event";
3813
3926
  FlowMonitorQueue.S_EVENT_PROPAGATED = "Event was propagated";
@@ -3869,6 +3982,15 @@ class TimerObjectCollection {
3869
3982
  }
3870
3983
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3871
3984
  class RCTimer extends MgTimer {
3985
+ get TimerIntervalMiliSeconds() {
3986
+ return this._timerIntervalMilliSeconds;
3987
+ }
3988
+ set IsIdleTimer(value) {
3989
+ this._isIdle = value;
3990
+ }
3991
+ get IsIdleTimer() {
3992
+ return this._isIdle;
3993
+ }
3872
3994
  constructor(mgData, milliseconds, isIdle) {
3873
3995
  super(milliseconds);
3874
3996
  this._mgData = null;
@@ -3880,15 +4002,6 @@ class RCTimer extends MgTimer {
3880
4002
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3881
4003
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3882
4004
  }
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
4005
  GetMgdata() {
3893
4006
  return this._mgData;
3894
4007
  }
@@ -4034,6 +4147,9 @@ class ExecutionStack {
4034
4147
  }
4035
4148
 
4036
4149
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4150
+ get CommandTypeAttribute() {
4151
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4152
+ }
4037
4153
  constructor() {
4038
4154
  super();
4039
4155
  this.ExecutionStack = null;
@@ -4047,9 +4163,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4047
4163
  this.CheckOnly = false;
4048
4164
  this.DitIdx = Int32.MinValue;
4049
4165
  }
4050
- get CommandTypeAttribute() {
4051
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4052
- }
4053
4166
  SerializeCommandData() {
4054
4167
  let helper = new CommandSerializationHelper();
4055
4168
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4101,6 +4214,8 @@ class Scrambler {
4101
4214
  let currChr;
4102
4215
  let length = inVal.length;
4103
4216
  let random = Scrambler.RandomScramble(length);
4217
+ if (random === -18)
4218
+ random = Scrambler.RandomScramble(length);
4104
4219
  let key = Math.floor(Math.sqrt(length)) + random;
4105
4220
  let outVal = new StringBuilder(length + 1);
4106
4221
  outVal.Append(String.fromCharCode(random + 81));
@@ -4504,13 +4619,6 @@ class HttpClientAsync extends HttpClientBase {
4504
4619
  }
4505
4620
 
4506
4621
  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
4622
  getHttpClient() {
4515
4623
  if (this.IsAbortingMagicEngine)
4516
4624
  return new HttpClientSync();
@@ -4530,6 +4638,13 @@ class HttpManager {
4530
4638
  }
4531
4639
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4532
4640
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4641
+ constructor() {
4642
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4643
+ this._httpClientAsync = null;
4644
+ this._isAbortingMagicEngine = false;
4645
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4646
+ this.RegisterBasicDelegates();
4647
+ }
4533
4648
  RegisterBasicDelegates() {
4534
4649
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4535
4650
  }
@@ -5075,6 +5190,12 @@ var RequestStatus;
5075
5190
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5076
5191
  })(RequestStatus || (RequestStatus = {}));
5077
5192
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5193
+ static GetInstance() {
5194
+ if (RemoteCommandsProcessor._instance === null) {
5195
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5196
+ }
5197
+ return RemoteCommandsProcessor._instance;
5198
+ }
5078
5199
  constructor() {
5079
5200
  super();
5080
5201
  this._lastRequestTime = 0;
@@ -5085,12 +5206,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5085
5206
  HttpManager.GetInstance();
5086
5207
  this.RegisterDelegates();
5087
5208
  }
5088
- static GetInstance() {
5089
- if (RemoteCommandsProcessor._instance === null) {
5090
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5091
- }
5092
- return RemoteCommandsProcessor._instance;
5093
- }
5094
5209
  CheckAndSetSessionCounter(newSessionCounter) {
5095
5210
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5096
5211
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5123,10 +5238,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5238
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5239
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5240
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5241
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5242
  let dataStorage = window.localStorage;
5127
5243
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5244
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5245
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5246
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5247
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5248
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5249
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5470,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5470
  let reqBuf;
5354
5471
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5472
  let globalParamsString = null;
5473
+ let envVarsString = null;
5356
5474
  if (this.DelayCommandExecution)
5357
5475
  return;
5358
5476
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5496,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5496
  let buffer = new StringBuilder();
5379
5497
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5498
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5499
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5500
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5501
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5502
+ }
5503
+ else {
5384
5504
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5505
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5506
+ }
5385
5507
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5508
+ changes.Append(envVarsString);
5387
5509
  if (changes.Length > 0) {
5388
5510
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5511
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5544,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5544
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5545
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5546
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5547
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5548
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5549
  }
5427
5550
  }
5428
5551
  FlowMonitorQueue.Instance.enable(false);
5429
5552
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5553
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5554
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5555
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5556
  let dataStorage = window.localStorage;
5433
5557
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5558
  if (ctxRemoved === "1") {
@@ -5524,11 +5648,22 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5524
5648
  }
5525
5649
  }
5526
5650
  }
5527
- window.localStorage.clear();
5651
+ this.clearLocalStorage();
5528
5652
  throw ex;
5529
5653
  }
5530
5654
  return response;
5531
5655
  }
5656
+ clearLocalStorage() {
5657
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT);
5658
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK);
5659
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST);
5660
+ window.localStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5661
+ window.localStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5662
+ window.localStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5663
+ window.localStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5664
+ window.localStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5665
+ window.localStorage.removeItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5666
+ }
5532
5667
  HandleErrorResponse(response) {
5533
5668
  try {
5534
5669
  Logger.Instance.WriteServerMessagesToLog("MESSAGE FROM SERVER: " + response);
@@ -5730,21 +5865,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5730
5865
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5731
5866
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5732
5867
  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
5868
  get ScrambleMessages() {
5749
5869
  return this._scrambleMessages;
5750
5870
  }
@@ -5766,6 +5886,21 @@ class HandshakeResponse {
5766
5886
  get MaxInternalLogLevel() {
5767
5887
  return this._maxInternalLogLevel;
5768
5888
  }
5889
+ constructor(responseXML) {
5890
+ this._scrambleMessages = true;
5891
+ this._contextId = null;
5892
+ this._privateSessionId = null;
5893
+ this._inputPassword = false;
5894
+ this._httpTimeout = 0;
5895
+ this._systemLogin = null;
5896
+ this._maxInternalLogLevel = null;
5897
+ try {
5898
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5899
+ }
5900
+ catch (ex) {
5901
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5902
+ }
5903
+ }
5769
5904
  FillFromJSON(error, result) {
5770
5905
  if (error != null) {
5771
5906
  throw error;
@@ -6722,7 +6857,7 @@ ExpressionDict.expDesc = [
6722
6857
  null,
6723
6858
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6859
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6860
+ null,
6726
6861
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6862
  null,
6728
6863
  null,
@@ -7171,12 +7306,12 @@ ExpressionDict.expDesc = [
7171
7306
  null,
7172
7307
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7308
  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),
7309
+ null,
7310
+ null,
7311
+ null,
7312
+ null,
7313
+ null,
7314
+ null,
7180
7315
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7316
  null,
7182
7317
  null,
@@ -7263,48 +7398,6 @@ ExpressionDict.expDesc = [
7263
7398
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7399
  ];
7265
7400
 
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
7401
  class EventHandlerPosition {
7309
7402
  constructor() {
7310
7403
  this._handlerIdx = 0;
@@ -7361,6 +7454,9 @@ class EventHandlerPosition {
7361
7454
  case InternalInterface.MG_ACT_REC_SUFFIX:
7362
7455
  case InternalInterface.MG_ACT_CTRL_PREFIX:
7363
7456
  case InternalInterface.MG_ACT_CTRL_SUFFIX: {
7457
+ if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
7458
+ FlowMonitorQueue.Instance.addDataViewFlow(this._task);
7459
+ }
7364
7460
  if (this._handlerIdx === -1) {
7365
7461
  for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
7366
7462
  let handler = this._handlersTab.getHandler(this._handlerIdx);
@@ -7495,11 +7591,53 @@ class EventHandlerPosition {
7495
7591
  this._task = pathParentTask;
7496
7592
  }
7497
7593
  }
7498
- }
7499
- EventHandlerPosition.PHASE_CONTROL_SPECIFIC = 1;
7500
- EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7501
- EventHandlerPosition.PHASE_GLOBAL = 3;
7502
- EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7594
+ }
7595
+ EventHandlerPosition.PHASE_CONTROL_SPECIFIC = 1;
7596
+ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7597
+ EventHandlerPosition.PHASE_GLOBAL = 3;
7598
+ EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7599
+
7600
+ var DataViewCommandType;
7601
+ (function (DataViewCommandType) {
7602
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7603
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7604
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7605
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7606
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7607
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7608
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7609
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7610
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7611
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7612
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7613
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7614
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7615
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7616
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7617
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7618
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7619
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7620
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7621
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7622
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7623
+ })(DataViewCommandType || (DataViewCommandType = {}));
7624
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7625
+ get CommandTypeAttribute() {
7626
+ throw new NotImplementedException();
7627
+ }
7628
+ SerializeCommandData() {
7629
+ Debug.Assert(false, "Dataview commands need not be serialized");
7630
+ return null;
7631
+ }
7632
+ get ShouldSerialize() {
7633
+ return false;
7634
+ }
7635
+ constructor() {
7636
+ super();
7637
+ this.CommandType = 0;
7638
+ this.TaskTag = null;
7639
+ }
7640
+ }
7503
7641
 
7504
7642
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7643
  constructor() {
@@ -7720,12 +7858,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7720
7858
  }
7721
7859
 
7722
7860
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7723
- constructor() {
7724
- super();
7725
- this.TaskTag = null;
7726
- this.FldId = 0;
7727
- this.IgnoreSubformRecompute = false;
7728
- }
7729
7861
  get CommandTypeAttribute() {
7730
7862
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7731
7863
  }
@@ -7737,17 +7869,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7737
7869
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7738
7870
  return helper.GetString();
7739
7871
  }
7872
+ constructor() {
7873
+ super();
7874
+ this.TaskTag = null;
7875
+ this.FldId = 0;
7876
+ this.IgnoreSubformRecompute = false;
7877
+ }
7740
7878
  getCommandInfo() {
7741
7879
  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
7880
  }
7743
7881
  }
7744
7882
 
7745
7883
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7746
- constructor() {
7747
- super();
7748
- this.TaskTag = null;
7749
- this.ReversibleExit = false;
7750
- }
7751
7884
  get CommandTypeAttribute() {
7752
7885
  return ConstInterface.MG_ATTR_VAL_TRANS;
7753
7886
  }
@@ -7761,6 +7894,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7761
7894
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7762
7895
  return helper.GetString();
7763
7896
  }
7897
+ constructor() {
7898
+ super();
7899
+ this.TaskTag = null;
7900
+ this.ReversibleExit = false;
7901
+ }
7764
7902
  getCommandInfo() {
7765
7903
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7766
7904
  }
@@ -7779,6 +7917,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7779
7917
  }
7780
7918
 
7781
7919
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7920
+ get CommandTypeAttribute() {
7921
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7922
+ }
7782
7923
  constructor() {
7783
7924
  super();
7784
7925
  this.TaskTag = null;
@@ -7787,9 +7928,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7787
7928
  this.MprgCreator = null;
7788
7929
  this.LengthExpVal = Int32.MinValue;
7789
7930
  }
7790
- get CommandTypeAttribute() {
7791
- return ConstInterface.MG_ATTR_VAL_EVAL;
7792
- }
7793
7931
  SerializeCommandData() {
7794
7932
  let helper = new CommandSerializationHelper();
7795
7933
  helper.SerializeTaskTag(this.TaskTag);
@@ -7837,10 +7975,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7837
7975
  }
7838
7976
 
7839
7977
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7840
- constructor() {
7841
- super();
7842
- this.Text = null;
7843
- }
7844
7978
  get CommandTypeAttribute() {
7845
7979
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7846
7980
  }
@@ -7850,6 +7984,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7850
7984
  SerializeCommandData() {
7851
7985
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7852
7986
  }
7987
+ constructor() {
7988
+ super();
7989
+ this.Text = null;
7990
+ }
7853
7991
  getCommandInfo() {
7854
7992
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7855
7993
  }
@@ -8136,13 +8274,6 @@ class CommandFactory {
8136
8274
  }
8137
8275
  }
8138
8276
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8277
  var ParamParseResult;
8147
8278
  (function (ParamParseResult) {
8148
8279
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8152,10 +8283,6 @@ var ParamParseResult;
8152
8283
  })(ParamParseResult || (ParamParseResult = {}));
8153
8284
 
8154
8285
  class PrmMap {
8155
- constructor() {
8156
- this.values = null;
8157
- this.values = new Dictionary();
8158
- }
8159
8286
  getvalue(s) {
8160
8287
  if (this.values.ContainsKey(s))
8161
8288
  return this.values.get_Item(s);
@@ -8168,6 +8295,10 @@ class PrmMap {
8168
8295
  remove(s) {
8169
8296
  this.values.Remove(s);
8170
8297
  }
8298
+ constructor() {
8299
+ this.values = null;
8300
+ this.values = new Dictionary();
8301
+ }
8171
8302
  }
8172
8303
  class MirrorPrmMap extends PrmMap {
8173
8304
  constructor(type) {
@@ -8248,7 +8379,7 @@ class MirrorPrmMap extends PrmMap {
8248
8379
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8380
  }
8250
8381
  }
8251
- RestoreGlobalParams(xml) {
8382
+ RestoreParams(xml) {
8252
8383
  let parser = new XmlParser(xml);
8253
8384
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8385
  }
@@ -8323,6 +8454,7 @@ class Environment {
8323
8454
  this._debugMode = 0;
8324
8455
  this._significantNumSize = 0;
8325
8456
  this._specialAnsiExpression = false;
8457
+ this._specialImmediatehandlerEnd = false;
8326
8458
  this._specialShowStatusBarPanes = false;
8327
8459
  this._specialRouteToRootProgOnContextRecreation = false;
8328
8460
  this._specialCancelOnCreate = false;
@@ -8476,6 +8608,9 @@ class Environment {
8476
8608
  case ConstInterface.MG_ATTR_LOCAL_FLAGS:
8477
8609
  this._localFlags = valueStr;
8478
8610
  break;
8611
+ case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
8612
+ this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
8613
+ break;
8479
8614
  case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
8480
8615
  this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
8481
8616
  break;
@@ -8680,6 +8815,9 @@ class Environment {
8680
8815
  GetLocalFlag(f) {
8681
8816
  return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
8682
8817
  }
8818
+ getSpecialImmediateHandlerEnd() {
8819
+ return this._specialImmediatehandlerEnd;
8820
+ }
8683
8821
  getSpecialAnsiExpression() {
8684
8822
  return this._specialAnsiExpression;
8685
8823
  }
@@ -8749,6 +8887,12 @@ class Environment {
8749
8887
  }
8750
8888
  Environment.Instance = new Environment();
8751
8889
  class EnvironmentDetails {
8890
+ set UpdateInQueryMode(value) {
8891
+ this._updateInQueryMode = value;
8892
+ }
8893
+ set CreateInModifyMode(value) {
8894
+ this._createInModifyMode = value;
8895
+ }
8752
8896
  constructor() {
8753
8897
  this._createInModifyMode = false;
8754
8898
  this._updateInQueryMode = false;
@@ -8759,12 +8903,6 @@ class EnvironmentDetails {
8759
8903
  this.ProjDir = null;
8760
8904
  this.CompIdx = 0;
8761
8905
  }
8762
- set UpdateInQueryMode(value) {
8763
- this._updateInQueryMode = value;
8764
- }
8765
- set CreateInModifyMode(value) {
8766
- this._createInModifyMode = value;
8767
- }
8768
8906
  allowUpdateInQueryMode() {
8769
8907
  return this._updateInQueryMode;
8770
8908
  }
@@ -8852,17 +8990,6 @@ class GlobalParams extends MirrorPrmMap {
8852
8990
  GlobalParams.Instance = new GlobalParams();
8853
8991
 
8854
8992
  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
8993
  setIsLoggedIn(value) {
8867
8994
  this.IsLoggedIn = value;
8868
8995
  }
@@ -8882,6 +9009,17 @@ class UserDetails {
8882
9009
  UserDetails._instance = new UserDetails();
8883
9010
  return UserDetails._instance;
8884
9011
  }
9012
+ constructor() {
9013
+ this.UserName = null;
9014
+ this.UserID = null;
9015
+ this.UserInfo = null;
9016
+ this.Password = null;
9017
+ this.IsLoggedIn = false;
9018
+ this.UserName = NString.Empty;
9019
+ this.UserInfo = NString.Empty;
9020
+ this.IsLoggedIn = false;
9021
+ this.setUserID(NString.Empty);
9022
+ }
8885
9023
  fillData(parser) {
8886
9024
  let tokensVector;
8887
9025
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9690,8 +9828,7 @@ class MirrorString {
9690
9828
  this._reserved = false;
9691
9829
  }
9692
9830
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9831
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9832
  }
9696
9833
  init(name, xmlParser) {
9697
9834
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -11257,11 +11394,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11394
  val1 = valStack.pop();
11258
11395
  this.eval_op_eoy(resVal, val1);
11259
11396
  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
11397
  case ExpressionInterface.EXP_OP_VARSET:
11266
11398
  val2 = valStack.pop();
11267
11399
  val1 = valStack.pop();
@@ -11626,41 +11758,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11758
  val1 = valStack.pop();
11627
11759
  this.eval_op_taskType(resVal, val1);
11628
11760
  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
11761
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11762
  val1 = valStack.pop();
11666
11763
  this.eval_op_tsk_instance(resVal, val1);
@@ -11689,7 +11786,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11689
11786
  Exp_params = new Array(nArgs);
11690
11787
  for (j = 0; j < nArgs; j++)
11691
11788
  Exp_params[nArgs - 1 - j] = valStack.pop();
11692
- this.eval_op_CallJS(this.ExpTask, valStack.pop().StrVal, Exp_params, resVal);
11789
+ await this.eval_op_CallJS(this.ExpTask, valStack.pop().StrVal, Exp_params, resVal);
11693
11790
  }
11694
11791
  break;
11695
11792
  case ExpressionInterface.EXP_OP_SET_COOKIE:
@@ -13299,12 +13396,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13396
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13397
  await fld.updateDisplay();
13301
13398
  }
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
13399
  eval_op_like(source, maskOrg, resVal) {
13309
13400
  let i;
13310
13401
  let j;
@@ -13861,54 +13952,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13952
  resultStr.Replace('\\@', '@');
13862
13953
  resVal.StrVal = resultStr.ToString();
13863
13954
  }
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
13955
  eval_op_tsk_instance(resVal, Parent) {
13913
13956
  let tag = 0;
13914
13957
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13965,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13965
  resVal.MgNumVal = new NUM_TYPE();
13923
13966
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13967
  }
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
13968
  eval_op_getParam(resVal, name) {
14004
13969
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13970
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -14199,7 +14164,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14199
14164
  resVal.MgNumVal = NUM_TYPE.from_double(programIndex);
14200
14165
  }
14201
14166
  }
14202
- eval_op_CallJS(task, methodName, expVal, resVal) {
14167
+ async eval_op_CallJS(task, methodName, expVal, resVal) {
14203
14168
  resVal.Attr = StorageAttribute.ALPHA;
14204
14169
  resVal.StrVal = '';
14205
14170
  if (task.isMainProg()) {
@@ -14209,6 +14174,10 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14209
14174
  let form = task.getForm();
14210
14175
  let args = this.params2arguments(expVal, 0, expVal.length);
14211
14176
  if (!isNullOrUndefined(args)) {
14177
+ if (task.isFirstRecordCycle()) {
14178
+ Commands.invoke();
14179
+ await Thread.Sleep(10);
14180
+ }
14212
14181
  resVal.StrVal = Commands.addCallJS(form, form.UniqueName, methodName, args);
14213
14182
  resVal.Attr = StorageAttribute.ALPHA;
14214
14183
  }
@@ -14517,6 +14486,12 @@ class DataViewBase extends GuiDataViewBase {
14517
14486
  }
14518
14487
 
14519
14488
  class Record {
14489
+ get InCompute() {
14490
+ return this._inCompute;
14491
+ }
14492
+ get InRecompute() {
14493
+ return this._inRecompute;
14494
+ }
14520
14495
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14521
14496
  this._id = Int32.MinValue;
14522
14497
  this.dbViewRowIdx = 0;
@@ -14534,12 +14509,6 @@ class Record {
14534
14509
  else
14535
14510
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14536
14511
  }
14537
- get InCompute() {
14538
- return this._inCompute;
14539
- }
14540
- get InRecompute() {
14541
- return this._inRecompute;
14542
- }
14543
14512
  constructor_0(dvOrTableCache) {
14544
14513
  if (dvOrTableCache instanceof DataViewBase)
14545
14514
  this._dataview = dvOrTableCache;
@@ -15335,14 +15304,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15335
15304
  Record.INCREASE = true;
15336
15305
  Record.DECREASE = false;
15337
15306
  class DcValuesReference extends ObjectReferenceBase {
15307
+ get DcValues() {
15308
+ return this.Referent;
15309
+ }
15338
15310
  constructor(controlId, referencedDcValues) {
15339
15311
  super(referencedDcValues);
15340
15312
  this.ditIdx = 0;
15341
15313
  this.ditIdx = controlId;
15342
15314
  }
15343
- get DcValues() {
15344
- return this.Referent;
15345
- }
15346
15315
  Clone() {
15347
15316
  return new DcValuesReference(this.ditIdx, this.Referent);
15348
15317
  }
@@ -15618,21 +15587,6 @@ class RecordsTable {
15618
15587
  RecordsTable.REC_NOT_FOUND = -1;
15619
15588
 
15620
15589
  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
15590
  get ReturnField() {
15637
15591
  if (this.returnfield === null && this._retVal !== null)
15638
15592
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15653,6 +15607,21 @@ class DataviewHeaderBase {
15653
15607
  get LinkEvaluateCondition() {
15654
15608
  return this._linkEvalCondition;
15655
15609
  }
15610
+ constructor(task) {
15611
+ this._cond = null;
15612
+ this._task = null;
15613
+ this.Loc = null;
15614
+ this._dir = '\0';
15615
+ this._id = 0;
15616
+ this._keyIdx = 0;
15617
+ this._retVal = null;
15618
+ this.returnfield = null;
15619
+ this.LinkStartAfterField = 0;
15620
+ this.KeyExpression = 0;
15621
+ this._task = task;
15622
+ this._keyIdx = -1;
15623
+ this._cond = new YesNoExp(true);
15624
+ }
15656
15625
  SetAttributes(attributes) {
15657
15626
  let keys = attributes.Keys;
15658
15627
  keys.forEach((text) => {
@@ -16943,16 +16912,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16943
16912
  }
16944
16913
 
16945
16914
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16915
+ set SerializedDCVals(value) {
16916
+ this.parser.setXMLdata(value);
16917
+ this.parser.setCurrIndex(0);
16918
+ }
16946
16919
  constructor() {
16947
16920
  super();
16948
16921
  this.dcv = null;
16949
16922
  this.parser = null;
16950
16923
  this.parser = new XmlParser();
16951
16924
  }
16952
- set SerializedDCVals(value) {
16953
- this.parser.setXMLdata(value);
16954
- this.parser.setCurrIndex(0);
16955
- }
16956
16925
  Build() {
16957
16926
  this.dcv = null;
16958
16927
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17032,6 +17001,39 @@ const RECOVERY_ACT_NONE = 'N';
17032
17001
  const TRANS_STAT_CLOSED = 'C';
17033
17002
  const TRANS_STAT_OPENED = 'O';
17034
17003
  class DataView extends DataViewBase {
17004
+ set InsertAt(value) {
17005
+ this._insertAt = value;
17006
+ }
17007
+ get InsertAt() {
17008
+ return this._insertAt;
17009
+ }
17010
+ get CurrRec() {
17011
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17012
+ }
17013
+ set CurrRec(value) {
17014
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17015
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17016
+ }
17017
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17018
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17019
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17020
+ }
17021
+ }
17022
+ get FlushUpdates() {
17023
+ return this._flushUpdates;
17024
+ }
17025
+ get HasMainTable() {
17026
+ return this._hasMainTable;
17027
+ }
17028
+ get CurrentRecId() {
17029
+ return this._currRecId;
17030
+ }
17031
+ get FirstRecord() {
17032
+ return this._recordsTab.getRecByIdx(0);
17033
+ }
17034
+ get LastRecord() {
17035
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17036
+ }
17035
17037
  constructor(taskOrDataView) {
17036
17038
  super();
17037
17039
  this._cacheLruTimeStamp = 0;
@@ -17083,39 +17085,6 @@ class DataView extends DataViewBase {
17083
17085
  Object.assign(this, taskOrDataView);
17084
17086
  }
17085
17087
  }
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
17088
  Init() {
17120
17089
  this.init();
17121
17090
  }
@@ -18688,6 +18657,12 @@ class ReturnResultBase {
18688
18657
  }
18689
18658
 
18690
18659
  class ReturnResult extends ReturnResultBase {
18660
+ get Success() {
18661
+ return this.success;
18662
+ }
18663
+ get ErrorDescription() {
18664
+ return this.errorDescription;
18665
+ }
18691
18666
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18692
18667
  super();
18693
18668
  this.errorDescription = null;
@@ -18702,12 +18677,6 @@ class ReturnResult extends ReturnResultBase {
18702
18677
  else
18703
18678
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18704
18679
  }
18705
- get Success() {
18706
- return this.success;
18707
- }
18708
- get ErrorDescription() {
18709
- return this.errorDescription;
18710
- }
18711
18680
  constructor_00(errorDescriptionCode) {
18712
18681
  this.success = false;
18713
18682
  this.ErrorId = errorDescriptionCode;
@@ -18807,13 +18776,13 @@ class Transaction {
18807
18776
  }
18808
18777
 
18809
18778
  class TaskTransactionManager {
18779
+ get isClosingTopmostTask() {
18780
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18781
+ }
18810
18782
  constructor(task) {
18811
18783
  this.task = null;
18812
18784
  this.task = task;
18813
18785
  }
18814
- get isClosingTopmostTask() {
18815
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18816
- }
18817
18786
  AllowTransaction(transBegin, forLocal) {
18818
18787
  let result;
18819
18788
  if (forLocal)
@@ -19157,12 +19126,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19157
19126
  }
19158
19127
 
19159
19128
  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
19129
  get TaskService() {
19167
19130
  return this.Task.TaskService;
19168
19131
  }
@@ -19177,11 +19140,24 @@ class DataviewManager extends DataviewManagerBase {
19177
19140
  get VirtualDataviewManager() {
19178
19141
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19179
19142
  }
19143
+ constructor(task) {
19144
+ super(task);
19145
+ this.RemoteDataviewManager = null;
19146
+ this.HasRemoteData = true;
19147
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19148
+ }
19180
19149
  async Execute(command) {
19181
19150
  return await this.CurrentDataviewManager.Execute(command);
19182
19151
  }
19183
19152
  }
19184
19153
 
19154
+ class Sort {
19155
+ constructor() {
19156
+ this.fldIdx = 0;
19157
+ this.dir = false;
19158
+ }
19159
+ }
19160
+
19185
19161
  class SortCollection {
19186
19162
  constructor() {
19187
19163
  this._sortTab = null;
@@ -19308,18 +19284,8 @@ class MgForm extends MgFormBase {
19308
19284
  dv = this._task.DataView;
19309
19285
  return (dv);
19310
19286
  }
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) {
19287
+ async moveInView(unit, direction) {
19321
19288
  let oldRecId = Int32.MinValue;
19322
- let lastParkedCtrl;
19323
19289
  let currRec = this.GetDataview().getCurrRec();
19324
19290
  let oldTaskMode = ' ';
19325
19291
  let returnToVisibleLine = false;
@@ -19410,11 +19376,7 @@ class MgForm extends MgFormBase {
19410
19376
  this.GetDataview().setTopRecIdxModified(true);
19411
19377
  try {
19412
19378
  this._suffixDone = false;
19413
- let newDisplayLine = this.GetDataview().getCurrRecIdx() + size;
19414
- if (unit === Constants.MOVE_UNIT_PAGE && this.isLineMode())
19415
- if (newDisplayLine > this.GetDataview().getSize() - 1)
19416
- visibleLine -= newDisplayLine - (this.GetDataview().getSize() - 1);
19417
- await this.setCurrRowByDisplayLine(newDisplayLine, true, false);
19379
+ await this.setCurrRowByDisplayLine(this.GetDataview().getCurrRecIdx() + size, true, false);
19418
19380
  this.GetDataview().setTopRecIdxModified(false);
19419
19381
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19420
19382
  }
@@ -19454,6 +19416,7 @@ class MgForm extends MgFormBase {
19454
19416
  try {
19455
19417
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19456
19418
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19419
+ visibleLine = this.getLastValidRow();
19457
19420
  }
19458
19421
  catch (Exception) {
19459
19422
  }
@@ -19577,15 +19540,6 @@ class MgForm extends MgFormBase {
19577
19540
  else
19578
19541
  this.SetTableTopIndex();
19579
19542
  await AccessHelper.eventsManager.handleInternalEventWithTask(this._task, InternalInterface.MG_ACT_REC_PREFIX);
19580
- if (returnToCtrl) {
19581
- lastParkedCtrl = this._task.getLastParkedCtrl();
19582
- if (lastParkedCtrl != null) {
19583
- let cursorMoved = await lastParkedCtrl.invoke();
19584
- if (!cursorMoved) {
19585
- await AccessHelper.eventsManager.HandleNonParkableControls(this._task);
19586
- }
19587
- }
19588
- }
19589
19543
  }
19590
19544
  catch (e) {
19591
19545
  if (e instanceof RecordOutOfDataViewException) {
@@ -20117,8 +20071,13 @@ class MgForm extends MgFormBase {
20117
20071
  finally {
20118
20072
  this._inRefreshDisp = false;
20119
20073
  }
20120
- if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed))
20074
+ if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed)) {
20121
20075
  this.FormRefreshed = true;
20076
+ if (this._task.isFirstRecordCycle() || AccessHelper.eventsManager.getIsInViewRefresh()) {
20077
+ Commands.addNoParameters(CommandType.SET_WC_IDLE, this);
20078
+ AccessHelper.eventsManager.setIsInViewRefresh(false);
20079
+ }
20080
+ }
20122
20081
  return true;
20123
20082
  }
20124
20083
  RefreshUI() {
@@ -21526,8 +21485,12 @@ class EventHandler {
21526
21485
  continue;
21527
21486
  else if (this._operationTab.getOperation(oper.getBlockEnd()).getServerId() < nextOperIdx)
21528
21487
  continue;
21529
- if (!taskEnd)
21530
- await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE);
21488
+ if (!taskEnd) {
21489
+ let mainLevel = this._task.getMainLevel().toLowerCase();
21490
+ if (await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE) && Environment.Instance.getSpecialImmediateHandlerEnd() &&
21491
+ mainLevel != "RP".toLowerCase() && mainLevel != "TP".toLowerCase() && mainLevel != "RS".toLowerCase() && mainLevel != "TS".toLowerCase())
21492
+ break;
21493
+ }
21531
21494
  if (this._taskMgdID !== mgdID)
21532
21495
  isChangedCurrWndRef.value = true;
21533
21496
  if (!this._task.isMainProg() && this._task.isOpenWin())
@@ -22321,13 +22284,6 @@ class UserEventsTable {
22321
22284
  }
22322
22285
 
22323
22286
  class FormsTable {
22324
- constructor(task, parentForm) {
22325
- this._task = null;
22326
- this._parentForm = null;
22327
- this._formsStringXml = null;
22328
- this._task = task;
22329
- this._parentForm = parentForm;
22330
- }
22331
22287
  get Count() {
22332
22288
  return this._formsStringXml.length;
22333
22289
  }
@@ -22336,6 +22292,13 @@ class FormsTable {
22336
22292
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22337
22293
  return null;
22338
22294
  }
22295
+ constructor(task, parentForm) {
22296
+ this._task = null;
22297
+ this._parentForm = null;
22298
+ this._formsStringXml = null;
22299
+ this._task = task;
22300
+ this._parentForm = parentForm;
22301
+ }
22339
22302
  async fillData() {
22340
22303
  this._formsStringXml = new List();
22341
22304
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22525,6 +22488,47 @@ var Task_Direction;
22525
22488
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22526
22489
  })(Task_Direction || (Task_Direction = {}));
22527
22490
  class Task extends TaskBase {
22491
+ get ParentTask() {
22492
+ return this._parentTask;
22493
+ }
22494
+ set TryingToCommit(value) {
22495
+ this._tryingToCommit = value;
22496
+ }
22497
+ get TryingToCommit() {
22498
+ return this._tryingToCommit;
22499
+ }
22500
+ get TaskService() {
22501
+ if (this._taskService == null)
22502
+ this._taskService = new RemoteTaskService();
22503
+ return this._taskService;
22504
+ }
22505
+ static get CommandsProcessor() {
22506
+ return CommandsProcessorManager.GetCommandsProcessor();
22507
+ }
22508
+ get LogicalStudioParentTask() {
22509
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22510
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22511
+ }
22512
+ return this.StudioParentTask;
22513
+ }
22514
+ get KnownToServer() {
22515
+ return this._knownToServer;
22516
+ }
22517
+ set Transaction(value) {
22518
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22519
+ }
22520
+ get Transaction() {
22521
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22522
+ }
22523
+ get TaskDefinitionId() {
22524
+ if (this.taskDefinitionId === null) {
22525
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22526
+ }
22527
+ return this.taskDefinitionId;
22528
+ }
22529
+ static get IsBlockingBatch() {
22530
+ return false;
22531
+ }
22528
22532
  constructor(parent) {
22529
22533
  super();
22530
22534
  this._dvCache = null;
@@ -22593,47 +22597,6 @@ class Task extends TaskBase {
22593
22597
  }
22594
22598
  this.constructor_1(parent);
22595
22599
  }
22596
- get ParentTask() {
22597
- return this._parentTask;
22598
- }
22599
- set TryingToCommit(value) {
22600
- this._tryingToCommit = value;
22601
- }
22602
- get TryingToCommit() {
22603
- return this._tryingToCommit;
22604
- }
22605
- get TaskService() {
22606
- if (this._taskService == null)
22607
- this._taskService = new RemoteTaskService();
22608
- return this._taskService;
22609
- }
22610
- static get CommandsProcessor() {
22611
- return CommandsProcessorManager.GetCommandsProcessor();
22612
- }
22613
- get LogicalStudioParentTask() {
22614
- if (this.StudioParentTask === null && !super.isMainProg()) {
22615
- return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22616
- }
22617
- return this.StudioParentTask;
22618
- }
22619
- get KnownToServer() {
22620
- return this._knownToServer;
22621
- }
22622
- set Transaction(value) {
22623
- this.DataviewManager.CurrentDataviewManager.Transaction = value;
22624
- }
22625
- get Transaction() {
22626
- return this.DataviewManager.CurrentDataviewManager.Transaction;
22627
- }
22628
- get TaskDefinitionId() {
22629
- if (this.taskDefinitionId === null) {
22630
- this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22631
- }
22632
- return this.taskDefinitionId;
22633
- }
22634
- static get IsBlockingBatch() {
22635
- return false;
22636
- }
22637
22600
  constructor_0() {
22638
22601
  this.ActionManager = new ActionManager();
22639
22602
  this.DataView = new DataView(this);
@@ -24444,6 +24407,7 @@ class Task extends TaskBase {
24444
24407
  this.ActionManager.enable(InternalInterface.MG_ACT_SORT_RECORDS, enable);
24445
24408
  enable = await this.checkProp(PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX, true);
24446
24409
  this.ActionManager.enable(InternalInterface.MG_ACT_VIEW_BY_KEY, enable);
24410
+ this.ActionManager.enable(InternalInterface.MG_ACT_DUMP_ENVIRONMENT, true);
24447
24411
  }
24448
24412
  setEnableZoomHandler() {
24449
24413
  this._enableZoomHandler = true;
@@ -25030,6 +24994,9 @@ class CompMainPrgTable {
25030
24994
  }
25031
24995
 
25032
24996
  class MGData {
24997
+ get ForceModal() {
24998
+ return this.forceModal;
24999
+ }
25033
25000
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25034
25001
  this._expHandlers = null;
25035
25002
  this._id = 0;
@@ -25050,9 +25017,6 @@ class MGData {
25050
25017
  else
25051
25018
  this.constructor_1(id, parent, isModal, forceModal);
25052
25019
  }
25053
- get ForceModal() {
25054
- return this.forceModal;
25055
- }
25056
25020
  constructor_0(id, parent, isModal) {
25057
25021
  this._timerHandlers = new HandlersTable();
25058
25022
  this._expHandlers = new HandlersTable();
@@ -25651,6 +25615,7 @@ class EventsManager {
25651
25615
  this.confirmationDialogTitle = 'Session is about to be terminated!';
25652
25616
  this._lastFailedFocusedControl = null;
25653
25617
  this.isSpinnerShown = false;
25618
+ this.isInViewRefresh = false;
25654
25619
  this.SpinnerStopped = new Subject();
25655
25620
  this._rtEvents = new Stack();
25656
25621
  this._eventsQueue = new MgPriorityBlockingQueue();
@@ -25862,7 +25827,7 @@ class EventsManager {
25862
25827
  if (raiseAt === RaiseAt.TaskInFocus)
25863
25828
  mgControl.setRtEvtTask(LastFocusedManager.Instance.getLastFocusedTask());
25864
25829
  }
25865
- await this.handleFocus(mgControl, line, produceClick);
25830
+ await this.handleFocus(mgControl, line, produceClick, false);
25866
25831
  currTask.setCancelWasRaised(cancelWasRaised);
25867
25832
  if (this._stopExecution)
25868
25833
  return;
@@ -26445,7 +26410,7 @@ class EventsManager {
26445
26410
  this.setLastSavedRouteEvent(aRtEvt);
26446
26411
  }
26447
26412
  }
26448
- async handleFocus(ctrl, line, onClick) {
26413
+ async handleFocus(ctrl, line, onClick, shouldHandleZoom) {
26449
26414
  try {
26450
26415
  if (ctrl.isStatic())
26451
26416
  return;
@@ -26463,6 +26428,10 @@ class EventsManager {
26463
26428
  let prevCtrl = LastFocusedManager.getLastFocusedControl();
26464
26429
  if (ctrl === prevCtrl && !ctrl.isRepeatable()) {
26465
26430
  await ctrl.getForm().bringRecordToPage();
26431
+ await this.HandleZoomIfNeeded(ctrl, line, shouldHandleZoom);
26432
+ let rtEvnt = this.getLastRtEvent();
26433
+ if (rtEvnt != null && rtEvnt.ShouldHandleZoom)
26434
+ FocusManager.SetFocus(ctrl, -1);
26466
26435
  return;
26467
26436
  }
26468
26437
  let prevTask = LastFocusedManager.Instance.getLastFocusedTask();
@@ -26502,8 +26471,10 @@ class EventsManager {
26502
26471
  }
26503
26472
  else
26504
26473
  await this.HandleNonParkableControls(ctrl.getForm().getTask());
26505
- if (!this._stopExecution && MgControl.ReturnToCtrl === ctrl)
26474
+ if (!this._stopExecution && MgControl.ReturnToCtrl === ctrl) {
26506
26475
  LastFocusedManager.setLastFocusedControl(ctrl.getForm().getTask(), ctrl);
26476
+ await this.HandleZoomIfNeeded(ctrl, line, shouldHandleZoom);
26477
+ }
26507
26478
  return;
26508
26479
  }
26509
26480
  finally {
@@ -26564,6 +26535,13 @@ class EventsManager {
26564
26535
  }
26565
26536
  }
26566
26537
  }
26538
+ async HandleZoomIfNeeded(ctrl, line, shouldHandleZoom) {
26539
+ if (shouldHandleZoom) {
26540
+ var rtEvt = new RunTimeEvent(ctrl, line, true);
26541
+ rtEvt.setInternal(InternalInterface.MG_ACT_ZOOM);
26542
+ await this.handleEvent(rtEvt, false);
26543
+ }
26544
+ }
26567
26545
  canGoToControl(ctrl, onClick) {
26568
26546
  if (onClick && (ctrl.Type === MgControlType.CTRL_TYPE_SUBFORM || ctrl.Type === MgControlType.CTRL_TYPE_BROWSER))
26569
26547
  return false;
@@ -26796,7 +26774,7 @@ class EventsManager {
26796
26774
  case InternalInterface.MG_ACT_WEB_ON_DBLICK:
26797
26775
  break;
26798
26776
  case InternalInterface.MG_ACT_CTRL_FOCUS:
26799
- await this.handleFocus(ctrl, displayLine, evt.isProduceClick());
26777
+ await this.handleFocus(ctrl, displayLine, evt.isProduceClick(), evt.ShouldHandleZoom);
26800
26778
  return false;
26801
26779
  case InternalInterface.MG_ACT_CTRL_FOCUS_ON_NON_MAGIC_CONTROL:
26802
26780
  await this.handleFocusOnNonMagicControl(ctrl);
@@ -27490,6 +27468,7 @@ class EventsManager {
27490
27468
  }
27491
27469
  break;
27492
27470
  case InternalInterface.MG_ACT_SERVER_TERMINATION:
27471
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
27493
27472
  cmd = CommandFactory.CreateEventCommand(task.getTaskTag(), intEvtCode);
27494
27473
  cmdsToServer.Add(cmd);
27495
27474
  await CommandsProcessorManager.GetCommandsProcessor().Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
@@ -27809,6 +27788,7 @@ class EventsManager {
27809
27788
  else if (intEvtCode === InternalInterface.MG_ACT_RT_REFRESH_SCREEN && task.getMode() !== Constants.TASK_MODE_QUERY && !task.getAfterRetry()) {
27810
27789
  await dv.currRecCompute(true);
27811
27790
  }
27791
+ this.setIsInViewRefresh(true);
27812
27792
  await this.handleInternalEventWithTask(task, InternalInterface.MG_ACT_REC_PREFIX);
27813
27793
  if (!this.GetStopExecutionFlag() && !task.getPreventControlChange()) {
27814
27794
  if (!(task === LastFocusedManager.Instance.getLastFocusedTask() || !task.pathContains(LastFocusedManager.Instance.getLastFocusedTask())))
@@ -28538,6 +28518,12 @@ class EventsManager {
28538
28518
  return false;
28539
28519
  return true;
28540
28520
  }
28521
+ getIsInViewRefresh() {
28522
+ return this.isInViewRefresh;
28523
+ }
28524
+ setIsInViewRefresh(inViewRefresh) {
28525
+ this.isInViewRefresh = inViewRefresh;
28526
+ }
28541
28527
  }
28542
28528
  EventsManager.REAL_ONLY = true;
28543
28529
  EventsManager.MAX_OPER = 9999;
@@ -28646,15 +28632,15 @@ class GuiEventsProcessor extends EventsProcessor {
28646
28632
  }
28647
28633
  static processSelection(val, guiMgCtrl, line, produceClick) {
28648
28634
  let mgControl = guiMgCtrl;
28649
- if (mgControl.Type === MgControlType.CTRL_TYPE_BUTTON && mgControl.getForm().getTask().getLastParkedCtrl() !== mgControl)
28650
- produceClick = true;
28651
28635
  if (guiMgCtrl.ConnectedControl) {
28652
28636
  let rtEvt = new RunTimeEvent(mgControl, +line, true);
28653
- rtEvt.setInternal(InternalInterface.MG_ACT_ZOOM);
28654
- rtEvt.setProduceClick(produceClick);
28637
+ rtEvt.setInternal(InternalInterface.MG_ACT_CTRL_FOCUS);
28638
+ rtEvt.ShouldHandleZoom = true;
28655
28639
  EventsManager.Instance.addToTail(rtEvt);
28656
28640
  }
28657
28641
  else {
28642
+ if (mgControl.Type === MgControlType.CTRL_TYPE_BUTTON && mgControl.getForm().getTask().getLastParkedCtrl() !== mgControl)
28643
+ produceClick = true;
28658
28644
  let rtEvt = new RunTimeEvent(mgControl, +line, true);
28659
28645
  rtEvt.setInternal(InternalInterface.MG_ACT_SELECTION);
28660
28646
  rtEvt.setValue(val);
@@ -29054,13 +29040,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29054
29040
  }
29055
29041
 
29056
29042
  class EnhancedVerifyCommand extends VerifyCommand {
29057
- constructor() {
29058
- super();
29059
- this._buttonsID = '\0';
29060
- this._image = '\0';
29061
- this._returnValStr = null;
29062
- this._returnVal = null;
29063
- }
29064
29043
  async ProcessMessageBoxResponse(task, returnValue) {
29065
29044
  if (task !== null)
29066
29045
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29091,6 +29070,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29091
29070
  break;
29092
29071
  }
29093
29072
  }
29073
+ constructor() {
29074
+ super();
29075
+ this._buttonsID = '\0';
29076
+ this._image = '\0';
29077
+ this._returnValStr = null;
29078
+ this._returnVal = null;
29079
+ }
29094
29080
  }
29095
29081
 
29096
29082
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29187,12 +29173,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29187
29173
  }
29188
29174
 
29189
29175
  class ResultCommand extends ClientTargetedCommandBase {
29190
- constructor() {
29191
- super();
29192
- this._isNull = false;
29193
- this._attr = StorageAttribute.NONE;
29194
- this._val = null;
29195
- }
29196
29176
  async Execute(res) {
29197
29177
  if (this._isNull)
29198
29178
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29218,6 +29198,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29218
29198
  break;
29219
29199
  }
29220
29200
  }
29201
+ constructor() {
29202
+ super();
29203
+ this._isNull = false;
29204
+ this._attr = StorageAttribute.NONE;
29205
+ this._val = null;
29206
+ }
29221
29207
  }
29222
29208
 
29223
29209
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29582,19 +29568,9 @@ class CommandsTable {
29582
29568
  }
29583
29569
  }
29584
29570
 
29585
- let CurrentClientVersion = '4.1000.0-dev4100.43';
29571
+ let CurrentClientVersion = '4.1000.0-dev4100.436';
29586
29572
 
29587
29573
  class ClientManager {
29588
- constructor() {
29589
- this._globalUniqueSessionId = null;
29590
- this._buttonIsClicked = false;
29591
- RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29592
- LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29593
- LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29594
- RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29595
- this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29596
- this.RegisterDelegates();
29597
- }
29598
29574
  static get Instance() {
29599
29575
  if (ClientManager._instance === null)
29600
29576
  ClientManager._instance = new ClientManager();
@@ -29620,7 +29596,7 @@ class ClientManager {
29620
29596
  }
29621
29597
  break;
29622
29598
  case "mousedown":
29623
- if (control.isButton()) {
29599
+ if (control.isButton() || (control.ConnectedControl && guiEvent.fromButton)) {
29624
29600
  this._buttonIsClicked = true;
29625
29601
  }
29626
29602
  else if (!control.isSubform())
@@ -29639,7 +29615,7 @@ class ClientManager {
29639
29615
  }
29640
29616
  break;
29641
29617
  case "focus":
29642
- if (this._buttonIsClicked)
29618
+ if (this._buttonIsClicked || (control.ConnectedControl && guiEvent.fromButton))
29643
29619
  return;
29644
29620
  Events.OnFocus(control, lineIdx, true, false);
29645
29621
  break;
@@ -29655,6 +29631,9 @@ class ClientManager {
29655
29631
  case "setexternalvalue":
29656
29632
  EventsManager.Instance.AddExternalValueEvent(control, guiEvent.externalValue, guiEvent.param);
29657
29633
  break;
29634
+ case "setAsThreeState":
29635
+ control.setAsThreeState();
29636
+ break;
29658
29637
  default:
29659
29638
  break;
29660
29639
  }
@@ -29794,6 +29773,16 @@ class ClientManager {
29794
29773
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29795
29774
  }
29796
29775
  }
29776
+ constructor() {
29777
+ this._globalUniqueSessionId = null;
29778
+ this._buttonIsClicked = false;
29779
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29780
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29781
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29782
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29783
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29784
+ this.RegisterDelegates();
29785
+ }
29797
29786
  InitGuiManager() {
29798
29787
  Manager.EventsManager = EventsManager.Instance;
29799
29788
  Manager.DefaultServerName = ServerConfig.Instance.getServer();
@@ -29846,7 +29835,7 @@ class ClientManager {
29846
29835
  await MGDataCollection.Instance.addMGData(mgd, 0, true);
29847
29836
  await ClientManager.Instance.WorkThreadExecution();
29848
29837
  if (Logger.Instance.ShouldLog()) {
29849
- Logger.Instance.WriteToLog(OSEnvironment.EolSeq + "Ended on " + DateTimeUtils.ToString(DateTime.Now, "dd/MM/yyyy", Logger.Instance) + OSEnvironment.EolSeq + OSEnvironment.EolSeq, false);
29838
+ Logger.Instance.WriteToLog(OSEnvironment.EolSeq + "Ended on " + DateTimeUtils.ToString(DateTime.Now, XMLConstants.ERROR_LOG_DATE_FORMAT, Logger.Instance) + OSEnvironment.EolSeq + OSEnvironment.EolSeq, false);
29850
29839
  }
29851
29840
  }
29852
29841
  else {