@magic-xpa/engine 4.900.0-dev491.7 → 4.901.0-ang15-dev491.310

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 +56 -15
  2. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  3. package/esm2020/src/bridge/MagicBridge.mjs +3 -3
  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/Field.mjs +3 -2
  16. package/esm2020/src/data/Record.mjs +10 -10
  17. package/esm2020/src/data/TaskTransactionManager.mjs +4 -4
  18. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +5 -5
  19. package/esm2020/src/env/Environment.mjs +7 -7
  20. package/esm2020/src/env/LanguageData.mjs +10 -5
  21. package/esm2020/src/event/EventsManager.mjs +2 -2
  22. package/esm2020/src/event/RunTimeEvent.mjs +16 -16
  23. package/esm2020/src/exp/ExpressionEvaluator.mjs +2 -2
  24. package/esm2020/src/gui/FormsTable.mjs +8 -8
  25. package/esm2020/src/gui/MgControl.mjs +12 -11
  26. package/esm2020/src/gui/MgForm.mjs +4 -22
  27. package/esm2020/src/http/HttpManager.mjs +8 -8
  28. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +22 -22
  29. package/esm2020/src/rt/DataviewHeaderBase.mjs +16 -16
  30. package/esm2020/src/rt/Operation.mjs +3 -3
  31. package/esm2020/src/rt/RecomputeTable.mjs +12 -4
  32. package/esm2020/src/rt/RemoteDataviewHeader.mjs +10 -7
  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/RemoteTaskService.mjs +3 -3
  37. package/esm2020/src/tasks/Task.mjs +56 -48
  38. package/esm2020/src/util/PrmMap.mjs +5 -5
  39. package/esm2020/src/util/ReturnResult.mjs +7 -7
  40. package/esm2020/src/util/Scrambler.mjs +3 -2
  41. package/esm2020/src/util/cookie.service.mjs +2 -2
  42. package/fesm2015/magic-xpa-engine.mjs +375 -325
  43. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  44. package/fesm2020/magic-xpa-engine.mjs +368 -318
  45. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  46. package/package.json +6 -6
  47. package/src/ClientManager.d.ts +2 -1
  48. package/src/bridge/MagicBridge.d.ts +1 -1
  49. package/src/gui/MgForm.d.ts +1 -3
  50. package/src/tasks/RemoteTaskService.d.ts +1 -1
  51. package/src/tasks/Task.d.ts +1 -1
  52. package/magic-xpa-engine.d.ts +0 -2
@@ -641,13 +641,6 @@ class CommandSerializationHelper {
641
641
  }
642
642
 
643
643
  class EventCommand extends ClientOriginatedCommandTaskTag {
644
- constructor(magicEvent) {
645
- super();
646
- this.TaskTag = null;
647
- this.MagicEvent = 0;
648
- this.ClientRecId = 0;
649
- this.MagicEvent = magicEvent;
650
- }
651
644
  get CommandTypeAttribute() {
652
645
  return ConstInterface.MG_ATTR_VAL_EVENT;
653
646
  }
@@ -663,6 +656,13 @@ class EventCommand extends ClientOriginatedCommandTaskTag {
663
656
  return false;
664
657
  return true;
665
658
  }
659
+ constructor(magicEvent) {
660
+ super();
661
+ this.TaskTag = null;
662
+ this.MagicEvent = 0;
663
+ this.ClientRecId = 0;
664
+ this.MagicEvent = magicEvent;
665
+ }
666
666
  SerializeCommandData() {
667
667
  let helper = new CommandSerializationHelper();
668
668
  helper.SerializeTaskTag(this.TaskTag);
@@ -1172,15 +1172,6 @@ class OpeningTaskDetails {
1172
1172
  }
1173
1173
 
1174
1174
  class MgControl extends MgControlBase {
1175
- constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1176
- if (arguments.length === 0)
1177
- super();
1178
- else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1179
- super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1180
- else
1181
- super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1182
- this.initialize();
1183
- }
1184
1175
  initialize() {
1185
1176
  this._focusedStopExecution = false;
1186
1177
  this._inControlSuffix = false;
@@ -1193,6 +1184,15 @@ class MgControl extends MgControlBase {
1193
1184
  this.HasZoomHandler = false;
1194
1185
  this.ArgList = null;
1195
1186
  }
1187
+ constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1188
+ if (arguments.length === 0)
1189
+ super();
1190
+ else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1191
+ super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1192
+ else
1193
+ super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1194
+ this.initialize();
1195
+ }
1196
1196
  GetVarIndex() {
1197
1197
  return super.getForm().getTask().DataView.Dvcount + this.veeIndx;
1198
1198
  }
@@ -1205,7 +1205,8 @@ class MgControl extends MgControlBase {
1205
1205
  if (!isTagProcessed) {
1206
1206
  switch (attribute) {
1207
1207
  case ConstInterface.MG_ATTR_SUBFORM_TASK:
1208
- this._subformTaskId = valueStr;
1208
+ if (valueStr.trim() != "")
1209
+ this._subformTaskId = valueStr;
1209
1210
  break;
1210
1211
  case ConstInterface.MG_ATTR_REFRESHON:
1211
1212
  this.refreshOnString = valueStr.trim();
@@ -3124,6 +3125,21 @@ class MgPriorityBlockingQueue {
3124
3125
  }
3125
3126
 
3126
3127
  class RunTimeEvent extends RunTimeEventBase {
3128
+ set Control(value) {
3129
+ this._ctrl = value;
3130
+ }
3131
+ set DisplayLine(value) {
3132
+ this._displayLine = value;
3133
+ }
3134
+ get Control() {
3135
+ return this._ctrl;
3136
+ }
3137
+ get ControlsList() {
3138
+ return this._controlsList;
3139
+ }
3140
+ get Direction() {
3141
+ return this._direction;
3142
+ }
3127
3143
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3128
3144
  super();
3129
3145
  this._controlsList = null;
@@ -3185,21 +3201,6 @@ class RunTimeEvent extends RunTimeEventBase {
3185
3201
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3186
3202
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3187
3203
  }
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
3204
  constructor_5(taskRef) {
3204
3205
  this.init(taskRef);
3205
3206
  }
@@ -3869,6 +3870,15 @@ class TimerObjectCollection {
3869
3870
  }
3870
3871
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3871
3872
  class RCTimer extends MgTimer {
3873
+ get TimerIntervalMiliSeconds() {
3874
+ return this._timerIntervalMilliSeconds;
3875
+ }
3876
+ set IsIdleTimer(value) {
3877
+ this._isIdle = value;
3878
+ }
3879
+ get IsIdleTimer() {
3880
+ return this._isIdle;
3881
+ }
3872
3882
  constructor(mgData, milliseconds, isIdle) {
3873
3883
  super(milliseconds);
3874
3884
  this._mgData = null;
@@ -3880,15 +3890,6 @@ class RCTimer extends MgTimer {
3880
3890
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3881
3891
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3882
3892
  }
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
3893
  GetMgdata() {
3893
3894
  return this._mgData;
3894
3895
  }
@@ -4034,6 +4035,9 @@ class ExecutionStack {
4034
4035
  }
4035
4036
 
4036
4037
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4038
+ get CommandTypeAttribute() {
4039
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4040
+ }
4037
4041
  constructor() {
4038
4042
  super();
4039
4043
  this.ExecutionStack = null;
@@ -4047,9 +4051,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4047
4051
  this.CheckOnly = false;
4048
4052
  this.DitIdx = Int32.MinValue;
4049
4053
  }
4050
- get CommandTypeAttribute() {
4051
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4052
- }
4053
4054
  SerializeCommandData() {
4054
4055
  let helper = new CommandSerializationHelper();
4055
4056
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4132,9 +4133,10 @@ class Scrambler {
4132
4133
  if (high > (sqrt / 2))
4133
4134
  high = Math.floor(sqrt / 2);
4134
4135
  delta = (Math.random() * (high - low)) + low;
4136
+ delta = Math.floor(delta);
4135
4137
  if (delta === Scrambler.XML_ILLEGAL_RANDOM)
4136
4138
  delta++;
4137
- return Math.floor(delta);
4139
+ return delta;
4138
4140
  }
4139
4141
  static UnScramble(inVal, beginOffSet, endOffSet) {
4140
4142
  if (!Scrambler.ScramblingEnabled) {
@@ -4503,13 +4505,6 @@ class HttpClientAsync extends HttpClientBase {
4503
4505
  }
4504
4506
 
4505
4507
  class HttpManager {
4506
- constructor() {
4507
- this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4508
- this._httpClientAsync = null;
4509
- this._isAbortingMagicEngine = false;
4510
- this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4511
- this.RegisterBasicDelegates();
4512
- }
4513
4508
  getHttpClient() {
4514
4509
  if (this.IsAbortingMagicEngine)
4515
4510
  return new HttpClientSync();
@@ -4529,6 +4524,13 @@ class HttpManager {
4529
4524
  }
4530
4525
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4531
4526
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4527
+ constructor() {
4528
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4529
+ this._httpClientAsync = null;
4530
+ this._isAbortingMagicEngine = false;
4531
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4532
+ this.RegisterBasicDelegates();
4533
+ }
4532
4534
  RegisterBasicDelegates() {
4533
4535
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4534
4536
  }
@@ -5074,6 +5076,12 @@ var RequestStatus;
5074
5076
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5075
5077
  })(RequestStatus || (RequestStatus = {}));
5076
5078
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5079
+ static GetInstance() {
5080
+ if (RemoteCommandsProcessor._instance === null) {
5081
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5082
+ }
5083
+ return RemoteCommandsProcessor._instance;
5084
+ }
5077
5085
  constructor() {
5078
5086
  super();
5079
5087
  this._lastRequestTime = 0;
@@ -5084,12 +5092,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5084
5092
  HttpManager.GetInstance();
5085
5093
  this.RegisterDelegates();
5086
5094
  }
5087
- static GetInstance() {
5088
- if (RemoteCommandsProcessor._instance === null) {
5089
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5090
- }
5091
- return RemoteCommandsProcessor._instance;
5092
- }
5093
5095
  CheckAndSetSessionCounter(newSessionCounter) {
5094
5096
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5095
5097
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5729,21 +5731,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5729
5731
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5730
5732
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5731
5733
  class HandshakeResponse {
5732
- constructor(responseXML) {
5733
- this._scrambleMessages = true;
5734
- this._contextId = null;
5735
- this._privateSessionId = null;
5736
- this._inputPassword = false;
5737
- this._httpTimeout = 0;
5738
- this._systemLogin = null;
5739
- this._maxInternalLogLevel = null;
5740
- try {
5741
- JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5742
- }
5743
- catch (ex) {
5744
- Logger.Instance.WriteExceptionToLog(ex, responseXML);
5745
- }
5746
- }
5747
5734
  get ScrambleMessages() {
5748
5735
  return this._scrambleMessages;
5749
5736
  }
@@ -5765,6 +5752,21 @@ class HandshakeResponse {
5765
5752
  get MaxInternalLogLevel() {
5766
5753
  return this._maxInternalLogLevel;
5767
5754
  }
5755
+ constructor(responseXML) {
5756
+ this._scrambleMessages = true;
5757
+ this._contextId = null;
5758
+ this._privateSessionId = null;
5759
+ this._inputPassword = false;
5760
+ this._httpTimeout = 0;
5761
+ this._systemLogin = null;
5762
+ this._maxInternalLogLevel = null;
5763
+ try {
5764
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5765
+ }
5766
+ catch (ex) {
5767
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5768
+ }
5769
+ }
5768
5770
  FillFromJSON(error, result) {
5769
5771
  if (error != null) {
5770
5772
  throw error;
@@ -6124,17 +6126,22 @@ class LanguageData {
6124
6126
  if (this._mlsContent.length > 0) {
6125
6127
  let linePairs = 0;
6126
6128
  let srcLine = this._mlsContent + 3;
6129
+ let transLine;
6127
6130
  this._mlsStrings = new Hashtable();
6128
- let linesStr = this._mlsContent.substring(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6131
+ let linesStr = this._mlsContent.substr(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6129
6132
  linePairs = parseInt(linesStr.toString(), 16);
6130
6133
  let tokens = StrUtil.tokenize(srcLine.toString(), "\n");
6131
- for (let line = 0; line < linePairs * 2; line += 2) {
6132
- if (this._mlsStrings.get_Item(tokens[line].toString()) == null)
6133
- this._mlsStrings.set_Item(tokens[line].toString(), tokens[line + 1].toString());
6134
+ for (let pairNum = 0; pairNum < linePairs * 2; pairNum += 2) {
6135
+ srcLine = tokens[pairNum].substr(0, tokens[pairNum].length - 1);
6136
+ transLine = tokens[pairNum + 1].substr(0, tokens[pairNum + 1].length - 1);
6137
+ if (this._mlsStrings.get_Item(srcLine.toString()) == null)
6138
+ this._mlsStrings.set_Item(srcLine.toString(), transLine);
6134
6139
  }
6135
6140
  }
6136
6141
  }
6137
6142
  else if (this._mlsFileUrl != null) {
6143
+ if (this._mlsFileUrl.startsWith("./"))
6144
+ this._mlsFileUrl = NString.Replace(this._mlsFileUrl, './', './assets/cache/');
6138
6145
  let contentStr = await CommandsProcessorManager.GetContent(this._mlsFileUrl, true);
6139
6146
  let buffer = contentStr;
6140
6147
  if (buffer != null && buffer.length > 0) {
@@ -7282,11 +7289,6 @@ var DataViewCommandType;
7282
7289
  DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7283
7290
  })(DataViewCommandType || (DataViewCommandType = {}));
7284
7291
  class DataviewCommand extends ClientOriginatedCommandTaskTag {
7285
- constructor() {
7286
- super();
7287
- this.CommandType = 0;
7288
- this.TaskTag = null;
7289
- }
7290
7292
  get CommandTypeAttribute() {
7291
7293
  throw new NotImplementedException();
7292
7294
  }
@@ -7297,6 +7299,11 @@ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7297
7299
  get ShouldSerialize() {
7298
7300
  return false;
7299
7301
  }
7302
+ constructor() {
7303
+ super();
7304
+ this.CommandType = 0;
7305
+ this.TaskTag = null;
7306
+ }
7300
7307
  }
7301
7308
 
7302
7309
  class EventHandlerPosition {
@@ -7714,12 +7721,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7714
7721
  }
7715
7722
 
7716
7723
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7717
- constructor() {
7718
- super();
7719
- this.TaskTag = null;
7720
- this.FldId = 0;
7721
- this.IgnoreSubformRecompute = false;
7722
- }
7723
7724
  get CommandTypeAttribute() {
7724
7725
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7725
7726
  }
@@ -7731,17 +7732,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7731
7732
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7732
7733
  return helper.GetString();
7733
7734
  }
7735
+ constructor() {
7736
+ super();
7737
+ this.TaskTag = null;
7738
+ this.FldId = 0;
7739
+ this.IgnoreSubformRecompute = false;
7740
+ }
7734
7741
  getCommandInfo() {
7735
7742
  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());
7736
7743
  }
7737
7744
  }
7738
7745
 
7739
7746
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7740
- constructor() {
7741
- super();
7742
- this.TaskTag = null;
7743
- this.ReversibleExit = false;
7744
- }
7745
7747
  get CommandTypeAttribute() {
7746
7748
  return ConstInterface.MG_ATTR_VAL_TRANS;
7747
7749
  }
@@ -7755,6 +7757,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7755
7757
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7756
7758
  return helper.GetString();
7757
7759
  }
7760
+ constructor() {
7761
+ super();
7762
+ this.TaskTag = null;
7763
+ this.ReversibleExit = false;
7764
+ }
7758
7765
  getCommandInfo() {
7759
7766
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7760
7767
  }
@@ -7773,6 +7780,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7773
7780
  }
7774
7781
 
7775
7782
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7783
+ get CommandTypeAttribute() {
7784
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7785
+ }
7776
7786
  constructor() {
7777
7787
  super();
7778
7788
  this.TaskTag = null;
@@ -7781,9 +7791,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7781
7791
  this.MprgCreator = null;
7782
7792
  this.LengthExpVal = Int32.MinValue;
7783
7793
  }
7784
- get CommandTypeAttribute() {
7785
- return ConstInterface.MG_ATTR_VAL_EVAL;
7786
- }
7787
7794
  SerializeCommandData() {
7788
7795
  let helper = new CommandSerializationHelper();
7789
7796
  helper.SerializeTaskTag(this.TaskTag);
@@ -7831,10 +7838,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
7831
7838
  }
7832
7839
 
7833
7840
  class IniputForceWriteCommand extends ClientOriginatedCommand {
7834
- constructor() {
7835
- super();
7836
- this.Text = null;
7837
- }
7838
7841
  get CommandTypeAttribute() {
7839
7842
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
7840
7843
  }
@@ -7844,6 +7847,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
7844
7847
  SerializeCommandData() {
7845
7848
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
7846
7849
  }
7850
+ constructor() {
7851
+ super();
7852
+ this.Text = null;
7853
+ }
7847
7854
  getCommandInfo() {
7848
7855
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
7849
7856
  }
@@ -8132,10 +8139,6 @@ var ParamParseResult;
8132
8139
  })(ParamParseResult || (ParamParseResult = {}));
8133
8140
 
8134
8141
  class PrmMap {
8135
- constructor() {
8136
- this.values = null;
8137
- this.values = new Dictionary();
8138
- }
8139
8142
  getvalue(s) {
8140
8143
  if (this.values.ContainsKey(s))
8141
8144
  return this.values.get_Item(s);
@@ -8148,6 +8151,10 @@ class PrmMap {
8148
8151
  remove(s) {
8149
8152
  this.values.Remove(s);
8150
8153
  }
8154
+ constructor() {
8155
+ this.values = null;
8156
+ this.values = new Dictionary();
8157
+ }
8151
8158
  }
8152
8159
  class MirrorPrmMap extends PrmMap {
8153
8160
  constructor(type) {
@@ -8729,6 +8736,12 @@ class Environment {
8729
8736
  }
8730
8737
  Environment.Instance = new Environment();
8731
8738
  class EnvironmentDetails {
8739
+ set UpdateInQueryMode(value) {
8740
+ this._updateInQueryMode = value;
8741
+ }
8742
+ set CreateInModifyMode(value) {
8743
+ this._createInModifyMode = value;
8744
+ }
8732
8745
  constructor() {
8733
8746
  this._createInModifyMode = false;
8734
8747
  this._updateInQueryMode = false;
@@ -8739,12 +8752,6 @@ class EnvironmentDetails {
8739
8752
  this.ProjDir = null;
8740
8753
  this.CompIdx = 0;
8741
8754
  }
8742
- set UpdateInQueryMode(value) {
8743
- this._updateInQueryMode = value;
8744
- }
8745
- set CreateInModifyMode(value) {
8746
- this._createInModifyMode = value;
8747
- }
8748
8755
  allowUpdateInQueryMode() {
8749
8756
  return this._updateInQueryMode;
8750
8757
  }
@@ -8832,17 +8839,6 @@ class GlobalParams extends MirrorPrmMap {
8832
8839
  GlobalParams.Instance = new GlobalParams();
8833
8840
 
8834
8841
  class UserDetails {
8835
- constructor() {
8836
- this.UserName = null;
8837
- this.UserID = null;
8838
- this.UserInfo = null;
8839
- this.Password = null;
8840
- this.IsLoggedIn = false;
8841
- this.UserName = NString.Empty;
8842
- this.UserInfo = NString.Empty;
8843
- this.IsLoggedIn = false;
8844
- this.setUserID(NString.Empty);
8845
- }
8846
8842
  setIsLoggedIn(value) {
8847
8843
  this.IsLoggedIn = value;
8848
8844
  }
@@ -8862,6 +8858,17 @@ class UserDetails {
8862
8858
  UserDetails._instance = new UserDetails();
8863
8859
  return UserDetails._instance;
8864
8860
  }
8861
+ constructor() {
8862
+ this.UserName = null;
8863
+ this.UserID = null;
8864
+ this.UserInfo = null;
8865
+ this.Password = null;
8866
+ this.IsLoggedIn = false;
8867
+ this.UserName = NString.Empty;
8868
+ this.UserInfo = NString.Empty;
8869
+ this.IsLoggedIn = false;
8870
+ this.setUserID(NString.Empty);
8871
+ }
8865
8872
  fillData(parser) {
8866
8873
  let tokensVector;
8867
8874
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9261,8 +9268,8 @@ class Operation {
9261
9268
  if (rtEvnt !== null) {
9262
9269
  this._routeParams = rtEvnt.getRouteParamList();
9263
9270
  if ((await rtEvnt.getArgList().getArg(0).getValue(StorageAttribute.ALPHA, 0)).trim() === this._routerPath &&
9264
- ((rtEvnt.getArgList().getArg(1).skipArg()) ||
9265
- (await rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName))
9271
+ ((rtEvnt.getArgList().getArg(1).skipArg() && destSubForm === this._task.getForm().DefaultRouterOutlet) ||
9272
+ (!rtEvnt.getArgList().getArg(1).skipArg() && (await rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName)))
9266
9273
  canRoute = true;
9267
9274
  if (!canRoute)
9268
9275
  return false;
@@ -10125,7 +10132,7 @@ class CookieService {
10125
10132
  var cookie = cookies[i];
10126
10133
  var eqPos = cookie.indexOf('=');
10127
10134
  var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10128
- if (cookieName === decodeURI(name)) {
10135
+ if (cookieName === NString.TrimStart(decodeURI(name))) {
10129
10136
  document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
10130
10137
  return true;
10131
10138
  }
@@ -14195,7 +14202,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14195
14202
  }
14196
14203
  path = args[3];
14197
14204
  domain = args[4];
14198
- resVal.BoolVal = CookieService.setCookie(cookieName, args[0], nativeDt, path, domain, secure, sameSite);
14205
+ resVal.BoolVal = CookieService.setCookie(cookieName, (args[0] != null ? args[0].toString() : ""), nativeDt, path, domain, secure, sameSite);
14199
14206
  }
14200
14207
  eval_op_get_cookie(cookieName, resVal) {
14201
14208
  resVal.StrVal = CookieService.getCookie(cookieName);
@@ -14475,6 +14482,12 @@ class DataViewBase extends GuiDataViewBase {
14475
14482
  }
14476
14483
 
14477
14484
  class Record {
14485
+ get InCompute() {
14486
+ return this._inCompute;
14487
+ }
14488
+ get InRecompute() {
14489
+ return this._inRecompute;
14490
+ }
14478
14491
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14479
14492
  this._id = Int32.MinValue;
14480
14493
  this.dbViewRowIdx = 0;
@@ -14492,12 +14505,6 @@ class Record {
14492
14505
  else
14493
14506
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14494
14507
  }
14495
- get InCompute() {
14496
- return this._inCompute;
14497
- }
14498
- get InRecompute() {
14499
- return this._inRecompute;
14500
- }
14501
14508
  constructor_0(dvOrTableCache) {
14502
14509
  if (dvOrTableCache instanceof DataViewBase)
14503
14510
  this._dataview = dvOrTableCache;
@@ -15293,14 +15300,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15293
15300
  Record.INCREASE = true;
15294
15301
  Record.DECREASE = false;
15295
15302
  class DcValuesReference extends ObjectReferenceBase {
15303
+ get DcValues() {
15304
+ return this.Referent;
15305
+ }
15296
15306
  constructor(controlId, referencedDcValues) {
15297
15307
  super(referencedDcValues);
15298
15308
  this.ditIdx = 0;
15299
15309
  this.ditIdx = controlId;
15300
15310
  }
15301
- get DcValues() {
15302
- return this.Referent;
15303
- }
15304
15311
  Clone() {
15305
15312
  return new DcValuesReference(this.ditIdx, this.Referent);
15306
15313
  }
@@ -15576,21 +15583,6 @@ class RecordsTable {
15576
15583
  RecordsTable.REC_NOT_FOUND = -1;
15577
15584
 
15578
15585
  class DataviewHeaderBase {
15579
- constructor(task) {
15580
- this._cond = null;
15581
- this._task = null;
15582
- this.Loc = null;
15583
- this._dir = '\0';
15584
- this._id = 0;
15585
- this._keyIdx = 0;
15586
- this._retVal = null;
15587
- this.returnfield = null;
15588
- this.LinkStartAfterField = 0;
15589
- this.KeyExpression = 0;
15590
- this._task = task;
15591
- this._keyIdx = -1;
15592
- this._cond = new YesNoExp(true);
15593
- }
15594
15586
  get ReturnField() {
15595
15587
  if (this.returnfield === null && this._retVal !== null)
15596
15588
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15611,6 +15603,21 @@ class DataviewHeaderBase {
15611
15603
  get LinkEvaluateCondition() {
15612
15604
  return this._linkEvalCondition;
15613
15605
  }
15606
+ constructor(task) {
15607
+ this._cond = null;
15608
+ this._task = null;
15609
+ this.Loc = null;
15610
+ this._dir = '\0';
15611
+ this._id = 0;
15612
+ this._keyIdx = 0;
15613
+ this._retVal = null;
15614
+ this.returnfield = null;
15615
+ this.LinkStartAfterField = 0;
15616
+ this.KeyExpression = 0;
15617
+ this._task = task;
15618
+ this._keyIdx = -1;
15619
+ this._cond = new YesNoExp(true);
15620
+ }
15614
15621
  SetAttributes(attributes) {
15615
15622
  let keys = attributes.Keys;
15616
15623
  keys.forEach((text) => {
@@ -16261,7 +16268,8 @@ class Field extends FieldBase {
16261
16268
  }
16262
16269
  break;
16263
16270
  case ConstInterface.MG_ATTR_CHACHED_FLD_ID:
16264
- this.CacheTableFldIdx = NNumber.Parse(data[1]);
16271
+ if (data[0] != "")
16272
+ this.CacheTableFldIdx = NNumber.Parse(data[1]);
16265
16273
  break;
16266
16274
  case ConstInterface.MG_ATTR_LOCATE:
16267
16275
  this.Locate = new Boundary(this.getTask(), NNumber.Parse(data[1]), NNumber.Parse(data[0]), this.getType(), this.getSize(), this.CacheTableFldIdx);
@@ -16900,16 +16908,16 @@ class RecordOutOfDataViewException extends ApplicationException {
16900
16908
  }
16901
16909
 
16902
16910
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
16911
+ set SerializedDCVals(value) {
16912
+ this.parser.setXMLdata(value);
16913
+ this.parser.setCurrIndex(0);
16914
+ }
16903
16915
  constructor() {
16904
16916
  super();
16905
16917
  this.dcv = null;
16906
16918
  this.parser = null;
16907
16919
  this.parser = new XmlParser();
16908
16920
  }
16909
- set SerializedDCVals(value) {
16910
- this.parser.setXMLdata(value);
16911
- this.parser.setCurrIndex(0);
16912
- }
16913
16921
  Build() {
16914
16922
  this.dcv = null;
16915
16923
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -16989,6 +16997,39 @@ const RECOVERY_ACT_NONE = 'N';
16989
16997
  const TRANS_STAT_CLOSED = 'C';
16990
16998
  const TRANS_STAT_OPENED = 'O';
16991
16999
  class DataView extends DataViewBase {
17000
+ set InsertAt(value) {
17001
+ this._insertAt = value;
17002
+ }
17003
+ get InsertAt() {
17004
+ return this._insertAt;
17005
+ }
17006
+ get CurrRec() {
17007
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17008
+ }
17009
+ set CurrRec(value) {
17010
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17011
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17012
+ }
17013
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17014
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17015
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17016
+ }
17017
+ }
17018
+ get FlushUpdates() {
17019
+ return this._flushUpdates;
17020
+ }
17021
+ get HasMainTable() {
17022
+ return this._hasMainTable;
17023
+ }
17024
+ get CurrentRecId() {
17025
+ return this._currRecId;
17026
+ }
17027
+ get FirstRecord() {
17028
+ return this._recordsTab.getRecByIdx(0);
17029
+ }
17030
+ get LastRecord() {
17031
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17032
+ }
16992
17033
  constructor(taskOrDataView) {
16993
17034
  super();
16994
17035
  this._cacheLruTimeStamp = 0;
@@ -17040,39 +17081,6 @@ class DataView extends DataViewBase {
17040
17081
  Object.assign(this, taskOrDataView);
17041
17082
  }
17042
17083
  }
17043
- set InsertAt(value) {
17044
- this._insertAt = value;
17045
- }
17046
- get InsertAt() {
17047
- return this._insertAt;
17048
- }
17049
- get CurrRec() {
17050
- return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17051
- }
17052
- set CurrRec(value) {
17053
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17054
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17055
- }
17056
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17057
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17058
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17059
- }
17060
- }
17061
- get FlushUpdates() {
17062
- return this._flushUpdates;
17063
- }
17064
- get HasMainTable() {
17065
- return this._hasMainTable;
17066
- }
17067
- get CurrentRecId() {
17068
- return this._currRecId;
17069
- }
17070
- get FirstRecord() {
17071
- return this._recordsTab.getRecByIdx(0);
17072
- }
17073
- get LastRecord() {
17074
- return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17075
- }
17076
17084
  Init() {
17077
17085
  this.init();
17078
17086
  }
@@ -18645,6 +18653,12 @@ class ReturnResultBase {
18645
18653
  }
18646
18654
 
18647
18655
  class ReturnResult extends ReturnResultBase {
18656
+ get Success() {
18657
+ return this.success;
18658
+ }
18659
+ get ErrorDescription() {
18660
+ return this.errorDescription;
18661
+ }
18648
18662
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
18649
18663
  super();
18650
18664
  this.errorDescription = null;
@@ -18659,12 +18673,6 @@ class ReturnResult extends ReturnResultBase {
18659
18673
  else
18660
18674
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
18661
18675
  }
18662
- get Success() {
18663
- return this.success;
18664
- }
18665
- get ErrorDescription() {
18666
- return this.errorDescription;
18667
- }
18668
18676
  constructor_00(errorDescriptionCode) {
18669
18677
  this.success = false;
18670
18678
  this.ErrorId = errorDescriptionCode;
@@ -18764,13 +18772,13 @@ class Transaction {
18764
18772
  }
18765
18773
 
18766
18774
  class TaskTransactionManager {
18775
+ get isClosingTopmostTask() {
18776
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18777
+ }
18767
18778
  constructor(task) {
18768
18779
  this.task = null;
18769
18780
  this.task = task;
18770
18781
  }
18771
- get isClosingTopmostTask() {
18772
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
18773
- }
18774
18782
  AllowTransaction(transBegin, forLocal) {
18775
18783
  let result;
18776
18784
  if (forLocal)
@@ -19114,12 +19122,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19114
19122
  }
19115
19123
 
19116
19124
  class DataviewManager extends DataviewManagerBase {
19117
- constructor(task) {
19118
- super(task);
19119
- this.RemoteDataviewManager = null;
19120
- this.HasRemoteData = true;
19121
- this.RemoteDataviewManager = new RemoteDataviewManager(task);
19122
- }
19123
19125
  get TaskService() {
19124
19126
  return this.Task.TaskService;
19125
19127
  }
@@ -19134,6 +19136,12 @@ class DataviewManager extends DataviewManagerBase {
19134
19136
  get VirtualDataviewManager() {
19135
19137
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19136
19138
  }
19139
+ constructor(task) {
19140
+ super(task);
19141
+ this.RemoteDataviewManager = null;
19142
+ this.HasRemoteData = true;
19143
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19144
+ }
19137
19145
  async Execute(command) {
19138
19146
  return await this.CurrentDataviewManager.Execute(command);
19139
19147
  }
@@ -19265,18 +19273,8 @@ class MgForm extends MgFormBase {
19265
19273
  dv = this._task.DataView;
19266
19274
  return (dv);
19267
19275
  }
19268
- async moveInView(unit, direction, returnToCtrl) {
19269
- if (isNullOrUndefined(returnToCtrl))
19270
- await this.moveInView_0(unit, direction);
19271
- else
19272
- await this.moveInView_1(unit, direction, returnToCtrl);
19273
- }
19274
- async moveInView_0(unit, direction) {
19275
- await this.moveInView(unit, direction, true);
19276
- }
19277
- async moveInView_1(unit, direction, returnToCtrl) {
19276
+ async moveInView(unit, direction) {
19278
19277
  let oldRecId = Int32.MinValue;
19279
- let lastParkedCtrl;
19280
19278
  let currRec = this.GetDataview().getCurrRec();
19281
19279
  let oldTaskMode = ' ';
19282
19280
  let returnToVisibleLine = false;
@@ -19407,6 +19405,7 @@ class MgForm extends MgFormBase {
19407
19405
  try {
19408
19406
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19409
19407
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19408
+ visibleLine = this.getLastValidRow();
19410
19409
  }
19411
19410
  catch (Exception) {
19412
19411
  }
@@ -19530,15 +19529,6 @@ class MgForm extends MgFormBase {
19530
19529
  else
19531
19530
  this.SetTableTopIndex();
19532
19531
  await AccessHelper.eventsManager.handleInternalEventWithTask(this._task, InternalInterface.MG_ACT_REC_PREFIX);
19533
- if (returnToCtrl) {
19534
- lastParkedCtrl = this._task.getLastParkedCtrl();
19535
- if (lastParkedCtrl != null) {
19536
- let cursorMoved = await lastParkedCtrl.invoke();
19537
- if (!cursorMoved) {
19538
- await AccessHelper.eventsManager.HandleNonParkableControls(this._task);
19539
- }
19540
- }
19541
- }
19542
19532
  }
19543
19533
  catch (e) {
19544
19534
  if (e instanceof RecordOutOfDataViewException) {
@@ -20442,8 +20432,8 @@ class RemoteTaskService extends TaskServiceBase {
20442
20432
  OwnerTransactionTask = task.DataviewManager.RemoteDataviewManager.Transaction.OwnerTask;
20443
20433
  return OwnerTransactionTask;
20444
20434
  }
20445
- static PreparePropMainDisplay(task) {
20446
- task.ComputeMainDisplay();
20435
+ static async PreparePropMainDisplay(task) {
20436
+ await task.ComputeMainDisplay();
20447
20437
  return task.FormIsLegal() ? ReturnResult.SuccessfulResult : new ReturnResult(MsgInterface.BRKTAB_STR_ERR_FORM);
20448
20438
  }
20449
20439
  }
@@ -20843,15 +20833,18 @@ class RemoteDataviewHeader extends DataviewHeaderBase {
20843
20833
  setAttribute(attribute, valueStr) {
20844
20834
  switch (attribute) {
20845
20835
  case ConstInterface.MG_ATTR_CACHED_TABLE:
20846
- if (TableCacheManager.Instance.TableExists(valueStr))
20847
- this._table = TableCacheManager.Instance.GetTableById(valueStr);
20848
- else {
20849
- this._table = new TableCache(valueStr);
20850
- TableCacheManager.Instance.InsertTable(this._table);
20836
+ if (valueStr != "") {
20837
+ if (TableCacheManager.Instance.TableExists(valueStr))
20838
+ this._table = TableCacheManager.Instance.GetTableById(valueStr);
20839
+ else {
20840
+ this._table = new TableCache(valueStr);
20841
+ TableCacheManager.Instance.InsertTable(this._table);
20842
+ }
20851
20843
  }
20852
20844
  break;
20853
20845
  case ConstInterface.MG_ATTR_IDENT:
20854
- this._table.SetTableIdent(valueStr);
20846
+ if (valueStr != "")
20847
+ this._table.SetTableIdent(valueStr);
20855
20848
  break;
20856
20849
  default:
20857
20850
  super.setAttribute(attribute, valueStr);
@@ -21945,9 +21938,17 @@ class RecomputeTable {
21945
21938
  this.fillData_1(task.DataView, task, parser);
21946
21939
  }
21947
21940
  else
21948
- throw new ApplicationException("in RecomputeTable.fillData() invalid task id: ");
21941
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
21949
21942
  }
21950
21943
  fillData_1(dataView, task, parser) {
21944
+ if (parser.getNextTag() == XMLConstants.MG_TAG_RECOMPUTE) {
21945
+ let currrentIndex = parser.getCurrIndex();
21946
+ let encoded = parser.ReadContentOfCurrentElement().trim();
21947
+ let decoded = Base64.decode(encoded.substr(0, encoded.length).trim());
21948
+ let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
21949
+ parser.setXMLdata(newXmlData);
21950
+ parser.setCurrIndex(currrentIndex);
21951
+ }
21951
21952
  while (this.initInnerObjects(parser, parser.getNextTag(), dataView, task)) {
21952
21953
  }
21953
21954
  }
@@ -22263,13 +22264,6 @@ class UserEventsTable {
22263
22264
  }
22264
22265
 
22265
22266
  class FormsTable {
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
- }
22273
22267
  get Count() {
22274
22268
  return this._formsStringXml.length;
22275
22269
  }
@@ -22278,6 +22272,13 @@ class FormsTable {
22278
22272
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22279
22273
  return null;
22280
22274
  }
22275
+ constructor(task, parentForm) {
22276
+ this._task = null;
22277
+ this._parentForm = null;
22278
+ this._formsStringXml = null;
22279
+ this._task = task;
22280
+ this._parentForm = parentForm;
22281
+ }
22281
22282
  async fillData() {
22282
22283
  this._formsStringXml = new List();
22283
22284
  let parser = Manager.GetCurrentRuntimeContext().Parser;
@@ -22467,6 +22468,47 @@ var Task_Direction;
22467
22468
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
22468
22469
  })(Task_Direction || (Task_Direction = {}));
22469
22470
  class Task extends TaskBase {
22471
+ get ParentTask() {
22472
+ return this._parentTask;
22473
+ }
22474
+ set TryingToCommit(value) {
22475
+ this._tryingToCommit = value;
22476
+ }
22477
+ get TryingToCommit() {
22478
+ return this._tryingToCommit;
22479
+ }
22480
+ get TaskService() {
22481
+ if (this._taskService == null)
22482
+ this._taskService = new RemoteTaskService();
22483
+ return this._taskService;
22484
+ }
22485
+ static get CommandsProcessor() {
22486
+ return CommandsProcessorManager.GetCommandsProcessor();
22487
+ }
22488
+ get LogicalStudioParentTask() {
22489
+ if (this.StudioParentTask === null && !super.isMainProg()) {
22490
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22491
+ }
22492
+ return this.StudioParentTask;
22493
+ }
22494
+ get KnownToServer() {
22495
+ return this._knownToServer;
22496
+ }
22497
+ set Transaction(value) {
22498
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
22499
+ }
22500
+ get Transaction() {
22501
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
22502
+ }
22503
+ get TaskDefinitionId() {
22504
+ if (this.taskDefinitionId === null) {
22505
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22506
+ }
22507
+ return this.taskDefinitionId;
22508
+ }
22509
+ static get IsBlockingBatch() {
22510
+ return false;
22511
+ }
22470
22512
  constructor(parent) {
22471
22513
  super();
22472
22514
  this._dvCache = null;
@@ -22535,47 +22577,6 @@ class Task extends TaskBase {
22535
22577
  }
22536
22578
  this.constructor_1(parent);
22537
22579
  }
22538
- get ParentTask() {
22539
- return this._parentTask;
22540
- }
22541
- set TryingToCommit(value) {
22542
- this._tryingToCommit = value;
22543
- }
22544
- get TryingToCommit() {
22545
- return this._tryingToCommit;
22546
- }
22547
- get TaskService() {
22548
- if (this._taskService == null)
22549
- this._taskService = new RemoteTaskService();
22550
- return this._taskService;
22551
- }
22552
- static get CommandsProcessor() {
22553
- return CommandsProcessorManager.GetCommandsProcessor();
22554
- }
22555
- get LogicalStudioParentTask() {
22556
- if (this.StudioParentTask === null && !super.isMainProg()) {
22557
- return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
22558
- }
22559
- return this.StudioParentTask;
22560
- }
22561
- get KnownToServer() {
22562
- return this._knownToServer;
22563
- }
22564
- set Transaction(value) {
22565
- this.DataviewManager.CurrentDataviewManager.Transaction = value;
22566
- }
22567
- get Transaction() {
22568
- return this.DataviewManager.CurrentDataviewManager.Transaction;
22569
- }
22570
- get TaskDefinitionId() {
22571
- if (this.taskDefinitionId === null) {
22572
- this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
22573
- }
22574
- return this.taskDefinitionId;
22575
- }
22576
- static get IsBlockingBatch() {
22577
- return false;
22578
- }
22579
22580
  constructor_0() {
22580
22581
  this.ActionManager = new ActionManager();
22581
22582
  this.DataView = new DataView(this);
@@ -22693,10 +22694,12 @@ class Task extends TaskBase {
22693
22694
  this.setDescriptor(valueStr);
22694
22695
  break;
22695
22696
  case ConstInterface.MG_ATTR_HAS_LOCATE:
22696
- this.hasLocate = true;
22697
+ if (+valueStr == 1)
22698
+ this.hasLocate = true;
22697
22699
  break;
22698
22700
  case ConstInterface.MG_ATTR_AS_PARENT:
22699
- this.ModeAsParent = true;
22701
+ if (+valueStr == 1)
22702
+ this.ModeAsParent = true;
22700
22703
  break;
22701
22704
  case ConstInterface.MG_ATTR_TASK_UNIQUE_SORT:
22702
22705
  this.UniqueSort = valueStr[0];
@@ -23023,6 +23026,7 @@ class Task extends TaskBase {
23023
23026
  result = await this.DataviewManager.Execute(dataViewCommand);
23024
23027
  if (!result.Success)
23025
23028
  return null;
23029
+ this.ResumeSubformLayout();
23026
23030
  }
23027
23031
  nonInteractiveTask = await this.StartSubTasks(moveToFirstControl, nonInteractiveTask, callByDestSubForm);
23028
23032
  this.InStartProcess = false;
@@ -24646,16 +24650,16 @@ class Task extends TaskBase {
24646
24650
  }
24647
24651
  }
24648
24652
  }
24649
- ComputeMainDisplay() {
24653
+ async ComputeMainDisplay() {
24650
24654
  let propMainDisplay = this.getProp(PropInterface.PROP_TYPE_MAIN_DISPLAY);
24651
- let mainDisplayIndex = propMainDisplay.GetComputedValueInteger();
24655
+ let mainDisplayIndex = await propMainDisplay.getValueInt();
24652
24656
  mainDisplayIndex = this.GetRealMainDisplayIndexOnCurrentTask(mainDisplayIndex);
24653
24657
  this._forms.InitFormFromXmlString(mainDisplayIndex);
24654
24658
  this.EnsureValidForm();
24655
24659
  }
24656
24660
  async PrepareTaskForm() {
24657
24661
  await TaskServiceBase.PreparePropOpenTaskWindow(this);
24658
- return RemoteTaskService.PreparePropMainDisplay(this);
24662
+ return await RemoteTaskService.PreparePropMainDisplay(this);
24659
24663
  }
24660
24664
  FormIsLegal() {
24661
24665
  let isFormIsLegal = super.isMainProg();
@@ -24724,7 +24728,12 @@ class Task extends TaskBase {
24724
24728
  let tokensVector = XmlParser.getTokens(RuntimeContextBase.Instance.Parser.getXMLsubstring(endTaskUrlIdx), XMLConstants.XML_ATTR_DELIM);
24725
24729
  let taskCacheURL = tokensVector.get_Item(1);
24726
24730
  let refListStr = tokensVector.get_Item(3);
24727
- let taskContentOriginal = await Task.CommandsProcessor.GetContent(taskCacheURL, true);
24731
+ let taskContentOriginal = "";
24732
+ if (taskCacheURL.trim() != "") {
24733
+ if (taskCacheURL.startsWith("./"))
24734
+ taskCacheURL = NString.Replace(taskCacheURL, './', './assets/cache/');
24735
+ taskContentOriginal = await Task.CommandsProcessor.GetContent(taskCacheURL, true);
24736
+ }
24728
24737
  let taskContentFinal = new StringBuilder(xmlData.substr(0, RuntimeContextBase.Instance.Parser.getCurrIndex() - (ConstInterface.MG_TAG_TASKURL.length + 1)), taskContentOriginal.length);
24729
24738
  let reflist = this.getReflist(refListStr, ';', true, -1);
24730
24739
  let refListIdx = 0;
@@ -24964,6 +24973,9 @@ class CompMainPrgTable {
24964
24973
  }
24965
24974
 
24966
24975
  class MGData {
24976
+ get ForceModal() {
24977
+ return this.forceModal;
24978
+ }
24967
24979
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
24968
24980
  this._expHandlers = null;
24969
24981
  this._id = 0;
@@ -24984,9 +24996,6 @@ class MGData {
24984
24996
  else
24985
24997
  this.constructor_1(id, parent, isModal, forceModal);
24986
24998
  }
24987
- get ForceModal() {
24988
- return this.forceModal;
24989
- }
24990
24999
  constructor_0(id, parent, isModal) {
24991
25000
  this._timerHandlers = new HandlersTable();
24992
25001
  this._expHandlers = new HandlersTable();
@@ -26924,7 +26933,7 @@ class EventsManager {
26924
26933
  val = Manager.GetCtrlVal(ctrl);
26925
26934
  task.CurrentEditingControl = null;
26926
26935
  if (!task.cancelWasRaised() &&
26927
- (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && ctrl._field.getType() === StorageAttribute.DATE || val !== null) && typeof val != 'undefined' &&
26936
+ (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && (ctrl._field.getType() === StorageAttribute.DATE || ctrl._field.getType() == StorageAttribute.NUMERIC) || val !== null) && typeof val != 'undefined' &&
26928
26937
  !await ctrl.validateAndSetValue(val, true))) {
26929
26938
  this.setStopExecution(true);
26930
26939
  return false;
@@ -28988,13 +28997,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
28988
28997
  }
28989
28998
 
28990
28999
  class EnhancedVerifyCommand extends VerifyCommand {
28991
- constructor() {
28992
- super();
28993
- this._buttonsID = '\0';
28994
- this._image = '\0';
28995
- this._returnValStr = null;
28996
- this._returnVal = null;
28997
- }
28998
29000
  async ProcessMessageBoxResponse(task, returnValue) {
28999
29001
  if (task !== null)
29000
29002
  await Operation.setoperVerifyReturnValue(returnValue, this._returnVal);
@@ -29025,6 +29027,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29025
29027
  break;
29026
29028
  }
29027
29029
  }
29030
+ constructor() {
29031
+ super();
29032
+ this._buttonsID = '\0';
29033
+ this._image = '\0';
29034
+ this._returnValStr = null;
29035
+ this._returnVal = null;
29036
+ }
29028
29037
  }
29029
29038
 
29030
29039
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29121,12 +29130,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29121
29130
  }
29122
29131
 
29123
29132
  class ResultCommand extends ClientTargetedCommandBase {
29124
- constructor() {
29125
- super();
29126
- this._isNull = false;
29127
- this._attr = StorageAttribute.NONE;
29128
- this._val = null;
29129
- }
29130
29133
  async Execute(res) {
29131
29134
  if (this._isNull)
29132
29135
  res.SetResultValue(null, StorageAttribute.NONE);
@@ -29152,6 +29155,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29152
29155
  break;
29153
29156
  }
29154
29157
  }
29158
+ constructor() {
29159
+ super();
29160
+ this._isNull = false;
29161
+ this._attr = StorageAttribute.NONE;
29162
+ this._val = null;
29163
+ }
29155
29164
  }
29156
29165
 
29157
29166
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -29516,19 +29525,9 @@ class CommandsTable {
29516
29525
  }
29517
29526
  }
29518
29527
 
29519
- let CurrentClientVersion = '4.900.0-dev491.7';
29528
+ let CurrentClientVersion = '4.901.0-ang15-dev491.310';
29520
29529
 
29521
29530
  class ClientManager {
29522
- constructor() {
29523
- this._globalUniqueSessionId = null;
29524
- this._buttonIsClicked = false;
29525
- RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29526
- LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29527
- LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29528
- RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29529
- this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29530
- this.RegisterDelegates();
29531
- }
29532
29531
  static get Instance() {
29533
29532
  if (ClientManager._instance === null)
29534
29533
  ClientManager._instance = new ClientManager();
@@ -29607,6 +29606,10 @@ class ClientManager {
29607
29606
  EventsManager.Instance.addGuiTriggeredEventWithTaskAndCodeAndLine(task, InternalInterface.MG_ACT_REC_PREFIX, dvRowIdx);
29608
29607
  }
29609
29608
  break;
29609
+ case "navigateInTable":
29610
+ if (guiEvent.ControlName === "magicRow")
29611
+ this.handleNavigateInRowEvent(task, guiEvent.Value);
29612
+ break;
29610
29613
  case "close":
29611
29614
  if (task.IsRoute())
29612
29615
  EventsManager.Instance.AddRouterClosedEvent(task);
@@ -29641,6 +29644,38 @@ class ClientManager {
29641
29644
  break;
29642
29645
  }
29643
29646
  }
29647
+ handleNavigateInRowEvent(task, evt) {
29648
+ let internalEvt = InternalInterface.MG_ACT_NONE;
29649
+ evt = evt.toLowerCase();
29650
+ switch (evt) {
29651
+ case "begin-page":
29652
+ internalEvt = InternalInterface.MG_ACT_TBL_BEGPAGE;
29653
+ break;
29654
+ case "previous-page":
29655
+ internalEvt = InternalInterface.MG_ACT_TBL_PRVPAGE;
29656
+ break;
29657
+ case "end-page":
29658
+ internalEvt = InternalInterface.MG_ACT_TBL_ENDPAGE;
29659
+ break;
29660
+ case "next-page":
29661
+ internalEvt = InternalInterface.MG_ACT_TBL_NXTPAGE;
29662
+ break;
29663
+ case "previous-line":
29664
+ internalEvt = InternalInterface.MG_ACT_TBL_PRVLINE;
29665
+ break;
29666
+ case "next-line":
29667
+ internalEvt = InternalInterface.MG_ACT_TBL_NXTLINE;
29668
+ break;
29669
+ case "begin-table":
29670
+ internalEvt = InternalInterface.MG_ACT_TBL_BEGTBL;
29671
+ break;
29672
+ case "end-table":
29673
+ internalEvt = InternalInterface.MG_ACT_TBL_ENDTBL;
29674
+ break;
29675
+ }
29676
+ if (internalEvt != InternalInterface.MG_ACT_NONE)
29677
+ EventsManager.Instance.addGuiTriggeredEventWithTaskAndCode(task, internalEvt);
29678
+ }
29644
29679
  ConfirmationClosed(res) {
29645
29680
  Commands.ResolvePromise(res);
29646
29681
  }
@@ -29692,6 +29727,16 @@ class ClientManager {
29692
29727
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
29693
29728
  }
29694
29729
  }
29730
+ constructor() {
29731
+ this._globalUniqueSessionId = null;
29732
+ this._buttonIsClicked = false;
29733
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
29734
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
29735
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
29736
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
29737
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
29738
+ this.RegisterDelegates();
29739
+ }
29695
29740
  InitGuiManager() {
29696
29741
  Manager.EventsManager = EventsManager.Instance;
29697
29742
  Manager.DefaultServerName = ServerConfig.Instance.getServer();
@@ -29777,15 +29822,20 @@ class ClientManager {
29777
29822
  }
29778
29823
  return pic;
29779
29824
  }
29780
- static GetFormattedValue(taskId, controlName, value) {
29825
+ static GetFormattedValue(taskId, controlName, value, rowId) {
29781
29826
  let pic = null;
29782
29827
  let task = MGDataCollection.Instance.GetTaskByID(taskId);
29783
29828
  let control = null;
29784
29829
  let newValue = value;
29785
- if (controlName !== null)
29830
+ if (controlName !== null && task !== null)
29786
29831
  control = task.getForm().GetCtrl(controlName);
29787
29832
  if (control != null && control.DataType == StorageAttribute.NUMERIC) {
29788
- pic = control.getPIC();
29833
+ if (control.isRepeatable() && control.getProp(PropInterface.PROP_TYPE_FORMAT).isExpression()) {
29834
+ let picval = control.getProp(PropInterface.PROP_TYPE_FORMAT).getPrevValue(+rowId);
29835
+ pic = new PIC(picval, StorageAttribute.NUMERIC, control.getForm().getTask().getCompIdx());
29836
+ }
29837
+ else
29838
+ pic = control.getPIC();
29789
29839
  let dispValue = String(value);
29790
29840
  let newPic = pic.getUnformattedNumericPic();
29791
29841
  let num = DisplayConvertor.Instance.toNum(dispValue, newPic, 0);
@@ -29886,8 +29936,8 @@ class MagicBridge {
29886
29936
  static GetControlPictureMask(taskId, controlName) {
29887
29937
  return ClientManager.GetControlPictureMask(taskId, controlName);
29888
29938
  }
29889
- static GetFormattedValue(taskId, controlName, value) {
29890
- return ClientManager.GetFormattedValue(taskId, controlName, value);
29939
+ static GetFormattedValue(taskId, controlName, value, rowId) {
29940
+ return ClientManager.GetFormattedValue(taskId, controlName, value, rowId);
29891
29941
  }
29892
29942
  static GetRangedValue(taskId, controlName, value) {
29893
29943
  return ClientManager.GetRangedValue(taskId, controlName, value);