@magic-xpa/engine 4.1000.0-dev4100.27 → 4.1000.0-dev4100.270

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 (50) 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/EventHandler.mjs +8 -3
  21. package/esm2020/src/event/EventHandlerPosition.mjs +5 -1
  22. package/esm2020/src/event/RunTimeEvent.mjs +16 -16
  23. package/esm2020/src/exp/ExpressionDict.mjs +8 -8
  24. package/esm2020/src/exp/ExpressionEvaluator.mjs +4 -178
  25. package/esm2020/src/gui/FormsTable.mjs +8 -8
  26. package/esm2020/src/gui/MgControl.mjs +10 -13
  27. package/esm2020/src/gui/MgForm.mjs +4 -22
  28. package/esm2020/src/http/HttpManager.mjs +8 -8
  29. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +35 -26
  30. package/esm2020/src/rt/DataviewHeaderBase.mjs +16 -16
  31. package/esm2020/src/security/UserDetails.mjs +12 -12
  32. package/esm2020/src/tasks/MGData.mjs +4 -4
  33. package/esm2020/src/tasks/RCTimer.mjs +10 -10
  34. package/esm2020/src/tasks/Task.mjs +42 -42
  35. package/esm2020/src/util/FlowMonitorQueue.mjs +107 -2
  36. package/esm2020/src/util/PrmMap.mjs +6 -6
  37. package/esm2020/src/util/ReturnResult.mjs +7 -7
  38. package/fesm2015/magic-xpa-engine.mjs +482 -583
  39. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  40. package/fesm2020/magic-xpa-engine.mjs +481 -546
  41. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  42. package/package.json +6 -6
  43. package/src/ConstInterface.d.ts +2 -0
  44. package/src/env/Environment.d.ts +2 -0
  45. package/src/exp/ExpressionEvaluator.d.ts +0 -9
  46. package/src/gui/MgControl.d.ts +0 -1
  47. package/src/gui/MgForm.d.ts +1 -3
  48. package/src/util/FlowMonitorQueue.d.ts +8 -0
  49. package/src/util/PrmMap.d.ts +1 -1
  50. 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
  }
@@ -3124,6 +3123,21 @@ class MgPriorityBlockingQueue {
3124
3123
  }
3125
3124
 
3126
3125
  class RunTimeEvent extends RunTimeEventBase {
3126
+ set Control(value) {
3127
+ this._ctrl = value;
3128
+ }
3129
+ set DisplayLine(value) {
3130
+ this._displayLine = value;
3131
+ }
3132
+ get Control() {
3133
+ return this._ctrl;
3134
+ }
3135
+ get ControlsList() {
3136
+ return this._controlsList;
3137
+ }
3138
+ get Direction() {
3139
+ return this._direction;
3140
+ }
3127
3141
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3128
3142
  super();
3129
3143
  this._controlsList = null;
@@ -3185,21 +3199,6 @@ class RunTimeEvent extends RunTimeEventBase {
3185
3199
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3186
3200
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3187
3201
  }
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
3202
  constructor_5(taskRef) {
3204
3203
  this.init(taskRef);
3205
3204
  }
@@ -3529,7 +3528,17 @@ class FlowMonitorQueue {
3529
3528
  this._isRecompute = false;
3530
3529
  this._isTask = false;
3531
3530
  this._isTaskFlow = false;
3531
+ this._isDataView = false;
3532
3532
  this.ShouldSerialize = false;
3533
+ this.padRight = (string, length, character = ' ') => {
3534
+ let result = "";
3535
+ let totalLength = length - string.length;
3536
+ for (let i = 0; i < totalLength; i++) {
3537
+ result = character + result;
3538
+ }
3539
+ result = result + string;
3540
+ return result;
3541
+ };
3533
3542
  }
3534
3543
  static get Instance() {
3535
3544
  if (FlowMonitorQueue._instance === null)
@@ -3587,6 +3596,9 @@ class FlowMonitorQueue {
3587
3596
  case ConstInterface.MG_ATTR_TASKFLW:
3588
3597
  this._isTaskFlow = XmlParser.getBoolean(valueStr);
3589
3598
  break;
3599
+ case ConstInterface.MG_TAG_DATAVIEW:
3600
+ this._isDataView = XmlParser.getBoolean(valueStr);
3601
+ break;
3590
3602
  case ConstInterface.MG_ATTR_RECOMP:
3591
3603
  this._isRecompute = XmlParser.getBoolean(valueStr);
3592
3604
  break;
@@ -3644,6 +3656,96 @@ class FlowMonitorQueue {
3644
3656
  Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
3645
3657
  }
3646
3658
  }
3659
+ appendVirtualsAndParameters(currentValues) {
3660
+ let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, InternalInterface.MG_ACT_REC_PREFIX);
3661
+ act.setInfo(currentValues);
3662
+ this._queue.put(act);
3663
+ }
3664
+ addDataViewFlow(task) {
3665
+ if (this._isDataView) {
3666
+ let fldTab = task.DataView.GetFieldsTab();
3667
+ let preparedDisplayString = "";
3668
+ let finaldisplayData = "\n";
3669
+ let fldValue;
3670
+ let data = "";
3671
+ for (let i = 0; i < fldTab.getSize(); i++) {
3672
+ let fldDef = fldTab.getField(i);
3673
+ if (!fldDef.IsEventHandlerField && (fldDef.IsVirtual && !fldDef.VirAsReal) || fldDef.isParam()) {
3674
+ fldValue = fldDef.isNull() ? fldDef.getNullValue() : fldDef.getValue(true);
3675
+ data = this.getFieldData(fldDef.getType(), fldValue, fldDef.getPicture(), fldDef.getCellsType(), task);
3676
+ preparedDisplayString = this.PrepareDisplayString(fldDef.isParam(), fldDef.getVarName(), data, true);
3677
+ finaldisplayData = finaldisplayData + preparedDisplayString + "\n";
3678
+ }
3679
+ }
3680
+ this.appendVirtualsAndParameters(finaldisplayData);
3681
+ }
3682
+ }
3683
+ getFieldData(Storagetype, data, picture, vecCellType, task) {
3684
+ switch (Storagetype) {
3685
+ case StorageAttribute.DOTNET:
3686
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3687
+ break;
3688
+ case StorageAttribute.BLOB:
3689
+ {
3690
+ if (BlobType.isValidBlob(data)) {
3691
+ let contentType = BlobType.getContentType(data);
3692
+ if (contentType == BlobType.CONTENT_TYPE_ANSI || contentType == BlobType.CONTENT_TYPE_UNICODE)
3693
+ data = data != null ? BlobType.getString(data) : "";
3694
+ else
3695
+ data = FlowMonitorQueue.UNPRINTABLE_STR_LOG;
3696
+ }
3697
+ else
3698
+ data = "";
3699
+ }
3700
+ break;
3701
+ case StorageAttribute.NUMERIC:
3702
+ case StorageAttribute.DATE:
3703
+ case StorageAttribute.TIME:
3704
+ let conv = DisplayConvertor.Instance;
3705
+ data = conv.mg2disp(data, " ", new PIC(picture, Storagetype, task.getCompIdx()), false, task.getCompIdx(), false);
3706
+ break;
3707
+ case StorageAttribute.BLOB_VECTOR:
3708
+ let vecOutData;
3709
+ if (data == null) {
3710
+ vecOutData = "[]";
3711
+ }
3712
+ else {
3713
+ let cellAtt = vecCellType;
3714
+ let vector = new VectorType(data);
3715
+ if (cellAtt == StorageAttribute.BLOB && !VectorType.validateBlobContents(data))
3716
+ vecOutData = "[]";
3717
+ else {
3718
+ let vecSize = VectorType.getVecSize(data);
3719
+ let cellPicture = (cellAtt == StorageAttribute.NUMERIC || cellAtt == StorageAttribute.DATE || cellAtt == StorageAttribute.TIME) ? PIC.buildPicture(cellAtt, vector.getVecCell(1), task.getCompIdx(), true).getFormat() : picture;
3720
+ vecOutData = "[";
3721
+ for (let i = 0; i < vecSize; i++) {
3722
+ vecOutData += this.getFieldData(cellAtt, vector.getVecCell(i + 1), cellPicture, vecCellType, task);
3723
+ vecOutData += i < vecSize - 1 ? "," : "]";
3724
+ }
3725
+ }
3726
+ }
3727
+ data = vecOutData;
3728
+ break;
3729
+ case StorageAttribute.BOOLEAN:
3730
+ data = data == "1" ? "TRUE" : "FALSE";
3731
+ break;
3732
+ }
3733
+ return data;
3734
+ }
3735
+ PrepareDisplayString(mode, name, valueContent, addDoubleQuotes) {
3736
+ let str = "";
3737
+ let finalStringToDisplay = "";
3738
+ if (addDoubleQuotes)
3739
+ finalStringToDisplay = finalStringToDisplay + "\"";
3740
+ finalStringToDisplay = finalStringToDisplay + name;
3741
+ if (addDoubleQuotes)
3742
+ finalStringToDisplay = finalStringToDisplay + "\"";
3743
+ let paddedName = this.padRight(name, 34);
3744
+ let formatOfStringVirtual = `Virtual`;
3745
+ let formatOfStringParameter = `Parameter`;
3746
+ str = (mode ? formatOfStringParameter : formatOfStringVirtual) + " : " + `${paddedName}` + " : " + `${valueContent.trim()}`;
3747
+ return str;
3748
+ }
3647
3749
  addTaskFlowRec(id, state, taskInfo) {
3648
3750
  if (this._enabled && this._isTaskFlow) {
3649
3751
  let info;
@@ -3808,6 +3910,7 @@ class FlowMonitorQueue {
3808
3910
  }
3809
3911
  }
3810
3912
  FlowMonitorQueue._instance = null;
3913
+ FlowMonitorQueue.UNPRINTABLE_STR_LOG = "#UNPRINTABLE#";
3811
3914
  FlowMonitorQueue.S_EVENT_STR1 = ">>Starts ";
3812
3915
  FlowMonitorQueue.S_EVENT_STR2 = " Event";
3813
3916
  FlowMonitorQueue.S_EVENT_PROPAGATED = "Event was propagated";
@@ -3869,6 +3972,15 @@ class TimerObjectCollection {
3869
3972
  }
3870
3973
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3871
3974
  class RCTimer extends MgTimer {
3975
+ get TimerIntervalMiliSeconds() {
3976
+ return this._timerIntervalMilliSeconds;
3977
+ }
3978
+ set IsIdleTimer(value) {
3979
+ this._isIdle = value;
3980
+ }
3981
+ get IsIdleTimer() {
3982
+ return this._isIdle;
3983
+ }
3872
3984
  constructor(mgData, milliseconds, isIdle) {
3873
3985
  super(milliseconds);
3874
3986
  this._mgData = null;
@@ -3880,15 +3992,6 @@ class RCTimer extends MgTimer {
3880
3992
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3881
3993
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3882
3994
  }
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
3995
  GetMgdata() {
3893
3996
  return this._mgData;
3894
3997
  }
@@ -4034,6 +4137,9 @@ class ExecutionStack {
4034
4137
  }
4035
4138
 
4036
4139
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4140
+ get CommandTypeAttribute() {
4141
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4142
+ }
4037
4143
  constructor() {
4038
4144
  super();
4039
4145
  this.ExecutionStack = null;
@@ -4047,9 +4153,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4047
4153
  this.CheckOnly = false;
4048
4154
  this.DitIdx = Int32.MinValue;
4049
4155
  }
4050
- get CommandTypeAttribute() {
4051
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4052
- }
4053
4156
  SerializeCommandData() {
4054
4157
  let helper = new CommandSerializationHelper();
4055
4158
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4504,13 +4607,6 @@ class HttpClientAsync extends HttpClientBase {
4504
4607
  }
4505
4608
 
4506
4609
  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
4610
  getHttpClient() {
4515
4611
  if (this.IsAbortingMagicEngine)
4516
4612
  return new HttpClientSync();
@@ -4530,6 +4626,13 @@ class HttpManager {
4530
4626
  }
4531
4627
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4532
4628
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4629
+ constructor() {
4630
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4631
+ this._httpClientAsync = null;
4632
+ this._isAbortingMagicEngine = false;
4633
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4634
+ this.RegisterBasicDelegates();
4635
+ }
4533
4636
  RegisterBasicDelegates() {
4534
4637
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4535
4638
  }
@@ -5075,6 +5178,12 @@ var RequestStatus;
5075
5178
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5076
5179
  })(RequestStatus || (RequestStatus = {}));
5077
5180
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5181
+ static GetInstance() {
5182
+ if (RemoteCommandsProcessor._instance === null) {
5183
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5184
+ }
5185
+ return RemoteCommandsProcessor._instance;
5186
+ }
5078
5187
  constructor() {
5079
5188
  super();
5080
5189
  this._lastRequestTime = 0;
@@ -5085,12 +5194,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5085
5194
  HttpManager.GetInstance();
5086
5195
  this.RegisterDelegates();
5087
5196
  }
5088
- static GetInstance() {
5089
- if (RemoteCommandsProcessor._instance === null) {
5090
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5091
- }
5092
- return RemoteCommandsProcessor._instance;
5093
- }
5094
5197
  CheckAndSetSessionCounter(newSessionCounter) {
5095
5198
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5096
5199
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5123,10 +5226,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5226
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5227
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5228
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5229
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5230
  let dataStorage = window.localStorage;
5127
5231
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5232
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5233
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5234
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5235
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5236
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5237
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5458,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5458
  let reqBuf;
5354
5459
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5460
  let globalParamsString = null;
5461
+ let envVarsString = null;
5356
5462
  if (this.DelayCommandExecution)
5357
5463
  return;
5358
5464
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5484,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5484
  let buffer = new StringBuilder();
5379
5485
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5486
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5487
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5488
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5489
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5490
+ }
5491
+ else {
5384
5492
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5493
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5494
+ }
5385
5495
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5496
+ changes.Append(envVarsString);
5387
5497
  if (changes.Length > 0) {
5388
5498
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5499
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5532,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5532
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5533
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5534
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5535
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5536
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5537
  }
5427
5538
  }
5428
5539
  FlowMonitorQueue.Instance.enable(false);
5429
5540
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5541
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5542
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5543
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5544
  let dataStorage = window.localStorage;
5433
5545
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5546
  if (ctxRemoved === "1") {
@@ -5730,21 +5842,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5730
5842
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5731
5843
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5732
5844
  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
5845
  get ScrambleMessages() {
5749
5846
  return this._scrambleMessages;
5750
5847
  }
@@ -5766,6 +5863,21 @@ class HandshakeResponse {
5766
5863
  get MaxInternalLogLevel() {
5767
5864
  return this._maxInternalLogLevel;
5768
5865
  }
5866
+ constructor(responseXML) {
5867
+ this._scrambleMessages = true;
5868
+ this._contextId = null;
5869
+ this._privateSessionId = null;
5870
+ this._inputPassword = false;
5871
+ this._httpTimeout = 0;
5872
+ this._systemLogin = null;
5873
+ this._maxInternalLogLevel = null;
5874
+ try {
5875
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5876
+ }
5877
+ catch (ex) {
5878
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5879
+ }
5880
+ }
5769
5881
  FillFromJSON(error, result) {
5770
5882
  if (error != null) {
5771
5883
  throw error;
@@ -6722,7 +6834,7 @@ ExpressionDict.expDesc = [
6722
6834
  null,
6723
6835
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6836
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6837
+ null,
6726
6838
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6839
  null,
6728
6840
  null,
@@ -7171,12 +7283,12 @@ ExpressionDict.expDesc = [
7171
7283
  null,
7172
7284
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7285
  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),
7286
+ null,
7287
+ null,
7288
+ null,
7289
+ null,
7290
+ null,
7291
+ null,
7180
7292
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7293
  null,
7182
7294
  null,
@@ -7263,48 +7375,6 @@ ExpressionDict.expDesc = [
7263
7375
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7376
  ];
7265
7377
 
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
7378
  class EventHandlerPosition {
7309
7379
  constructor() {
7310
7380
  this._handlerIdx = 0;
@@ -7361,6 +7431,9 @@ class EventHandlerPosition {
7361
7431
  case InternalInterface.MG_ACT_REC_SUFFIX:
7362
7432
  case InternalInterface.MG_ACT_CTRL_PREFIX:
7363
7433
  case InternalInterface.MG_ACT_CTRL_SUFFIX: {
7434
+ if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
7435
+ FlowMonitorQueue.Instance.addDataViewFlow(this._task);
7436
+ }
7364
7437
  if (this._handlerIdx === -1) {
7365
7438
  for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
7366
7439
  let handler = this._handlersTab.getHandler(this._handlerIdx);
@@ -7501,6 +7574,48 @@ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7501
7574
  EventHandlerPosition.PHASE_GLOBAL = 3;
7502
7575
  EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7503
7576
 
7577
+ var DataViewCommandType;
7578
+ (function (DataViewCommandType) {
7579
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7580
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7581
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7582
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7583
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7584
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7585
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7586
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7587
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7588
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7589
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7590
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7591
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7592
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7593
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7594
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7595
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7596
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7597
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7598
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7599
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7600
+ })(DataViewCommandType || (DataViewCommandType = {}));
7601
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7602
+ get CommandTypeAttribute() {
7603
+ throw new NotImplementedException();
7604
+ }
7605
+ SerializeCommandData() {
7606
+ Debug.Assert(false, "Dataview commands need not be serialized");
7607
+ return null;
7608
+ }
7609
+ get ShouldSerialize() {
7610
+ return false;
7611
+ }
7612
+ constructor() {
7613
+ super();
7614
+ this.CommandType = 0;
7615
+ this.TaskTag = null;
7616
+ }
7617
+ }
7618
+
7504
7619
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7620
  constructor() {
7506
7621
  super();
@@ -7720,12 +7835,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7720
7835
  }
7721
7836
 
7722
7837
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7723
- constructor() {
7724
- super();
7725
- this.TaskTag = null;
7726
- this.FldId = 0;
7727
- this.IgnoreSubformRecompute = false;
7728
- }
7729
7838
  get CommandTypeAttribute() {
7730
7839
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7731
7840
  }
@@ -7737,17 +7846,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7737
7846
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7738
7847
  return helper.GetString();
7739
7848
  }
7849
+ constructor() {
7850
+ super();
7851
+ this.TaskTag = null;
7852
+ this.FldId = 0;
7853
+ this.IgnoreSubformRecompute = false;
7854
+ }
7740
7855
  getCommandInfo() {
7741
7856
  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
7857
  }
7743
7858
  }
7744
7859
 
7745
7860
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7746
- constructor() {
7747
- super();
7748
- this.TaskTag = null;
7749
- this.ReversibleExit = false;
7750
- }
7751
7861
  get CommandTypeAttribute() {
7752
7862
  return ConstInterface.MG_ATTR_VAL_TRANS;
7753
7863
  }
@@ -7761,6 +7871,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7761
7871
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7762
7872
  return helper.GetString();
7763
7873
  }
7874
+ constructor() {
7875
+ super();
7876
+ this.TaskTag = null;
7877
+ this.ReversibleExit = false;
7878
+ }
7764
7879
  getCommandInfo() {
7765
7880
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7766
7881
  }
@@ -7779,6 +7894,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7779
7894
  }
7780
7895
 
7781
7896
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7897
+ get CommandTypeAttribute() {
7898
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7899
+ }
7782
7900
  constructor() {
7783
7901
  super();
7784
7902
  this.TaskTag = null;
@@ -7787,9 +7905,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7787
7905
  this.MprgCreator = null;
7788
7906
  this.LengthExpVal = Int32.MinValue;
7789
7907
  }
7790
- get CommandTypeAttribute() {
7791
- return ConstInterface.MG_ATTR_VAL_EVAL;
7792
- }
7793
7908
  SerializeCommandData() {
7794
7909
  let helper = new CommandSerializationHelper();
7795
7910
  helper.SerializeTaskTag(this.TaskTag);
@@ -7837,10 +7952,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7837
7952
  }
7838
7953
 
7839
7954
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7840
- constructor() {
7841
- super();
7842
- this.Text = null;
7843
- }
7844
7955
  get CommandTypeAttribute() {
7845
7956
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7846
7957
  }
@@ -7850,6 +7961,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7850
7961
  SerializeCommandData() {
7851
7962
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7852
7963
  }
7964
+ constructor() {
7965
+ super();
7966
+ this.Text = null;
7967
+ }
7853
7968
  getCommandInfo() {
7854
7969
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7855
7970
  }
@@ -8136,13 +8251,6 @@ class CommandFactory {
8136
8251
  }
8137
8252
  }
8138
8253
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8254
  var ParamParseResult;
8147
8255
  (function (ParamParseResult) {
8148
8256
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8152,10 +8260,6 @@ var ParamParseResult;
8152
8260
  })(ParamParseResult || (ParamParseResult = {}));
8153
8261
 
8154
8262
  class PrmMap {
8155
- constructor() {
8156
- this.values = null;
8157
- this.values = new Dictionary();
8158
- }
8159
8263
  getvalue(s) {
8160
8264
  if (this.values.ContainsKey(s))
8161
8265
  return this.values.get_Item(s);
@@ -8168,6 +8272,10 @@ class PrmMap {
8168
8272
  remove(s) {
8169
8273
  this.values.Remove(s);
8170
8274
  }
8275
+ constructor() {
8276
+ this.values = null;
8277
+ this.values = new Dictionary();
8278
+ }
8171
8279
  }
8172
8280
  class MirrorPrmMap extends PrmMap {
8173
8281
  constructor(type) {
@@ -8248,7 +8356,7 @@ class MirrorPrmMap extends PrmMap {
8248
8356
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8357
  }
8250
8358
  }
8251
- RestoreGlobalParams(xml) {
8359
+ RestoreParams(xml) {
8252
8360
  let parser = new XmlParser(xml);
8253
8361
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8362
  }
@@ -8323,6 +8431,7 @@ class Environment {
8323
8431
  this._debugMode = 0;
8324
8432
  this._significantNumSize = 0;
8325
8433
  this._specialAnsiExpression = false;
8434
+ this._specialImmediatehandlerEnd = false;
8326
8435
  this._specialShowStatusBarPanes = false;
8327
8436
  this._specialRouteToRootProgOnContextRecreation = false;
8328
8437
  this._specialCancelOnCreate = false;
@@ -8476,6 +8585,9 @@ class Environment {
8476
8585
  case ConstInterface.MG_ATTR_LOCAL_FLAGS:
8477
8586
  this._localFlags = valueStr;
8478
8587
  break;
8588
+ case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
8589
+ this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
8590
+ break;
8479
8591
  case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
8480
8592
  this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
8481
8593
  break;
@@ -8680,6 +8792,9 @@ class Environment {
8680
8792
  GetLocalFlag(f) {
8681
8793
  return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
8682
8794
  }
8795
+ getSpecialImmediateHandlerEnd() {
8796
+ return this._specialImmediatehandlerEnd;
8797
+ }
8683
8798
  getSpecialAnsiExpression() {
8684
8799
  return this._specialAnsiExpression;
8685
8800
  }
@@ -8749,6 +8864,12 @@ class Environment {
8749
8864
  }
8750
8865
  Environment.Instance = new Environment();
8751
8866
  class EnvironmentDetails {
8867
+ set UpdateInQueryMode(value) {
8868
+ this._updateInQueryMode = value;
8869
+ }
8870
+ set CreateInModifyMode(value) {
8871
+ this._createInModifyMode = value;
8872
+ }
8752
8873
  constructor() {
8753
8874
  this._createInModifyMode = false;
8754
8875
  this._updateInQueryMode = false;
@@ -8759,12 +8880,6 @@ class EnvironmentDetails {
8759
8880
  this.ProjDir = null;
8760
8881
  this.CompIdx = 0;
8761
8882
  }
8762
- set UpdateInQueryMode(value) {
8763
- this._updateInQueryMode = value;
8764
- }
8765
- set CreateInModifyMode(value) {
8766
- this._createInModifyMode = value;
8767
- }
8768
8883
  allowUpdateInQueryMode() {
8769
8884
  return this._updateInQueryMode;
8770
8885
  }
@@ -8852,17 +8967,6 @@ class GlobalParams extends MirrorPrmMap {
8852
8967
  GlobalParams.Instance = new GlobalParams();
8853
8968
 
8854
8969
  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
8970
  setIsLoggedIn(value) {
8867
8971
  this.IsLoggedIn = value;
8868
8972
  }
@@ -8882,6 +8986,17 @@ class UserDetails {
8882
8986
  UserDetails._instance = new UserDetails();
8883
8987
  return UserDetails._instance;
8884
8988
  }
8989
+ constructor() {
8990
+ this.UserName = null;
8991
+ this.UserID = null;
8992
+ this.UserInfo = null;
8993
+ this.Password = null;
8994
+ this.IsLoggedIn = false;
8995
+ this.UserName = NString.Empty;
8996
+ this.UserInfo = NString.Empty;
8997
+ this.IsLoggedIn = false;
8998
+ this.setUserID(NString.Empty);
8999
+ }
8885
9000
  fillData(parser) {
8886
9001
  let tokensVector;
8887
9002
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9690,8 +9805,7 @@ class MirrorString {
9690
9805
  this._reserved = false;
9691
9806
  }
9692
9807
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9808
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9809
  }
9696
9810
  init(name, xmlParser) {
9697
9811
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -10867,7 +10981,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
10867
10981
  case ExpressionInterface.EXP_OP_CONTROL_ITEMS_REFRESH:
10868
10982
  val2 = valStack.pop();
10869
10983
  val1 = valStack.pop();
10870
- this.eval_op_controlItemRefresh(val1, val2, resVal);
10984
+ await this.eval_op_controlItemRefresh(val1, val2, resVal);
10871
10985
  break;
10872
10986
  case ExpressionInterface.EXP_OP_VARCONTROLID:
10873
10987
  val1 = valStack.pop();
@@ -11257,11 +11371,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11371
  val1 = valStack.pop();
11258
11372
  this.eval_op_eoy(resVal, val1);
11259
11373
  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
11374
  case ExpressionInterface.EXP_OP_VARSET:
11266
11375
  val2 = valStack.pop();
11267
11376
  val1 = valStack.pop();
@@ -11626,41 +11735,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11735
  val1 = valStack.pop();
11627
11736
  this.eval_op_taskType(resVal, val1);
11628
11737
  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
11738
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11739
  val1 = valStack.pop();
11666
11740
  this.eval_op_tsk_instance(resVal, val1);
@@ -13003,7 +13077,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13003
13077
  resVal.Attr = StorageAttribute.BOOLEAN;
13004
13078
  if ((parent >= 0 && parent < (this.ExpTask.getTaskDepth(false))) || parent === ExpressionEvaluator.TRIGGER_TASK) {
13005
13079
  let tsk = super.GetContextTask(parent);
13006
- if (tsk != null) {
13080
+ if (tsk != null && tsk.getForm() != null) {
13007
13081
  let control = tsk.getForm().GetCtrl(val1.StrVal);
13008
13082
  if (control != null && control.isChoiceControl() && control.isDataCtrl()) {
13009
13083
  let command = CommandFactory.CreateControlItemsRefreshCommand(tsk.getTaskTag(), control);
@@ -13299,12 +13373,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13373
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13374
  await fld.updateDisplay();
13301
13375
  }
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
13376
  eval_op_like(source, maskOrg, resVal) {
13309
13377
  let i;
13310
13378
  let j;
@@ -13861,54 +13929,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13929
  resultStr.Replace('\\@', '@');
13862
13930
  resVal.StrVal = resultStr.ToString();
13863
13931
  }
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
13932
  eval_op_tsk_instance(resVal, Parent) {
13913
13933
  let tag = 0;
13914
13934
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13942,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13942
  resVal.MgNumVal = new NUM_TYPE();
13923
13943
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13944
  }
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
13945
  eval_op_getParam(resVal, name) {
14004
13946
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13947
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -14517,6 +14459,12 @@ class DataViewBase extends GuiDataViewBase {
14517
14459
  }
14518
14460
 
14519
14461
  class Record {
14462
+ get InCompute() {
14463
+ return this._inCompute;
14464
+ }
14465
+ get InRecompute() {
14466
+ return this._inRecompute;
14467
+ }
14520
14468
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14521
14469
  this._id = Int32.MinValue;
14522
14470
  this.dbViewRowIdx = 0;
@@ -14534,12 +14482,6 @@ class Record {
14534
14482
  else
14535
14483
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14536
14484
  }
14537
- get InCompute() {
14538
- return this._inCompute;
14539
- }
14540
- get InRecompute() {
14541
- return this._inRecompute;
14542
- }
14543
14485
  constructor_0(dvOrTableCache) {
14544
14486
  if (dvOrTableCache instanceof DataViewBase)
14545
14487
  this._dataview = dvOrTableCache;
@@ -15335,14 +15277,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15335
15277
  Record.INCREASE = true;
15336
15278
  Record.DECREASE = false;
15337
15279
  class DcValuesReference extends ObjectReferenceBase {
15280
+ get DcValues() {
15281
+ return this.Referent;
15282
+ }
15338
15283
  constructor(controlId, referencedDcValues) {
15339
15284
  super(referencedDcValues);
15340
15285
  this.ditIdx = 0;
15341
15286
  this.ditIdx = controlId;
15342
15287
  }
15343
- get DcValues() {
15344
- return this.Referent;
15345
- }
15346
15288
  Clone() {
15347
15289
  return new DcValuesReference(this.ditIdx, this.Referent);
15348
15290
  }
@@ -15618,21 +15560,6 @@ class RecordsTable {
15618
15560
  RecordsTable.REC_NOT_FOUND = -1;
15619
15561
 
15620
15562
  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
15563
  get ReturnField() {
15637
15564
  if (this.returnfield === null && this._retVal !== null)
15638
15565
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15653,6 +15580,21 @@ class DataviewHeaderBase {
15653
15580
  get LinkEvaluateCondition() {
15654
15581
  return this._linkEvalCondition;
15655
15582
  }
15583
+ constructor(task) {
15584
+ this._cond = null;
15585
+ this._task = null;
15586
+ this.Loc = null;
15587
+ this._dir = '\0';
15588
+ this._id = 0;
15589
+ this._keyIdx = 0;
15590
+ this._retVal = null;
15591
+ this.returnfield = null;
15592
+ this.LinkStartAfterField = 0;
15593
+ this.KeyExpression = 0;
15594
+ this._task = task;
15595
+ this._keyIdx = -1;
15596
+ this._cond = new YesNoExp(true);
15597
+ }
15656
15598
  SetAttributes(attributes) {
15657
15599
  let keys = attributes.Keys;
15658
15600
  keys.forEach((text) => {
@@ -16943,16 +16885,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16943
16885
  }
16944
16886
 
16945
16887
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16888
+ set SerializedDCVals(value) {
16889
+ this.parser.setXMLdata(value);
16890
+ this.parser.setCurrIndex(0);
16891
+ }
16946
16892
  constructor() {
16947
16893
  super();
16948
16894
  this.dcv = null;
16949
16895
  this.parser = null;
16950
16896
  this.parser = new XmlParser();
16951
16897
  }
16952
- set SerializedDCVals(value) {
16953
- this.parser.setXMLdata(value);
16954
- this.parser.setCurrIndex(0);
16955
- }
16956
16898
  Build() {
16957
16899
  this.dcv = null;
16958
16900
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17010,28 +16952,61 @@ class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
17010
16952
  }
17011
16953
  return super.ParseValues(valueStr, dataType, useHex);
17012
16954
  }
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 {
16955
+ }
16956
+
16957
+ const SET_DISPLAYLINE_BY_DV = Int32.MinValue;
16958
+ const COMPUTE_NEWREC_ON_CLIENT = 'C';
16959
+ const UNKNOWN_RCMPS_NOT_INITED = 'M';
16960
+ const UNKNOWN_RCMPS_FOUND = 'Y';
16961
+ const INVOKED_FROM_OFFLINE_TASK = '-99999';
16962
+ const CHUNK_CACHE_NEXT = 'N';
16963
+ const CHUNK_CACHE_PREV = 'P';
16964
+ const CHUNK_DV_BOTTOM = 'B';
16965
+ const CHUNK_DV_TOP = 'T';
16966
+ const COMPUTE_FLUSH_UPDATES = 'H';
16967
+ const COMPUTE_NEWREC_ON_SERVER = 'S';
16968
+ const END_DV_TAG = '</' + ConstInterface.MG_TAG_DATAVIEW + '>';
16969
+ const RECOVERY_ACT_BEGIN_SCREEN = 'S';
16970
+ const RECOVERY_ACT_BEGIN_TABLE = 'T';
16971
+ const RECOVERY_ACT_CANCEL = 'C';
16972
+ const RECOVERY_ACT_MOVE_DIRECTION_BEGIN = 'B';
16973
+ const RECOVERY_ACT_NONE = 'N';
16974
+ const TRANS_STAT_CLOSED = 'C';
16975
+ const TRANS_STAT_OPENED = 'O';
16976
+ class DataView extends DataViewBase {
16977
+ set InsertAt(value) {
16978
+ this._insertAt = value;
16979
+ }
16980
+ get InsertAt() {
16981
+ return this._insertAt;
16982
+ }
16983
+ get CurrRec() {
16984
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
16985
+ }
16986
+ set CurrRec(value) {
16987
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
16988
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
16989
+ }
16990
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
16991
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
16992
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
16993
+ }
16994
+ }
16995
+ get FlushUpdates() {
16996
+ return this._flushUpdates;
16997
+ }
16998
+ get HasMainTable() {
16999
+ return this._hasMainTable;
17000
+ }
17001
+ get CurrentRecId() {
17002
+ return this._currRecId;
17003
+ }
17004
+ get FirstRecord() {
17005
+ return this._recordsTab.getRecByIdx(0);
17006
+ }
17007
+ get LastRecord() {
17008
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17009
+ }
17035
17010
  constructor(taskOrDataView) {
17036
17011
  super();
17037
17012
  this._cacheLruTimeStamp = 0;
@@ -17083,39 +17058,6 @@ class DataView extends DataViewBase {
17083
17058
  Object.assign(this, taskOrDataView);
17084
17059
  }
17085
17060
  }
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
17061
  Init() {
17120
17062
  this.init();
17121
17063
  }
@@ -18688,6 +18630,12 @@ class ReturnResultBase {
18688
18630
  }
18689
18631
 
18690
18632
  class ReturnResult extends ReturnResultBase {
18633
+ get Success() {
18634
+ return this.success;
18635
+ }
18636
+ get ErrorDescription() {
18637
+ return this.errorDescription;
18638
+ }
18691
18639
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18692
18640
  super();
18693
18641
  this.errorDescription = null;
@@ -18702,12 +18650,6 @@ class ReturnResult extends ReturnResultBase {
18702
18650
  else
18703
18651
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18704
18652
  }
18705
- get Success() {
18706
- return this.success;
18707
- }
18708
- get ErrorDescription() {
18709
- return this.errorDescription;
18710
- }
18711
18653
  constructor_00(errorDescriptionCode) {
18712
18654
  this.success = false;
18713
18655
  this.ErrorId = errorDescriptionCode;
@@ -18807,13 +18749,13 @@ class Transaction {
18807
18749
  }
18808
18750
 
18809
18751
  class TaskTransactionManager {
18752
+ get isClosingTopmostTask() {
18753
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18754
+ }
18810
18755
  constructor(task) {
18811
18756
  this.task = null;
18812
18757
  this.task = task;
18813
18758
  }
18814
- get isClosingTopmostTask() {
18815
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18816
- }
18817
18759
  AllowTransaction(transBegin, forLocal) {
18818
18760
  let result;
18819
18761
  if (forLocal)
@@ -19157,12 +19099,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19157
19099
  }
19158
19100
 
19159
19101
  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
19102
  get TaskService() {
19167
19103
  return this.Task.TaskService;
19168
19104
  }
@@ -19177,11 +19113,24 @@ class DataviewManager extends DataviewManagerBase {
19177
19113
  get VirtualDataviewManager() {
19178
19114
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19179
19115
  }
19116
+ constructor(task) {
19117
+ super(task);
19118
+ this.RemoteDataviewManager = null;
19119
+ this.HasRemoteData = true;
19120
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19121
+ }
19180
19122
  async Execute(command) {
19181
19123
  return await this.CurrentDataviewManager.Execute(command);
19182
19124
  }
19183
19125
  }
19184
19126
 
19127
+ class Sort {
19128
+ constructor() {
19129
+ this.fldIdx = 0;
19130
+ this.dir = false;
19131
+ }
19132
+ }
19133
+
19185
19134
  class SortCollection {
19186
19135
  constructor() {
19187
19136
  this._sortTab = null;
@@ -19308,18 +19257,8 @@ class MgForm extends MgFormBase {
19308
19257
  dv = this._task.DataView;
19309
19258
  return (dv);
19310
19259
  }
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) {
19260
+ async moveInView(unit, direction) {
19321
19261
  let oldRecId = Int32.MinValue;
19322
- let lastParkedCtrl;
19323
19262
  let currRec = this.GetDataview().getCurrRec();
19324
19263
  let oldTaskMode = ' ';
19325
19264
  let returnToVisibleLine = false;
@@ -19450,6 +19389,7 @@ class MgForm extends MgFormBase {
19450
19389
  try {
19451
19390
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19452
19391
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19392
+ visibleLine = this.getLastValidRow();
19453
19393
  }
19454
19394
  catch (Exception) {
19455
19395
  }
@@ -19573,15 +19513,6 @@ class MgForm extends MgFormBase {
19573
19513
  else
19574
19514
  this.SetTableTopIndex();
19575
19515
  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
19516
  }
19586
19517
  catch (e) {
19587
19518
  if (e instanceof RecordOutOfDataViewException) {
@@ -21522,8 +21453,12 @@ class EventHandler {
21522
21453
  continue;
21523
21454
  else if (this._operationTab.getOperation(oper.getBlockEnd()).getServerId() < nextOperIdx)
21524
21455
  continue;
21525
- if (!taskEnd)
21526
- await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE);
21456
+ if (!taskEnd) {
21457
+ let mainLevel = this._task.getMainLevel().toLowerCase();
21458
+ if (await this._task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE) && Environment.Instance.getSpecialImmediateHandlerEnd() &&
21459
+ mainLevel != "RP".toLowerCase() && mainLevel != "TP".toLowerCase() && mainLevel != "RS".toLowerCase() && mainLevel != "TS".toLowerCase())
21460
+ break;
21461
+ }
21527
21462
  if (this._taskMgdID !== mgdID)
21528
21463
  isChangedCurrWndRef.value = true;
21529
21464
  if (!this._task.isMainProg() && this._task.isOpenWin())
@@ -22317,13 +22252,6 @@ class UserEventsTable {
22317
22252
  }
22318
22253
 
22319
22254
  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
22255
  get Count() {
22328
22256
  return this._formsStringXml.length;
22329
22257
  }
@@ -22332,6 +22260,13 @@ class FormsTable {
22332
22260
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22333
22261
  return null;
22334
22262
  }
22263
+ constructor(task, parentForm) {
22264
+ this._task = null;
22265
+ this._parentForm = null;
22266
+ this._formsStringXml = null;
22267
+ this._task = task;
22268
+ this._parentForm = parentForm;
22269
+ }
22335
22270
  async fillData() {
22336
22271
  this._formsStringXml = new List();
22337
22272
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22521,6 +22456,47 @@ var Task_Direction;
22521
22456
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22522
22457
  })(Task_Direction || (Task_Direction = {}));
22523
22458
  class Task extends TaskBase {
22459
+ get ParentTask() {
22460
+ return this._parentTask;
22461
+ }
22462
+ set TryingToCommit(value) {
22463
+ this._tryingToCommit = value;
22464
+ }
22465
+ get TryingToCommit() {
22466
+ return this._tryingToCommit;
22467
+ }
22468
+ get TaskService() {
22469
+ if (this._taskService == null)
22470
+ this._taskService = new RemoteTaskService();
22471
+ return this._taskService;
22472
+ }
22473
+ static get CommandsProcessor() {
22474
+ return CommandsProcessorManager.GetCommandsProcessor();
22475
+ }
22476
+ get LogicalStudioParentTask() {
22477
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22478
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22479
+ }
22480
+ return this.StudioParentTask;
22481
+ }
22482
+ get KnownToServer() {
22483
+ return this._knownToServer;
22484
+ }
22485
+ set Transaction(value) {
22486
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22487
+ }
22488
+ get Transaction() {
22489
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22490
+ }
22491
+ get TaskDefinitionId() {
22492
+ if (this.taskDefinitionId === null) {
22493
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22494
+ }
22495
+ return this.taskDefinitionId;
22496
+ }
22497
+ static get IsBlockingBatch() {
22498
+ return false;
22499
+ }
22524
22500
  constructor(parent) {
22525
22501
  super();
22526
22502
  this._dvCache = null;
@@ -22589,47 +22565,6 @@ class Task extends TaskBase {
22589
22565
  }
22590
22566
  this.constructor_1(parent);
22591
22567
  }
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
22568
  constructor_0() {
22634
22569
  this.ActionManager = new ActionManager();
22635
22570
  this.DataView = new DataView(this);
@@ -25026,6 +24961,9 @@ class CompMainPrgTable {
25026
24961
  }
25027
24962
 
25028
24963
  class MGData {
24964
+ get ForceModal() {
24965
+ return this.forceModal;
24966
+ }
25029
24967
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25030
24968
  this._expHandlers = null;
25031
24969
  this._id = 0;
@@ -25046,9 +24984,6 @@ class MGData {
25046
24984
  else
25047
24985
  this.constructor_1(id, parent, isModal, forceModal);
25048
24986
  }
25049
- get ForceModal() {
25050
- return this.forceModal;
25051
- }
25052
24987
  constructor_0(id, parent, isModal) {
25053
24988
  this._timerHandlers = new HandlersTable();
25054
24989
  this._expHandlers = new HandlersTable();
@@ -29050,13 +28985,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29050
28985
  }
29051
28986
 
29052
28987
  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
28988
  async ProcessMessageBoxResponse(task, returnValue) {
29061
28989
  if (task !== null)
29062
28990
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29087,6 +29015,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29087
29015
  break;
29088
29016
  }
29089
29017
  }
29018
+ constructor() {
29019
+ super();
29020
+ this._buttonsID = '\0';
29021
+ this._image = '\0';
29022
+ this._returnValStr = null;
29023
+ this._returnVal = null;
29024
+ }
29090
29025
  }
29091
29026
 
29092
29027
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29183,12 +29118,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29183
29118
  }
29184
29119
 
29185
29120
  class ResultCommand extends ClientTargetedCommandBase {
29186
- constructor() {
29187
- super();
29188
- this._isNull = false;
29189
- this._attr = StorageAttribute.NONE;
29190
- this._val = null;
29191
- }
29192
29121
  async Execute(res) {
29193
29122
  if (this._isNull)
29194
29123
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29214,6 +29143,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29214
29143
  break;
29215
29144
  }
29216
29145
  }
29146
+ constructor() {
29147
+ super();
29148
+ this._isNull = false;
29149
+ this._attr = StorageAttribute.NONE;
29150
+ this._val = null;
29151
+ }
29217
29152
  }
29218
29153
 
29219
29154
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29578,19 +29513,9 @@ class CommandsTable {
29578
29513
  }
29579
29514
  }
29580
29515
 
29581
- let CurrentClientVersion = '4.1000.0-dev4100.27';
29516
+ let CurrentClientVersion = '4.1000.0-dev4100.270';
29582
29517
 
29583
29518
  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
29519
  static get Instance() {
29595
29520
  if (ClientManager._instance === null)
29596
29521
  ClientManager._instance = new ClientManager();
@@ -29790,6 +29715,16 @@ class ClientManager {
29790
29715
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29791
29716
  }
29792
29717
  }
29718
+ constructor() {
29719
+ this._globalUniqueSessionId = null;
29720
+ this._buttonIsClicked = false;
29721
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29722
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29723
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29724
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29725
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29726
+ this.RegisterDelegates();
29727
+ }
29793
29728
  InitGuiManager() {
29794
29729
  Manager.EventsManager = EventsManager.Instance;
29795
29730
  Manager.DefaultServerName = ServerConfig.Instance.getServer();