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

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 (59) 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/fesm2015/magic-xpa-engine.mjs +546 -591
  44. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  45. package/fesm2020/magic-xpa-engine.mjs +534 -547
  46. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  47. package/package.json +6 -6
  48. package/src/ConstInterface.d.ts +2 -0
  49. package/src/env/Environment.d.ts +2 -0
  50. package/src/event/EventsManager.d.ts +4 -0
  51. package/src/event/IEventsManager.d.ts +2 -0
  52. package/src/event/RunTimeEvent.d.ts +3 -0
  53. package/src/exp/ExpressionEvaluator.d.ts +1 -10
  54. package/src/gui/MgControl.d.ts +0 -1
  55. package/src/gui/MgForm.d.ts +1 -3
  56. package/src/remote/RemoteCommandsProcessor.d.ts +1 -0
  57. package/src/util/FlowMonitorQueue.d.ts +8 -0
  58. package/src/util/PrmMap.d.ts +1 -1
  59. 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();
@@ -4504,13 +4617,6 @@ class HttpClientAsync extends HttpClientBase {
4504
4617
  }
4505
4618
 
4506
4619
  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
4620
  getHttpClient() {
4515
4621
  if (this.IsAbortingMagicEngine)
4516
4622
  return new HttpClientSync();
@@ -4530,6 +4636,13 @@ class HttpManager {
4530
4636
  }
4531
4637
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4532
4638
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4639
+ constructor() {
4640
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4641
+ this._httpClientAsync = null;
4642
+ this._isAbortingMagicEngine = false;
4643
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4644
+ this.RegisterBasicDelegates();
4645
+ }
4533
4646
  RegisterBasicDelegates() {
4534
4647
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4535
4648
  }
@@ -5075,6 +5188,12 @@ var RequestStatus;
5075
5188
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5076
5189
  })(RequestStatus || (RequestStatus = {}));
5077
5190
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5191
+ static GetInstance() {
5192
+ if (RemoteCommandsProcessor._instance === null) {
5193
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5194
+ }
5195
+ return RemoteCommandsProcessor._instance;
5196
+ }
5078
5197
  constructor() {
5079
5198
  super();
5080
5199
  this._lastRequestTime = 0;
@@ -5085,12 +5204,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5085
5204
  HttpManager.GetInstance();
5086
5205
  this.RegisterDelegates();
5087
5206
  }
5088
- static GetInstance() {
5089
- if (RemoteCommandsProcessor._instance === null) {
5090
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5091
- }
5092
- return RemoteCommandsProcessor._instance;
5093
- }
5094
5207
  CheckAndSetSessionCounter(newSessionCounter) {
5095
5208
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5096
5209
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5123,10 +5236,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5236
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5237
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5238
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5239
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5240
  let dataStorage = window.localStorage;
5127
5241
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5242
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5243
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5244
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5245
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5246
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5247
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5468,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5468
  let reqBuf;
5354
5469
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5470
  let globalParamsString = null;
5471
+ let envVarsString = null;
5356
5472
  if (this.DelayCommandExecution)
5357
5473
  return;
5358
5474
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5494,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5494
  let buffer = new StringBuilder();
5379
5495
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5496
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5497
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5498
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5499
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5500
+ }
5501
+ else {
5384
5502
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5503
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5504
+ }
5385
5505
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5506
+ changes.Append(envVarsString);
5387
5507
  if (changes.Length > 0) {
5388
5508
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5509
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5542,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5542
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5543
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5544
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5545
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5546
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5547
  }
5427
5548
  }
5428
5549
  FlowMonitorQueue.Instance.enable(false);
5429
5550
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5551
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5552
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5553
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5554
  let dataStorage = window.localStorage;
5433
5555
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5556
  if (ctxRemoved === "1") {
@@ -5524,11 +5646,22 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5524
5646
  }
5525
5647
  }
5526
5648
  }
5527
- window.localStorage.clear();
5649
+ this.clearLocalStorage();
5528
5650
  throw ex;
5529
5651
  }
5530
5652
  return response;
5531
5653
  }
5654
+ clearLocalStorage() {
5655
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT);
5656
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK);
5657
+ window.localStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST);
5658
+ window.localStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5659
+ window.localStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5660
+ window.localStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5661
+ window.localStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5662
+ window.localStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5663
+ window.localStorage.removeItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5664
+ }
5532
5665
  HandleErrorResponse(response) {
5533
5666
  try {
5534
5667
  Logger.Instance.WriteServerMessagesToLog("MESSAGE FROM SERVER: " + response);
@@ -5730,21 +5863,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5730
5863
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5731
5864
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5732
5865
  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
5866
  get ScrambleMessages() {
5749
5867
  return this._scrambleMessages;
5750
5868
  }
@@ -5766,6 +5884,21 @@ class HandshakeResponse {
5766
5884
  get MaxInternalLogLevel() {
5767
5885
  return this._maxInternalLogLevel;
5768
5886
  }
5887
+ constructor(responseXML) {
5888
+ this._scrambleMessages = true;
5889
+ this._contextId = null;
5890
+ this._privateSessionId = null;
5891
+ this._inputPassword = false;
5892
+ this._httpTimeout = 0;
5893
+ this._systemLogin = null;
5894
+ this._maxInternalLogLevel = null;
5895
+ try {
5896
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5897
+ }
5898
+ catch (ex) {
5899
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5900
+ }
5901
+ }
5769
5902
  FillFromJSON(error, result) {
5770
5903
  if (error != null) {
5771
5904
  throw error;
@@ -6722,7 +6855,7 @@ ExpressionDict.expDesc = [
6722
6855
  null,
6723
6856
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6857
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6858
+ null,
6726
6859
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6860
  null,
6728
6861
  null,
@@ -7171,12 +7304,12 @@ ExpressionDict.expDesc = [
7171
7304
  null,
7172
7305
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7306
  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),
7307
+ null,
7308
+ null,
7309
+ null,
7310
+ null,
7311
+ null,
7312
+ null,
7180
7313
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7314
  null,
7182
7315
  null,
@@ -7263,48 +7396,6 @@ ExpressionDict.expDesc = [
7263
7396
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7397
  ];
7265
7398
 
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
7399
  class EventHandlerPosition {
7309
7400
  constructor() {
7310
7401
  this._handlerIdx = 0;
@@ -7361,6 +7452,9 @@ class EventHandlerPosition {
7361
7452
  case InternalInterface.MG_ACT_REC_SUFFIX:
7362
7453
  case InternalInterface.MG_ACT_CTRL_PREFIX:
7363
7454
  case InternalInterface.MG_ACT_CTRL_SUFFIX: {
7455
+ if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
7456
+ FlowMonitorQueue.Instance.addDataViewFlow(this._task);
7457
+ }
7364
7458
  if (this._handlerIdx === -1) {
7365
7459
  for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
7366
7460
  let handler = this._handlersTab.getHandler(this._handlerIdx);
@@ -7495,11 +7589,53 @@ class EventHandlerPosition {
7495
7589
  this._task = pathParentTask;
7496
7590
  }
7497
7591
  }
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;
7592
+ }
7593
+ EventHandlerPosition.PHASE_CONTROL_SPECIFIC = 1;
7594
+ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7595
+ EventHandlerPosition.PHASE_GLOBAL = 3;
7596
+ EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7597
+
7598
+ var DataViewCommandType;
7599
+ (function (DataViewCommandType) {
7600
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7601
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7602
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7603
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7604
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7605
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7606
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7607
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7608
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7609
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7610
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7611
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7612
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7613
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7614
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7615
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7616
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7617
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7618
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7619
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7620
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7621
+ })(DataViewCommandType || (DataViewCommandType = {}));
7622
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7623
+ get CommandTypeAttribute() {
7624
+ throw new NotImplementedException();
7625
+ }
7626
+ SerializeCommandData() {
7627
+ Debug.Assert(false, "Dataview commands need not be serialized");
7628
+ return null;
7629
+ }
7630
+ get ShouldSerialize() {
7631
+ return false;
7632
+ }
7633
+ constructor() {
7634
+ super();
7635
+ this.CommandType = 0;
7636
+ this.TaskTag = null;
7637
+ }
7638
+ }
7503
7639
 
7504
7640
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7641
  constructor() {
@@ -7720,12 +7856,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7720
7856
  }
7721
7857
 
7722
7858
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7723
- constructor() {
7724
- super();
7725
- this.TaskTag = null;
7726
- this.FldId = 0;
7727
- this.IgnoreSubformRecompute = false;
7728
- }
7729
7859
  get CommandTypeAttribute() {
7730
7860
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7731
7861
  }
@@ -7737,17 +7867,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7737
7867
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7738
7868
  return helper.GetString();
7739
7869
  }
7870
+ constructor() {
7871
+ super();
7872
+ this.TaskTag = null;
7873
+ this.FldId = 0;
7874
+ this.IgnoreSubformRecompute = false;
7875
+ }
7740
7876
  getCommandInfo() {
7741
7877
  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
7878
  }
7743
7879
  }
7744
7880
 
7745
7881
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7746
- constructor() {
7747
- super();
7748
- this.TaskTag = null;
7749
- this.ReversibleExit = false;
7750
- }
7751
7882
  get CommandTypeAttribute() {
7752
7883
  return ConstInterface.MG_ATTR_VAL_TRANS;
7753
7884
  }
@@ -7761,6 +7892,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7761
7892
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7762
7893
  return helper.GetString();
7763
7894
  }
7895
+ constructor() {
7896
+ super();
7897
+ this.TaskTag = null;
7898
+ this.ReversibleExit = false;
7899
+ }
7764
7900
  getCommandInfo() {
7765
7901
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7766
7902
  }
@@ -7779,6 +7915,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7779
7915
  }
7780
7916
 
7781
7917
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7918
+ get CommandTypeAttribute() {
7919
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7920
+ }
7782
7921
  constructor() {
7783
7922
  super();
7784
7923
  this.TaskTag = null;
@@ -7787,9 +7926,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7787
7926
  this.MprgCreator = null;
7788
7927
  this.LengthExpVal = Int32.MinValue;
7789
7928
  }
7790
- get CommandTypeAttribute() {
7791
- return ConstInterface.MG_ATTR_VAL_EVAL;
7792
- }
7793
7929
  SerializeCommandData() {
7794
7930
  let helper = new CommandSerializationHelper();
7795
7931
  helper.SerializeTaskTag(this.TaskTag);
@@ -7837,10 +7973,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7837
7973
  }
7838
7974
 
7839
7975
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7840
- constructor() {
7841
- super();
7842
- this.Text = null;
7843
- }
7844
7976
  get CommandTypeAttribute() {
7845
7977
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7846
7978
  }
@@ -7850,6 +7982,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7850
7982
  SerializeCommandData() {
7851
7983
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7852
7984
  }
7985
+ constructor() {
7986
+ super();
7987
+ this.Text = null;
7988
+ }
7853
7989
  getCommandInfo() {
7854
7990
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7855
7991
  }
@@ -8136,13 +8272,6 @@ class CommandFactory {
8136
8272
  }
8137
8273
  }
8138
8274
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8275
  var ParamParseResult;
8147
8276
  (function (ParamParseResult) {
8148
8277
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8152,10 +8281,6 @@ var ParamParseResult;
8152
8281
  })(ParamParseResult || (ParamParseResult = {}));
8153
8282
 
8154
8283
  class PrmMap {
8155
- constructor() {
8156
- this.values = null;
8157
- this.values = new Dictionary();
8158
- }
8159
8284
  getvalue(s) {
8160
8285
  if (this.values.ContainsKey(s))
8161
8286
  return this.values.get_Item(s);
@@ -8168,6 +8293,10 @@ class PrmMap {
8168
8293
  remove(s) {
8169
8294
  this.values.Remove(s);
8170
8295
  }
8296
+ constructor() {
8297
+ this.values = null;
8298
+ this.values = new Dictionary();
8299
+ }
8171
8300
  }
8172
8301
  class MirrorPrmMap extends PrmMap {
8173
8302
  constructor(type) {
@@ -8248,7 +8377,7 @@ class MirrorPrmMap extends PrmMap {
8248
8377
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8378
  }
8250
8379
  }
8251
- RestoreGlobalParams(xml) {
8380
+ RestoreParams(xml) {
8252
8381
  let parser = new XmlParser(xml);
8253
8382
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8383
  }
@@ -8323,6 +8452,7 @@ class Environment {
8323
8452
  this._debugMode = 0;
8324
8453
  this._significantNumSize = 0;
8325
8454
  this._specialAnsiExpression = false;
8455
+ this._specialImmediatehandlerEnd = false;
8326
8456
  this._specialShowStatusBarPanes = false;
8327
8457
  this._specialRouteToRootProgOnContextRecreation = false;
8328
8458
  this._specialCancelOnCreate = false;
@@ -8476,6 +8606,9 @@ class Environment {
8476
8606
  case ConstInterface.MG_ATTR_LOCAL_FLAGS:
8477
8607
  this._localFlags = valueStr;
8478
8608
  break;
8609
+ case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
8610
+ this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
8611
+ break;
8479
8612
  case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
8480
8613
  this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
8481
8614
  break;
@@ -8680,6 +8813,9 @@ class Environment {
8680
8813
  GetLocalFlag(f) {
8681
8814
  return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
8682
8815
  }
8816
+ getSpecialImmediateHandlerEnd() {
8817
+ return this._specialImmediatehandlerEnd;
8818
+ }
8683
8819
  getSpecialAnsiExpression() {
8684
8820
  return this._specialAnsiExpression;
8685
8821
  }
@@ -8749,6 +8885,12 @@ class Environment {
8749
8885
  }
8750
8886
  Environment.Instance = new Environment();
8751
8887
  class EnvironmentDetails {
8888
+ set UpdateInQueryMode(value) {
8889
+ this._updateInQueryMode = value;
8890
+ }
8891
+ set CreateInModifyMode(value) {
8892
+ this._createInModifyMode = value;
8893
+ }
8752
8894
  constructor() {
8753
8895
  this._createInModifyMode = false;
8754
8896
  this._updateInQueryMode = false;
@@ -8759,12 +8901,6 @@ class EnvironmentDetails {
8759
8901
  this.ProjDir = null;
8760
8902
  this.CompIdx = 0;
8761
8903
  }
8762
- set UpdateInQueryMode(value) {
8763
- this._updateInQueryMode = value;
8764
- }
8765
- set CreateInModifyMode(value) {
8766
- this._createInModifyMode = value;
8767
- }
8768
8904
  allowUpdateInQueryMode() {
8769
8905
  return this._updateInQueryMode;
8770
8906
  }
@@ -8852,17 +8988,6 @@ class GlobalParams extends MirrorPrmMap {
8852
8988
  GlobalParams.Instance = new GlobalParams();
8853
8989
 
8854
8990
  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
8991
  setIsLoggedIn(value) {
8867
8992
  this.IsLoggedIn = value;
8868
8993
  }
@@ -8882,6 +9007,17 @@ class UserDetails {
8882
9007
  UserDetails._instance = new UserDetails();
8883
9008
  return UserDetails._instance;
8884
9009
  }
9010
+ constructor() {
9011
+ this.UserName = null;
9012
+ this.UserID = null;
9013
+ this.UserInfo = null;
9014
+ this.Password = null;
9015
+ this.IsLoggedIn = false;
9016
+ this.UserName = NString.Empty;
9017
+ this.UserInfo = NString.Empty;
9018
+ this.IsLoggedIn = false;
9019
+ this.setUserID(NString.Empty);
9020
+ }
8885
9021
  fillData(parser) {
8886
9022
  let tokensVector;
8887
9023
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9690,8 +9826,7 @@ class MirrorString {
9690
9826
  this._reserved = false;
9691
9827
  }
9692
9828
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9829
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9830
  }
9696
9831
  init(name, xmlParser) {
9697
9832
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -11257,11 +11392,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11392
  val1 = valStack.pop();
11258
11393
  this.eval_op_eoy(resVal, val1);
11259
11394
  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
11395
  case ExpressionInterface.EXP_OP_VARSET:
11266
11396
  val2 = valStack.pop();
11267
11397
  val1 = valStack.pop();
@@ -11626,41 +11756,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11756
  val1 = valStack.pop();
11627
11757
  this.eval_op_taskType(resVal, val1);
11628
11758
  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
11759
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11760
  val1 = valStack.pop();
11666
11761
  this.eval_op_tsk_instance(resVal, val1);
@@ -11689,7 +11784,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11689
11784
  Exp_params = new Array(nArgs);
11690
11785
  for (j = 0; j < nArgs; j++)
11691
11786
  Exp_params[nArgs - 1 - j] = valStack.pop();
11692
- this.eval_op_CallJS(this.ExpTask, valStack.pop().StrVal, Exp_params, resVal);
11787
+ await this.eval_op_CallJS(this.ExpTask, valStack.pop().StrVal, Exp_params, resVal);
11693
11788
  }
11694
11789
  break;
11695
11790
  case ExpressionInterface.EXP_OP_SET_COOKIE:
@@ -13299,12 +13394,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13394
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13395
  await fld.updateDisplay();
13301
13396
  }
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
13397
  eval_op_like(source, maskOrg, resVal) {
13309
13398
  let i;
13310
13399
  let j;
@@ -13861,54 +13950,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13950
  resultStr.Replace('\\@', '@');
13862
13951
  resVal.StrVal = resultStr.ToString();
13863
13952
  }
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
13953
  eval_op_tsk_instance(resVal, Parent) {
13913
13954
  let tag = 0;
13914
13955
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13963,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13963
  resVal.MgNumVal = new NUM_TYPE();
13923
13964
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13965
  }
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
13966
  eval_op_getParam(resVal, name) {
14004
13967
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13968
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -14199,7 +14162,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14199
14162
  resVal.MgNumVal = NUM_TYPE.from_double(programIndex);
14200
14163
  }
14201
14164
  }
14202
- eval_op_CallJS(task, methodName, expVal, resVal) {
14165
+ async eval_op_CallJS(task, methodName, expVal, resVal) {
14203
14166
  resVal.Attr = StorageAttribute.ALPHA;
14204
14167
  resVal.StrVal = '';
14205
14168
  if (task.isMainProg()) {
@@ -14209,6 +14172,10 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14209
14172
  let form = task.getForm();
14210
14173
  let args = this.params2arguments(expVal, 0, expVal.length);
14211
14174
  if (!isNullOrUndefined(args)) {
14175
+ if (task.isFirstRecordCycle()) {
14176
+ Commands.invoke();
14177
+ await Thread.Sleep(10);
14178
+ }
14212
14179
  resVal.StrVal = Commands.addCallJS(form, form.UniqueName, methodName, args);
14213
14180
  resVal.Attr = StorageAttribute.ALPHA;
14214
14181
  }
@@ -14517,6 +14484,12 @@ class DataViewBase extends GuiDataViewBase {
14517
14484
  }
14518
14485
 
14519
14486
  class Record {
14487
+ get InCompute() {
14488
+ return this._inCompute;
14489
+ }
14490
+ get InRecompute() {
14491
+ return this._inRecompute;
14492
+ }
14520
14493
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14521
14494
  this._id = Int32.MinValue;
14522
14495
  this.dbViewRowIdx = 0;
@@ -14534,12 +14507,6 @@ class Record {
14534
14507
  else
14535
14508
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14536
14509
  }
14537
- get InCompute() {
14538
- return this._inCompute;
14539
- }
14540
- get InRecompute() {
14541
- return this._inRecompute;
14542
- }
14543
14510
  constructor_0(dvOrTableCache) {
14544
14511
  if (dvOrTableCache instanceof DataViewBase)
14545
14512
  this._dataview = dvOrTableCache;
@@ -15335,14 +15302,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15335
15302
  Record.INCREASE = true;
15336
15303
  Record.DECREASE = false;
15337
15304
  class DcValuesReference extends ObjectReferenceBase {
15305
+ get DcValues() {
15306
+ return this.Referent;
15307
+ }
15338
15308
  constructor(controlId, referencedDcValues) {
15339
15309
  super(referencedDcValues);
15340
15310
  this.ditIdx = 0;
15341
15311
  this.ditIdx = controlId;
15342
15312
  }
15343
- get DcValues() {
15344
- return this.Referent;
15345
- }
15346
15313
  Clone() {
15347
15314
  return new DcValuesReference(this.ditIdx, this.Referent);
15348
15315
  }
@@ -15618,21 +15585,6 @@ class RecordsTable {
15618
15585
  RecordsTable.REC_NOT_FOUND = -1;
15619
15586
 
15620
15587
  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
15588
  get ReturnField() {
15637
15589
  if (this.returnfield === null && this._retVal !== null)
15638
15590
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15653,6 +15605,21 @@ class DataviewHeaderBase {
15653
15605
  get LinkEvaluateCondition() {
15654
15606
  return this._linkEvalCondition;
15655
15607
  }
15608
+ constructor(task) {
15609
+ this._cond = null;
15610
+ this._task = null;
15611
+ this.Loc = null;
15612
+ this._dir = '\0';
15613
+ this._id = 0;
15614
+ this._keyIdx = 0;
15615
+ this._retVal = null;
15616
+ this.returnfield = null;
15617
+ this.LinkStartAfterField = 0;
15618
+ this.KeyExpression = 0;
15619
+ this._task = task;
15620
+ this._keyIdx = -1;
15621
+ this._cond = new YesNoExp(true);
15622
+ }
15656
15623
  SetAttributes(attributes) {
15657
15624
  let keys = attributes.Keys;
15658
15625
  keys.forEach((text) => {
@@ -16943,16 +16910,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16943
16910
  }
16944
16911
 
16945
16912
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16913
+ set SerializedDCVals(value) {
16914
+ this.parser.setXMLdata(value);
16915
+ this.parser.setCurrIndex(0);
16916
+ }
16946
16917
  constructor() {
16947
16918
  super();
16948
16919
  this.dcv = null;
16949
16920
  this.parser = null;
16950
16921
  this.parser = new XmlParser();
16951
16922
  }
16952
- set SerializedDCVals(value) {
16953
- this.parser.setXMLdata(value);
16954
- this.parser.setCurrIndex(0);
16955
- }
16956
16923
  Build() {
16957
16924
  this.dcv = null;
16958
16925
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17032,6 +16999,39 @@ const RECOVERY_ACT_NONE = 'N';
17032
16999
  const TRANS_STAT_CLOSED = 'C';
17033
17000
  const TRANS_STAT_OPENED = 'O';
17034
17001
  class DataView extends DataViewBase {
17002
+ set InsertAt(value) {
17003
+ this._insertAt = value;
17004
+ }
17005
+ get InsertAt() {
17006
+ return this._insertAt;
17007
+ }
17008
+ get CurrRec() {
17009
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17010
+ }
17011
+ set CurrRec(value) {
17012
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17013
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17014
+ }
17015
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17016
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17017
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17018
+ }
17019
+ }
17020
+ get FlushUpdates() {
17021
+ return this._flushUpdates;
17022
+ }
17023
+ get HasMainTable() {
17024
+ return this._hasMainTable;
17025
+ }
17026
+ get CurrentRecId() {
17027
+ return this._currRecId;
17028
+ }
17029
+ get FirstRecord() {
17030
+ return this._recordsTab.getRecByIdx(0);
17031
+ }
17032
+ get LastRecord() {
17033
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17034
+ }
17035
17035
  constructor(taskOrDataView) {
17036
17036
  super();
17037
17037
  this._cacheLruTimeStamp = 0;
@@ -17083,39 +17083,6 @@ class DataView extends DataViewBase {
17083
17083
  Object.assign(this, taskOrDataView);
17084
17084
  }
17085
17085
  }
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
17086
  Init() {
17120
17087
  this.init();
17121
17088
  }
@@ -18688,6 +18655,12 @@ class ReturnResultBase {
18688
18655
  }
18689
18656
 
18690
18657
  class ReturnResult extends ReturnResultBase {
18658
+ get Success() {
18659
+ return this.success;
18660
+ }
18661
+ get ErrorDescription() {
18662
+ return this.errorDescription;
18663
+ }
18691
18664
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18692
18665
  super();
18693
18666
  this.errorDescription = null;
@@ -18702,12 +18675,6 @@ class ReturnResult extends ReturnResultBase {
18702
18675
  else
18703
18676
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18704
18677
  }
18705
- get Success() {
18706
- return this.success;
18707
- }
18708
- get ErrorDescription() {
18709
- return this.errorDescription;
18710
- }
18711
18678
  constructor_00(errorDescriptionCode) {
18712
18679
  this.success = false;
18713
18680
  this.ErrorId = errorDescriptionCode;
@@ -18807,13 +18774,13 @@ class Transaction {
18807
18774
  }
18808
18775
 
18809
18776
  class TaskTransactionManager {
18777
+ get isClosingTopmostTask() {
18778
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18779
+ }
18810
18780
  constructor(task) {
18811
18781
  this.task = null;
18812
18782
  this.task = task;
18813
18783
  }
18814
- get isClosingTopmostTask() {
18815
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18816
- }
18817
18784
  AllowTransaction(transBegin, forLocal) {
18818
18785
  let result;
18819
18786
  if (forLocal)
@@ -19157,12 +19124,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19157
19124
  }
19158
19125
 
19159
19126
  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
19127
  get TaskService() {
19167
19128
  return this.Task.TaskService;
19168
19129
  }
@@ -19177,11 +19138,24 @@ class DataviewManager extends DataviewManagerBase {
19177
19138
  get VirtualDataviewManager() {
19178
19139
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19179
19140
  }
19141
+ constructor(task) {
19142
+ super(task);
19143
+ this.RemoteDataviewManager = null;
19144
+ this.HasRemoteData = true;
19145
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19146
+ }
19180
19147
  async Execute(command) {
19181
19148
  return await this.CurrentDataviewManager.Execute(command);
19182
19149
  }
19183
19150
  }
19184
19151
 
19152
+ class Sort {
19153
+ constructor() {
19154
+ this.fldIdx = 0;
19155
+ this.dir = false;
19156
+ }
19157
+ }
19158
+
19185
19159
  class SortCollection {
19186
19160
  constructor() {
19187
19161
  this._sortTab = null;
@@ -19308,18 +19282,8 @@ class MgForm extends MgFormBase {
19308
19282
  dv = this._task.DataView;
19309
19283
  return (dv);
19310
19284
  }
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) {
19285
+ async moveInView(unit, direction) {
19321
19286
  let oldRecId = Int32.MinValue;
19322
- let lastParkedCtrl;
19323
19287
  let currRec = this.GetDataview().getCurrRec();
19324
19288
  let oldTaskMode = ' ';
19325
19289
  let returnToVisibleLine = false;
@@ -19410,11 +19374,7 @@ class MgForm extends MgFormBase {
19410
19374
  this.GetDataview().setTopRecIdxModified(true);
19411
19375
  try {
19412
19376
  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);
19377
+ await this.setCurrRowByDisplayLine(this.GetDataview().getCurrRecIdx() + size, true, false);
19418
19378
  this.GetDataview().setTopRecIdxModified(false);
19419
19379
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19420
19380
  }
@@ -19454,6 +19414,7 @@ class MgForm extends MgFormBase {
19454
19414
  try {
19455
19415
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19456
19416
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19417
+ visibleLine = this.getLastValidRow();
19457
19418
  }
19458
19419
  catch (Exception) {
19459
19420
  }
@@ -19577,15 +19538,6 @@ class MgForm extends MgFormBase {
19577
19538
  else
19578
19539
  this.SetTableTopIndex();
19579
19540
  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
19541
  }
19590
19542
  catch (e) {
19591
19543
  if (e instanceof RecordOutOfDataViewException) {
@@ -20117,8 +20069,13 @@ class MgForm extends MgFormBase {
20117
20069
  finally {
20118
20070
  this._inRefreshDisp = false;
20119
20071
  }
20120
- if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed))
20072
+ if (refreshType === Constants.TASK_REFRESH_CURR_REC && (!super.isLineMode() || this._tableRefreshed)) {
20121
20073
  this.FormRefreshed = true;
20074
+ if (this._task.isFirstRecordCycle() || AccessHelper.eventsManager.getIsInViewRefresh()) {
20075
+ Commands.addNoParameters(CommandType.SET_WC_IDLE, this);
20076
+ AccessHelper.eventsManager.setIsInViewRefresh(false);
20077
+ }
20078
+ }
20122
20079
  return true;
20123
20080
  }
20124
20081
  RefreshUI() {
@@ -21526,8 +21483,12 @@ class EventHandler {
21526
21483
  continue;
21527
21484
  else if (this._operationTab.getOperation(oper.getBlockEnd()).getServerId() < nextOperIdx)
21528
21485
  continue;
21529
- if (!taskEnd)
21530
- await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE);
21486
+ if (!taskEnd) {
21487
+ let mainLevel = this._task.getMainLevel().toLowerCase();
21488
+ if (await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE) && Environment.Instance.getSpecialImmediateHandlerEnd() &&
21489
+ mainLevel != "RP".toLowerCase() && mainLevel != "TP".toLowerCase() && mainLevel != "RS".toLowerCase() && mainLevel != "TS".toLowerCase())
21490
+ break;
21491
+ }
21531
21492
  if (this._taskMgdID !== mgdID)
21532
21493
  isChangedCurrWndRef.value = true;
21533
21494
  if (!this._task.isMainProg() && this._task.isOpenWin())
@@ -22321,13 +22282,6 @@ class UserEventsTable {
22321
22282
  }
22322
22283
 
22323
22284
  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
22285
  get Count() {
22332
22286
  return this._formsStringXml.length;
22333
22287
  }
@@ -22336,6 +22290,13 @@ class FormsTable {
22336
22290
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22337
22291
  return null;
22338
22292
  }
22293
+ constructor(task, parentForm) {
22294
+ this._task = null;
22295
+ this._parentForm = null;
22296
+ this._formsStringXml = null;
22297
+ this._task = task;
22298
+ this._parentForm = parentForm;
22299
+ }
22339
22300
  async fillData() {
22340
22301
  this._formsStringXml = new List();
22341
22302
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22525,6 +22486,47 @@ var Task_Direction;
22525
22486
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22526
22487
  })(Task_Direction || (Task_Direction = {}));
22527
22488
  class Task extends TaskBase {
22489
+ get ParentTask() {
22490
+ return this._parentTask;
22491
+ }
22492
+ set TryingToCommit(value) {
22493
+ this._tryingToCommit = value;
22494
+ }
22495
+ get TryingToCommit() {
22496
+ return this._tryingToCommit;
22497
+ }
22498
+ get TaskService() {
22499
+ if (this._taskService == null)
22500
+ this._taskService = new RemoteTaskService();
22501
+ return this._taskService;
22502
+ }
22503
+ static get CommandsProcessor() {
22504
+ return CommandsProcessorManager.GetCommandsProcessor();
22505
+ }
22506
+ get LogicalStudioParentTask() {
22507
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22508
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22509
+ }
22510
+ return this.StudioParentTask;
22511
+ }
22512
+ get KnownToServer() {
22513
+ return this._knownToServer;
22514
+ }
22515
+ set Transaction(value) {
22516
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22517
+ }
22518
+ get Transaction() {
22519
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22520
+ }
22521
+ get TaskDefinitionId() {
22522
+ if (this.taskDefinitionId === null) {
22523
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22524
+ }
22525
+ return this.taskDefinitionId;
22526
+ }
22527
+ static get IsBlockingBatch() {
22528
+ return false;
22529
+ }
22528
22530
  constructor(parent) {
22529
22531
  super();
22530
22532
  this._dvCache = null;
@@ -22593,47 +22595,6 @@ class Task extends TaskBase {
22593
22595
  }
22594
22596
  this.constructor_1(parent);
22595
22597
  }
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
22598
  constructor_0() {
22638
22599
  this.ActionManager = new ActionManager();
22639
22600
  this.DataView = new DataView(this);
@@ -24444,6 +24405,7 @@ class Task extends TaskBase {
24444
24405
  this.ActionManager.enable(InternalInterface.MG_ACT_SORT_RECORDS, enable);
24445
24406
  enable = await this.checkProp(PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX, true);
24446
24407
  this.ActionManager.enable(InternalInterface.MG_ACT_VIEW_BY_KEY, enable);
24408
+ this.ActionManager.enable(InternalInterface.MG_ACT_DUMP_ENVIRONMENT, true);
24447
24409
  }
24448
24410
  setEnableZoomHandler() {
24449
24411
  this._enableZoomHandler = true;
@@ -25030,6 +24992,9 @@ class CompMainPrgTable {
25030
24992
  }
25031
24993
 
25032
24994
  class MGData {
24995
+ get ForceModal() {
24996
+ return this.forceModal;
24997
+ }
25033
24998
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25034
24999
  this._expHandlers = null;
25035
25000
  this._id = 0;
@@ -25050,9 +25015,6 @@ class MGData {
25050
25015
  else
25051
25016
  this.constructor_1(id, parent, isModal, forceModal);
25052
25017
  }
25053
- get ForceModal() {
25054
- return this.forceModal;
25055
- }
25056
25018
  constructor_0(id, parent, isModal) {
25057
25019
  this._timerHandlers = new HandlersTable();
25058
25020
  this._expHandlers = new HandlersTable();
@@ -25651,6 +25613,7 @@ class EventsManager {
25651
25613
  this.confirmationDialogTitle = 'Session is about to be terminated!';
25652
25614
  this._lastFailedFocusedControl = null;
25653
25615
  this.isSpinnerShown = false;
25616
+ this.isInViewRefresh = false;
25654
25617
  this.SpinnerStopped = new Subject();
25655
25618
  this._rtEvents = new Stack();
25656
25619
  this._eventsQueue = new MgPriorityBlockingQueue();
@@ -25862,7 +25825,7 @@ class EventsManager {
25862
25825
  if (raiseAt === RaiseAt.TaskInFocus)
25863
25826
  mgControl.setRtEvtTask(LastFocusedManager.Instance.getLastFocusedTask());
25864
25827
  }
25865
- await this.handleFocus(mgControl, line, produceClick);
25828
+ await this.handleFocus(mgControl, line, produceClick, false);
25866
25829
  currTask.setCancelWasRaised(cancelWasRaised);
25867
25830
  if (this._stopExecution)
25868
25831
  return;
@@ -26445,7 +26408,7 @@ class EventsManager {
26445
26408
  this.setLastSavedRouteEvent(aRtEvt);
26446
26409
  }
26447
26410
  }
26448
- async handleFocus(ctrl, line, onClick) {
26411
+ async handleFocus(ctrl, line, onClick, shouldHandleZoom) {
26449
26412
  try {
26450
26413
  if (ctrl.isStatic())
26451
26414
  return;
@@ -26463,6 +26426,10 @@ class EventsManager {
26463
26426
  let prevCtrl = LastFocusedManager.getLastFocusedControl();
26464
26427
  if (ctrl === prevCtrl && !ctrl.isRepeatable()) {
26465
26428
  await ctrl.getForm().bringRecordToPage();
26429
+ await this.HandleZoomIfNeeded(ctrl, line, shouldHandleZoom);
26430
+ let rtEvnt = this.getLastRtEvent();
26431
+ if (rtEvnt != null && rtEvnt.ShouldHandleZoom)
26432
+ FocusManager.SetFocus(ctrl, -1);
26466
26433
  return;
26467
26434
  }
26468
26435
  let prevTask = LastFocusedManager.Instance.getLastFocusedTask();
@@ -26502,8 +26469,10 @@ class EventsManager {
26502
26469
  }
26503
26470
  else
26504
26471
  await this.HandleNonParkableControls(ctrl.getForm().getTask());
26505
- if (!this._stopExecution && MgControl.ReturnToCtrl === ctrl)
26472
+ if (!this._stopExecution && MgControl.ReturnToCtrl === ctrl) {
26506
26473
  LastFocusedManager.setLastFocusedControl(ctrl.getForm().getTask(), ctrl);
26474
+ await this.HandleZoomIfNeeded(ctrl, line, shouldHandleZoom);
26475
+ }
26507
26476
  return;
26508
26477
  }
26509
26478
  finally {
@@ -26564,6 +26533,13 @@ class EventsManager {
26564
26533
  }
26565
26534
  }
26566
26535
  }
26536
+ async HandleZoomIfNeeded(ctrl, line, shouldHandleZoom) {
26537
+ if (shouldHandleZoom) {
26538
+ var rtEvt = new RunTimeEvent(ctrl, line, true);
26539
+ rtEvt.setInternal(InternalInterface.MG_ACT_ZOOM);
26540
+ await this.handleEvent(rtEvt, false);
26541
+ }
26542
+ }
26567
26543
  canGoToControl(ctrl, onClick) {
26568
26544
  if (onClick && (ctrl.Type === MgControlType.CTRL_TYPE_SUBFORM || ctrl.Type === MgControlType.CTRL_TYPE_BROWSER))
26569
26545
  return false;
@@ -26796,7 +26772,7 @@ class EventsManager {
26796
26772
  case InternalInterface.MG_ACT_WEB_ON_DBLICK:
26797
26773
  break;
26798
26774
  case InternalInterface.MG_ACT_CTRL_FOCUS:
26799
- await this.handleFocus(ctrl, displayLine, evt.isProduceClick());
26775
+ await this.handleFocus(ctrl, displayLine, evt.isProduceClick(), evt.ShouldHandleZoom);
26800
26776
  return false;
26801
26777
  case InternalInterface.MG_ACT_CTRL_FOCUS_ON_NON_MAGIC_CONTROL:
26802
26778
  await this.handleFocusOnNonMagicControl(ctrl);
@@ -27490,6 +27466,7 @@ class EventsManager {
27490
27466
  }
27491
27467
  break;
27492
27468
  case InternalInterface.MG_ACT_SERVER_TERMINATION:
27469
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
27493
27470
  cmd = CommandFactory.CreateEventCommand(task.getTaskTag(), intEvtCode);
27494
27471
  cmdsToServer.Add(cmd);
27495
27472
  await CommandsProcessorManager.GetCommandsProcessor().Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
@@ -27809,6 +27786,7 @@ class EventsManager {
27809
27786
  else if (intEvtCode === InternalInterface.MG_ACT_RT_REFRESH_SCREEN && task.getMode() !== Constants.TASK_MODE_QUERY && !task.getAfterRetry()) {
27810
27787
  await dv.currRecCompute(true);
27811
27788
  }
27789
+ this.setIsInViewRefresh(true);
27812
27790
  await this.handleInternalEventWithTask(task, InternalInterface.MG_ACT_REC_PREFIX);
27813
27791
  if (!this.GetStopExecutionFlag() && !task.getPreventControlChange()) {
27814
27792
  if (!(task === LastFocusedManager.Instance.getLastFocusedTask() || !task.pathContains(LastFocusedManager.Instance.getLastFocusedTask())))
@@ -28538,6 +28516,12 @@ class EventsManager {
28538
28516
  return false;
28539
28517
  return true;
28540
28518
  }
28519
+ getIsInViewRefresh() {
28520
+ return this.isInViewRefresh;
28521
+ }
28522
+ setIsInViewRefresh(inViewRefresh) {
28523
+ this.isInViewRefresh = inViewRefresh;
28524
+ }
28541
28525
  }
28542
28526
  EventsManager.REAL_ONLY = true;
28543
28527
  EventsManager.MAX_OPER = 9999;
@@ -28646,15 +28630,15 @@ class GuiEventsProcessor extends EventsProcessor {
28646
28630
  }
28647
28631
  static processSelection(val, guiMgCtrl, line, produceClick) {
28648
28632
  let mgControl = guiMgCtrl;
28649
- if (mgControl.Type === MgControlType.CTRL_TYPE_BUTTON && mgControl.getForm().getTask().getLastParkedCtrl() !== mgControl)
28650
- produceClick = true;
28651
28633
  if (guiMgCtrl.ConnectedControl) {
28652
28634
  let rtEvt = new RunTimeEvent(mgControl, +line, true);
28653
- rtEvt.setInternal(InternalInterface.MG_ACT_ZOOM);
28654
- rtEvt.setProduceClick(produceClick);
28635
+ rtEvt.setInternal(InternalInterface.MG_ACT_CTRL_FOCUS);
28636
+ rtEvt.ShouldHandleZoom = true;
28655
28637
  EventsManager.Instance.addToTail(rtEvt);
28656
28638
  }
28657
28639
  else {
28640
+ if (mgControl.Type === MgControlType.CTRL_TYPE_BUTTON && mgControl.getForm().getTask().getLastParkedCtrl() !== mgControl)
28641
+ produceClick = true;
28658
28642
  let rtEvt = new RunTimeEvent(mgControl, +line, true);
28659
28643
  rtEvt.setInternal(InternalInterface.MG_ACT_SELECTION);
28660
28644
  rtEvt.setValue(val);
@@ -29054,13 +29038,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29054
29038
  }
29055
29039
 
29056
29040
  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
29041
  async ProcessMessageBoxResponse(task, returnValue) {
29065
29042
  if (task !== null)
29066
29043
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29091,6 +29068,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29091
29068
  break;
29092
29069
  }
29093
29070
  }
29071
+ constructor() {
29072
+ super();
29073
+ this._buttonsID = '\0';
29074
+ this._image = '\0';
29075
+ this._returnValStr = null;
29076
+ this._returnVal = null;
29077
+ }
29094
29078
  }
29095
29079
 
29096
29080
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29187,12 +29171,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29187
29171
  }
29188
29172
 
29189
29173
  class ResultCommand extends ClientTargetedCommandBase {
29190
- constructor() {
29191
- super();
29192
- this._isNull = false;
29193
- this._attr = StorageAttribute.NONE;
29194
- this._val = null;
29195
- }
29196
29174
  async Execute(res) {
29197
29175
  if (this._isNull)
29198
29176
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29218,6 +29196,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29218
29196
  break;
29219
29197
  }
29220
29198
  }
29199
+ constructor() {
29200
+ super();
29201
+ this._isNull = false;
29202
+ this._attr = StorageAttribute.NONE;
29203
+ this._val = null;
29204
+ }
29221
29205
  }
29222
29206
 
29223
29207
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29582,19 +29566,9 @@ class CommandsTable {
29582
29566
  }
29583
29567
  }
29584
29568
 
29585
- let CurrentClientVersion = '4.1000.0-dev4100.43';
29569
+ let CurrentClientVersion = '4.1000.0-dev4100.431';
29586
29570
 
29587
29571
  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
29572
  static get Instance() {
29599
29573
  if (ClientManager._instance === null)
29600
29574
  ClientManager._instance = new ClientManager();
@@ -29620,7 +29594,7 @@ class ClientManager {
29620
29594
  }
29621
29595
  break;
29622
29596
  case "mousedown":
29623
- if (control.isButton()) {
29597
+ if (control.isButton() || (control.ConnectedControl && guiEvent.fromButton)) {
29624
29598
  this._buttonIsClicked = true;
29625
29599
  }
29626
29600
  else if (!control.isSubform())
@@ -29639,7 +29613,7 @@ class ClientManager {
29639
29613
  }
29640
29614
  break;
29641
29615
  case "focus":
29642
- if (this._buttonIsClicked)
29616
+ if (this._buttonIsClicked || (control.ConnectedControl && guiEvent.fromButton))
29643
29617
  return;
29644
29618
  Events.OnFocus(control, lineIdx, true, false);
29645
29619
  break;
@@ -29655,6 +29629,9 @@ class ClientManager {
29655
29629
  case "setexternalvalue":
29656
29630
  EventsManager.Instance.AddExternalValueEvent(control, guiEvent.externalValue, guiEvent.param);
29657
29631
  break;
29632
+ case "setAsThreeState":
29633
+ control.setAsThreeState();
29634
+ break;
29658
29635
  default:
29659
29636
  break;
29660
29637
  }
@@ -29794,6 +29771,16 @@ class ClientManager {
29794
29771
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29795
29772
  }
29796
29773
  }
29774
+ constructor() {
29775
+ this._globalUniqueSessionId = null;
29776
+ this._buttonIsClicked = false;
29777
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29778
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29779
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29780
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29781
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29782
+ this.RegisterDelegates();
29783
+ }
29797
29784
  InitGuiManager() {
29798
29785
  Manager.EventsManager = EventsManager.Instance;
29799
29786
  Manager.DefaultServerName = ServerConfig.Instance.getServer();
@@ -29846,7 +29833,7 @@ class ClientManager {
29846
29833
  await MGDataCollection.Instance.addMGData(mgd, 0, true);
29847
29834
  await ClientManager.Instance.WorkThreadExecution();
29848
29835
  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);
29836
+ Logger.Instance.WriteToLog(OSEnvironment.EolSeq + "Ended on " + DateTimeUtils.ToString(DateTime.Now, XMLConstants.ERROR_LOG_DATE_FORMAT, Logger.Instance) + OSEnvironment.EolSeq + OSEnvironment.EolSeq, false);
29850
29837
  }
29851
29838
  }
29852
29839
  else {