@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
@@ -642,13 +642,6 @@ class CommandSerializationHelper {
642
642
  }
643
643
 
644
644
  class EventCommand extends ClientOriginatedCommandTaskTag {
645
- constructor(magicEvent) {
646
- super();
647
- this.TaskTag = null;
648
- this.MagicEvent = 0;
649
- this.ClientRecId = 0;
650
- this.MagicEvent = magicEvent;
651
- }
652
645
  get CommandTypeAttribute() {
653
646
  return ConstInterface.MG_ATTR_VAL_EVENT;
654
647
  }
@@ -664,6 +657,13 @@ class EventCommand extends ClientOriginatedCommandTaskTag {
664
657
  return false;
665
658
  return true;
666
659
  }
660
+ constructor(magicEvent) {
661
+ super();
662
+ this.TaskTag = null;
663
+ this.MagicEvent = 0;
664
+ this.ClientRecId = 0;
665
+ this.MagicEvent = magicEvent;
666
+ }
667
667
  SerializeCommandData() {
668
668
  let helper = new CommandSerializationHelper();
669
669
  helper.SerializeTaskTag(this.TaskTag);
@@ -1203,15 +1203,6 @@ class OpeningTaskDetails {
1203
1203
  }
1204
1204
 
1205
1205
  class MgControl extends MgControlBase {
1206
- constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1207
- if (arguments.length === 0)
1208
- super();
1209
- else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1210
- super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1211
- else
1212
- super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1213
- this.initialize();
1214
- }
1215
1206
  initialize() {
1216
1207
  this._focusedStopExecution = false;
1217
1208
  this._inControlSuffix = false;
@@ -1224,6 +1215,15 @@ class MgControl extends MgControlBase {
1224
1215
  this.HasZoomHandler = false;
1225
1216
  this.ArgList = null;
1226
1217
  }
1218
+ constructor(type, taskOrParentMgForm, parentControlOrParentControlIdx) {
1219
+ if (arguments.length === 0)
1220
+ super();
1221
+ else if (arguments.length === 3 && (type === null || type.constructor === Number) && (taskOrParentMgForm === null || taskOrParentMgForm instanceof TaskBase) && (parentControlOrParentControlIdx === null || parentControlOrParentControlIdx.constructor === Number))
1222
+ super(type, taskOrParentMgForm.getForm(), parentControlOrParentControlIdx);
1223
+ else
1224
+ super(type, taskOrParentMgForm, parentControlOrParentControlIdx);
1225
+ this.initialize();
1226
+ }
1227
1227
  GetVarIndex() {
1228
1228
  return super.getForm().getTask().DataView.Dvcount + this.veeIndx;
1229
1229
  }
@@ -1241,7 +1241,8 @@ class MgControl extends MgControlBase {
1241
1241
  if (!isTagProcessed) {
1242
1242
  switch (attribute) {
1243
1243
  case ConstInterface.MG_ATTR_SUBFORM_TASK:
1244
- this._subformTaskId = valueStr;
1244
+ if (valueStr.trim() != "")
1245
+ this._subformTaskId = valueStr;
1245
1246
  break;
1246
1247
  case ConstInterface.MG_ATTR_REFRESHON:
1247
1248
  this.refreshOnString = valueStr.trim();
@@ -3232,6 +3233,21 @@ class MgPriorityBlockingQueue {
3232
3233
  }
3233
3234
 
3234
3235
  class RunTimeEvent extends RunTimeEventBase {
3236
+ set Control(value) {
3237
+ this._ctrl = value;
3238
+ }
3239
+ set DisplayLine(value) {
3240
+ this._displayLine = value;
3241
+ }
3242
+ get Control() {
3243
+ return this._ctrl;
3244
+ }
3245
+ get ControlsList() {
3246
+ return this._controlsList;
3247
+ }
3248
+ get Direction() {
3249
+ return this._direction;
3250
+ }
3235
3251
  constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
3236
3252
  super();
3237
3253
  this._controlsList = null;
@@ -3293,21 +3309,6 @@ class RunTimeEvent extends RunTimeEventBase {
3293
3309
  else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
3294
3310
  Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
3295
3311
  }
3296
- set Control(value) {
3297
- this._ctrl = value;
3298
- }
3299
- set DisplayLine(value) {
3300
- this._displayLine = value;
3301
- }
3302
- get Control() {
3303
- return this._ctrl;
3304
- }
3305
- get ControlsList() {
3306
- return this._controlsList;
3307
- }
3308
- get Direction() {
3309
- return this._direction;
3310
- }
3311
3312
  constructor_5(taskRef) {
3312
3313
  this.init(taskRef);
3313
3314
  }
@@ -3979,6 +3980,15 @@ class TimerObjectCollection {
3979
3980
  }
3980
3981
  TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
3981
3982
  class RCTimer extends MgTimer {
3983
+ get TimerIntervalMiliSeconds() {
3984
+ return this._timerIntervalMilliSeconds;
3985
+ }
3986
+ set IsIdleTimer(value) {
3987
+ this._isIdle = value;
3988
+ }
3989
+ get IsIdleTimer() {
3990
+ return this._isIdle;
3991
+ }
3982
3992
  constructor(mgData, milliseconds, isIdle) {
3983
3993
  super(milliseconds);
3984
3994
  this._mgData = null;
@@ -3990,15 +4000,6 @@ class RCTimer extends MgTimer {
3990
4000
  TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
3991
4001
  TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
3992
4002
  }
3993
- get TimerIntervalMiliSeconds() {
3994
- return this._timerIntervalMilliSeconds;
3995
- }
3996
- set IsIdleTimer(value) {
3997
- this._isIdle = value;
3998
- }
3999
- get IsIdleTimer() {
4000
- return this._isIdle;
4001
- }
4002
4003
  GetMgdata() {
4003
4004
  return this._mgData;
4004
4005
  }
@@ -4144,6 +4145,9 @@ class ExecutionStack {
4144
4145
  }
4145
4146
 
4146
4147
  class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4148
+ get CommandTypeAttribute() {
4149
+ return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4150
+ }
4147
4151
  constructor() {
4148
4152
  super();
4149
4153
  this.ExecutionStack = null;
@@ -4157,9 +4161,6 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4157
4161
  this.CheckOnly = false;
4158
4162
  this.DitIdx = Int32.MinValue;
4159
4163
  }
4160
- get CommandTypeAttribute() {
4161
- return ConstInterface.MG_ATTR_VAL_EXEC_OPER;
4162
- }
4163
4164
  SerializeCommandData() {
4164
4165
  let helper = new CommandSerializationHelper();
4165
4166
  let execStackExists = this.ExecutionStack !== null && !this.ExecutionStack.empty();
@@ -4242,9 +4243,10 @@ class Scrambler {
4242
4243
  if (high > (sqrt / 2))
4243
4244
  high = Math.floor(sqrt / 2);
4244
4245
  delta = (Math.random() * (high - low)) + low;
4246
+ delta = Math.floor(delta);
4245
4247
  if (delta === Scrambler.XML_ILLEGAL_RANDOM)
4246
4248
  delta++;
4247
- return Math.floor(delta);
4249
+ return delta;
4248
4250
  }
4249
4251
  static UnScramble(inVal, beginOffSet, endOffSet) {
4250
4252
  if (!Scrambler.ScramblingEnabled) {
@@ -4639,13 +4641,6 @@ class HttpClientAsync extends HttpClientBase {
4639
4641
  }
4640
4642
 
4641
4643
  class HttpManager {
4642
- constructor() {
4643
- this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4644
- this._httpClientAsync = null;
4645
- this._isAbortingMagicEngine = false;
4646
- this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4647
- this.RegisterBasicDelegates();
4648
- }
4649
4644
  getHttpClient() {
4650
4645
  if (this.IsAbortingMagicEngine)
4651
4646
  return new HttpClientSync();
@@ -4665,6 +4660,13 @@ class HttpManager {
4665
4660
  }
4666
4661
  get IsAbortingMagicEngine() { return this._isAbortingMagicEngine; }
4667
4662
  set IsAbortingMagicEngine(isAbortingMagicEngine) { this._isAbortingMagicEngine = isAbortingMagicEngine; }
4663
+ constructor() {
4664
+ this._httpCommunicationTimeoutMS = HttpManager.DEFAULT_HTTP_COMMUNICATION_TIMEOUT;
4665
+ this._httpClientAsync = null;
4666
+ this._isAbortingMagicEngine = false;
4667
+ this._httpClientAsync = new HttpClientAsync(HttpManager._nativeHttpClient);
4668
+ this.RegisterBasicDelegates();
4669
+ }
4668
4670
  RegisterBasicDelegates() {
4669
4671
  HttpClientEvents.GetHttpCommunicationTimeout_Event = this.GetHttpCommunicationTimeoutMS.bind(this);
4670
4672
  }
@@ -5222,6 +5224,12 @@ var RequestStatus;
5222
5224
  RequestStatus[RequestStatus["Abort"] = 2] = "Abort";
5223
5225
  })(RequestStatus || (RequestStatus = {}));
5224
5226
  class RemoteCommandsProcessor extends CommandsProcessorBase {
5227
+ static GetInstance() {
5228
+ if (RemoteCommandsProcessor._instance === null) {
5229
+ RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5230
+ }
5231
+ return RemoteCommandsProcessor._instance;
5232
+ }
5225
5233
  constructor() {
5226
5234
  super();
5227
5235
  this._lastRequestTime = 0;
@@ -5232,12 +5240,6 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5232
5240
  HttpManager.GetInstance();
5233
5241
  this.RegisterDelegates();
5234
5242
  }
5235
- static GetInstance() {
5236
- if (RemoteCommandsProcessor._instance === null) {
5237
- RemoteCommandsProcessor._instance = new RemoteCommandsProcessor();
5238
- }
5239
- return RemoteCommandsProcessor._instance;
5240
- }
5241
5243
  CheckAndSetSessionCounter(newSessionCounter) {
5242
5244
  if (newSessionCounter === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION) {
5243
5245
  Debug.Assert(this.GetSessionCounter() === ConstInterface.SESSION_COUNTER_CLOSE_CTX_INDICATION);
@@ -5905,21 +5907,6 @@ RemoteCommandsProcessor.InitialUrl = null;
5905
5907
  RemoteCommandsProcessor.WEB_COMMUNICATION_PROTOCOL_VERSION = "14002";
5906
5908
  RemoteCommandsProcessor._shouldScrambleAndUnscrambleMessages = false;
5907
5909
  class HandshakeResponse {
5908
- constructor(responseXML) {
5909
- this._scrambleMessages = true;
5910
- this._contextId = null;
5911
- this._privateSessionId = null;
5912
- this._inputPassword = false;
5913
- this._httpTimeout = 0;
5914
- this._systemLogin = null;
5915
- this._maxInternalLogLevel = null;
5916
- try {
5917
- JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5918
- }
5919
- catch (ex) {
5920
- Logger.Instance.WriteExceptionToLog(ex, responseXML);
5921
- }
5922
- }
5923
5910
  get ScrambleMessages() {
5924
5911
  return this._scrambleMessages;
5925
5912
  }
@@ -5941,6 +5928,21 @@ class HandshakeResponse {
5941
5928
  get MaxInternalLogLevel() {
5942
5929
  return this._maxInternalLogLevel;
5943
5930
  }
5931
+ constructor(responseXML) {
5932
+ this._scrambleMessages = true;
5933
+ this._contextId = null;
5934
+ this._privateSessionId = null;
5935
+ this._inputPassword = false;
5936
+ this._httpTimeout = 0;
5937
+ this._systemLogin = null;
5938
+ this._maxInternalLogLevel = null;
5939
+ try {
5940
+ JSON_Utils.JSONFromXML(responseXML, this.FillFromJSON.bind(this));
5941
+ }
5942
+ catch (ex) {
5943
+ Logger.Instance.WriteExceptionToLog(ex, responseXML);
5944
+ }
5945
+ }
5944
5946
  FillFromJSON(error, result) {
5945
5947
  if (error != null) {
5946
5948
  throw error;
@@ -6311,17 +6313,22 @@ class LanguageData {
6311
6313
  if (this._mlsContent.length > 0) {
6312
6314
  let linePairs = 0;
6313
6315
  let srcLine = this._mlsContent + 3;
6316
+ let transLine;
6314
6317
  this._mlsStrings = new Hashtable();
6315
- let linesStr = this._mlsContent.substring(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6318
+ let linesStr = this._mlsContent.substr(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6316
6319
  linePairs = parseInt(linesStr.toString(), 16);
6317
6320
  let tokens = StrUtil.tokenize(srcLine.toString(), "\n");
6318
- for (let line = 0; line < linePairs * 2; line += 2) {
6319
- if (this._mlsStrings.get_Item(tokens[line].toString()) == null)
6320
- this._mlsStrings.set_Item(tokens[line].toString(), tokens[line + 1].toString());
6321
+ for (let pairNum = 0; pairNum < linePairs * 2; pairNum += 2) {
6322
+ srcLine = tokens[pairNum].substr(0, tokens[pairNum].length - 1);
6323
+ transLine = tokens[pairNum + 1].substr(0, tokens[pairNum + 1].length - 1);
6324
+ if (this._mlsStrings.get_Item(srcLine.toString()) == null)
6325
+ this._mlsStrings.set_Item(srcLine.toString(), transLine);
6321
6326
  }
6322
6327
  }
6323
6328
  }
6324
6329
  else if (this._mlsFileUrl != null) {
6330
+ if (this._mlsFileUrl.startsWith("./"))
6331
+ this._mlsFileUrl = NString.Replace(this._mlsFileUrl, './', './assets/cache/');
6325
6332
  let contentStr = yield CommandsProcessorManager.GetContent(this._mlsFileUrl, true);
6326
6333
  let buffer = contentStr;
6327
6334
  if (buffer != null && buffer.length > 0) {
@@ -7478,11 +7485,6 @@ var DataViewCommandType;
7478
7485
  DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7479
7486
  })(DataViewCommandType || (DataViewCommandType = {}));
7480
7487
  class DataviewCommand extends ClientOriginatedCommandTaskTag {
7481
- constructor() {
7482
- super();
7483
- this.CommandType = 0;
7484
- this.TaskTag = null;
7485
- }
7486
7488
  get CommandTypeAttribute() {
7487
7489
  throw new NotImplementedException();
7488
7490
  }
@@ -7493,6 +7495,11 @@ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7493
7495
  get ShouldSerialize() {
7494
7496
  return false;
7495
7497
  }
7498
+ constructor() {
7499
+ super();
7500
+ this.CommandType = 0;
7501
+ this.TaskTag = null;
7502
+ }
7496
7503
  }
7497
7504
 
7498
7505
  class EventHandlerPosition {
@@ -7910,12 +7917,6 @@ class NonReversibleExitEventCommand extends EventCommand {
7910
7917
  }
7911
7918
 
7912
7919
  class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7913
- constructor() {
7914
- super();
7915
- this.TaskTag = null;
7916
- this.FldId = 0;
7917
- this.IgnoreSubformRecompute = false;
7918
- }
7919
7920
  get CommandTypeAttribute() {
7920
7921
  return ConstInterface.MG_ATTR_VAL_RECOMP;
7921
7922
  }
@@ -7927,17 +7928,18 @@ class RecomputeCommand extends ClientOriginatedCommandTaskTag {
7927
7928
  helper.SerializeAttribute(ConstInterface.MG_ATTR_IGNORE_SUBFORM_RECOMPUTE, '1');
7928
7929
  return helper.GetString();
7929
7930
  }
7931
+ constructor() {
7932
+ super();
7933
+ this.TaskTag = null;
7934
+ this.FldId = 0;
7935
+ this.IgnoreSubformRecompute = false;
7936
+ }
7930
7937
  getCommandInfo() {
7931
7938
  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());
7932
7939
  }
7933
7940
  }
7934
7941
 
7935
7942
  class TransactionCommand extends ClientOriginatedCommandTaskTag {
7936
- constructor() {
7937
- super();
7938
- this.TaskTag = null;
7939
- this.ReversibleExit = false;
7940
- }
7941
7943
  get CommandTypeAttribute() {
7942
7944
  return ConstInterface.MG_ATTR_VAL_TRANS;
7943
7945
  }
@@ -7951,6 +7953,11 @@ class TransactionCommand extends ClientOriginatedCommandTaskTag {
7951
7953
  helper.SerializeAttribute(ConstInterface.MG_ATTR_TRANS_LEVEL, this.Level);
7952
7954
  return helper.GetString();
7953
7955
  }
7956
+ constructor() {
7957
+ super();
7958
+ this.TaskTag = null;
7959
+ this.ReversibleExit = false;
7960
+ }
7954
7961
  getCommandInfo() {
7955
7962
  return NString.Format('[{0} in {1}]', this.Oper === 'C' ? 'Commit Transaction' : 'Abort Transaction', this.Task.getTaskInfo());
7956
7963
  }
@@ -7969,6 +7976,9 @@ class UnloadCommand extends ClientOriginatedCommand {
7969
7976
  }
7970
7977
 
7971
7978
  class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7979
+ get CommandTypeAttribute() {
7980
+ return ConstInterface.MG_ATTR_VAL_EVAL;
7981
+ }
7972
7982
  constructor() {
7973
7983
  super();
7974
7984
  this.TaskTag = null;
@@ -7977,9 +7987,6 @@ class EvaluateCommand extends ClientOriginatedCommandTaskTag {
7977
7987
  this.MprgCreator = null;
7978
7988
  this.LengthExpVal = Int32.MinValue;
7979
7989
  }
7980
- get CommandTypeAttribute() {
7981
- return ConstInterface.MG_ATTR_VAL_EVAL;
7982
- }
7983
7990
  SerializeCommandData() {
7984
7991
  let helper = new CommandSerializationHelper();
7985
7992
  helper.SerializeTaskTag(this.TaskTag);
@@ -8027,10 +8034,6 @@ class GlobalParamsQueryCommand extends QueryCommand {
8027
8034
  }
8028
8035
 
8029
8036
  class IniputForceWriteCommand extends ClientOriginatedCommand {
8030
- constructor() {
8031
- super();
8032
- this.Text = null;
8033
- }
8034
8037
  get CommandTypeAttribute() {
8035
8038
  return ConstInterface.MG_ATTR_VAL_INIPUT_FORCE_WRITE;
8036
8039
  }
@@ -8040,6 +8043,10 @@ class IniputForceWriteCommand extends ClientOriginatedCommand {
8040
8043
  SerializeCommandData() {
8041
8044
  return " " + ConstInterface.MG_ATTR_VAL_INIPUT_PARAM + "=\"" + XmlParser.escape(this.Text) + "\"";
8042
8045
  }
8046
+ constructor() {
8047
+ super();
8048
+ this.Text = null;
8049
+ }
8043
8050
  getCommandInfo() {
8044
8051
  return NString.Format('[{0} with {1}] ', this.CommandTypeAttribute, this.Text);
8045
8052
  }
@@ -8332,10 +8339,6 @@ var ParamParseResult;
8332
8339
  })(ParamParseResult || (ParamParseResult = {}));
8333
8340
 
8334
8341
  class PrmMap {
8335
- constructor() {
8336
- this.values = null;
8337
- this.values = new Dictionary();
8338
- }
8339
8342
  getvalue(s) {
8340
8343
  if (this.values.ContainsKey(s))
8341
8344
  return this.values.get_Item(s);
@@ -8348,6 +8351,10 @@ class PrmMap {
8348
8351
  remove(s) {
8349
8352
  this.values.Remove(s);
8350
8353
  }
8354
+ constructor() {
8355
+ this.values = null;
8356
+ this.values = new Dictionary();
8357
+ }
8351
8358
  }
8352
8359
  class MirrorPrmMap extends PrmMap {
8353
8360
  constructor(type) {
@@ -8931,6 +8938,12 @@ class Environment {
8931
8938
  }
8932
8939
  Environment.Instance = new Environment();
8933
8940
  class EnvironmentDetails {
8941
+ set UpdateInQueryMode(value) {
8942
+ this._updateInQueryMode = value;
8943
+ }
8944
+ set CreateInModifyMode(value) {
8945
+ this._createInModifyMode = value;
8946
+ }
8934
8947
  constructor() {
8935
8948
  this._createInModifyMode = false;
8936
8949
  this._updateInQueryMode = false;
@@ -8941,12 +8954,6 @@ class EnvironmentDetails {
8941
8954
  this.ProjDir = null;
8942
8955
  this.CompIdx = 0;
8943
8956
  }
8944
- set UpdateInQueryMode(value) {
8945
- this._updateInQueryMode = value;
8946
- }
8947
- set CreateInModifyMode(value) {
8948
- this._createInModifyMode = value;
8949
- }
8950
8957
  allowUpdateInQueryMode() {
8951
8958
  return this._updateInQueryMode;
8952
8959
  }
@@ -9034,17 +9041,6 @@ class GlobalParams extends MirrorPrmMap {
9034
9041
  GlobalParams.Instance = new GlobalParams();
9035
9042
 
9036
9043
  class UserDetails {
9037
- constructor() {
9038
- this.UserName = null;
9039
- this.UserID = null;
9040
- this.UserInfo = null;
9041
- this.Password = null;
9042
- this.IsLoggedIn = false;
9043
- this.UserName = NString.Empty;
9044
- this.UserInfo = NString.Empty;
9045
- this.IsLoggedIn = false;
9046
- this.setUserID(NString.Empty);
9047
- }
9048
9044
  setIsLoggedIn(value) {
9049
9045
  this.IsLoggedIn = value;
9050
9046
  }
@@ -9064,6 +9060,17 @@ class UserDetails {
9064
9060
  UserDetails._instance = new UserDetails();
9065
9061
  return UserDetails._instance;
9066
9062
  }
9063
+ constructor() {
9064
+ this.UserName = null;
9065
+ this.UserID = null;
9066
+ this.UserInfo = null;
9067
+ this.Password = null;
9068
+ this.IsLoggedIn = false;
9069
+ this.UserName = NString.Empty;
9070
+ this.UserInfo = NString.Empty;
9071
+ this.IsLoggedIn = false;
9072
+ this.setUserID(NString.Empty);
9073
+ }
9067
9074
  fillData(parser) {
9068
9075
  let tokensVector;
9069
9076
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
@@ -9468,8 +9475,8 @@ class Operation {
9468
9475
  if (rtEvnt !== null) {
9469
9476
  this._routeParams = rtEvnt.getRouteParamList();
9470
9477
  if ((yield rtEvnt.getArgList().getArg(0).getValue(StorageAttribute.ALPHA, 0)).trim() === this._routerPath &&
9471
- ((rtEvnt.getArgList().getArg(1).skipArg()) ||
9472
- (yield rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName))
9478
+ ((rtEvnt.getArgList().getArg(1).skipArg() && destSubForm === this._task.getForm().DefaultRouterOutlet) ||
9479
+ (!rtEvnt.getArgList().getArg(1).skipArg() && (yield rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName)))
9473
9480
  canRoute = true;
9474
9481
  if (!canRoute)
9475
9482
  return false;
@@ -10361,7 +10368,7 @@ class CookieService {
10361
10368
  var cookie = cookies[i];
10362
10369
  var eqPos = cookie.indexOf('=');
10363
10370
  var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10364
- if (cookieName === decodeURI(name)) {
10371
+ if (cookieName === NString.TrimStart(decodeURI(name))) {
10365
10372
  document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
10366
10373
  return true;
10367
10374
  }
@@ -14497,7 +14504,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14497
14504
  }
14498
14505
  path = args[3];
14499
14506
  domain = args[4];
14500
- resVal.BoolVal = CookieService.setCookie(cookieName, args[0], nativeDt, path, domain, secure, sameSite);
14507
+ resVal.BoolVal = CookieService.setCookie(cookieName, (args[0] != null ? args[0].toString() : ""), nativeDt, path, domain, secure, sameSite);
14501
14508
  }
14502
14509
  eval_op_get_cookie(cookieName, resVal) {
14503
14510
  resVal.StrVal = CookieService.getCookie(cookieName);
@@ -14777,6 +14784,12 @@ class DataViewBase extends GuiDataViewBase {
14777
14784
  }
14778
14785
 
14779
14786
  class Record {
14787
+ get InCompute() {
14788
+ return this._inCompute;
14789
+ }
14790
+ get InRecompute() {
14791
+ return this._inRecompute;
14792
+ }
14780
14793
  constructor(dvOrTableCacheOrCIdOrRecord, dataview) {
14781
14794
  this._id = Int32.MinValue;
14782
14795
  this.dbViewRowIdx = 0;
@@ -14794,12 +14807,6 @@ class Record {
14794
14807
  else
14795
14808
  this.constructor_1(dvOrTableCacheOrCIdOrRecord, dataview);
14796
14809
  }
14797
- get InCompute() {
14798
- return this._inCompute;
14799
- }
14800
- get InRecompute() {
14801
- return this._inRecompute;
14802
- }
14803
14810
  constructor_0(dvOrTableCache) {
14804
14811
  if (dvOrTableCache instanceof DataViewBase)
14805
14812
  this._dataview = dvOrTableCache;
@@ -15595,14 +15602,14 @@ Record.FLAG_MODIFIED_ATLEAST_ONCE = (0x40);
15595
15602
  Record.INCREASE = true;
15596
15603
  Record.DECREASE = false;
15597
15604
  class DcValuesReference extends ObjectReferenceBase {
15605
+ get DcValues() {
15606
+ return this.Referent;
15607
+ }
15598
15608
  constructor(controlId, referencedDcValues) {
15599
15609
  super(referencedDcValues);
15600
15610
  this.ditIdx = 0;
15601
15611
  this.ditIdx = controlId;
15602
15612
  }
15603
- get DcValues() {
15604
- return this.Referent;
15605
- }
15606
15613
  Clone() {
15607
15614
  return new DcValuesReference(this.ditIdx, this.Referent);
15608
15615
  }
@@ -15878,21 +15885,6 @@ class RecordsTable {
15878
15885
  RecordsTable.REC_NOT_FOUND = -1;
15879
15886
 
15880
15887
  class DataviewHeaderBase {
15881
- constructor(task) {
15882
- this._cond = null;
15883
- this._task = null;
15884
- this.Loc = null;
15885
- this._dir = '\0';
15886
- this._id = 0;
15887
- this._keyIdx = 0;
15888
- this._retVal = null;
15889
- this.returnfield = null;
15890
- this.LinkStartAfterField = 0;
15891
- this.KeyExpression = 0;
15892
- this._task = task;
15893
- this._keyIdx = -1;
15894
- this._cond = new YesNoExp(true);
15895
- }
15896
15888
  get ReturnField() {
15897
15889
  if (this.returnfield === null && this._retVal !== null)
15898
15890
  this.returnfield = this.Task.getFieldByValueStr(this._retVal);
@@ -15913,6 +15905,21 @@ class DataviewHeaderBase {
15913
15905
  get LinkEvaluateCondition() {
15914
15906
  return this._linkEvalCondition;
15915
15907
  }
15908
+ constructor(task) {
15909
+ this._cond = null;
15910
+ this._task = null;
15911
+ this.Loc = null;
15912
+ this._dir = '\0';
15913
+ this._id = 0;
15914
+ this._keyIdx = 0;
15915
+ this._retVal = null;
15916
+ this.returnfield = null;
15917
+ this.LinkStartAfterField = 0;
15918
+ this.KeyExpression = 0;
15919
+ this._task = task;
15920
+ this._keyIdx = -1;
15921
+ this._cond = new YesNoExp(true);
15922
+ }
15916
15923
  SetAttributes(attributes) {
15917
15924
  let keys = attributes.Keys;
15918
15925
  keys.forEach((text) => {
@@ -16585,7 +16592,8 @@ class Field extends FieldBase {
16585
16592
  }
16586
16593
  break;
16587
16594
  case ConstInterface.MG_ATTR_CHACHED_FLD_ID:
16588
- this.CacheTableFldIdx = NNumber.Parse(data[1]);
16595
+ if (data[0] != "")
16596
+ this.CacheTableFldIdx = NNumber.Parse(data[1]);
16589
16597
  break;
16590
16598
  case ConstInterface.MG_ATTR_LOCATE:
16591
16599
  this.Locate = new Boundary(this.getTask(), NNumber.Parse(data[1]), NNumber.Parse(data[0]), this.getType(), this.getSize(), this.CacheTableFldIdx);
@@ -17249,16 +17257,16 @@ class RecordOutOfDataViewException extends ApplicationException {
17249
17257
  }
17250
17258
 
17251
17259
  class XMLBasedDcValuesBuilder extends DcValuesBuilderBase {
17260
+ set SerializedDCVals(value) {
17261
+ this.parser.setXMLdata(value);
17262
+ this.parser.setCurrIndex(0);
17263
+ }
17252
17264
  constructor() {
17253
17265
  super();
17254
17266
  this.dcv = null;
17255
17267
  this.parser = null;
17256
17268
  this.parser = new XmlParser();
17257
17269
  }
17258
- set SerializedDCVals(value) {
17259
- this.parser.setXMLdata(value);
17260
- this.parser.setCurrIndex(0);
17261
- }
17262
17270
  Build() {
17263
17271
  this.dcv = null;
17264
17272
  let endContext = this.parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, this.parser.getCurrIndex());
@@ -17338,6 +17346,39 @@ const RECOVERY_ACT_NONE = 'N';
17338
17346
  const TRANS_STAT_CLOSED = 'C';
17339
17347
  const TRANS_STAT_OPENED = 'O';
17340
17348
  class DataView extends DataViewBase {
17349
+ set InsertAt(value) {
17350
+ this._insertAt = value;
17351
+ }
17352
+ get InsertAt() {
17353
+ return this._insertAt;
17354
+ }
17355
+ get CurrRec() {
17356
+ return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17357
+ }
17358
+ set CurrRec(value) {
17359
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17360
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17361
+ }
17362
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17363
+ if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17364
+ this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17365
+ }
17366
+ }
17367
+ get FlushUpdates() {
17368
+ return this._flushUpdates;
17369
+ }
17370
+ get HasMainTable() {
17371
+ return this._hasMainTable;
17372
+ }
17373
+ get CurrentRecId() {
17374
+ return this._currRecId;
17375
+ }
17376
+ get FirstRecord() {
17377
+ return this._recordsTab.getRecByIdx(0);
17378
+ }
17379
+ get LastRecord() {
17380
+ return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17381
+ }
17341
17382
  constructor(taskOrDataView) {
17342
17383
  super();
17343
17384
  this._cacheLruTimeStamp = 0;
@@ -17389,39 +17430,6 @@ class DataView extends DataViewBase {
17389
17430
  Object.assign(this, taskOrDataView);
17390
17431
  }
17391
17432
  }
17392
- set InsertAt(value) {
17393
- this._insertAt = value;
17394
- }
17395
- get InsertAt() {
17396
- return this._insertAt;
17397
- }
17398
- get CurrRec() {
17399
- return this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER;
17400
- }
17401
- set CurrRec(value) {
17402
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null && value === null) {
17403
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.resetDcValueId();
17404
- }
17405
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER = value;
17406
- if (this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER !== null) {
17407
- this._currRec_DO_NOT_USE_DIRECTLY_USE_SETTER_GETTER.SetDcValueId();
17408
- }
17409
- }
17410
- get FlushUpdates() {
17411
- return this._flushUpdates;
17412
- }
17413
- get HasMainTable() {
17414
- return this._hasMainTable;
17415
- }
17416
- get CurrentRecId() {
17417
- return this._currRecId;
17418
- }
17419
- get FirstRecord() {
17420
- return this._recordsTab.getRecByIdx(0);
17421
- }
17422
- get LastRecord() {
17423
- return this._recordsTab.getRecByIdx(this._recordsTab.getSize() - 1);
17424
- }
17425
17433
  Init() {
17426
17434
  this.init();
17427
17435
  }
@@ -19051,6 +19059,12 @@ class ReturnResultBase {
19051
19059
  }
19052
19060
 
19053
19061
  class ReturnResult extends ReturnResultBase {
19062
+ get Success() {
19063
+ return this.success;
19064
+ }
19065
+ get ErrorDescription() {
19066
+ return this.errorDescription;
19067
+ }
19054
19068
  constructor(errorDescriptionCodeOrErrorDescriptionOrInnerResult, innerResult) {
19055
19069
  super();
19056
19070
  this.errorDescription = null;
@@ -19065,12 +19079,6 @@ class ReturnResult extends ReturnResultBase {
19065
19079
  else
19066
19080
  this.constructor_03(errorDescriptionCodeOrErrorDescriptionOrInnerResult);
19067
19081
  }
19068
- get Success() {
19069
- return this.success;
19070
- }
19071
- get ErrorDescription() {
19072
- return this.errorDescription;
19073
- }
19074
19082
  constructor_00(errorDescriptionCode) {
19075
19083
  this.success = false;
19076
19084
  this.ErrorId = errorDescriptionCode;
@@ -19174,13 +19182,13 @@ class Transaction {
19174
19182
  }
19175
19183
 
19176
19184
  class TaskTransactionManager {
19185
+ get isClosingTopmostTask() {
19186
+ return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
19187
+ }
19177
19188
  constructor(task) {
19178
19189
  this.task = null;
19179
19190
  this.task = task;
19180
19191
  }
19181
- get isClosingTopmostTask() {
19182
- return MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask;
19183
- }
19184
19192
  AllowTransaction(transBegin, forLocal) {
19185
19193
  let result;
19186
19194
  if (forLocal)
@@ -19561,12 +19569,6 @@ class RemoteDataviewManager extends DataviewManagerBase {
19561
19569
  }
19562
19570
 
19563
19571
  class DataviewManager extends DataviewManagerBase {
19564
- constructor(task) {
19565
- super(task);
19566
- this.RemoteDataviewManager = null;
19567
- this.HasRemoteData = true;
19568
- this.RemoteDataviewManager = new RemoteDataviewManager(task);
19569
- }
19570
19572
  get TaskService() {
19571
19573
  return this.Task.TaskService;
19572
19574
  }
@@ -19581,6 +19583,12 @@ class DataviewManager extends DataviewManagerBase {
19581
19583
  get VirtualDataviewManager() {
19582
19584
  return this.TaskService.GetDataviewManagerForVirtuals(this.Task);
19583
19585
  }
19586
+ constructor(task) {
19587
+ super(task);
19588
+ this.RemoteDataviewManager = null;
19589
+ this.HasRemoteData = true;
19590
+ this.RemoteDataviewManager = new RemoteDataviewManager(task);
19591
+ }
19584
19592
  Execute(command) {
19585
19593
  return __awaiter(this, void 0, void 0, function* () {
19586
19594
  return yield this.CurrentDataviewManager.Execute(command);
@@ -19716,23 +19724,9 @@ class MgForm extends MgFormBase {
19716
19724
  dv = this._task.DataView;
19717
19725
  return (dv);
19718
19726
  }
19719
- moveInView(unit, direction, returnToCtrl) {
19720
- return __awaiter(this, void 0, void 0, function* () {
19721
- if (isNullOrUndefined(returnToCtrl))
19722
- yield this.moveInView_0(unit, direction);
19723
- else
19724
- yield this.moveInView_1(unit, direction, returnToCtrl);
19725
- });
19726
- }
19727
- moveInView_0(unit, direction) {
19728
- return __awaiter(this, void 0, void 0, function* () {
19729
- yield this.moveInView(unit, direction, true);
19730
- });
19731
- }
19732
- moveInView_1(unit, direction, returnToCtrl) {
19727
+ moveInView(unit, direction) {
19733
19728
  return __awaiter(this, void 0, void 0, function* () {
19734
19729
  let oldRecId = Int32.MinValue;
19735
- let lastParkedCtrl;
19736
19730
  let currRec = this.GetDataview().getCurrRec();
19737
19731
  let oldTaskMode = ' ';
19738
19732
  let returnToVisibleLine = false;
@@ -19863,6 +19857,7 @@ class MgForm extends MgFormBase {
19863
19857
  try {
19864
19858
  yield this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19865
19859
  yield this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19860
+ visibleLine = this.getLastValidRow();
19866
19861
  }
19867
19862
  catch (Exception) {
19868
19863
  }
@@ -19986,15 +19981,6 @@ class MgForm extends MgFormBase {
19986
19981
  else
19987
19982
  this.SetTableTopIndex();
19988
19983
  yield AccessHelper.eventsManager.handleInternalEventWithTask(this._task, InternalInterface.MG_ACT_REC_PREFIX);
19989
- if (returnToCtrl) {
19990
- lastParkedCtrl = this._task.getLastParkedCtrl();
19991
- if (lastParkedCtrl != null) {
19992
- let cursorMoved = yield lastParkedCtrl.invoke();
19993
- if (!cursorMoved) {
19994
- yield AccessHelper.eventsManager.HandleNonParkableControls(this._task);
19995
- }
19996
- }
19997
- }
19998
19984
  }
19999
19985
  catch (e) {
20000
19986
  if (e instanceof RecordOutOfDataViewException) {
@@ -20987,8 +20973,10 @@ class RemoteTaskService extends TaskServiceBase {
20987
20973
  return OwnerTransactionTask;
20988
20974
  }
20989
20975
  static PreparePropMainDisplay(task) {
20990
- task.ComputeMainDisplay();
20991
- return task.FormIsLegal() ? ReturnResult.SuccessfulResult : new ReturnResult(MsgInterface.BRKTAB_STR_ERR_FORM);
20976
+ return __awaiter(this, void 0, void 0, function* () {
20977
+ yield task.ComputeMainDisplay();
20978
+ return task.FormIsLegal() ? ReturnResult.SuccessfulResult : new ReturnResult(MsgInterface.BRKTAB_STR_ERR_FORM);
20979
+ });
20992
20980
  }
20993
20981
  }
20994
20982
 
@@ -21393,15 +21381,18 @@ class RemoteDataviewHeader extends DataviewHeaderBase {
21393
21381
  setAttribute(attribute, valueStr) {
21394
21382
  switch (attribute) {
21395
21383
  case ConstInterface.MG_ATTR_CACHED_TABLE:
21396
- if (TableCacheManager.Instance.TableExists(valueStr))
21397
- this._table = TableCacheManager.Instance.GetTableById(valueStr);
21398
- else {
21399
- this._table = new TableCache(valueStr);
21400
- TableCacheManager.Instance.InsertTable(this._table);
21384
+ if (valueStr != "") {
21385
+ if (TableCacheManager.Instance.TableExists(valueStr))
21386
+ this._table = TableCacheManager.Instance.GetTableById(valueStr);
21387
+ else {
21388
+ this._table = new TableCache(valueStr);
21389
+ TableCacheManager.Instance.InsertTable(this._table);
21390
+ }
21401
21391
  }
21402
21392
  break;
21403
21393
  case ConstInterface.MG_ATTR_IDENT:
21404
- this._table.SetTableIdent(valueStr);
21394
+ if (valueStr != "")
21395
+ this._table.SetTableIdent(valueStr);
21405
21396
  break;
21406
21397
  default:
21407
21398
  super.setAttribute(attribute, valueStr);
@@ -22515,9 +22506,17 @@ class RecomputeTable {
22515
22506
  this.fillData_1(task.DataView, task, parser);
22516
22507
  }
22517
22508
  else
22518
- throw new ApplicationException("in RecomputeTable.fillData() invalid task id: ");
22509
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
22519
22510
  }
22520
22511
  fillData_1(dataView, task, parser) {
22512
+ if (parser.getNextTag() == XMLConstants.MG_TAG_RECOMPUTE) {
22513
+ let currrentIndex = parser.getCurrIndex();
22514
+ let encoded = parser.ReadContentOfCurrentElement().trim();
22515
+ let decoded = Base64.decode(encoded.substr(0, encoded.length).trim());
22516
+ let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
22517
+ parser.setXMLdata(newXmlData);
22518
+ parser.setCurrIndex(currrentIndex);
22519
+ }
22521
22520
  while (this.initInnerObjects(parser, parser.getNextTag(), dataView, task)) {
22522
22521
  }
22523
22522
  }
@@ -22841,13 +22840,6 @@ class UserEventsTable {
22841
22840
  }
22842
22841
 
22843
22842
  class FormsTable {
22844
- constructor(task, parentForm) {
22845
- this._task = null;
22846
- this._parentForm = null;
22847
- this._formsStringXml = null;
22848
- this._task = task;
22849
- this._parentForm = parentForm;
22850
- }
22851
22843
  get Count() {
22852
22844
  return this._formsStringXml.length;
22853
22845
  }
@@ -22856,6 +22848,13 @@ class FormsTable {
22856
22848
  return this._formsStringXml.get_Item(formDisplayIndex - 1);
22857
22849
  return null;
22858
22850
  }
22851
+ constructor(task, parentForm) {
22852
+ this._task = null;
22853
+ this._parentForm = null;
22854
+ this._formsStringXml = null;
22855
+ this._task = task;
22856
+ this._parentForm = parentForm;
22857
+ }
22859
22858
  fillData() {
22860
22859
  return __awaiter(this, void 0, void 0, function* () {
22861
22860
  this._formsStringXml = new List();
@@ -23051,6 +23050,47 @@ var Task_Direction;
23051
23050
  Task_Direction[Task_Direction["FORE"] = 1] = "FORE";
23052
23051
  })(Task_Direction || (Task_Direction = {}));
23053
23052
  class Task extends TaskBase {
23053
+ get ParentTask() {
23054
+ return this._parentTask;
23055
+ }
23056
+ set TryingToCommit(value) {
23057
+ this._tryingToCommit = value;
23058
+ }
23059
+ get TryingToCommit() {
23060
+ return this._tryingToCommit;
23061
+ }
23062
+ get TaskService() {
23063
+ if (this._taskService == null)
23064
+ this._taskService = new RemoteTaskService();
23065
+ return this._taskService;
23066
+ }
23067
+ static get CommandsProcessor() {
23068
+ return CommandsProcessorManager.GetCommandsProcessor();
23069
+ }
23070
+ get LogicalStudioParentTask() {
23071
+ if (this.StudioParentTask === null && !super.isMainProg()) {
23072
+ return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
23073
+ }
23074
+ return this.StudioParentTask;
23075
+ }
23076
+ get KnownToServer() {
23077
+ return this._knownToServer;
23078
+ }
23079
+ set Transaction(value) {
23080
+ this.DataviewManager.CurrentDataviewManager.Transaction = value;
23081
+ }
23082
+ get Transaction() {
23083
+ return this.DataviewManager.CurrentDataviewManager.Transaction;
23084
+ }
23085
+ get TaskDefinitionId() {
23086
+ if (this.taskDefinitionId === null) {
23087
+ this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
23088
+ }
23089
+ return this.taskDefinitionId;
23090
+ }
23091
+ static get IsBlockingBatch() {
23092
+ return false;
23093
+ }
23054
23094
  constructor(parent) {
23055
23095
  super();
23056
23096
  this._dvCache = null;
@@ -23119,47 +23159,6 @@ class Task extends TaskBase {
23119
23159
  }
23120
23160
  this.constructor_1(parent);
23121
23161
  }
23122
- get ParentTask() {
23123
- return this._parentTask;
23124
- }
23125
- set TryingToCommit(value) {
23126
- this._tryingToCommit = value;
23127
- }
23128
- get TryingToCommit() {
23129
- return this._tryingToCommit;
23130
- }
23131
- get TaskService() {
23132
- if (this._taskService == null)
23133
- this._taskService = new RemoteTaskService();
23134
- return this._taskService;
23135
- }
23136
- static get CommandsProcessor() {
23137
- return CommandsProcessorManager.GetCommandsProcessor();
23138
- }
23139
- get LogicalStudioParentTask() {
23140
- if (this.StudioParentTask === null && !super.isMainProg()) {
23141
- return GuiDataCollection.MGDataTable.GetMainProgByCtlIdx(this.ContextID, this._ctlIdx);
23142
- }
23143
- return this.StudioParentTask;
23144
- }
23145
- get KnownToServer() {
23146
- return this._knownToServer;
23147
- }
23148
- set Transaction(value) {
23149
- this.DataviewManager.CurrentDataviewManager.Transaction = value;
23150
- }
23151
- get Transaction() {
23152
- return this.DataviewManager.CurrentDataviewManager.Transaction;
23153
- }
23154
- get TaskDefinitionId() {
23155
- if (this.taskDefinitionId === null) {
23156
- this.taskDefinitionId = new TaskDefinitionId(this._ctlIdx, this.ProgramIsn, this.TaskIsn, this._isPrg);
23157
- }
23158
- return this.taskDefinitionId;
23159
- }
23160
- static get IsBlockingBatch() {
23161
- return false;
23162
- }
23163
23162
  constructor_0() {
23164
23163
  this.ActionManager = new ActionManager();
23165
23164
  this.DataView = new DataView(this);
@@ -23282,10 +23281,12 @@ class Task extends TaskBase {
23282
23281
  this.setDescriptor(valueStr);
23283
23282
  break;
23284
23283
  case ConstInterface.MG_ATTR_HAS_LOCATE:
23285
- this.hasLocate = true;
23284
+ if (+valueStr == 1)
23285
+ this.hasLocate = true;
23286
23286
  break;
23287
23287
  case ConstInterface.MG_ATTR_AS_PARENT:
23288
- this.ModeAsParent = true;
23288
+ if (+valueStr == 1)
23289
+ this.ModeAsParent = true;
23289
23290
  break;
23290
23291
  case ConstInterface.MG_ATTR_TASK_UNIQUE_SORT:
23291
23292
  this.UniqueSort = valueStr[0];
@@ -23621,6 +23622,7 @@ class Task extends TaskBase {
23621
23622
  result = yield this.DataviewManager.Execute(dataViewCommand);
23622
23623
  if (!result.Success)
23623
23624
  return null;
23625
+ this.ResumeSubformLayout();
23624
23626
  }
23625
23627
  nonInteractiveTask = yield this.StartSubTasks(moveToFirstControl, nonInteractiveTask, callByDestSubForm);
23626
23628
  this.InStartProcess = false;
@@ -25314,16 +25316,18 @@ class Task extends TaskBase {
25314
25316
  }
25315
25317
  }
25316
25318
  ComputeMainDisplay() {
25317
- let propMainDisplay = this.getProp(PropInterface.PROP_TYPE_MAIN_DISPLAY);
25318
- let mainDisplayIndex = propMainDisplay.GetComputedValueInteger();
25319
- mainDisplayIndex = this.GetRealMainDisplayIndexOnCurrentTask(mainDisplayIndex);
25320
- this._forms.InitFormFromXmlString(mainDisplayIndex);
25321
- this.EnsureValidForm();
25319
+ return __awaiter(this, void 0, void 0, function* () {
25320
+ let propMainDisplay = this.getProp(PropInterface.PROP_TYPE_MAIN_DISPLAY);
25321
+ let mainDisplayIndex = yield propMainDisplay.getValueInt();
25322
+ mainDisplayIndex = this.GetRealMainDisplayIndexOnCurrentTask(mainDisplayIndex);
25323
+ this._forms.InitFormFromXmlString(mainDisplayIndex);
25324
+ this.EnsureValidForm();
25325
+ });
25322
25326
  }
25323
25327
  PrepareTaskForm() {
25324
25328
  return __awaiter(this, void 0, void 0, function* () {
25325
25329
  yield TaskServiceBase.PreparePropOpenTaskWindow(this);
25326
- return RemoteTaskService.PreparePropMainDisplay(this);
25330
+ return yield RemoteTaskService.PreparePropMainDisplay(this);
25327
25331
  });
25328
25332
  }
25329
25333
  FormIsLegal() {
@@ -25394,7 +25398,12 @@ class Task extends TaskBase {
25394
25398
  let tokensVector = XmlParser.getTokens(RuntimeContextBase.Instance.Parser.getXMLsubstring(endTaskUrlIdx), XMLConstants.XML_ATTR_DELIM);
25395
25399
  let taskCacheURL = tokensVector.get_Item(1);
25396
25400
  let refListStr = tokensVector.get_Item(3);
25397
- let taskContentOriginal = yield Task.CommandsProcessor.GetContent(taskCacheURL, true);
25401
+ let taskContentOriginal = "";
25402
+ if (taskCacheURL.trim() != "") {
25403
+ if (taskCacheURL.startsWith("./"))
25404
+ taskCacheURL = NString.Replace(taskCacheURL, './', './assets/cache/');
25405
+ taskContentOriginal = yield Task.CommandsProcessor.GetContent(taskCacheURL, true);
25406
+ }
25398
25407
  let taskContentFinal = new StringBuilder(xmlData.substr(0, RuntimeContextBase.Instance.Parser.getCurrIndex() - (ConstInterface.MG_TAG_TASKURL.length + 1)), taskContentOriginal.length);
25399
25408
  let reflist = this.getReflist(refListStr, ';', true, -1);
25400
25409
  let refListIdx = 0;
@@ -25647,6 +25656,9 @@ class CompMainPrgTable {
25647
25656
  }
25648
25657
 
25649
25658
  class MGData {
25659
+ get ForceModal() {
25660
+ return this.forceModal;
25661
+ }
25650
25662
  constructor(toClient, toServer, id, parent, isModal, forceModal) {
25651
25663
  this._expHandlers = null;
25652
25664
  this._id = 0;
@@ -25667,9 +25679,6 @@ class MGData {
25667
25679
  else
25668
25680
  this.constructor_1(id, parent, isModal, forceModal);
25669
25681
  }
25670
- get ForceModal() {
25671
- return this.forceModal;
25672
- }
25673
25682
  constructor_0(id, parent, isModal) {
25674
25683
  this._timerHandlers = new HandlersTable();
25675
25684
  this._expHandlers = new HandlersTable();
@@ -27684,7 +27693,7 @@ class EventsManager {
27684
27693
  val = Manager.GetCtrlVal(ctrl);
27685
27694
  task.CurrentEditingControl = null;
27686
27695
  if (!task.cancelWasRaised() &&
27687
- (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && ctrl._field.getType() === StorageAttribute.DATE || val !== null) && typeof val != 'undefined' &&
27696
+ (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && (ctrl._field.getType() === StorageAttribute.DATE || ctrl._field.getType() == StorageAttribute.NUMERIC) || val !== null) && typeof val != 'undefined' &&
27688
27697
  !(yield ctrl.validateAndSetValue(val, true)))) {
27689
27698
  this.setStopExecution(true);
27690
27699
  return false;
@@ -29811,13 +29820,6 @@ class VerifyCommand extends ClientTargetedCommandBase {
29811
29820
  }
29812
29821
 
29813
29822
  class EnhancedVerifyCommand extends VerifyCommand {
29814
- constructor() {
29815
- super();
29816
- this._buttonsID = '\0';
29817
- this._image = '\0';
29818
- this._returnValStr = null;
29819
- this._returnVal = null;
29820
- }
29821
29823
  ProcessMessageBoxResponse(task, returnValue) {
29822
29824
  return __awaiter(this, void 0, void 0, function* () {
29823
29825
  if (task !== null)
@@ -29850,6 +29852,13 @@ class EnhancedVerifyCommand extends VerifyCommand {
29850
29852
  break;
29851
29853
  }
29852
29854
  }
29855
+ constructor() {
29856
+ super();
29857
+ this._buttonsID = '\0';
29858
+ this._image = '\0';
29859
+ this._returnValStr = null;
29860
+ this._returnVal = null;
29861
+ }
29853
29862
  }
29854
29863
 
29855
29864
  class ResetRangeCommand extends ClientTargetedCommandBase {
@@ -29954,12 +29963,6 @@ class ResetLocateCommand extends ClientTargetedCommandBase {
29954
29963
  }
29955
29964
 
29956
29965
  class ResultCommand extends ClientTargetedCommandBase {
29957
- constructor() {
29958
- super();
29959
- this._isNull = false;
29960
- this._attr = StorageAttribute.NONE;
29961
- this._val = null;
29962
- }
29963
29966
  Execute(res) {
29964
29967
  return __awaiter(this, void 0, void 0, function* () {
29965
29968
  if (this._isNull)
@@ -29987,6 +29990,12 @@ class ResultCommand extends ClientTargetedCommandBase {
29987
29990
  break;
29988
29991
  }
29989
29992
  }
29993
+ constructor() {
29994
+ super();
29995
+ this._isNull = false;
29996
+ this._attr = StorageAttribute.NONE;
29997
+ this._val = null;
29998
+ }
29990
29999
  }
29991
30000
 
29992
30001
  class AddSortCommand extends ClientTargetedCommandBase {
@@ -30357,19 +30366,9 @@ class CommandsTable {
30357
30366
  }
30358
30367
  }
30359
30368
 
30360
- let CurrentClientVersion = '4.900.0-dev491.7';
30369
+ let CurrentClientVersion = '4.901.0-ang15-dev491.310';
30361
30370
 
30362
30371
  class ClientManager {
30363
- constructor() {
30364
- this._globalUniqueSessionId = null;
30365
- this._buttonIsClicked = false;
30366
- RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
30367
- LastFocusedManager.Instance.Init(MGDataCollection.Instance);
30368
- LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
30369
- RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
30370
- this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
30371
- this.RegisterDelegates();
30372
- }
30373
30372
  static get Instance() {
30374
30373
  if (ClientManager._instance === null)
30375
30374
  ClientManager._instance = new ClientManager();
@@ -30448,6 +30447,10 @@ class ClientManager {
30448
30447
  EventsManager.Instance.addGuiTriggeredEventWithTaskAndCodeAndLine(task, InternalInterface.MG_ACT_REC_PREFIX, dvRowIdx);
30449
30448
  }
30450
30449
  break;
30450
+ case "navigateInTable":
30451
+ if (guiEvent.ControlName === "magicRow")
30452
+ this.handleNavigateInRowEvent(task, guiEvent.Value);
30453
+ break;
30451
30454
  case "close":
30452
30455
  if (task.IsRoute())
30453
30456
  EventsManager.Instance.AddRouterClosedEvent(task);
@@ -30482,6 +30485,38 @@ class ClientManager {
30482
30485
  break;
30483
30486
  }
30484
30487
  }
30488
+ handleNavigateInRowEvent(task, evt) {
30489
+ let internalEvt = InternalInterface.MG_ACT_NONE;
30490
+ evt = evt.toLowerCase();
30491
+ switch (evt) {
30492
+ case "begin-page":
30493
+ internalEvt = InternalInterface.MG_ACT_TBL_BEGPAGE;
30494
+ break;
30495
+ case "previous-page":
30496
+ internalEvt = InternalInterface.MG_ACT_TBL_PRVPAGE;
30497
+ break;
30498
+ case "end-page":
30499
+ internalEvt = InternalInterface.MG_ACT_TBL_ENDPAGE;
30500
+ break;
30501
+ case "next-page":
30502
+ internalEvt = InternalInterface.MG_ACT_TBL_NXTPAGE;
30503
+ break;
30504
+ case "previous-line":
30505
+ internalEvt = InternalInterface.MG_ACT_TBL_PRVLINE;
30506
+ break;
30507
+ case "next-line":
30508
+ internalEvt = InternalInterface.MG_ACT_TBL_NXTLINE;
30509
+ break;
30510
+ case "begin-table":
30511
+ internalEvt = InternalInterface.MG_ACT_TBL_BEGTBL;
30512
+ break;
30513
+ case "end-table":
30514
+ internalEvt = InternalInterface.MG_ACT_TBL_ENDTBL;
30515
+ break;
30516
+ }
30517
+ if (internalEvt != InternalInterface.MG_ACT_NONE)
30518
+ EventsManager.Instance.addGuiTriggeredEventWithTaskAndCode(task, internalEvt);
30519
+ }
30485
30520
  ConfirmationClosed(res) {
30486
30521
  Commands.ResolvePromise(res);
30487
30522
  }
@@ -30535,6 +30570,16 @@ class ClientManager {
30535
30570
  Logger.Instance.WriteToLog("-----------------------------------------------------------------------------", true);
30536
30571
  }
30537
30572
  }
30573
+ constructor() {
30574
+ this._globalUniqueSessionId = null;
30575
+ this._buttonIsClicked = false;
30576
+ RuntimeContextBase.Instance.Init(RemoteCommandsProcessor.RC_NO_CONTEXT_ID);
30577
+ LastFocusedManager.Instance.Init(MGDataCollection.Instance);
30578
+ LastFocusedManager.Instance.LastActionTime = Misc.getSystemMilliseconds();
30579
+ RemoteCommandsProcessor.ShouldScrambleAndUnscrambleMessages = true;
30580
+ this._globalUniqueSessionId = UniqueIDUtils.GetUniqueMachineID() + "_";
30581
+ this.RegisterDelegates();
30582
+ }
30538
30583
  InitGuiManager() {
30539
30584
  Manager.EventsManager = EventsManager.Instance;
30540
30585
  Manager.DefaultServerName = ServerConfig.Instance.getServer();
@@ -30626,15 +30671,20 @@ class ClientManager {
30626
30671
  }
30627
30672
  return pic;
30628
30673
  }
30629
- static GetFormattedValue(taskId, controlName, value) {
30674
+ static GetFormattedValue(taskId, controlName, value, rowId) {
30630
30675
  let pic = null;
30631
30676
  let task = MGDataCollection.Instance.GetTaskByID(taskId);
30632
30677
  let control = null;
30633
30678
  let newValue = value;
30634
- if (controlName !== null)
30679
+ if (controlName !== null && task !== null)
30635
30680
  control = task.getForm().GetCtrl(controlName);
30636
30681
  if (control != null && control.DataType == StorageAttribute.NUMERIC) {
30637
- pic = control.getPIC();
30682
+ if (control.isRepeatable() && control.getProp(PropInterface.PROP_TYPE_FORMAT).isExpression()) {
30683
+ let picval = control.getProp(PropInterface.PROP_TYPE_FORMAT).getPrevValue(+rowId);
30684
+ pic = new PIC(picval, StorageAttribute.NUMERIC, control.getForm().getTask().getCompIdx());
30685
+ }
30686
+ else
30687
+ pic = control.getPIC();
30638
30688
  let dispValue = String(value);
30639
30689
  let newPic = pic.getUnformattedNumericPic();
30640
30690
  let num = DisplayConvertor.Instance.toNum(dispValue, newPic, 0);
@@ -30737,8 +30787,8 @@ class MagicBridge {
30737
30787
  static GetControlPictureMask(taskId, controlName) {
30738
30788
  return ClientManager.GetControlPictureMask(taskId, controlName);
30739
30789
  }
30740
- static GetFormattedValue(taskId, controlName, value) {
30741
- return ClientManager.GetFormattedValue(taskId, controlName, value);
30790
+ static GetFormattedValue(taskId, controlName, value, rowId) {
30791
+ return ClientManager.GetFormattedValue(taskId, controlName, value, rowId);
30742
30792
  }
30743
30793
  static GetRangedValue(taskId, controlName, value) {
30744
30794
  return ClientManager.GetRangedValue(taskId, controlName, value);