@magic-xpa/engine 4.1000.0-dev4100.29 → 4.1000.0-dev4100.290

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 (52) hide show
  1. package/esm2020/src/ClientManager.mjs +11 -11
  2. package/esm2020/src/ConstInterface.mjs +3 -1
  3. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  4. package/esm2020/src/commands/ClientToServer/DataviewCommand.mjs +6 -6
  5. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +4 -4
  6. package/esm2020/src/commands/ClientToServer/EventCommand.mjs +8 -8
  7. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +4 -4
  8. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +5 -5
  9. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +7 -7
  10. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +6 -6
  11. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +8 -8
  12. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +7 -7
  13. package/esm2020/src/data/DataView.mjs +34 -34
  14. package/esm2020/src/data/DataviewManager.mjs +7 -7
  15. package/esm2020/src/data/Record.mjs +10 -10
  16. package/esm2020/src/data/TaskTransactionManager.mjs +4 -4
  17. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +5 -5
  18. package/esm2020/src/env/Environment.mjs +14 -7
  19. package/esm2020/src/env/MirrorString.mjs +2 -3
  20. package/esm2020/src/event/Event.mjs +4 -1
  21. package/esm2020/src/event/EventHandler.mjs +8 -3
  22. package/esm2020/src/event/EventHandlerPosition.mjs +5 -1
  23. package/esm2020/src/event/EventsManager.mjs +2 -1
  24. package/esm2020/src/event/RunTimeEvent.mjs +16 -16
  25. package/esm2020/src/exp/ExpressionDict.mjs +8 -8
  26. package/esm2020/src/exp/ExpressionEvaluator.mjs +4 -178
  27. package/esm2020/src/gui/FormsTable.mjs +8 -8
  28. package/esm2020/src/gui/MgControl.mjs +10 -13
  29. package/esm2020/src/gui/MgForm.mjs +4 -22
  30. package/esm2020/src/http/HttpManager.mjs +8 -8
  31. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +35 -26
  32. package/esm2020/src/rt/DataviewHeaderBase.mjs +16 -16
  33. package/esm2020/src/security/UserDetails.mjs +12 -12
  34. package/esm2020/src/tasks/MGData.mjs +4 -4
  35. package/esm2020/src/tasks/RCTimer.mjs +10 -10
  36. package/esm2020/src/tasks/Task.mjs +42 -42
  37. package/esm2020/src/util/FlowMonitorQueue.mjs +107 -2
  38. package/esm2020/src/util/PrmMap.mjs +6 -6
  39. package/esm2020/src/util/ReturnResult.mjs +7 -7
  40. package/fesm2015/magic-xpa-engine.mjs +486 -583
  41. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  42. package/fesm2020/magic-xpa-engine.mjs +485 -546
  43. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  44. package/package.json +6 -6
  45. package/src/ConstInterface.d.ts +2 -0
  46. package/src/env/Environment.d.ts +2 -0
  47. package/src/exp/ExpressionEvaluator.d.ts +0 -9
  48. package/src/gui/MgControl.d.ts +0 -1
  49. package/src/gui/MgForm.d.ts +1 -3
  50. package/src/util/FlowMonitorQueue.d.ts +8 -0
  51. package/src/util/PrmMap.d.ts +1 -1
  52. package/magic-xpa-engine.d.ts +0 -2
@@ -1,6 +1,6 @@
1
1
  import { StringBuilder, Int32, NString, ApplicationException, NNumber, List, Debug, Char, RefParam, NumberStyles, HashUtils, DateTime, Dictionary, Stack, NChar, isNullOrUndefined, WebException, Thread, Encoding, Exception, isUndefined, Hashtable, NotImplementedException, Array_Enumerator, ISO_8859_1_Encoding, Int64 } from '@magic-xpa/mscorelib';
2
2
  import { XMLConstants, StorageAttribute, ViewRefreshMode, InternalInterface, Logger, StorageAttributeCheck, StrUtil, SubformType, TableBehaviour, MgControlType, ScrollBarThumbType, ForceExit, XmlParser, Misc, Base64, Priority, SyncExecutionHelper, Queue, Constants, DateTimeUtils, Logger_LogLevels, Logger_MessageDirection, MsgInterface, RequestInfo, OSEnvironment, JSON_Utils, UtilDateJpn, UtilStrByteMode, PICInterface, WindowType, BrkScope, RaiseAt, CtrlButtonTypeGui } from '@magic-xpa/utils';
3
- import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, ControlTable, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, VectorType, GuiExpressionEvaluator, ExpressionInterface, PIC, DataModificationTypes, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
3
+ import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, ControlTable, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, VectorType, PIC, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, GuiExpressionEvaluator, ExpressionInterface, DataModificationTypes, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
4
4
  import { HttpHeaders, HttpErrorResponse } from '@angular/common/http';
5
5
  import { timer, Subject } from 'rxjs';
6
6
 
@@ -271,6 +271,7 @@ ConstInterface.MG_ATTR_LOCAL_AS400SET = "local_as400set";
271
271
  ConstInterface.MG_ATTR_LOCAL_EXTRA_GENGO = "local_extraGengo";
272
272
  ConstInterface.MG_ATTR_LOCAL_FLAGS = "local_flags";
273
273
  ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP = "SpecialAnsiExpression";
274
+ ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END = "SpecialImmediateHandlerEnd";
274
275
  ConstInterface.MG_ATTR_SPECIAL_SHOW_STATUSBAR_PANES = "SpecialShowStatusBarPanes";
275
276
  ConstInterface.MG_ATTR_SPECIAL_ROUTE_TO_ROOT_PROG_ON_CONTEXT_RECREATION = "SpecialRouteToRootProgramOnContextRecreation";
276
277
  ConstInterface.MG_ATTR_SPECIAL_SPECIAL_EDIT_LEFT_ALIGN = "SpecialEditLeftAlign";
@@ -475,6 +476,7 @@ ConstInterface.RC_TOKEN_DATA = "DATA=";
475
476
  ConstInterface.WEBCLIENT_REINITIALIZE_REQUEST = "WCREINITIALIZEREQUEST=Y";
476
477
  ConstInterface.MAIN_PROG_VIEW = "MainProgramsDataView";
477
478
  ConstInterface.GLOBAL_PARAM_LIST = "GlobalParamList";
479
+ ConstInterface.ENV_VAR_LIST = "EnvVarList";
478
480
  ConstInterface.LAST_EXCEPTION = "LastException";
479
481
  ConstInterface.CTX_REMOVED_FROM_SRVR = "CtxRemovedFromSrvr";
480
482
  ConstInterface.LAST_ROUTE_EVENT = "LastRouteEvent";
@@ -640,13 +642,6 @@ class CommandSerializationHelper {
640
642
  }
641
643
 
642
644
  class EventCommand extends ClientOriginatedCommandTaskTag {
643
- constructor(magicEvent) {
644
- super();
645
- this.TaskTag = null;
646
- this.MagicEvent = 0;
647
- this.ClientRecId = 0;
648
- this.MagicEvent = magicEvent;
649
- }
650
645
  get CommandTypeAttribute() {
651
646
  return ConstInterface.MG_ATTR_VAL_EVENT;
652
647
  }
@@ -662,6 +657,13 @@ class EventCommand extends ClientOriginatedCommandTaskTag {
662
657
  return false;
663
658
  return true;
664
659
  }
660
+ constructor(magicEvent) {
661
+ super();
662
+ this.TaskTag = null;
663
+ this.MagicEvent = 0;
664
+ this.ClientRecId = 0;
665
+ this.MagicEvent = magicEvent;
666
+ }
665
667
  SerializeCommandData() {
666
668
  let helper = new CommandSerializationHelper();
667
669
  helper.SerializeTaskTag(this.TaskTag);
@@ -1171,15 +1173,6 @@ class OpeningTaskDetails {
1171
1173
  }
1172
1174
 
1173
1175
  class MgControl extends MgControlBase {
1174
- constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1175
- if (arguments.length === 0)
1176
- super();
1177
- else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1178
- super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1179
- else
1180
- super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1181
- this.initialize();
1182
- }
1183
1176
  initialize() {
1184
1177
  this._focusedStopExecution = false;
1185
1178
  this._inControlSuffix = false;
@@ -1192,6 +1185,15 @@ class MgControl extends MgControlBase {
1192
1185
  this.HasZoomHandler = false;
1193
1186
  this.ArgList = null;
1194
1187
  }
1188
+ constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1189
+ if (arguments.length === 0)
1190
+ super();
1191
+ else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1192
+ super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1193
+ else
1194
+ super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1195
+ this.initialize();
1196
+ }
1195
1197
  GetVarIndex() {
1196
1198
  return super.getForm().getTask().DataView.Dvcount + this.veeIndx;
1197
1199
  }
@@ -1458,9 +1460,6 @@ class MgControl extends MgControlBase {
1458
1460
  this.KeyStrokeOn = false;
1459
1461
  }
1460
1462
  }
1461
- async refreshAndSetItemsListForRadioButton(line, execComputeChoice) {
1462
- await super.refreshAndSetItemsListForRadioButton(line, execComputeChoice);
1463
- }
1464
1463
  getSubformTask() {
1465
1464
  return this._subformTask;
1466
1465
  }
@@ -2817,6 +2816,9 @@ class Event {
2817
2816
  case InternalInterface.MG_ACT_INDEX_CHANGE:
2818
2817
  description = 'Index Change';
2819
2818
  break;
2819
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
2820
+ description = 'Dump Environment';
2821
+ break;
2820
2822
  default:
2821
2823
  description = '';
2822
2824
  break;
@@ -3124,6 +3126,21 @@ class MgPriorityBlockingQueue {
3124
3126
  }
3125
3127
 
3126
3128
  class RunTimeEvent extends RunTimeEventBase {
3129
+ set Control(value) {
3130
+ this._ctrl = value;
3131
+ }
3132
+ set DisplayLine(value) {
3133
+ this._displayLine = value;
3134
+ }
3135
+ get Control() {
3136
+ return this._ctrl;
3137
+ }
3138
+ get ControlsList() {
3139
+ return this._controlsList;
3140
+ }
3141
+ get Direction() {
3142
+ return this._direction;
3143
+ }
3127
3144
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3128
3145
  super();
3129
3146
  this._controlsList = null;
@@ -3185,21 +3202,6 @@ class RunTimeEvent extends RunTimeEventBase {
3185
3202
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3186
3203
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3187
3204
  }
3188
- set Control(value) {
3189
- this._ctrl = value;
3190
- }
3191
- set DisplayLine(value) {
3192
- this._displayLine = value;
3193
- }
3194
- get Control() {
3195
- return this._ctrl;
3196
- }
3197
- get ControlsList() {
3198
- return this._controlsList;
3199
- }
3200
- get Direction() {
3201
- return this._direction;
3202
- }
3203
3205
  constructor_5(taskRef) {
3204
3206
  this.init(taskRef);
3205
3207
  }
@@ -3529,7 +3531,17 @@ class FlowMonitorQueue {
3529
3531
  this._isRecompute = false;
3530
3532
  this._isTask = false;
3531
3533
  this._isTaskFlow = false;
3534
+ this._isDataView = false;
3532
3535
  this.ShouldSerialize = false;
3536
+ this.padRight = (string, length, character = ' ') => {
3537
+ let result = "";
3538
+ let totalLength = length - string.length;
3539
+ for (let i = 0; i < totalLength; i++) {
3540
+ result = character + result;
3541
+ }
3542
+ result = result + string;
3543
+ return result;
3544
+ };
3533
3545
  }
3534
3546
  static get Instance() {
3535
3547
  if (FlowMonitorQueue._instance === null)
@@ -3587,6 +3599,9 @@ class FlowMonitorQueue {
3587
3599
  case ConstInterface.MG_ATTR_TASKFLW:
3588
3600
  this._isTaskFlow = XmlParser.getBoolean(valueStr);
3589
3601
  break;
3602
+ case ConstInterface.MG_TAG_DATAVIEW:
3603
+ this._isDataView = XmlParser.getBoolean(valueStr);
3604
+ break;
3590
3605
  case ConstInterface.MG_ATTR_RECOMP:
3591
3606
  this._isRecompute = XmlParser.getBoolean(valueStr);
3592
3607
  break;
@@ -3644,6 +3659,96 @@ class FlowMonitorQueue {
3644
3659
  Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
3645
3660
  }
3646
3661
  }
3662
+ appendVirtualsAndParameters(currentValues) {
3663
+ let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, InternalInterface.MG_ACT_REC_PREFIX);
3664
+ act.setInfo(currentValues);
3665
+ this._queue.put(act);
3666
+ }
3667
+ addDataViewFlow(task) {
3668
+ if (this._isDataView) {
3669
+ let fldTab = task.DataView.GetFieldsTab();
3670
+ let preparedDisplayString = "";
3671
+ let finaldisplayData = "\n";
3672
+ let fldValue;
3673
+ let data = "";
3674
+ for (let i = 0; i < fldTab.getSize(); i++) {
3675
+ let fldDef = fldTab.getField(i);
3676
+ if (!fldDef.IsEventHandlerField && (fldDef.IsVirtual && !fldDef.VirAsReal) || fldDef.isParam()) {
3677
+ fldValue = fldDef.isNull() ? fldDef.getNullValue() : fldDef.getValue(true);
3678
+ data = this.getFieldData(fldDef.getType(), fldValue, fldDef.getPicture(), fldDef.getCellsType(), task);
3679
+ preparedDisplayString = this.PrepareDisplayString(fldDef.isParam(), fldDef.getVarName(), data, true);
3680
+ finaldisplayData = finaldisplayData + preparedDisplayString + "\n";
3681
+ }
3682
+ }
3683
+ this.appendVirtualsAndParameters(finaldisplayData);
3684
+ }
3685
+ }
3686
+ getFieldData(Storagetype, data, picture, vecCellType, task) {
3687
+ switch (Storagetype) {
3688
+ case StorageAttribute.DOTNET:
3689
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3690
+ break;
3691
+ case StorageAttribute.BLOB:
3692
+ {
3693
+ if (BlobType.isValidBlob(data)) {
3694
+ let contentType = BlobType.getContentType(data);
3695
+ if (contentType == BlobType.CONTENT_TYPE_ANSI || contentType == BlobType.CONTENT_TYPE_UNICODE)
3696
+ data = data != null ? BlobType.getString(data) : "";
3697
+ else
3698
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3699
+ }
3700
+ else
3701
+ data = "";
3702
+ }
3703
+ break;
3704
+ case StorageAttribute.NUMERIC:
3705
+ case StorageAttribute.DATE:
3706
+ case StorageAttribute.TIME:
3707
+ let conv = DisplayConvertor.Instance;
3708
+ data = conv.mg2disp(data, " ", new PIC(picture, Storagetype, task.getCompIdx()), false, task.getCompIdx(), false);
3709
+ break;
3710
+ case StorageAttribute.BLOB_VECTOR:
3711
+ let vecOutData;
3712
+ if (data == null) {
3713
+ vecOutData = "[]";
3714
+ }
3715
+ else {
3716
+ let cellAtt = vecCellType;
3717
+ let vector = new VectorType(data);
3718
+ if (cellAtt == StorageAttribute.BLOB && !VectorType.validateBlobContents(data))
3719
+ vecOutData = "[]";
3720
+ else {
3721
+ let vecSize = VectorType.getVecSize(data);
3722
+ let cellPicture = (cellAtt == StorageAttribute.NUMERIC || cellAtt == StorageAttribute.DATE || cellAtt == StorageAttribute.TIME) ? PIC.buildPicture(cellAtt, vector.getVecCell(1), task.getCompIdx(), true).getFormat() : picture;
3723
+ vecOutData = "[";
3724
+ for (let i = 0; i < vecSize; i++) {
3725
+ vecOutData += this.getFieldData(cellAtt, vector.getVecCell(i + 1), cellPicture, vecCellType, task);
3726
+ vecOutData += i < vecSize - 1 ? "," : "]";
3727
+ }
3728
+ }
3729
+ }
3730
+ data = vecOutData;
3731
+ break;
3732
+ case StorageAttribute.BOOLEAN:
3733
+ data = data == "1" ? "TRUE" : "FALSE";
3734
+ break;
3735
+ }
3736
+ return data;
3737
+ }
3738
+ PrepareDisplayString(mode, name, valueContent, addDoubleQuotes) {
3739
+ let str = "";
3740
+ let finalStringToDisplay = "";
3741
+ if (addDoubleQuotes)
3742
+ finalStringToDisplay = finalStringToDisplay + "\"";
3743
+ finalStringToDisplay = finalStringToDisplay + name;
3744
+ if (addDoubleQuotes)
3745
+ finalStringToDisplay = finalStringToDisplay + "\"";
3746
+ let paddedName = this.padRight(name, 34);
3747
+ let formatOfStringVirtual = `Virtual`;
3748
+ let formatOfStringParameter = `Parameter`;
3749
+ str = (mode ? formatOfStringParameter : formatOfStringVirtual) + " : " + `${paddedName}` + " : " + `${valueContent.trim()}`;
3750
+ return str;
3751
+ }
3647
3752
  addTaskFlowRec(id, state, taskInfo) {
3648
3753
  if (this._enabled && this._isTaskFlow) {
3649
3754
  let info;
@@ -3808,6 +3913,7 @@ class FlowMonitorQueue {
3808
3913
  }
3809
3914
  }
3810
3915
  FlowMonitorQueue._instance = null;
3916
+ FlowMonitorQueue.UNPRINTABLE_STR_LOG = "#UNPRINTABLE#";
3811
3917
  FlowMonitorQueue.S_EVENT_STR1 = ">>Starts ";
3812
3918
  FlowMonitorQueue.S_EVENT_STR2 = " Event";
3813
3919
  FlowMonitorQueue.S_EVENT_PROPAGATED = "Event was propagated";
@@ -3869,6 +3975,15 @@ class TimerObjectCollection {
3869
3975
  }
3870
3976
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3871
3977
  class RCTimer extends MgTimer {
3978
+ get TimerIntervalMiliSeconds() {
3979
+ return this._timerIntervalMilliSeconds;
3980
+ }
3981
+ set IsIdleTimer(value) {
3982
+ this._isIdle = value;
3983
+ }
3984
+ get IsIdleTimer() {
3985
+ return this._isIdle;
3986
+ }
3872
3987
  constructor(mgData, milliseconds, isIdle) {
3873
3988
  super(milliseconds);
3874
3989
  this._mgData = null;
@@ -3880,15 +3995,6 @@ class RCTimer extends MgTimer {
3880
3995
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3881
3996
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3882
3997
  }
3883
- get TimerIntervalMiliSeconds() {
3884
- return this._timerIntervalMilliSeconds;
3885
- }
3886
- set IsIdleTimer(value) {
3887
- this._isIdle = value;
3888
- }
3889
- get IsIdleTimer() {
3890
- return this._isIdle;
3891
- }
3892
3998
  GetMgdata() {
3893
3999
  return this._mgData;
3894
4000
  }
@@ -4034,6 +4140,9 @@ class ExecutionStack {
4034
4140
  }
4035
4141
 
4036
4142
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4143
+ get CommandTypeAttribute() {
4144
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4145
+ }
4037
4146
  constructor() {
4038
4147
  super();
4039
4148
  this.ExecutionStack = null;
@@ -4047,9 +4156,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4047
4156
  this.CheckOnly = false;
4048
4157
  this.DitIdx = Int32.MinValue;
4049
4158
  }
4050
- get CommandTypeAttribute() {
4051
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4052
- }
4053
4159
  SerializeCommandData() {
4054
4160
  let helper = new CommandSerializationHelper();
4055
4161
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4504,13 +4610,6 @@ class HttpClientAsync extends HttpClientBase {
4504
4610
  }
4505
4611
 
4506
4612
  class HttpManager {
4507
- constructor() {
4508
- this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4509
- this._httpClientAsync = null;
4510
- this._isAbortingMagicEngine = false;
4511
- this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4512
- this.RegisterBasicDelegates();
4513
- }
4514
4613
  getHttpClient() {
4515
4614
  if (this.IsAbortingMagicEngine)
4516
4615
  return new HttpClientSync();
@@ -4530,6 +4629,13 @@ class HttpManager {
4530
4629
  }
4531
4630
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4532
4631
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4632
+ constructor() {
4633
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4634
+ this._httpClientAsync = null;
4635
+ this._isAbortingMagicEngine = false;
4636
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4637
+ this.RegisterBasicDelegates();
4638
+ }
4533
4639
  RegisterBasicDelegates() {
4534
4640
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4535
4641
  }
@@ -5075,6 +5181,12 @@ var RequestStatus;
5075
5181
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5076
5182
  })(RequestStatus || (RequestStatus = {}));
5077
5183
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5184
+ static GetInstance() {
5185
+ if (RemoteCommandsProcessor._instance === null) {
5186
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5187
+ }
5188
+ return RemoteCommandsProcessor._instance;
5189
+ }
5078
5190
  constructor() {
5079
5191
  super();
5080
5192
  this._lastRequestTime = 0;
@@ -5085,12 +5197,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5085
5197
  HttpManager.GetInstance();
5086
5198
  this.RegisterDelegates();
5087
5199
  }
5088
- static GetInstance() {
5089
- if (RemoteCommandsProcessor._instance === null) {
5090
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5091
- }
5092
- return RemoteCommandsProcessor._instance;
5093
- }
5094
5200
  CheckAndSetSessionCounter(newSessionCounter) {
5095
5201
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5096
5202
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5123,10 +5229,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5229
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5230
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5231
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5232
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5233
  let dataStorage = window.localStorage;
5127
5234
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5235
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5236
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5237
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5238
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5239
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5240
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5461,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5461
  let reqBuf;
5354
5462
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5463
  let globalParamsString = null;
5464
+ let envVarsString = null;
5356
5465
  if (this.DelayCommandExecution)
5357
5466
  return;
5358
5467
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5487,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5487
  let buffer = new StringBuilder();
5379
5488
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5489
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5490
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5491
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5492
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5493
+ }
5494
+ else {
5384
5495
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5496
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5497
+ }
5385
5498
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5499
+ changes.Append(envVarsString);
5387
5500
  if (changes.Length > 0) {
5388
5501
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5502
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5535,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5535
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5536
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5537
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5538
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5539
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5540
  }
5427
5541
  }
5428
5542
  FlowMonitorQueue.Instance.enable(false);
5429
5543
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5544
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5545
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5546
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5547
  let dataStorage = window.localStorage;
5433
5548
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5549
  if (ctxRemoved === "1") {
@@ -5730,21 +5845,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5730
5845
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5731
5846
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5732
5847
  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
5848
  get ScrambleMessages() {
5749
5849
  return this._scrambleMessages;
5750
5850
  }
@@ -5766,6 +5866,21 @@ class HandshakeResponse {
5766
5866
  get MaxInternalLogLevel() {
5767
5867
  return this._maxInternalLogLevel;
5768
5868
  }
5869
+ constructor(responseXML) {
5870
+ this._scrambleMessages = true;
5871
+ this._contextId = null;
5872
+ this._privateSessionId = null;
5873
+ this._inputPassword = false;
5874
+ this._httpTimeout = 0;
5875
+ this._systemLogin = null;
5876
+ this._maxInternalLogLevel = null;
5877
+ try {
5878
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5879
+ }
5880
+ catch (ex) {
5881
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5882
+ }
5883
+ }
5769
5884
  FillFromJSON(error, result) {
5770
5885
  if (error != null) {
5771
5886
  throw error;
@@ -6722,7 +6837,7 @@ ExpressionDict.expDesc = [
6722
6837
  null,
6723
6838
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6839
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6840
+ null,
6726
6841
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6842
  null,
6728
6843
  null,
@@ -7171,12 +7286,12 @@ ExpressionDict.expDesc = [
7171
7286
  null,
7172
7287
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7288
  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),
7289
+ null,
7290
+ null,
7291
+ null,
7292
+ null,
7293
+ null,
7294
+ null,
7180
7295
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7296
  null,
7182
7297
  null,
@@ -7263,48 +7378,6 @@ ExpressionDict.expDesc = [
7263
7378
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7379
  ];
7265
7380
 
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
7381
  class EventHandlerPosition {
7309
7382
  constructor() {
7310
7383
  this._handlerIdx = 0;
@@ -7361,6 +7434,9 @@ class EventHandlerPosition {
7361
7434
  case InternalInterface.MG_ACT_REC_SUFFIX:
7362
7435
  case InternalInterface.MG_ACT_CTRL_PREFIX:
7363
7436
  case InternalInterface.MG_ACT_CTRL_SUFFIX: {
7437
+ if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
7438
+ FlowMonitorQueue.Instance.addDataViewFlow(this._task);
7439
+ }
7364
7440
  if (this._handlerIdx === -1) {
7365
7441
  for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
7366
7442
  let handler = this._handlersTab.getHandler(this._handlerIdx);
@@ -7501,6 +7577,48 @@ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7501
7577
  EventHandlerPosition.PHASE_GLOBAL = 3;
7502
7578
  EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7503
7579
 
7580
+ var DataViewCommandType;
7581
+ (function (DataViewCommandType) {
7582
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7583
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7584
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7585
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7586
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7587
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7588
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7589
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7590
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7591
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7592
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7593
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7594
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7595
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7596
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7597
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7598
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7599
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7600
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7601
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7602
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7603
+ })(DataViewCommandType || (DataViewCommandType = {}));
7604
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7605
+ get CommandTypeAttribute() {
7606
+ throw new NotImplementedException();
7607
+ }
7608
+ SerializeCommandData() {
7609
+ Debug.Assert(false, "Dataview commands need not be serialized");
7610
+ return null;
7611
+ }
7612
+ get ShouldSerialize() {
7613
+ return false;
7614
+ }
7615
+ constructor() {
7616
+ super();
7617
+ this.CommandType = 0;
7618
+ this.TaskTag = null;
7619
+ }
7620
+ }
7621
+
7504
7622
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7623
  constructor() {
7506
7624
  super();
@@ -7720,12 +7838,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7720
7838
  }
7721
7839
 
7722
7840
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7723
- constructor() {
7724
- super();
7725
- this.TaskTag = null;
7726
- this.FldId = 0;
7727
- this.IgnoreSubformRecompute = false;
7728
- }
7729
7841
  get CommandTypeAttribute() {
7730
7842
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7731
7843
  }
@@ -7737,17 +7849,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7737
7849
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7738
7850
  return helper.GetString();
7739
7851
  }
7852
+ constructor() {
7853
+ super();
7854
+ this.TaskTag = null;
7855
+ this.FldId = 0;
7856
+ this.IgnoreSubformRecompute = false;
7857
+ }
7740
7858
  getCommandInfo() {
7741
7859
  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
7860
  }
7743
7861
  }
7744
7862
 
7745
7863
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7746
- constructor() {
7747
- super();
7748
- this.TaskTag = null;
7749
- this.ReversibleExit = false;
7750
- }
7751
7864
  get CommandTypeAttribute() {
7752
7865
  return ConstInterface.MG_ATTR_VAL_TRANS;
7753
7866
  }
@@ -7761,6 +7874,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7761
7874
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7762
7875
  return helper.GetString();
7763
7876
  }
7877
+ constructor() {
7878
+ super();
7879
+ this.TaskTag = null;
7880
+ this.ReversibleExit = false;
7881
+ }
7764
7882
  getCommandInfo() {
7765
7883
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7766
7884
  }
@@ -7779,6 +7897,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7779
7897
  }
7780
7898
 
7781
7899
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7900
+ get CommandTypeAttribute() {
7901
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7902
+ }
7782
7903
  constructor() {
7783
7904
  super();
7784
7905
  this.TaskTag = null;
@@ -7787,9 +7908,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7787
7908
  this.MprgCreator = null;
7788
7909
  this.LengthExpVal = Int32.MinValue;
7789
7910
  }
7790
- get CommandTypeAttribute() {
7791
- return ConstInterface.MG_ATTR_VAL_EVAL;
7792
- }
7793
7911
  SerializeCommandData() {
7794
7912
  let helper = new CommandSerializationHelper();
7795
7913
  helper.SerializeTaskTag(this.TaskTag);
@@ -7837,10 +7955,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7837
7955
  }
7838
7956
 
7839
7957
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7840
- constructor() {
7841
- super();
7842
- this.Text = null;
7843
- }
7844
7958
  get CommandTypeAttribute() {
7845
7959
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7846
7960
  }
@@ -7850,6 +7964,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7850
7964
  SerializeCommandData() {
7851
7965
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7852
7966
  }
7967
+ constructor() {
7968
+ super();
7969
+ this.Text = null;
7970
+ }
7853
7971
  getCommandInfo() {
7854
7972
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7855
7973
  }
@@ -8136,13 +8254,6 @@ class CommandFactory {
8136
8254
  }
8137
8255
  }
8138
8256
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8257
  var ParamParseResult;
8147
8258
  (function (ParamParseResult) {
8148
8259
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8152,10 +8263,6 @@ var ParamParseResult;
8152
8263
  })(ParamParseResult || (ParamParseResult = {}));
8153
8264
 
8154
8265
  class PrmMap {
8155
- constructor() {
8156
- this.values = null;
8157
- this.values = new Dictionary();
8158
- }
8159
8266
  getvalue(s) {
8160
8267
  if (this.values.ContainsKey(s))
8161
8268
  return this.values.get_Item(s);
@@ -8168,6 +8275,10 @@ class PrmMap {
8168
8275
  remove(s) {
8169
8276
  this.values.Remove(s);
8170
8277
  }
8278
+ constructor() {
8279
+ this.values = null;
8280
+ this.values = new Dictionary();
8281
+ }
8171
8282
  }
8172
8283
  class MirrorPrmMap extends PrmMap {
8173
8284
  constructor(type) {
@@ -8248,7 +8359,7 @@ class MirrorPrmMap extends PrmMap {
8248
8359
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8360
  }
8250
8361
  }
8251
- RestoreGlobalParams(xml) {
8362
+ RestoreParams(xml) {
8252
8363
  let parser = new XmlParser(xml);
8253
8364
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8365
  }
@@ -8323,6 +8434,7 @@ class Environment {
8323
8434
  this._debugMode = 0;
8324
8435
  this._significantNumSize = 0;
8325
8436
  this._specialAnsiExpression = false;
8437
+ this._specialImmediatehandlerEnd = false;
8326
8438
  this._specialShowStatusBarPanes = false;
8327
8439
  this._specialRouteToRootProgOnContextRecreation = false;
8328
8440
  this._specialCancelOnCreate = false;
@@ -8476,6 +8588,9 @@ class Environment {
8476
8588
  case ConstInterface.MG_ATTR_LOCAL_FLAGS:
8477
8589
  this._localFlags = valueStr;
8478
8590
  break;
8591
+ case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
8592
+ this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
8593
+ break;
8479
8594
  case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
8480
8595
  this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
8481
8596
  break;
@@ -8680,6 +8795,9 @@ class Environment {
8680
8795
  GetLocalFlag(f) {
8681
8796
  return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
8682
8797
  }
8798
+ getSpecialImmediateHandlerEnd() {
8799
+ return this._specialImmediatehandlerEnd;
8800
+ }
8683
8801
  getSpecialAnsiExpression() {
8684
8802
  return this._specialAnsiExpression;
8685
8803
  }
@@ -8749,6 +8867,12 @@ class Environment {
8749
8867
  }
8750
8868
  Environment.Instance = new Environment();
8751
8869
  class EnvironmentDetails {
8870
+ set UpdateInQueryMode(value) {
8871
+ this._updateInQueryMode = value;
8872
+ }
8873
+ set CreateInModifyMode(value) {
8874
+ this._createInModifyMode = value;
8875
+ }
8752
8876
  constructor() {
8753
8877
  this._createInModifyMode = false;
8754
8878
  this._updateInQueryMode = false;
@@ -8759,12 +8883,6 @@ class EnvironmentDetails {
8759
8883
  this.ProjDir = null;
8760
8884
  this.CompIdx = 0;
8761
8885
  }
8762
- set UpdateInQueryMode(value) {
8763
- this._updateInQueryMode = value;
8764
- }
8765
- set CreateInModifyMode(value) {
8766
- this._createInModifyMode = value;
8767
- }
8768
8886
  allowUpdateInQueryMode() {
8769
8887
  return this._updateInQueryMode;
8770
8888
  }
@@ -8852,17 +8970,6 @@ class GlobalParams extends MirrorPrmMap {
8852
8970
  GlobalParams.Instance = new GlobalParams();
8853
8971
 
8854
8972
  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
8973
  setIsLoggedIn(value) {
8867
8974
  this.IsLoggedIn = value;
8868
8975
  }
@@ -8882,6 +8989,17 @@ class UserDetails {
8882
8989
  UserDetails._instance = new UserDetails();
8883
8990
  return UserDetails._instance;
8884
8991
  }
8992
+ constructor() {
8993
+ this.UserName = null;
8994
+ this.UserID = null;
8995
+ this.UserInfo = null;
8996
+ this.Password = null;
8997
+ this.IsLoggedIn = false;
8998
+ this.UserName = NString.Empty;
8999
+ this.UserInfo = NString.Empty;
9000
+ this.IsLoggedIn = false;
9001
+ this.setUserID(NString.Empty);
9002
+ }
8885
9003
  fillData(parser) {
8886
9004
  let tokensVector;
8887
9005
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9690,8 +9808,7 @@ class MirrorString {
9690
9808
  this._reserved = false;
9691
9809
  }
9692
9810
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9811
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9812
  }
9696
9813
  init(name, xmlParser) {
9697
9814
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -10867,7 +10984,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
10867
10984
  case ExpressionInterface.EXP_OP_CONTROL_ITEMS_REFRESH:
10868
10985
  val2 = valStack.pop();
10869
10986
  val1 = valStack.pop();
10870
- this.eval_op_controlItemRefresh(val1, val2, resVal);
10987
+ await this.eval_op_controlItemRefresh(val1, val2, resVal);
10871
10988
  break;
10872
10989
  case ExpressionInterface.EXP_OP_VARCONTROLID:
10873
10990
  val1 = valStack.pop();
@@ -11257,11 +11374,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11374
  val1 = valStack.pop();
11258
11375
  this.eval_op_eoy(resVal, val1);
11259
11376
  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
11377
  case ExpressionInterface.EXP_OP_VARSET:
11266
11378
  val2 = valStack.pop();
11267
11379
  val1 = valStack.pop();
@@ -11626,41 +11738,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11738
  val1 = valStack.pop();
11627
11739
  this.eval_op_taskType(resVal, val1);
11628
11740
  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
11741
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11742
  val1 = valStack.pop();
11666
11743
  this.eval_op_tsk_instance(resVal, val1);
@@ -13003,7 +13080,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13003
13080
  resVal.Attr = StorageAttribute.BOOLEAN;
13004
13081
  if ((parent >= 0 && parent < (this.ExpTask.getTaskDepth(false))) || parent === ExpressionEvaluator.TRIGGER_TASK) {
13005
13082
  let tsk = super.GetContextTask(parent);
13006
- if (tsk != null) {
13083
+ if (tsk != null && tsk.getForm() != null) {
13007
13084
  let control = tsk.getForm().GetCtrl(val1.StrVal);
13008
13085
  if (control != null && control.isChoiceControl() && control.isDataCtrl()) {
13009
13086
  let command = CommandFactory.CreateControlItemsRefreshCommand(tsk.getTaskTag(), control);
@@ -13299,12 +13376,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13376
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13377
  await fld.updateDisplay();
13301
13378
  }
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
13379
  eval_op_like(source, maskOrg, resVal) {
13309
13380
  let i;
13310
13381
  let j;
@@ -13861,54 +13932,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13932
  resultStr.Replace('\\@', '@');
13862
13933
  resVal.StrVal = resultStr.ToString();
13863
13934
  }
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
13935
  eval_op_tsk_instance(resVal, Parent) {
13913
13936
  let tag = 0;
13914
13937
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13945,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13945
  resVal.MgNumVal = new NUM_TYPE();
13923
13946
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13947
  }
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
13948
  eval_op_getParam(resVal, name) {
14004
13949
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13950
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -14517,6 +14462,12 @@ class DataViewBase extends GuiDataViewBase {
14517
14462
  }
14518
14463
 
14519
14464
  class Record {
14465
+ get InCompute() {
14466
+ return this._inCompute;
14467
+ }
14468
+ get InRecompute() {
14469
+ return this._inRecompute;
14470
+ }
14520
14471
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14521
14472
  this._id = Int32.MinValue;
14522
14473
  this.dbViewRowIdx = 0;
@@ -14534,12 +14485,6 @@ class Record {
14534
14485
  else
14535
14486
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14536
14487
  }
14537
- get InCompute() {
14538
- return this._inCompute;
14539
- }
14540
- get InRecompute() {
14541
- return this._inRecompute;
14542
- }
14543
14488
  constructor_0(dvOrTableCache) {
14544
14489
  if (dvOrTableCache instanceof DataViewBase)
14545
14490
  this._dataview = dvOrTableCache;
@@ -15335,14 +15280,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15335
15280
  Record.INCREASE = true;
15336
15281
  Record.DECREASE = false;
15337
15282
  class DcValuesReference extends ObjectReferenceBase {
15283
+ get DcValues() {
15284
+ return this.Referent;
15285
+ }
15338
15286
  constructor(controlId, referencedDcValues) {
15339
15287
  super(referencedDcValues);
15340
15288
  this.ditIdx = 0;
15341
15289
  this.ditIdx = controlId;
15342
15290
  }
15343
- get DcValues() {
15344
- return this.Referent;
15345
- }
15346
15291
  Clone() {
15347
15292
  return new DcValuesReference(this.ditIdx, this.Referent);
15348
15293
  }
@@ -15618,21 +15563,6 @@ class RecordsTable {
15618
15563
  RecordsTable.REC_NOT_FOUND = -1;
15619
15564
 
15620
15565
  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
15566
  get ReturnField() {
15637
15567
  if (this.returnfield === null && this._retVal !== null)
15638
15568
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15653,6 +15583,21 @@ class DataviewHeaderBase {
15653
15583
  get LinkEvaluateCondition() {
15654
15584
  return this._linkEvalCondition;
15655
15585
  }
15586
+ constructor(task) {
15587
+ this._cond = null;
15588
+ this._task = null;
15589
+ this.Loc = null;
15590
+ this._dir = '\0';
15591
+ this._id = 0;
15592
+ this._keyIdx = 0;
15593
+ this._retVal = null;
15594
+ this.returnfield = null;
15595
+ this.LinkStartAfterField = 0;
15596
+ this.KeyExpression = 0;
15597
+ this._task = task;
15598
+ this._keyIdx = -1;
15599
+ this._cond = new YesNoExp(true);
15600
+ }
15656
15601
  SetAttributes(attributes) {
15657
15602
  let keys = attributes.Keys;
15658
15603
  keys.forEach((text) => {
@@ -16943,16 +16888,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16943
16888
  }
16944
16889
 
16945
16890
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16891
+ set SerializedDCVals(value) {
16892
+ this.parser.setXMLdata(value);
16893
+ this.parser.setCurrIndex(0);
16894
+ }
16946
16895
  constructor() {
16947
16896
  super();
16948
16897
  this.dcv = null;
16949
16898
  this.parser = null;
16950
16899
  this.parser = new XmlParser();
16951
16900
  }
16952
- set SerializedDCVals(value) {
16953
- this.parser.setXMLdata(value);
16954
- this.parser.setCurrIndex(0);
16955
- }
16956
16901
  Build() {
16957
16902
  this.dcv = null;
16958
16903
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17010,28 +16955,61 @@ class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
17010
16955
  }
17011
16956
  return super.ParseValues(valueStr, dataType, useHex);
17012
16957
  }
17013
- }
17014
-
17015
- const SET_DISPLAYLINE_BY_DV = Int32.MinValue;
17016
- const COMPUTE_NEWREC_ON_CLIENT = 'C';
17017
- const UNKNOWN_RCMPS_NOT_INITED = 'M';
17018
- const UNKNOWN_RCMPS_FOUND = 'Y';
17019
- const INVOKED_FROM_OFFLINE_TASK = '-99999';
17020
- const CHUNK_CACHE_NEXT = 'N';
17021
- const CHUNK_CACHE_PREV = 'P';
17022
- const CHUNK_DV_BOTTOM = 'B';
17023
- const CHUNK_DV_TOP = 'T';
17024
- const COMPUTE_FLUSH_UPDATES = 'H';
17025
- const COMPUTE_NEWREC_ON_SERVER = 'S';
17026
- const END_DV_TAG = '</' + ConstInterface.MG_TAG_DATAVIEW + '>';
17027
- const RECOVERY_ACT_BEGIN_SCREEN = 'S';
17028
- const RECOVERY_ACT_BEGIN_TABLE = 'T';
17029
- const RECOVERY_ACT_CANCEL = 'C';
17030
- const RECOVERY_ACT_MOVE_DIRECTION_BEGIN = 'B';
17031
- const RECOVERY_ACT_NONE = 'N';
17032
- const TRANS_STAT_CLOSED = 'C';
17033
- const TRANS_STAT_OPENED = 'O';
17034
- class DataView extends DataViewBase {
16958
+ }
16959
+
16960
+ const SET_DISPLAYLINE_BY_DV = Int32.MinValue;
16961
+ const COMPUTE_NEWREC_ON_CLIENT = 'C';
16962
+ const UNKNOWN_RCMPS_NOT_INITED = 'M';
16963
+ const UNKNOWN_RCMPS_FOUND = 'Y';
16964
+ const INVOKED_FROM_OFFLINE_TASK = '-99999';
16965
+ const CHUNK_CACHE_NEXT = 'N';
16966
+ const CHUNK_CACHE_PREV = 'P';
16967
+ const CHUNK_DV_BOTTOM = 'B';
16968
+ const CHUNK_DV_TOP = 'T';
16969
+ const COMPUTE_FLUSH_UPDATES = 'H';
16970
+ const COMPUTE_NEWREC_ON_SERVER = 'S';
16971
+ const END_DV_TAG = '</' + ConstInterface.MG_TAG_DATAVIEW + '>';
16972
+ const RECOVERY_ACT_BEGIN_SCREEN = 'S';
16973
+ const RECOVERY_ACT_BEGIN_TABLE = 'T';
16974
+ const RECOVERY_ACT_CANCEL = 'C';
16975
+ const RECOVERY_ACT_MOVE_DIRECTION_BEGIN = 'B';
16976
+ const RECOVERY_ACT_NONE = 'N';
16977
+ const TRANS_STAT_CLOSED = 'C';
16978
+ const TRANS_STAT_OPENED = 'O';
16979
+ class DataView extends DataViewBase {
16980
+ set InsertAt(value) {
16981
+ this._insertAt = value;
16982
+ }
16983
+ get InsertAt() {
16984
+ return this._insertAt;
16985
+ }
16986
+ get CurrRec() {
16987
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
16988
+ }
16989
+ set CurrRec(value) {
16990
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
16991
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
16992
+ }
16993
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
16994
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
16995
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
16996
+ }
16997
+ }
16998
+ get FlushUpdates() {
16999
+ return this._flushUpdates;
17000
+ }
17001
+ get HasMainTable() {
17002
+ return this._hasMainTable;
17003
+ }
17004
+ get CurrentRecId() {
17005
+ return this._currRecId;
17006
+ }
17007
+ get FirstRecord() {
17008
+ return this._recordsTab.getRecByIdx(0);
17009
+ }
17010
+ get LastRecord() {
17011
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17012
+ }
17035
17013
  constructor(taskOrDataView) {
17036
17014
  super();
17037
17015
  this._cacheLruTimeStamp = 0;
@@ -17083,39 +17061,6 @@ class DataView extends DataViewBase {
17083
17061
  Object.assign(this, taskOrDataView);
17084
17062
  }
17085
17063
  }
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
17064
  Init() {
17120
17065
  this.init();
17121
17066
  }
@@ -18688,6 +18633,12 @@ class ReturnResultBase {
18688
18633
  }
18689
18634
 
18690
18635
  class ReturnResult extends ReturnResultBase {
18636
+ get Success() {
18637
+ return this.success;
18638
+ }
18639
+ get ErrorDescription() {
18640
+ return this.errorDescription;
18641
+ }
18691
18642
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18692
18643
  super();
18693
18644
  this.errorDescription = null;
@@ -18702,12 +18653,6 @@ class ReturnResult extends ReturnResultBase {
18702
18653
  else
18703
18654
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18704
18655
  }
18705
- get Success() {
18706
- return this.success;
18707
- }
18708
- get ErrorDescription() {
18709
- return this.errorDescription;
18710
- }
18711
18656
  constructor_00(errorDescriptionCode) {
18712
18657
  this.success = false;
18713
18658
  this.ErrorId = errorDescriptionCode;
@@ -18807,13 +18752,13 @@ class Transaction {
18807
18752
  }
18808
18753
 
18809
18754
  class TaskTransactionManager {
18755
+ get isClosingTopmostTask() {
18756
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18757
+ }
18810
18758
  constructor(task) {
18811
18759
  this.task = null;
18812
18760
  this.task = task;
18813
18761
  }
18814
- get isClosingTopmostTask() {
18815
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18816
- }
18817
18762
  AllowTransaction(transBegin, forLocal) {
18818
18763
  let result;
18819
18764
  if (forLocal)
@@ -19157,12 +19102,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19157
19102
  }
19158
19103
 
19159
19104
  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
19105
  get TaskService() {
19167
19106
  return this.Task.TaskService;
19168
19107
  }
@@ -19177,11 +19116,24 @@ class DataviewManager extends DataviewManagerBase {
19177
19116
  get VirtualDataviewManager() {
19178
19117
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19179
19118
  }
19119
+ constructor(task) {
19120
+ super(task);
19121
+ this.RemoteDataviewManager = null;
19122
+ this.HasRemoteData = true;
19123
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19124
+ }
19180
19125
  async Execute(command) {
19181
19126
  return await this.CurrentDataviewManager.Execute(command);
19182
19127
  }
19183
19128
  }
19184
19129
 
19130
+ class Sort {
19131
+ constructor() {
19132
+ this.fldIdx = 0;
19133
+ this.dir = false;
19134
+ }
19135
+ }
19136
+
19185
19137
  class SortCollection {
19186
19138
  constructor() {
19187
19139
  this._sortTab = null;
@@ -19308,18 +19260,8 @@ class MgForm extends MgFormBase {
19308
19260
  dv = this._task.DataView;
19309
19261
  return (dv);
19310
19262
  }
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) {
19263
+ async moveInView(unit, direction) {
19321
19264
  let oldRecId = Int32.MinValue;
19322
- let lastParkedCtrl;
19323
19265
  let currRec = this.GetDataview().getCurrRec();
19324
19266
  let oldTaskMode = ' ';
19325
19267
  let returnToVisibleLine = false;
@@ -19450,6 +19392,7 @@ class MgForm extends MgFormBase {
19450
19392
  try {
19451
19393
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19452
19394
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19395
+ visibleLine = this.getLastValidRow();
19453
19396
  }
19454
19397
  catch (Exception) {
19455
19398
  }
@@ -19573,15 +19516,6 @@ class MgForm extends MgFormBase {
19573
19516
  else
19574
19517
  this.SetTableTopIndex();
19575
19518
  await AccessHelper.eventsManager.handleInternalEventWithTask(this._task, InternalInterface.MG_ACT_REC_PREFIX);
19576
- if (returnToCtrl) {
19577
- lastParkedCtrl = this._task.getLastParkedCtrl();
19578
- if (lastParkedCtrl != null) {
19579
- let cursorMoved = await lastParkedCtrl.invoke();
19580
- if (!cursorMoved) {
19581
- await AccessHelper.eventsManager.HandleNonParkableControls(this._task);
19582
- }
19583
- }
19584
- }
19585
19519
  }
19586
19520
  catch (e) {
19587
19521
  if (e instanceof RecordOutOfDataViewException) {
@@ -21522,8 +21456,12 @@ class EventHandler {
21522
21456
  continue;
21523
21457
  else if (this._operationTab.getOperation(oper.getBlockEnd()).getServerId() < nextOperIdx)
21524
21458
  continue;
21525
- if (!taskEnd)
21526
- await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE);
21459
+ if (!taskEnd) {
21460
+ let mainLevel = this._task.getMainLevel().toLowerCase();
21461
+ if (await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE) && Environment.Instance.getSpecialImmediateHandlerEnd() &&
21462
+ mainLevel != "RP".toLowerCase() && mainLevel != "TP".toLowerCase() && mainLevel != "RS".toLowerCase() && mainLevel != "TS".toLowerCase())
21463
+ break;
21464
+ }
21527
21465
  if (this._taskMgdID !== mgdID)
21528
21466
  isChangedCurrWndRef.value = true;
21529
21467
  if (!this._task.isMainProg() && this._task.isOpenWin())
@@ -22317,13 +22255,6 @@ class UserEventsTable {
22317
22255
  }
22318
22256
 
22319
22257
  class FormsTable {
22320
- constructor(task, parentForm) {
22321
- this._task = null;
22322
- this._parentForm = null;
22323
- this._formsStringXml = null;
22324
- this._task = task;
22325
- this._parentForm = parentForm;
22326
- }
22327
22258
  get Count() {
22328
22259
  return this._formsStringXml.length;
22329
22260
  }
@@ -22332,6 +22263,13 @@ class FormsTable {
22332
22263
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22333
22264
  return null;
22334
22265
  }
22266
+ constructor(task, parentForm) {
22267
+ this._task = null;
22268
+ this._parentForm = null;
22269
+ this._formsStringXml = null;
22270
+ this._task = task;
22271
+ this._parentForm = parentForm;
22272
+ }
22335
22273
  async fillData() {
22336
22274
  this._formsStringXml = new List();
22337
22275
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22521,6 +22459,47 @@ var Task_Direction;
22521
22459
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22522
22460
  })(Task_Direction || (Task_Direction = {}));
22523
22461
  class Task extends TaskBase {
22462
+ get ParentTask() {
22463
+ return this._parentTask;
22464
+ }
22465
+ set TryingToCommit(value) {
22466
+ this._tryingToCommit = value;
22467
+ }
22468
+ get TryingToCommit() {
22469
+ return this._tryingToCommit;
22470
+ }
22471
+ get TaskService() {
22472
+ if (this._taskService == null)
22473
+ this._taskService = new RemoteTaskService();
22474
+ return this._taskService;
22475
+ }
22476
+ static get CommandsProcessor() {
22477
+ return CommandsProcessorManager.GetCommandsProcessor();
22478
+ }
22479
+ get LogicalStudioParentTask() {
22480
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22481
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22482
+ }
22483
+ return this.StudioParentTask;
22484
+ }
22485
+ get KnownToServer() {
22486
+ return this._knownToServer;
22487
+ }
22488
+ set Transaction(value) {
22489
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22490
+ }
22491
+ get Transaction() {
22492
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22493
+ }
22494
+ get TaskDefinitionId() {
22495
+ if (this.taskDefinitionId === null) {
22496
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22497
+ }
22498
+ return this.taskDefinitionId;
22499
+ }
22500
+ static get IsBlockingBatch() {
22501
+ return false;
22502
+ }
22524
22503
  constructor(parent) {
22525
22504
  super();
22526
22505
  this._dvCache = null;
@@ -22589,47 +22568,6 @@ class Task extends TaskBase {
22589
22568
  }
22590
22569
  this.constructor_1(parent);
22591
22570
  }
22592
- get ParentTask() {
22593
- return this._parentTask;
22594
- }
22595
- set TryingToCommit(value) {
22596
- this._tryingToCommit = value;
22597
- }
22598
- get TryingToCommit() {
22599
- return this._tryingToCommit;
22600
- }
22601
- get TaskService() {
22602
- if (this._taskService == null)
22603
- this._taskService = new RemoteTaskService();
22604
- return this._taskService;
22605
- }
22606
- static get CommandsProcessor() {
22607
- return CommandsProcessorManager.GetCommandsProcessor();
22608
- }
22609
- get LogicalStudioParentTask() {
22610
- if (this.StudioParentTask === null && !super.isMainProg()) {
22611
- return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22612
- }
22613
- return this.StudioParentTask;
22614
- }
22615
- get KnownToServer() {
22616
- return this._knownToServer;
22617
- }
22618
- set Transaction(value) {
22619
- this.DataviewManager.CurrentDataviewManager.Transaction = value;
22620
- }
22621
- get Transaction() {
22622
- return this.DataviewManager.CurrentDataviewManager.Transaction;
22623
- }
22624
- get TaskDefinitionId() {
22625
- if (this.taskDefinitionId === null) {
22626
- this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22627
- }
22628
- return this.taskDefinitionId;
22629
- }
22630
- static get IsBlockingBatch() {
22631
- return false;
22632
- }
22633
22571
  constructor_0() {
22634
22572
  this.ActionManager = new ActionManager();
22635
22573
  this.DataView = new DataView(this);
@@ -25026,6 +24964,9 @@ class CompMainPrgTable {
25026
24964
  }
25027
24965
 
25028
24966
  class MGData {
24967
+ get ForceModal() {
24968
+ return this.forceModal;
24969
+ }
25029
24970
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25030
24971
  this._expHandlers = null;
25031
24972
  this._id = 0;
@@ -25046,9 +24987,6 @@ class MGData {
25046
24987
  else
25047
24988
  this.constructor_1(id, parent, isModal, forceModal);
25048
24989
  }
25049
- get ForceModal() {
25050
- return this.forceModal;
25051
- }
25052
24990
  constructor_0(id, parent, isModal) {
25053
24991
  this._timerHandlers = new HandlersTable();
25054
24992
  this._expHandlers = new HandlersTable();
@@ -27486,6 +27424,7 @@ class EventsManager {
27486
27424
  }
27487
27425
  break;
27488
27426
  case InternalInterface.MG_ACT_SERVER_TERMINATION:
27427
+ case InternalInterface.MG_ACT_DUMP_ENVIRONMENT:
27489
27428
  cmd = CommandFactory.CreateEventCommand(task.getTaskTag(), intEvtCode);
27490
27429
  cmdsToServer.Add(cmd);
27491
27430
  await CommandsProcessorManager.GetCommandsProcessor().Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
@@ -29050,13 +28989,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29050
28989
  }
29051
28990
 
29052
28991
  class EnhancedVerifyCommand extends VerifyCommand {
29053
- constructor() {
29054
- super();
29055
- this._buttonsID = '\0';
29056
- this._image = '\0';
29057
- this._returnValStr = null;
29058
- this._returnVal = null;
29059
- }
29060
28992
  async ProcessMessageBoxResponse(task, returnValue) {
29061
28993
  if (task !== null)
29062
28994
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29087,6 +29019,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29087
29019
  break;
29088
29020
  }
29089
29021
  }
29022
+ constructor() {
29023
+ super();
29024
+ this._buttonsID = '\0';
29025
+ this._image = '\0';
29026
+ this._returnValStr = null;
29027
+ this._returnVal = null;
29028
+ }
29090
29029
  }
29091
29030
 
29092
29031
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29183,12 +29122,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29183
29122
  }
29184
29123
 
29185
29124
  class ResultCommand extends ClientTargetedCommandBase {
29186
- constructor() {
29187
- super();
29188
- this._isNull = false;
29189
- this._attr = StorageAttribute.NONE;
29190
- this._val = null;
29191
- }
29192
29125
  async Execute(res) {
29193
29126
  if (this._isNull)
29194
29127
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29214,6 +29147,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29214
29147
  break;
29215
29148
  }
29216
29149
  }
29150
+ constructor() {
29151
+ super();
29152
+ this._isNull = false;
29153
+ this._attr = StorageAttribute.NONE;
29154
+ this._val = null;
29155
+ }
29217
29156
  }
29218
29157
 
29219
29158
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29578,19 +29517,9 @@ class CommandsTable {
29578
29517
  }
29579
29518
  }
29580
29519
 
29581
- let CurrentClientVersion = '4.1000.0-dev4100.29';
29520
+ let CurrentClientVersion = '4.1000.0-dev4100.290';
29582
29521
 
29583
29522
  class ClientManager {
29584
- constructor() {
29585
- this._globalUniqueSessionId = null;
29586
- this._buttonIsClicked = false;
29587
- RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29588
- LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29589
- LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29590
- RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29591
- this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29592
- this.RegisterDelegates();
29593
- }
29594
29523
  static get Instance() {
29595
29524
  if (ClientManager._instance === null)
29596
29525
  ClientManager._instance = new ClientManager();
@@ -29790,6 +29719,16 @@ class ClientManager {
29790
29719
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29791
29720
  }
29792
29721
  }
29722
+ constructor() {
29723
+ this._globalUniqueSessionId = null;
29724
+ this._buttonIsClicked = false;
29725
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29726
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29727
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29728
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29729
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29730
+ this.RegisterDelegates();
29731
+ }
29793
29732
  InitGuiManager() {
29794
29733
  Manager.EventsManager = EventsManager.Instance;
29795
29734
  Manager.DefaultServerName = ServerConfig.Instance.getServer();