@magic-xpa/engine 4.1000.0-dev000.0 → 4.1000.0-dev4100.100

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.
@@ -475,6 +475,7 @@ ConstInterface.RC_TOKEN_DATA = "DATA=";
475
475
  ConstInterface.WEBCLIENT_REINITIALIZE_REQUEST = "WCREINITIALIZEREQUEST=Y";
476
476
  ConstInterface.MAIN_PROG_VIEW = "MainProgramsDataView";
477
477
  ConstInterface.GLOBAL_PARAM_LIST = "GlobalParamList";
478
+ ConstInterface.ENV_VAR_LIST = "EnvVarList";
478
479
  ConstInterface.LAST_EXCEPTION = "LastException";
479
480
  ConstInterface.CTX_REMOVED_FROM_SRVR = "CtxRemovedFromSrvr";
480
481
  ConstInterface.LAST_ROUTE_EVENT = "LastRouteEvent";
@@ -5123,10 +5124,12 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5123
5124
  async StoreSessionReInitializingDataOnLocalStorage() {
5124
5125
  let mainPrgViewStringForServer = await this.BuildXMLForMainProgramDataView();
5125
5126
  let globalParamsString = AccessHelper.globalParams.mirrorAllToXML();
5127
+ let changedEnvVarList = AccessHelper.envParamsTable.mirrorAllToXML();
5126
5128
  let dataStorage = window.localStorage;
5127
5129
  dataStorage.setItem(ConstInterface.IS_SESSION_REINITIALIZING, "true");
5128
5130
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5129
5131
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5132
+ dataStorage.setItem(ConstInterface.ENV_VAR_LIST, changedEnvVarList);
5130
5133
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5131
5134
  if (RuntimeContextBase.Instance.RemovedContextFromServer)
5132
5135
  dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
@@ -5353,6 +5356,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5353
5356
  let reqBuf;
5354
5357
  let isInitialCall = sessionStage === CommandsProcessorBase_SessionStage.INITIAL;
5355
5358
  let globalParamsString = null;
5359
+ let envVarsString = null;
5356
5360
  if (this.DelayCommandExecution)
5357
5361
  return;
5358
5362
  if (Logger.Instance.LogLevel == Logger_LogLevels.RequestInfo && !isInitialCall)
@@ -5378,12 +5382,16 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5378
5382
  let buffer = new StringBuilder();
5379
5383
  if (!RemoteCommandsProcessor.IsSessionReInitializing)
5380
5384
  buffer.Append(reqBuf);
5381
- if (RemoteCommandsProcessor.IsSessionReInitializing)
5385
+ if (RemoteCommandsProcessor.IsSessionReInitializing) {
5382
5386
  globalParamsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.GLOBAL_PARAM_LIST);
5383
- else
5387
+ envVarsString = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.ENV_VAR_LIST);
5388
+ }
5389
+ else {
5384
5390
  globalParamsString = AccessHelper.globalParams.mirrorToXML();
5391
+ envVarsString = AccessHelper.envParamsTable.mirrorToXML();
5392
+ }
5385
5393
  changes.Append(globalParamsString);
5386
- changes.Append(AccessHelper.envParamsTable.mirrorToXML());
5394
+ changes.Append(envVarsString);
5387
5395
  if (changes.Length > 0) {
5388
5396
  changes.Insert(0, "<" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
5389
5397
  changes.Append("</" + ConstInterface.MG_TAG_ENV_CHANGES + ">");
@@ -5422,13 +5430,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5422
5430
  dataStorage.removeItem(ConstInterface.IS_SESSION_REINITIALIZING);
5423
5431
  dataStorage.removeItem(ConstInterface.MAIN_PROG_VIEW);
5424
5432
  dataStorage.removeItem(ConstInterface.GLOBAL_PARAM_LIST);
5433
+ dataStorage.removeItem(ConstInterface.ENV_VAR_LIST);
5425
5434
  dataStorage.removeItem(ConstInterface.LAST_EXCEPTION);
5426
5435
  }
5427
5436
  }
5428
5437
  FlowMonitorQueue.Instance.enable(false);
5429
5438
  await this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5430
5439
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5431
- AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5440
+ AccessHelper.globalParams.RestoreParams(globalParamsString);
5441
+ AccessHelper.envParamsTable.RestoreParams(envVarsString);
5432
5442
  let dataStorage = window.localStorage;
5433
5443
  let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5434
5444
  if (ctxRemoved === "1") {
@@ -6722,7 +6732,7 @@ ExpressionDict.expDesc = [
6722
6732
  null,
6723
6733
  new ExpDesc('N', 0, 0, 0, "", false),
6724
6734
  null,
6725
- new ExpDesc('B', 0, 2, 2, "BN", false),
6735
+ null,
6726
6736
  new ExpDesc('B', 0, 2, 2, "V ", false),
6727
6737
  null,
6728
6738
  null,
@@ -7171,12 +7181,12 @@ ExpressionDict.expDesc = [
7171
7181
  null,
7172
7182
  new ExpDesc('A', 0, 1, 1, "A", false),
7173
7183
  new ExpDesc('N', 0, 2, 2, "AA", false),
7174
- new ExpDesc('B', 0, -2, -2, "V ", false),
7175
- new ExpDesc('B', 0, 1, 1, "N", false),
7176
- new ExpDesc('B', 0, -2, -2, "V ", false),
7177
- new ExpDesc('B', 0, 1, 1, "N", false),
7178
- new ExpDesc('B', 0, 2, 2, "VB", false),
7179
- new ExpDesc('B', 0, 1, 1, "N", false),
7184
+ null,
7185
+ null,
7186
+ null,
7187
+ null,
7188
+ null,
7189
+ null,
7180
7190
  new ExpDesc('N', 0, 1, 1, "N", false),
7181
7191
  null,
7182
7192
  null,
@@ -7263,48 +7273,6 @@ ExpressionDict.expDesc = [
7263
7273
  new ExpDesc('U', 0, 0, 0, '', false),
7264
7274
  ];
7265
7275
 
7266
- var DataViewCommandType;
7267
- (function (DataViewCommandType) {
7268
- DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7269
- DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7270
- DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7271
- DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7272
- DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7273
- DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7274
- DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7275
- DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7276
- DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7277
- DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7278
- DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7279
- DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7280
- DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7281
- DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7282
- DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7283
- DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7284
- DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7285
- DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7286
- DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7287
- DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7288
- DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7289
- })(DataViewCommandType || (DataViewCommandType = {}));
7290
- class DataviewCommand extends ClientOriginatedCommandTaskTag {
7291
- constructor() {
7292
- super();
7293
- this.CommandType = 0;
7294
- this.TaskTag = null;
7295
- }
7296
- get CommandTypeAttribute() {
7297
- throw new NotImplementedException();
7298
- }
7299
- SerializeCommandData() {
7300
- Debug.Assert(false, "Dataview commands need not be serialized");
7301
- return null;
7302
- }
7303
- get ShouldSerialize() {
7304
- return false;
7305
- }
7306
- }
7307
-
7308
7276
  class EventHandlerPosition {
7309
7277
  constructor() {
7310
7278
  this._handlerIdx = 0;
@@ -7501,6 +7469,48 @@ EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
7501
7469
  EventHandlerPosition.PHASE_GLOBAL = 3;
7502
7470
  EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
7503
7471
 
7472
+ var DataViewCommandType;
7473
+ (function (DataViewCommandType) {
7474
+ DataViewCommandType[DataViewCommandType["Init"] = 0] = "Init";
7475
+ DataViewCommandType[DataViewCommandType["Clear"] = 1] = "Clear";
7476
+ DataViewCommandType[DataViewCommandType["Prepare"] = 2] = "Prepare";
7477
+ DataViewCommandType[DataViewCommandType["FirstChunk"] = 3] = "FirstChunk";
7478
+ DataViewCommandType[DataViewCommandType["RecomputeUnit"] = 4] = "RecomputeUnit";
7479
+ DataViewCommandType[DataViewCommandType["ExecuteLocalUpdates"] = 5] = "ExecuteLocalUpdates";
7480
+ DataViewCommandType[DataViewCommandType["InitDataControlViews"] = 6] = "InitDataControlViews";
7481
+ DataViewCommandType[DataViewCommandType["OpenTransaction"] = 7] = "OpenTransaction";
7482
+ DataViewCommandType[DataViewCommandType["CloseTransaction"] = 8] = "CloseTransaction";
7483
+ DataViewCommandType[DataViewCommandType["SetTransactionState"] = 9] = "SetTransactionState";
7484
+ DataViewCommandType[DataViewCommandType["AddUserRange"] = 10] = "AddUserRange";
7485
+ DataViewCommandType[DataViewCommandType["ResetUserRange"] = 11] = "ResetUserRange";
7486
+ DataViewCommandType[DataViewCommandType["DbDisconnect"] = 12] = "DbDisconnect";
7487
+ DataViewCommandType[DataViewCommandType["AddUserLocate"] = 13] = "AddUserLocate";
7488
+ DataViewCommandType[DataViewCommandType["ResetUserLocate"] = 14] = "ResetUserLocate";
7489
+ DataViewCommandType[DataViewCommandType["AddUserSort"] = 15] = "AddUserSort";
7490
+ DataViewCommandType[DataViewCommandType["ResetUserSort"] = 16] = "ResetUserSort";
7491
+ DataViewCommandType[DataViewCommandType["DataViewToDataSource"] = 17] = "DataViewToDataSource";
7492
+ DataViewCommandType[DataViewCommandType["DbDelete"] = 18] = "DbDelete";
7493
+ DataViewCommandType[DataViewCommandType["ControlItemsRefresh"] = 19] = "ControlItemsRefresh";
7494
+ DataViewCommandType[DataViewCommandType["SQLExecute"] = 20] = "SQLExecute";
7495
+ })(DataViewCommandType || (DataViewCommandType = {}));
7496
+ class DataviewCommand extends ClientOriginatedCommandTaskTag {
7497
+ constructor() {
7498
+ super();
7499
+ this.CommandType = 0;
7500
+ this.TaskTag = null;
7501
+ }
7502
+ get CommandTypeAttribute() {
7503
+ throw new NotImplementedException();
7504
+ }
7505
+ SerializeCommandData() {
7506
+ Debug.Assert(false, "Dataview commands need not be serialized");
7507
+ return null;
7508
+ }
7509
+ get ShouldSerialize() {
7510
+ return false;
7511
+ }
7512
+ }
7513
+
7504
7514
  class AddUserRangeDataviewCommand extends DataviewCommand {
7505
7515
  constructor() {
7506
7516
  super();
@@ -8136,13 +8146,6 @@ class CommandFactory {
8136
8146
  }
8137
8147
  }
8138
8148
 
8139
- class Sort {
8140
- constructor() {
8141
- this.fldIdx = 0;
8142
- this.dir = false;
8143
- }
8144
- }
8145
-
8146
8149
  var ParamParseResult;
8147
8150
  (function (ParamParseResult) {
8148
8151
  ParamParseResult[ParamParseResult["OK"] = 0] = "OK";
@@ -8248,7 +8251,7 @@ class MirrorPrmMap extends PrmMap {
8248
8251
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8249
8252
  }
8250
8253
  }
8251
- RestoreGlobalParams(xml) {
8254
+ RestoreParams(xml) {
8252
8255
  let parser = new XmlParser(xml);
8253
8256
  while (this.mirrorFromXML(parser.getNextTag(), parser)) {
8254
8257
  }
@@ -9690,8 +9693,7 @@ class MirrorString {
9690
9693
  this._reserved = false;
9691
9694
  }
9692
9695
  mirrorToXML() {
9693
- return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\" " +
9694
- ConstInterface.MG_ATTR_ENV_WRITEINI + "=F";
9696
+ return ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + XmlParser.escape(this._value) + "\"";
9695
9697
  }
9696
9698
  init(name, xmlParser) {
9697
9699
  let valueStart, valueEnd, reserveStart, paramEnd;
@@ -11257,11 +11259,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11257
11259
  val1 = valStack.pop();
11258
11260
  this.eval_op_eoy(resVal, val1);
11259
11261
  break;
11260
- case ExpressionInterface.EXP_OP_ROLLBACK:
11261
- val2 = valStack.pop();
11262
- val1 = valStack.pop();
11263
- await this.eval_op_rollback(resVal);
11264
- break;
11265
11262
  case ExpressionInterface.EXP_OP_VARSET:
11266
11263
  val2 = valStack.pop();
11267
11264
  val1 = valStack.pop();
@@ -11626,41 +11623,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
11626
11623
  val1 = valStack.pop();
11627
11624
  this.eval_op_taskType(resVal, val1);
11628
11625
  break;
11629
- case ExpressionInterface.EXP_OP_RANGE_ADD:
11630
- nArgs = valStack.pop();
11631
- if (nArgs > 0) {
11632
- Exp_params = new Array(nArgs);
11633
- for (j = 0; j < nArgs; j++)
11634
- Exp_params[nArgs - 1 - j] = valStack.pop();
11635
- await this.eval_op_range_add(resVal, Exp_params);
11636
- }
11637
- break;
11638
- case ExpressionInterface.EXP_OP_RANGE_RESET:
11639
- val1 = valStack.pop();
11640
- await this.eval_op_range_reset(resVal, val1);
11641
- break;
11642
- case ExpressionInterface.EXP_OP_LOCATE_ADD:
11643
- nArgs = valStack.pop();
11644
- if (nArgs > 0) {
11645
- Exp_params = new Array(nArgs);
11646
- for (j = 0; j < nArgs; j++)
11647
- Exp_params[nArgs - 1 - j] = valStack.pop();
11648
- await this.eval_op_locate_add(resVal, Exp_params);
11649
- }
11650
- break;
11651
- case ExpressionInterface.EXP_OP_LOCATE_RESET:
11652
- val1 = valStack.pop();
11653
- await this.eval_op_locate_reset(resVal, val1);
11654
- break;
11655
- case ExpressionInterface.EXP_OP_SORT_ADD:
11656
- val2 = valStack.pop();
11657
- val1 = valStack.pop();
11658
- await this.eval_op_sort_add(resVal, val1, val2);
11659
- break;
11660
- case ExpressionInterface.EXP_OP_SORT_RESET:
11661
- val1 = valStack.pop();
11662
- await this.eval_op_sort_reset(resVal, val1);
11663
- break;
11664
11626
  case ExpressionInterface.EXP_OP_TSK_INSTANCE:
11665
11627
  val1 = valStack.pop();
11666
11628
  this.eval_op_tsk_instance(resVal, val1);
@@ -13299,12 +13261,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13299
13261
  await fld.setValueAndStartRecompute(bufptr, val.IsNull, true, setRecordUpdated, false);
13300
13262
  await fld.updateDisplay();
13301
13263
  }
13302
- async eval_op_rollback(resVal) {
13303
- let task = this.ExpTask.GetContextTask() || this.ExpTask;
13304
- await AccessHelper.eventsManager.handleInternalEventWithTask(task, InternalInterface.MG_ACT_ROLLBACK);
13305
- resVal.Attr = StorageAttribute.BOOLEAN;
13306
- resVal.BoolVal = true;
13307
- }
13308
13264
  eval_op_like(source, maskOrg, resVal) {
13309
13265
  let i;
13310
13266
  let j;
@@ -13861,54 +13817,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13861
13817
  resultStr.Replace('\\@', '@');
13862
13818
  resVal.StrVal = resultStr.ToString();
13863
13819
  }
13864
- async eval_op_range_add(resVal, Exp_params) {
13865
- resVal.Attr = StorageAttribute.BOOLEAN;
13866
- resVal.BoolVal = await this.add_rt_ranges(Exp_params, false);
13867
- }
13868
- async eval_op_range_reset(resVal, parent) {
13869
- resVal.Attr = StorageAttribute.BOOLEAN;
13870
- let iParent = parent.MgNumVal.NUM_2_LONG();
13871
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13872
- let task = super.GetContextTask(iParent);
13873
- if (task !== null) {
13874
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserRange);
13875
- await task.DataviewManager.Execute(command);
13876
- resVal.BoolVal = true;
13877
- }
13878
- }
13879
- }
13880
- async eval_op_locate_add(resVal, Exp_params) {
13881
- resVal.Attr = StorageAttribute.BOOLEAN;
13882
- resVal.BoolVal = await this.add_rt_ranges(Exp_params, true);
13883
- }
13884
- async eval_op_locate_reset(resVal, parent) {
13885
- resVal.Attr = StorageAttribute.BOOLEAN;
13886
- let iParent = parent.MgNumVal.NUM_2_LONG();
13887
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13888
- let task = super.GetContextTask(iParent);
13889
- if (task !== null) {
13890
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserLocate);
13891
- await task.DataviewManager.Execute(command);
13892
- resVal.BoolVal = true;
13893
- }
13894
- }
13895
- }
13896
- async eval_op_sort_add(resVal, varnum, dir) {
13897
- resVal.Attr = StorageAttribute.BOOLEAN;
13898
- resVal.BoolVal = await this.add_sort(varnum, dir);
13899
- }
13900
- async eval_op_sort_reset(resVal, parent) {
13901
- resVal.Attr = StorageAttribute.BOOLEAN;
13902
- let iParent = parent.MgNumVal.NUM_2_LONG();
13903
- if ((iParent >= 0 && iParent < (this.ExpTask.getTaskDepth(false))) || iParent === ExpressionEvaluator.TRIGGER_TASK) {
13904
- let task = super.GetContextTask(iParent);
13905
- if (task !== null) {
13906
- let command = CommandFactory.CreateDataViewCommand(task.getTaskTag(), DataViewCommandType.ResetUserSort);
13907
- await task.DataviewManager.Execute(command);
13908
- resVal.BoolVal = true;
13909
- }
13910
- }
13911
- }
13912
13820
  eval_op_tsk_instance(resVal, Parent) {
13913
13821
  let tag = 0;
13914
13822
  let iParent = Parent.MgNumVal.NUM_2_LONG();
@@ -13922,84 +13830,6 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
13922
13830
  resVal.MgNumVal = new NUM_TYPE();
13923
13831
  resVal.MgNumVal.NUM_4_LONG(tag);
13924
13832
  }
13925
- async add_sort(varnum, dir) {
13926
- if (varnum.MgNumVal === null)
13927
- return false;
13928
- let itm = varnum.MgNumVal.NUM_2_LONG();
13929
- if (itm === 0)
13930
- return false;
13931
- let fld = this.GetFieldOfContextTask(itm);
13932
- if (fld === null)
13933
- return false;
13934
- let task = fld.getTask();
13935
- let vee_idx = fld.getId() + 1;
13936
- let expr_64 = new Sort();
13937
- expr_64.fldIdx = vee_idx;
13938
- expr_64.dir = dir.BoolVal;
13939
- let sort = expr_64;
13940
- let command = CommandFactory.CreateAddUserSortDataviewCommand(task.getTaskTag(), sort);
13941
- await task.DataviewManager.Execute(command);
13942
- return true;
13943
- }
13944
- async add_rt_ranges(Exp_params, locate) {
13945
- let varnum = Exp_params[0];
13946
- let min = Exp_params[1];
13947
- if (varnum.MgNumVal === null)
13948
- return false;
13949
- let itm = varnum.MgNumVal.NUM_2_LONG();
13950
- if (itm === 0)
13951
- return false;
13952
- let fld = this.GetFieldOfContextTask(itm);
13953
- if (fld === null)
13954
- return false;
13955
- let task = fld.getTask();
13956
- let vee_idx = fld.getId() + 1;
13957
- let expr_78 = new UserRange();
13958
- expr_78.veeIdx = vee_idx;
13959
- let rng = expr_78;
13960
- if (min.IsNull)
13961
- rng.nullMin = true;
13962
- if (!rng.nullMin && (min.Attr === StorageAttribute.ALPHA || min.Attr === StorageAttribute.UNICODE) && min.StrVal.length === 0)
13963
- rng.discardMin = true;
13964
- else {
13965
- if (!rng.nullMin) {
13966
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), min.Attr))
13967
- return false;
13968
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), min.Attr))
13969
- this.ConvertExpVal(min, fld.getType());
13970
- rng.min = min.ToMgVal();
13971
- }
13972
- }
13973
- if (Exp_params.length === 3) {
13974
- let max = Exp_params[2];
13975
- if (max.IsNull)
13976
- rng.nullMax = true;
13977
- if (!rng.nullMax && (max.Attr === StorageAttribute.ALPHA || max.Attr === StorageAttribute.UNICODE) && max.StrVal.length === 0)
13978
- rng.discardMax = true;
13979
- else {
13980
- if (!rng.nullMax) {
13981
- if (!StorageAttributeCheck.isTheSameType(fld.getType(), max.Attr))
13982
- return false;
13983
- if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(fld.getType(), max.Attr))
13984
- this.ConvertExpVal(max, fld.getType());
13985
- rng.max = max.ToMgVal();
13986
- }
13987
- }
13988
- }
13989
- else
13990
- rng.discardMax = true;
13991
- if (!rng.discardMin || !rng.discardMax) {
13992
- if (locate) {
13993
- let command = CommandFactory.CreateAddUserLocateDataviewCommand(task.getTaskTag(), rng);
13994
- await task.DataviewManager.Execute(command);
13995
- }
13996
- else {
13997
- let command2 = CommandFactory.CreateAddUserRangeDataviewCommand(task.getTaskTag(), rng);
13998
- await task.DataviewManager.Execute(command2);
13999
- }
14000
- }
14001
- return true;
14002
- }
14003
13833
  eval_op_getParam(resVal, name) {
14004
13834
  Debug.Assert(!name.IsNull && name.StrVal !== null);
14005
13835
  let expVal = GlobalParams.Instance.get(name.StrVal);
@@ -19182,6 +19012,13 @@ class DataviewManager extends DataviewManagerBase {
19182
19012
  }
19183
19013
  }
19184
19014
 
19015
+ class Sort {
19016
+ constructor() {
19017
+ this.fldIdx = 0;
19018
+ this.dir = false;
19019
+ }
19020
+ }
19021
+
19185
19022
  class SortCollection {
19186
19023
  constructor() {
19187
19024
  this._sortTab = null;
@@ -19410,11 +19247,7 @@ class MgForm extends MgFormBase {
19410
19247
  this.GetDataview().setTopRecIdxModified(true);
19411
19248
  try {
19412
19249
  this._suffixDone = false;
19413
- let newDisplayLine = this.GetDataview().getCurrRecIdx() + size;
19414
- if (unit === Constants.MOVE_UNIT_PAGE && this.isLineMode())
19415
- if (newDisplayLine > this.GetDataview().getSize() - 1)
19416
- visibleLine -= newDisplayLine - (this.GetDataview().getSize() - 1);
19417
- await this.setCurrRowByDisplayLine(newDisplayLine, true, false);
19250
+ await this.setCurrRowByDisplayLine(this.GetDataview().getCurrRecIdx() + size, true, false);
19418
19251
  this.GetDataview().setTopRecIdxModified(false);
19419
19252
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19420
19253
  }
@@ -19454,6 +19287,7 @@ class MgForm extends MgFormBase {
19454
19287
  try {
19455
19288
  await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
19456
19289
  await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
19290
+ visibleLine = this.getLastValidRow();
19457
19291
  }
19458
19292
  catch (Exception) {
19459
19293
  }
@@ -29582,7 +29416,7 @@ class CommandsTable {
29582
29416
  }
29583
29417
  }
29584
29418
 
29585
- let CurrentClientVersion = '4.1000.0-dev000.0';
29419
+ let CurrentClientVersion = '4.1000.0-dev4100.100';
29586
29420
 
29587
29421
  class ClientManager {
29588
29422
  constructor() {