@magic-xpa/engine 4.800.0-dev480.93 → 4.800.0

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 (48) hide show
  1. package/bundles/magic-xpa-engine.umd.js +1329 -1138
  2. package/bundles/magic-xpa-engine.umd.js.map +1 -1
  3. package/bundles/magic-xpa-engine.umd.min.js +2 -2
  4. package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
  5. package/esm2015/index.js +2 -1
  6. package/esm2015/src/ClientManager.js +2 -2
  7. package/esm2015/src/ConstInterface.js +7 -3
  8. package/esm2015/src/CurrentClientVersion.js +2 -2
  9. package/esm2015/src/commands/ClientToServer/CommandFactory.js +15 -1
  10. package/esm2015/src/commands/ClientToServer/ExecOperCommand.js +4 -1
  11. package/esm2015/src/commands/ClientToServer/SelectProgramCommand.js +15 -0
  12. package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +1 -7
  13. package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +2 -2
  14. package/esm2015/src/env/Environment.js +11 -1
  15. package/esm2015/src/event/ActionManager.js +3 -2
  16. package/esm2015/src/event/EventHandler.js +10 -4
  17. package/esm2015/src/event/EventsManager.js +120 -20
  18. package/esm2015/src/event/IEventsManager.js +1 -1
  19. package/esm2015/src/exp/ExpressionDict.js +3 -1
  20. package/esm2015/src/exp/ExpressionEvaluator.js +33 -22
  21. package/esm2015/src/gui/MgForm.js +16 -24
  22. package/esm2015/src/remote/RemoteCommandsProcessor.js +48 -21
  23. package/esm2015/src/rt/Operation.js +7 -30
  24. package/esm2015/src/tasks/MGData.js +11 -1
  25. package/esm2015/src/tasks/MGDataCollection.js +12 -2
  26. package/esm2015/src/tasks/Task.js +46 -46
  27. package/esm2015/src/util/PrmMap.js +11 -1
  28. package/esm2015/src/util/cookie.service.js +10 -6
  29. package/fesm2015/magic-xpa-engine.js +358 -175
  30. package/fesm2015/magic-xpa-engine.js.map +1 -1
  31. package/index.d.ts +1 -0
  32. package/package.json +4 -4
  33. package/src/ConstInterface.d.ts +6 -2
  34. package/src/commands/ClientToServer/CommandFactory.d.ts +1 -0
  35. package/src/commands/ClientToServer/ExecOperCommand.d.ts +2 -1
  36. package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -0
  37. package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +0 -1
  38. package/src/env/Environment.d.ts +3 -0
  39. package/src/event/EventsManager.d.ts +11 -1
  40. package/src/event/IEventsManager.d.ts +1 -0
  41. package/src/exp/ExpressionEvaluator.d.ts +1 -0
  42. package/src/gui/MgForm.d.ts +1 -1
  43. package/src/rt/Operation.d.ts +0 -3
  44. package/src/tasks/MGData.d.ts +2 -0
  45. package/src/tasks/MGDataCollection.d.ts +1 -0
  46. package/src/tasks/Task.d.ts +0 -1
  47. package/src/util/PrmMap.d.ts +1 -0
  48. package/src/util/cookie.service.d.ts +2 -2
@@ -1,7 +1,7 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { StringBuilder, Int32, NString, ApplicationException, NNumber, List, Debug, Char, RefParam, NumberStyles, Exception, HashUtils, DateTime, Dictionary, Stack, NChar, WebException, Thread, Encoding, Hashtable, NotImplementedException, Array_Enumerator, ISO_8859_1_Encoding, Int64 } from '@magic-xpa/mscorelib';
3
3
  import { XMLConstants, StorageAttribute, ViewRefreshMode, InternalInterface, Logger, StorageAttributeCheck, StrUtil, SubformType, TableBehaviour, MgControlType, ScrollBarThumbType, ForceExit, XmlParser, Misc, Base64, Priority, SyncExecutionHelper, Queue, Constants, DateTimeUtils, Logger_LogLevels, Logger_MessageDirection, MsgInterface, RequestInfo, OSEnvironment, JSON_Utils, UtilDateJpn, UtilStrByteMode, CallOsShow, PICInterface, WindowType, BrkScope, RaiseAt, CtrlButtonTypeGui } from '@magic-xpa/utils';
4
- import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, ControlTable, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, PIC, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, VectorType, GuiExpressionEvaluator, ExpressionInterface, DataModificationTypes, DateBreakParams, TimeBreakParams, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
4
+ import { RecordUtils, GuiFieldBase, ExpVal, BlobType, FieldDef, GuiTaskBase, ControlTable, MgControlBase, PropInterface, GuiDataCollection, CommandType, Commands, HtmlProperties, Modifiers, KeyboardItem, TaskDefinitionIdTableSaxHandler, DisplayConvertor, PIC, MgTimer, GuiConstants, RuntimeContextBase, UsernamePasswordCredentials, Styles, Manager, NUM_TYPE, VectorType, GuiExpressionEvaluator, ExpressionInterface, DataModificationTypes, GuiDataViewBase, ObjectReferencesCollection, EMPTY_DCREF, ObjectReferenceBase, PropTable, FieldsTable as FieldsTable$1, DcValuesBuilderBase, MgFormBase, GuiEnvironment, TaskDefinitionId, Events, Helps, FocusManager, EventsProcessor, UIBridge } from '@magic-xpa/gui';
5
5
  import { isNullOrUndefined, isUndefined } from 'util';
6
6
  import { HttpHeaders, HttpErrorResponse } from '@angular/common/http';
7
7
  import { timer, Subject } from 'rxjs';
@@ -166,8 +166,6 @@ ConstInterface.MG_ATTR_TITLE = "title";
166
166
  ConstInterface.MG_ATTR_TITLE_EXP = "titleExp";
167
167
  ConstInterface.MG_ATTR_IMAGE = "image";
168
168
  ConstInterface.MG_ATTR_BUTTONS = "buttons";
169
- ConstInterface.MG_ATTR_DEFAULT_BUTTON = "defaultButton";
170
- ConstInterface.MG_ATTR_DEFAULT_BUTTON_EXP = "defaultButtonExp";
171
169
  ConstInterface.MG_ATTR_RETURN_VAL = "returnVal";
172
170
  ConstInterface.MG_ATTR_ERR_LOG_APPEND = "errorLogAppend";
173
171
  ConstInterface.MG_ATTR_EVENTVALUE = "eventvalue";
@@ -277,6 +275,7 @@ ConstInterface.MG_ATTR_DEFAULT_COLOR = "defaultColor";
277
275
  ConstInterface.MG_ATTR_DEFAULT_FOCUS_COLOR = "defaultFocusColor";
278
276
  ConstInterface.MG_ATTR_DEFAULT_DISABLED_COLOR = "defaultDisabledColor";
279
277
  ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_TIMEOUT = "ContextInactivityTimeout";
278
+ ConstInterface.MG_ATTR_CLIENT_CONTEXT_INACTIVITY_TIMEOUT = "ClientContextInactivityTimeout";
280
279
  ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_TIMEOUT_LOWER = "contextinactivitytimeout";
281
280
  ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_WARNING_TIME = "ContextInactivityWarningTime";
282
281
  ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_WARNING_TIME_LOWER = "contextinactivitywarningtime";
@@ -626,6 +625,10 @@ ConstInterface.WEBCLIENT_REINITIALIZE_REQUEST = "WCREINITIALIZEREQUEST=Y";
626
625
  ConstInterface.MAIN_PROG_VIEW = "MainProgramsDataView";
627
626
  ConstInterface.GLOBAL_PARAM_LIST = "GlobalParamList";
628
627
  ConstInterface.LAST_EXCEPTION = "LastException";
628
+ ConstInterface.CTX_REMOVED_FROM_SRVR = "CtxRemovedFromSrvr";
629
+ ConstInterface.LAST_ROUTE_EVENT = "LastRouteEvent";
630
+ ConstInterface.LAST_ROUTE_EVENT_ARG_LIST = "LastRouteEventArgList";
631
+ ConstInterface.LAST_ROUTE_EVENT_SRC_TSK = "LastRouteEventSourceTask";
629
632
  ConstInterface.IS_SESSION_REINITIALIZING = "IsSessionReInitializing";
630
633
  ConstInterface.RC_AUTHENTICATION_REQUEST = "RCAUTHENTICATIONREQUEST=Y";
631
634
  ConstInterface.V24_RIA_ERROR_PREFIX = "<RIA_ERROR_RESPONSE>";
@@ -755,7 +758,8 @@ ConstInterface.MG_ATTR_VAL_SERVER_TRANS_CACHE_EMPTY = "serverTransCacheEmpty";
755
758
  ConstInterface.MG_ATTR_SPECIAL_ANSI_BLOB_CHECK_NULL = "SpecialAnsiBlobCheckNull";
756
759
  ConstInterface.MG_ATTR_SPECIAL_TABLE_REDUCE_TITLE_HEIGHT = "SpecialTableReduceTitleHeight";
757
760
  ConstInterface.MG_ATTR_SPECIAL_DOTNET_ALLOW_ZERO_DATE = "SpecialDotNetAllowZeroDate";
758
- ConstInterface.MG_ATTR_SPECIAL_REUSE_TABLE_EDITOR = "SpecialReuseTableEditor";
761
+ ConstInterface.MG_ATTR_SPECIAL_REUSE_TABLE_EDITOR = "SpecialReuseTableEditor";
762
+ ConstInterface.MG_TAG_LAST_ROUTE = "LastRoute";
759
763
 
760
764
  class ClientOriginatedCommand {
761
765
  get ShouldSerialize() {
@@ -4546,6 +4550,9 @@ class ExecOperCommand extends ClientOriginatedCommandTaskTag {
4546
4550
  ' in ' + '[' + this.Operation.getEventHandler().getEventHandlerInfo() + ']' +
4547
4551
  ' on ' + '[' + this.Operation.Task.getTaskInfo() + ']';
4548
4552
  }
4553
+ getTask() {
4554
+ return this.Operation.Task;
4555
+ }
4549
4556
  }
4550
4557
 
4551
4558
  class Scrambler {
@@ -5309,6 +5316,7 @@ class MGDataCollection {
5309
5316
  this._iteratorTaskIdx = 0;
5310
5317
  this.currMgdID = 0;
5311
5318
  this.StartupMgData = null;
5319
+ this._lastRouteSentToServer = "";
5312
5320
  }
5313
5321
  GetTaskByID(id) {
5314
5322
  let task = null;
@@ -5425,6 +5433,13 @@ class MGDataCollection {
5425
5433
  }
5426
5434
  buildXML(message, serializeTasks) {
5427
5435
  return __awaiter(this, void 0, void 0, function* () {
5436
+ let lastRoute = Commands.getLastRoute();
5437
+ if (lastRoute !== this._lastRouteSentToServer) {
5438
+ message.Append(XMLConstants.START_TAG + ConstInterface.MG_TAG_LAST_ROUTE);
5439
+ message.Append(" " + ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + lastRoute + "\"");
5440
+ message.Append(XMLConstants.TAG_TERM);
5441
+ this._lastRouteSentToServer = lastRoute;
5442
+ }
5428
5443
  for (let i = 0; i < this.getSize(); i = i + 1) {
5429
5444
  let mgd = this.getMGData(i);
5430
5445
  if (mgd !== null && !mgd.IsAborting) {
@@ -5601,7 +5616,9 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5601
5616
  return __awaiter(this, void 0, void 0, function* () {
5602
5617
  RemoteCommandsProcessor.IsSessionReInitializing = true;
5603
5618
  yield this.StoreSessionReInitializingDataOnLocalStorage();
5604
- let navigateRootRoute = Environment.Instance.getSpecialRouteToRootProgOnContextRecreation() ? true : false;
5619
+ let navigateRootRoute = false;
5620
+ if (!RuntimeContextBase.Instance.RemovedContextFromServer)
5621
+ navigateRootRoute = Environment.Instance.getSpecialRouteToRootProgOnContextRecreation() ? true : false;
5605
5622
  Commands.addRefreshPage(navigateRootRoute, RemoteCommandsProcessor.InitialUrl);
5606
5623
  throw new Exception('');
5607
5624
  });
@@ -5615,6 +5632,9 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5615
5632
  dataStorage.setItem(ConstInterface.MAIN_PROG_VIEW, mainPrgViewStringForServer.toString());
5616
5633
  dataStorage.setItem(ConstInterface.GLOBAL_PARAM_LIST, globalParamsString);
5617
5634
  dataStorage.setItem(ConstInterface.LAST_EXCEPTION, RemoteCommandsProcessor.lastExceptionMessage);
5635
+ if (RuntimeContextBase.Instance.RemovedContextFromServer)
5636
+ dataStorage.setItem(ConstInterface.CTX_REMOVED_FROM_SRVR, "1");
5637
+ EventsManager.Instance.storeLastSavedRouteEventOnLocalStorage();
5618
5638
  });
5619
5639
  }
5620
5640
  RestoreSessionReInitializingDataFromLocalStorage(key) {
@@ -5797,7 +5817,7 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5797
5817
  if (cmdsToServer.getCmd(i) instanceof ExecOperCommand) {
5798
5818
  let operCmd = currMGData.CmdsToServer.getCmd(i);
5799
5819
  this._requestInfo.serverCallAt = operCmd.getCommandInfo();
5800
- this._requestInfo.runtimeTaskTree = this.GetTaskTree(operCmd.Operation.Task);
5820
+ this._requestInfo.runtimeTaskTree = this.GetTaskTree(operCmd.getTask());
5801
5821
  operExecution = true;
5802
5822
  break;
5803
5823
  }
@@ -5859,8 +5879,11 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5859
5879
  if (val === 'true') {
5860
5880
  RemoteCommandsProcessor.IsSessionReInitializing = (val === "true") ? true : false;
5861
5881
  RemoteCommandsProcessor.lastExceptionMessage = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.LAST_EXCEPTION);
5862
- Logger.Instance.WriteErrorToLog(RemoteCommandsProcessor.lastExceptionMessage);
5863
- Logger.Instance.WriteToLog("Session is reinitializing...", true);
5882
+ let ctxRemoved = this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.CTX_REMOVED_FROM_SRVR);
5883
+ if (ctxRemoved !== '1') {
5884
+ Logger.Instance.WriteErrorToLog(RemoteCommandsProcessor.lastExceptionMessage);
5885
+ Logger.Instance.WriteToLog("Session is reinitializing...", true);
5886
+ }
5864
5887
  }
5865
5888
  }
5866
5889
  if (sendingInstruction === CommandsProcessorBase_SendingInstruction.NO_TASKS_OR_COMMANDS)
@@ -5897,8 +5920,13 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5897
5920
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5898
5921
  reqBuf = reqBuf + this.RestoreSessionReInitializingDataFromLocalStorage(ConstInterface.MAIN_PROG_VIEW);
5899
5922
  }
5900
- respBuf = yield this.DispatchRequest(this.ServerUrl, reqBuf, sessionStage, requestStatus);
5901
- let success;
5923
+ if (RuntimeContextBase.Instance.RemovedContextFromServer)
5924
+ requestStatus.value = RequestStatus.Retry;
5925
+ else {
5926
+ if (RuntimeContextBase.Instance.RemovingContextFromServer)
5927
+ RuntimeContextBase.Instance.RemovedContextFromServer = true;
5928
+ respBuf = yield this.DispatchRequest(this.ServerUrl, reqBuf, sessionStage, requestStatus);
5929
+ }
5902
5930
  if (requestStatus.value == RequestStatus.Retry) {
5903
5931
  yield this.ReStartSession();
5904
5932
  }
@@ -5918,6 +5946,15 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5918
5946
  yield this.ProcessResponse(respBuf, AccessHelper.mgDataTable.currMgdID, null, res);
5919
5947
  if (RemoteCommandsProcessor.IsSessionReInitializing) {
5920
5948
  AccessHelper.globalParams.RestoreGlobalParams(globalParamsString);
5949
+ let dataStorage = window.localStorage;
5950
+ let ctxRemoved = dataStorage.getItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5951
+ if (ctxRemoved === "1") {
5952
+ EventsManager.Instance.restoreLastSavedRouteEventFromLocalStorage();
5953
+ dataStorage.removeItem(ConstInterface.CTX_REMOVED_FROM_SRVR);
5954
+ dataStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT);
5955
+ dataStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK);
5956
+ dataStorage.removeItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST);
5957
+ }
5921
5958
  RemoteCommandsProcessor.IsSessionReInitializing = false;
5922
5959
  }
5923
5960
  if (sendingInstruction === CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS) {
@@ -5974,19 +6011,24 @@ class RemoteCommandsProcessor extends CommandsProcessorBase {
5974
6011
  requestStatus.value = RequestStatus.Abort;
5975
6012
  if (sessionStage == CommandsProcessorBase_SessionStage.NORMAL) {
5976
6013
  if (ex.GetCode() == ServerError.ERR_CTX_NOT_FOUND || ex.GetCode() == ServerError.ERR_THREAD_ABORTED) {
5977
- switch (Environment.Instance.getWebClientReinitSession()) {
5978
- case 'Y':
5979
- requestStatus.value = RequestStatus.Retry;
5980
- break;
5981
- case 'A':
5982
- let retval = yield GUIManager.Instance.MessageBox("Error", "Unknown error occurred at server-side." +
5983
- " Would you like to reinitialize the session?", Styles.MSGBOX_BUTTON_YES_NO);
5984
- requestStatus.value = (retval == Styles.MSGBOX_RESULT_YES) ? RequestStatus.Retry : RequestStatus.Abort;
5985
- break;
5986
- case 'N':
5987
- default:
5988
- requestStatus.value = RequestStatus.Abort;
5989
- break;
6014
+ if (RuntimeContextBase.Instance.RemovedContextFromServer) {
6015
+ requestStatus.value = RequestStatus.Retry;
6016
+ }
6017
+ else {
6018
+ switch (Environment.Instance.getWebClientReinitSession()) {
6019
+ case 'Y':
6020
+ requestStatus.value = RequestStatus.Retry;
6021
+ break;
6022
+ case 'A':
6023
+ let retval = yield GUIManager.Instance.MessageBox("Error", "Unknown error occurred at server-side." +
6024
+ " Would you like to reinitialize the session?", Styles.MSGBOX_BUTTON_YES_NO);
6025
+ requestStatus.value = (retval == Styles.MSGBOX_RESULT_YES) ? RequestStatus.Retry : RequestStatus.Abort;
6026
+ break;
6027
+ case 'N':
6028
+ default:
6029
+ requestStatus.value = RequestStatus.Abort;
6030
+ break;
6031
+ }
5990
6032
  }
5991
6033
  if (requestStatus.value == RequestStatus.Abort) {
5992
6034
  Environment.Instance.setWebClientReinitSession('N');
@@ -6420,7 +6462,7 @@ class InteractiveCommunicationsFailureHandler {
6420
6462
  return __awaiter(this, void 0, void 0, function* () {
6421
6463
  let exceptionCaption = "";
6422
6464
  let exceptionMessage = url.split('?')[0] + OSEnvironment.EolSeq + OSEnvironment.EolSeq + ex.message + OSEnvironment.EolSeq + OSEnvironment.EolSeq;
6423
- this.ShouldRetryLastRequest = ((yield GUIManager.Instance.MessageBox(exceptionCaption, exceptionMessage + "Do you wish to retry connecting?", Styles.MSGBOX_BUTTON_YES_NO | Styles.MSGBOX_DEFAULT_BUTTON_2)) === Styles.MSGBOX_RESULT_YES);
6465
+ this.ShouldRetryLastRequest = ((yield GUIManager.Instance.MessageBox(exceptionCaption, exceptionMessage + "Do you wish to retry connecting?", Styles.MSGBOX_BUTTON_YES_NO)) === Styles.MSGBOX_RESULT_YES);
6424
6466
  });
6425
6467
  }
6426
6468
  }
@@ -7775,6 +7817,8 @@ ExpressionDict.expDesc = [
7775
7817
  new ExpDesc('B', 0, -2, -2, '*', false),
7776
7818
  new ExpDesc('*', 0, 1, 1, 'A', false),
7777
7819
  new ExpDesc('B', 0, 1, 1, 'A', false),
7820
+ null,
7821
+ new ExpDesc('U', 0, 0, 0, '', false),
7778
7822
  ];
7779
7823
 
7780
7824
  var DataViewCommandType;
@@ -8434,6 +8478,19 @@ class ContextTimeoutResetCommand extends EventCommand {
8434
8478
  }
8435
8479
  }
8436
8480
 
8481
+ class SelectProgramCommand extends ExecOperCommand {
8482
+ getCommandInfo() {
8483
+ let eventsManager = AccessHelper.eventsManager;
8484
+ let rtEvt = eventsManager.getLastRtEvent();
8485
+ return 'Select Program ' + 'on Control ' + rtEvt.Control.Name;
8486
+ }
8487
+ getTask() {
8488
+ let eventsManager = AccessHelper.eventsManager;
8489
+ let rtEvt = eventsManager.getLastRtEvent();
8490
+ return rtEvt.getTask();
8491
+ }
8492
+ }
8493
+
8437
8494
  class CommandFactory {
8438
8495
  static CreateEventCommand(taskTag, magicEvent) {
8439
8496
  let eventCommand = new EventCommand(magicEvent);
@@ -8651,6 +8708,19 @@ class CommandFactory {
8651
8708
  cmd.Val = value;
8652
8709
  return cmd;
8653
8710
  }
8711
+ static CreateSelectProgramCommand(taskTag, handlerId, operIdx, ditIdx, value) {
8712
+ let execOperCommand = new SelectProgramCommand();
8713
+ execOperCommand.OperIdx = operIdx;
8714
+ execOperCommand.TaskTag = taskTag;
8715
+ execOperCommand.HandlerId = handlerId;
8716
+ execOperCommand.DitIdx = ditIdx;
8717
+ let cmd = execOperCommand;
8718
+ if (value !== null && value.length === 0)
8719
+ cmd.Val = " ";
8720
+ else
8721
+ cmd.Val = value;
8722
+ return cmd;
8723
+ }
8654
8724
  static CreateEvaluateCommand(taskTag, expType, expIdx, expValLen, mprgCreator) {
8655
8725
  let evaluateCommand = new EvaluateCommand();
8656
8726
  evaluateCommand.TaskTag = taskTag;
@@ -8741,6 +8811,8 @@ class MirrorPrmMap extends PrmMap {
8741
8811
  if (this.values != null) {
8742
8812
  xml.Append("<" + this.mirroredID + ">");
8743
8813
  for (let key of this.values.Keys) {
8814
+ if (this.CheckIfSystemReservedParam(key))
8815
+ continue;
8744
8816
  xml.Append("<" + ConstInterface.MG_TAG_PARAM + " " +
8745
8817
  XMLConstants.MG_ATTR_NAME + "=\"" + XmlParser.escape(key) + "\" ");
8746
8818
  xml.Append(this.values.get_Item(key).mirrorToXML());
@@ -8750,6 +8822,14 @@ class MirrorPrmMap extends PrmMap {
8750
8822
  }
8751
8823
  return xml.ToString();
8752
8824
  }
8825
+ CheckIfSystemReservedParam(key) {
8826
+ if (key == "UTF8TRANS" || key === "REMOTE_HOST" || key === "REMOTE_ADDR" ||
8827
+ key === "CTX" || key === "MGARG0" || key === "DATA" || key === "MGCURRENTREQUESTID" ||
8828
+ key === "HTTP_MGXPARIAGLOBALUNIQUESESSIONID" || key === "MG_POST_BODY")
8829
+ return true;
8830
+ else
8831
+ return false;
8832
+ }
8753
8833
  mirrorToXML() {
8754
8834
  let xml = new StringBuilder();
8755
8835
  if (this.changes.length > 0) {
@@ -8826,6 +8906,7 @@ class Environment {
8826
8906
  constructor() {
8827
8907
  this._environments = new Hashtable();
8828
8908
  this._contextInactivityTimeout = 0;
8909
+ this._clientContextInactivityTimeout = 0;
8829
8910
  this._contextInactivityWarningTime = 0;
8830
8911
  this._toolitipTimeout = 0;
8831
8912
  this._contextUnloadTimeout = 0;
@@ -9005,6 +9086,9 @@ class Environment {
9005
9086
  case ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_TIMEOUT:
9006
9087
  this._contextInactivityTimeout = XmlParser.getInt(valueStr);
9007
9088
  break;
9089
+ case ConstInterface.MG_ATTR_CLIENT_CONTEXT_INACTIVITY_TIMEOUT:
9090
+ this._clientContextInactivityTimeout = XmlParser.getInt(valueStr);
9091
+ break;
9008
9092
  case ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_WARNING_TIME:
9009
9093
  this._contextInactivityWarningTime = XmlParser.getInt(valueStr);
9010
9094
  break;
@@ -9208,6 +9292,9 @@ class Environment {
9208
9292
  CanReplaceDecimalSeparator() {
9209
9293
  return !this.IgnoreReplaceDecimalSeparator && this._canReplaceDecimalSeparator;
9210
9294
  }
9295
+ getClientContextInactivityTimeout() {
9296
+ return this._clientContextInactivityTimeout;
9297
+ }
9211
9298
  getContextInactivityTimeout() {
9212
9299
  return this._contextInactivityTimeout;
9213
9300
  }
@@ -9313,6 +9400,9 @@ class Environment {
9313
9400
  setContextInactivityTimeout(val) {
9314
9401
  this._contextInactivityTimeout = val;
9315
9402
  }
9403
+ setClientContextInactivityTimeout(val) {
9404
+ this._clientContextInactivityTimeout = val;
9405
+ }
9316
9406
  setContextInactivityWarningTime(val) {
9317
9407
  this._contextInactivityWarningTime = val;
9318
9408
  }
@@ -9565,8 +9655,6 @@ class Operation {
9565
9655
  this._buttons = '\0';
9566
9656
  this._checkByServer = false;
9567
9657
  this._cmdToServer = null;
9568
- this._defaultButton = 0;
9569
- this._defaultButtonExp = null;
9570
9658
  this._display = 'S';
9571
9659
  this._errLogAppend = false;
9572
9660
  this._evtHandler = null;
@@ -9771,13 +9859,6 @@ class Operation {
9771
9859
  case ConstInterface.MG_ATTR_BUTTONS:
9772
9860
  this._buttons = valueStr[0];
9773
9861
  break;
9774
- case ConstInterface.MG_ATTR_DEFAULT_BUTTON:
9775
- this._defaultButton = XmlParser.getInt(valueStr);
9776
- break;
9777
- case ConstInterface.MG_ATTR_DEFAULT_BUTTON_EXP:
9778
- expId = XmlParser.getInt(valueStr);
9779
- this._defaultButtonExp = taskRef.getExpById(expId);
9780
- break;
9781
9862
  case ConstInterface.MG_ATTR_RETURN_VAL:
9782
9863
  this._returnVal = Operation.InitField(valueStr, this._task);
9783
9864
  break;
@@ -9915,8 +9996,10 @@ class Operation {
9915
9996
  if (subformTask != null) {
9916
9997
  let terminateTaskGracefully = true;
9917
9998
  let rtEvnt = AccessHelper.eventsManager.getLastRtEvent();
9918
- if (this._isRoute && rtEvnt !== null && rtEvnt.isGuiTriggeredEvent())
9999
+ if (this._isRoute && rtEvnt !== null && rtEvnt.isGuiTriggeredEvent()) {
9919
10000
  terminateTaskGracefully = false;
10001
+ AccessHelper.eventsManager.setStopExecution(true);
10002
+ }
9920
10003
  if (yield subformTask.endTask(true, false, !terminateTaskGracefully, true)) {
9921
10004
  let parentTask = destSubForm.getForm().getTask();
9922
10005
  parentTask.TaskService.RemoveRecomputes(parentTask, subformTask);
@@ -9985,10 +10068,9 @@ class Operation {
9985
10068
  if (!NString.IsNullOrEmpty(textToDisplay)) {
9986
10069
  let mlsTransTextToDisplay = LanguageData.Instance.translate(textToDisplay);
9987
10070
  let mlsTransTitleToDisplay = LanguageData.Instance.translate(titleToDisplay);
9988
- let tmpdefaultButton = this._defaultButtonExp == null ? this._defaultButton : (yield this._defaultButtonExp.evaluateWithResType(StorageAttribute.NUMERIC)).MgNumVal.NUM_2_LONG();
9989
10071
  let verifyMode = Operation.getButtons(this._buttons);
9990
10072
  verifyMode = verifyMode || Operation.getImage(this._image);
9991
- verifyMode = verifyMode || Operation.getDefaultButton(tmpdefaultButton);
10073
+ verifyMode = verifyMode;
9992
10074
  if (UtilStrByteMode.isLocaleDefLangJPN()) {
9993
10075
  let delimPos = mlsTransTextToDisplay.indexOf('|');
9994
10076
  if (0 <= delimPos && delimPos < mlsTransTextToDisplay.length) {
@@ -10059,23 +10141,6 @@ class Operation {
10059
10141
  }
10060
10142
  return tmpImage;
10061
10143
  }
10062
- static getDefaultButton(defaultButtonID) {
10063
- let tmpdefaultButton = 0;
10064
- switch (defaultButtonID) {
10065
- case 1:
10066
- tmpdefaultButton = Styles.MSGBOX_DEFAULT_BUTTON_1;
10067
- break;
10068
- case 2:
10069
- tmpdefaultButton = Styles.MSGBOX_DEFAULT_BUTTON_2;
10070
- break;
10071
- case 3:
10072
- tmpdefaultButton = Styles.MSGBOX_DEFAULT_BUTTON_3;
10073
- break;
10074
- default:
10075
- break;
10076
- }
10077
- return tmpdefaultButton;
10078
- }
10079
10144
  static setoperVerifyReturnValue(returnValue, returnVal) {
10080
10145
  return __awaiter(this, void 0, void 0, function* () {
10081
10146
  if (returnVal !== null) {
@@ -10201,6 +10266,7 @@ class Operation {
10201
10266
  aRtEvt.setArgList(this._argList);
10202
10267
  if (aRtEvt.getTask().isMainProg())
10203
10268
  aRtEvt.setMainPrgCreator(mprgCreator);
10269
+ AccessHelper.eventsManager.checkAndSaveRouteEventIfCtxRemovedFromSrvr(aRtEvt);
10204
10270
  AccessHelper.eventsManager.pushExecStack(this._task.getTaskTag(), this._evtHandler.getId().toString(), this._serverId);
10205
10271
  yield AccessHelper.eventsManager.handleEvent(aRtEvt, returnedFromServer);
10206
10272
  AccessHelper.eventsManager.popExecStack();
@@ -10211,6 +10277,7 @@ class Operation {
10211
10277
  aRtEvt.setArgList(arglist);
10212
10278
  aRtEvt.setTask(null);
10213
10279
  AccessHelper.eventsManager.addToTail(aRtEvt);
10280
+ AccessHelper.eventsManager.checkAndSaveRouteEventIfCtxRemovedFromSrvr(aRtEvt);
10214
10281
  }
10215
10282
  });
10216
10283
  }
@@ -10754,8 +10821,7 @@ class CookieService {
10754
10821
  }
10755
10822
  if (secure === false && sameSite === 'None') {
10756
10823
  secure = true;
10757
- console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +
10758
- `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);
10824
+ console.warn(`cookie ${name} was forced with secure flag because sameSite=None.`);
10759
10825
  }
10760
10826
  if (secure) {
10761
10827
  cookieString += 'secure;';
@@ -10765,6 +10831,7 @@ class CookieService {
10765
10831
  }
10766
10832
  cookieString += 'sameSite=' + sameSite + ';';
10767
10833
  document.cookie = cookieString;
10834
+ return this.getCookie(name);
10768
10835
  }
10769
10836
  static encode_cookie(cookie_value) {
10770
10837
  cookie_value = cookie_value.trim();
@@ -10786,7 +10853,7 @@ class CookieService {
10786
10853
  return cookie_value;
10787
10854
  }
10788
10855
  static getCookie(cookieName) {
10789
- let name = cookieName + '=';
10856
+ let name = NString.TrimStart(cookieName + '=');
10790
10857
  let decodedCookie = decodeURIComponent(document.cookie);
10791
10858
  let ca = decodedCookie.split(';');
10792
10859
  for (let i = 0; i < ca.length; i++) {
@@ -10794,7 +10861,7 @@ class CookieService {
10794
10861
  while (c.charAt(0) == ' ') {
10795
10862
  c = c.substring(1);
10796
10863
  }
10797
- if (c.indexOf(name) == 0) {
10864
+ if (c.indexOf(name) >= 0) {
10798
10865
  let decode = CookieService.decode_cookie(c.substring(name.length, c.length));
10799
10866
  return decode;
10800
10867
  }
@@ -10807,9 +10874,12 @@ class CookieService {
10807
10874
  var cookie = cookies[i];
10808
10875
  var eqPos = cookie.indexOf('=');
10809
10876
  var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10810
- if (cookieName === name.trim())
10877
+ if (cookieName === decodeURI(name)) {
10811
10878
  document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
10879
+ return true;
10880
+ }
10812
10881
  }
10882
+ return false;
10813
10883
  }
10814
10884
  }
10815
10885
 
@@ -12375,6 +12445,9 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
12375
12445
  resVal.IsNull = false;
12376
12446
  this.eval_op_delete_cookie(valStack.pop().StrVal, resVal);
12377
12447
  break;
12448
+ case ExpressionInterface.EXP_OP_ROUTEGET:
12449
+ this.eval_op_route_get(resVal);
12450
+ break;
12378
12451
  default:
12379
12452
  return;
12380
12453
  }
@@ -14927,35 +15000,43 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14927
15000
  resVal.Attr = StorageAttribute.BOOLEAN;
14928
15001
  resVal.StrVal = '';
14929
15002
  let args = this.params2arguments(expVal, 0, expVal.length);
14930
- var expires, path, domain, secure, sameSite;
14931
- expires = args[1];
15003
+ var expiresDate, path, domain, secure, sameSite;
15004
+ expiresDate = args[1];
15005
+ let expiresTime = args[2];
14932
15006
  let nativeDt;
14933
- if (expires) {
14934
- let breakParams = new DateBreakParams();
14935
- DisplayConvertor.Instance.date_break_datemode(breakParams, expires, false, 0);
14936
- if (breakParams.month > 0)
14937
- breakParams.month = breakParams.month - 1;
15007
+ if (expiresDate) {
15008
+ let breakParams = DisplayConvertor.Instance.getNewDateBreakParams();
15009
+ DisplayConvertor.Instance.date_break_datemode(breakParams, expiresDate, false, this.ExpTask.getCompIdx());
15010
+ let year = breakParams.year;
15011
+ let month = breakParams.month;
15012
+ let day = breakParams.day;
14938
15013
  if (breakParams.year == 0 && breakParams.month == 0 && breakParams.day == 0)
14939
15014
  return null;
14940
- nativeDt = new Date(breakParams.year, breakParams.month, breakParams.day);
14941
- let timeBreakParams = new TimeBreakParams();
14942
- DisplayConvertor.time_break(timeBreakParams, expires);
14943
- nativeDt.setHours(timeBreakParams.hour);
14944
- nativeDt.setMinutes(timeBreakParams.minute);
14945
- nativeDt.setSeconds(timeBreakParams.second);
14946
- }
14947
- path = args[2];
14948
- domain = args[3];
14949
- CookieService.setCookie(cookieName, args[0], nativeDt, path, domain, secure, sameSite);
14950
- resVal.BoolVal = true;
15015
+ nativeDt = new Date(breakParams.year, breakParams.month - 1, breakParams.day);
15016
+ if (expiresTime) {
15017
+ let timeBreakParams = DisplayConvertor.Instance.getNewTimeBreakParams();
15018
+ DisplayConvertor.time_break(timeBreakParams, expiresTime);
15019
+ nativeDt.setHours(timeBreakParams.hour);
15020
+ nativeDt.setMinutes(timeBreakParams.minute);
15021
+ nativeDt.setSeconds(timeBreakParams.second);
15022
+ }
15023
+ }
15024
+ path = args[3];
15025
+ domain = args[4];
15026
+ resVal.BoolVal = CookieService.setCookie(cookieName, args[0], nativeDt, path, domain, secure, sameSite);
14951
15027
  }
14952
15028
  eval_op_get_cookie(cookieName, resVal) {
14953
15029
  resVal.StrVal = CookieService.getCookie(cookieName);
14954
15030
  }
14955
15031
  eval_op_delete_cookie(cookieName, resVal) {
14956
15032
  resVal.Attr = StorageAttribute.BOOLEAN;
14957
- CookieService.deleteCookie(cookieName);
14958
- resVal.BoolVal = true;
15033
+ resVal.BoolVal = CookieService.deleteCookie(cookieName);
15034
+ ;
15035
+ }
15036
+ eval_op_route_get(resVal) {
15037
+ resVal.Attr = StorageAttribute.UNICODE;
15038
+ resVal.IsNull = false;
15039
+ resVal.StrVal = Commands.getLastRoute();
14959
15040
  }
14960
15041
  params2arguments(Exp_params, startAt, count) {
14961
15042
  let NULL_STR = '';
@@ -20256,6 +20337,7 @@ class MgForm extends MgFormBase {
20256
20337
  super();
20257
20338
  this.IsMovingInView = false;
20258
20339
  this.PrevDisplayLine = 0;
20340
+ this.RefreshAllRows = false;
20259
20341
  this.IgnoreFirstRecordCycle = false;
20260
20342
  this.MovedToFirstControl = false;
20261
20343
  this._suffixDone = false;
@@ -20590,8 +20672,10 @@ class MgForm extends MgFormBase {
20590
20672
  let currLine = -1;
20591
20673
  if (!this._task.DataView.isEmptyDataview())
20592
20674
  currLine = this.getVisibleLine();
20593
- if (this.isTableWithAbsoluteScrollbar())
20675
+ if (this.isTableWithAbsoluteScrollbar()) {
20594
20676
  this.GetDataview().TotalRecordsCount += 1;
20677
+ this.RefreshAllRows = true;
20678
+ }
20595
20679
  let newRecIdx = yield this.GetDataview().addRecord(doSuffix, false, isCrelineAbove);
20596
20680
  if (newRecIdx > -1) {
20597
20681
  if (this.isLineMode()) {
@@ -20625,8 +20709,10 @@ class MgForm extends MgFormBase {
20625
20709
  yield this.RefreshDisplay(Constants.TASK_REFRESH_TABLE);
20626
20710
  }
20627
20711
  }
20628
- else if (this.isTableWithAbsoluteScrollbar())
20712
+ else if (this.isTableWithAbsoluteScrollbar()) {
20629
20713
  this.GetDataview().TotalRecordsCount -= 1;
20714
+ this.RefreshAllRows = false;
20715
+ }
20630
20716
  });
20631
20717
  }
20632
20718
  delCurrRec() {
@@ -20657,8 +20743,10 @@ class MgForm extends MgFormBase {
20657
20743
  this.GetDataview().setTopRecIdx(this.GetDataview().getCurrRecIdx());
20658
20744
  if (_super.isLineMode.call(this)) {
20659
20745
  if (_super.HasTable.call(this)) {
20660
- if (this.isTableWithAbsoluteScrollbar())
20746
+ if (this.isTableWithAbsoluteScrollbar()) {
20661
20747
  this.GetDataview().TotalRecordsCount--;
20748
+ this.RefreshAllRows = true;
20749
+ }
20662
20750
  this.removeRecordsAfterIdx(this.GetDataview().getCurrRecIdx());
20663
20751
  yield this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
20664
20752
  }
@@ -20728,8 +20816,10 @@ class MgForm extends MgFormBase {
20728
20816
  throw ex;
20729
20817
  }
20730
20818
  if (_super.HasTable.call(this)) {
20731
- if (this.isTableWithAbsoluteScrollbar() && recRemoved)
20819
+ if (this.isTableWithAbsoluteScrollbar() && recRemoved) {
20732
20820
  this.GetDataview().TotalRecordsCount--;
20821
+ this.RefreshAllRows = true;
20822
+ }
20733
20823
  this.removeRecordsAfterIdx(this.GetDataview().getCurrRecIdx());
20734
20824
  }
20735
20825
  }
@@ -20995,7 +21085,7 @@ class MgForm extends MgFormBase {
20995
21085
  let prevTopIdx = this.GetDataview().getTopRecIdx();
20996
21086
  try {
20997
21087
  index = idx + diffRef.value;
20998
- if (!this.isRowValidated(idx) || sendAll) {
21088
+ if (!this.isRowValidated(idx) || sendAll || this.RefreshAllRows) {
20999
21089
  if (index >= 0)
21000
21090
  _super.checkAndCreateRow.call(this, index);
21001
21091
  if (saveRowIdx + diffRef.value !== index) {
@@ -21022,6 +21112,7 @@ class MgForm extends MgFormBase {
21022
21112
  }
21023
21113
  }
21024
21114
  this.RefreshUI();
21115
+ this.RefreshAllRows = false;
21025
21116
  return updated;
21026
21117
  });
21027
21118
  }
@@ -21078,24 +21169,6 @@ class MgForm extends MgFormBase {
21078
21169
  getPrevLine(line) {
21079
21170
  return line - 1;
21080
21171
  }
21081
- getDefaultButton(checkVisibleEnable) {
21082
- const _super = Object.create(null, {
21083
- getProp: { get: () => super.getProp },
21084
- getCtrlByName: { get: () => super.getCtrlByName }
21085
- });
21086
- return __awaiter(this, void 0, void 0, function* () {
21087
- let defaultButton = null;
21088
- let prop = _super.getProp.call(this, PropInterface.PROP_TYPE_DEFAULT_BUTTON);
21089
- if (prop !== null) {
21090
- defaultButton = _super.getCtrlByName.call(this, yield prop.getValue(), MgControlType.CTRL_TYPE_BUTTON);
21091
- if (checkVisibleEnable && defaultButton !== null) {
21092
- if (!defaultButton.isVisible() || !defaultButton.isEnabled())
21093
- defaultButton = null;
21094
- }
21095
- }
21096
- return defaultButton;
21097
- });
21098
- }
21099
21172
  clearTableColumnSortMark(clearSortMark) {
21100
21173
  if (clearSortMark) {
21101
21174
  }
@@ -22618,6 +22691,11 @@ class EventHandler {
22618
22691
  oper = this._operationTab.getOperation(execFlowIdx);
22619
22692
  operType = oper.getType();
22620
22693
  blockIfReturnedFromServer = false;
22694
+ if (RemoteCommandsProcessor.GetInstance().DelayCommandExecution) {
22695
+ this._task.setUseLoopStack(depth > 0);
22696
+ yield oper.operServer(null);
22697
+ break;
22698
+ }
22621
22699
  if (returnedFromServer && oper.getServerId() < nextOperIdx)
22622
22700
  if (operType !== ConstInterface.MG_OPER_BLOCK)
22623
22701
  continue;
@@ -22743,10 +22821,10 @@ class EventHandler {
22743
22821
  returnedFromServer = false;
22744
22822
  }
22745
22823
  }
22746
- if (blockIfReturnedFromServer)
22747
- retvals = new RetVals(nextOperIdx, returnedFromServer, blockIfReturnedFromServer);
22748
- else if (routeOperationExecuted)
22824
+ if (routeOperationExecuted)
22749
22825
  retvals = new RetVals(false, true);
22826
+ else if (blockIfReturnedFromServer)
22827
+ retvals = new RetVals(nextOperIdx, returnedFromServer, blockIfReturnedFromServer);
22750
22828
  else
22751
22829
  retvals = null;
22752
22830
  return retvals;
@@ -23593,7 +23671,8 @@ ActionManager.actEnabled = [
23593
23671
  InternalInterface.MG_ACT_INDEX_CHANGE,
23594
23672
  InternalInterface.MG_ACT_WEBCLIENT_ROUTE,
23595
23673
  InternalInterface.MG_ACT_SET_EXTERNAL_VALUE,
23596
- InternalInterface.MG_ACT_FETCH_RECORDS_AHEAD_FROM_SERVER
23674
+ InternalInterface.MG_ACT_FETCH_RECORDS_AHEAD_FROM_SERVER,
23675
+ InternalInterface.MG_ACT_CONTEXT_REMOVE
23597
23676
  ];
23598
23677
  ActionManager.actNavigation = [
23599
23678
  InternalInterface.MG_ACT_TBL_PRVLINE,
@@ -24236,16 +24315,12 @@ class Task extends TaskBase {
24236
24315
  result = yield this.DataviewManager.Execute(dataViewCommand);
24237
24316
  if (!result.Success)
24238
24317
  return null;
24239
- this.ResumeSubformLayout();
24240
24318
  }
24241
24319
  nonInteractiveTask = yield this.StartSubTasks(moveToFirstControl, nonInteractiveTask, callByDestSubForm);
24242
24320
  this.InStartProcess = false;
24243
24321
  return nonInteractiveTask;
24244
24322
  });
24245
24323
  }
24246
- CanResumeSubformLayout() {
24247
- return this.DataViewWasRetrieved;
24248
- }
24249
24324
  InitializeExecution() {
24250
24325
  super.setBrkLevel(ConstInterface.BRK_LEVEL_REC_MAIN, -1);
24251
24326
  this._firstRecordCycle = true;
@@ -24288,20 +24363,9 @@ class Task extends TaskBase {
24288
24363
  this.ActionManager.enableList(actList, true, false);
24289
24364
  if (this.IsSubForm)
24290
24365
  this.ActionManager.enable(InternalInterface.MG_ACT_POST_REFRESH_BY_PARENT, true);
24291
- if (this.Form != null && (yield this.Form.getDefaultButton(false)) != null)
24292
- this.ActionManager.enable(InternalInterface.MG_ACT_DEFAULT_BUTTON, true);
24293
24366
  yield this.enableModes();
24294
24367
  if (yield this.checkProp(PropInterface.PROP_TYPE_SELECTION, false)) {
24295
- if ((yield ((this.Form.getProp(PropInterface.PROP_TYPE_DEFAULT_BUTTON))).getValue()) !== "") {
24296
- let defaultButtonName = yield (this.Form.getProp(PropInterface.PROP_TYPE_DEFAULT_BUTTON)).getValue();
24297
- let ctrl = this.Form.getCtrlByCtrlName(defaultButtonName);
24298
- let aRtEvt = new RunTimeEvent(ctrl);
24299
- if (aRtEvt.getType() === ConstInterface.EVENT_TYPE_INTERNAL &&
24300
- aRtEvt.getInternalCode() === InternalInterface.MG_ACT_SELECT)
24301
- this.ActionManager.enable(InternalInterface.MG_ACT_SELECT, true);
24302
- }
24303
- else
24304
- this.ActionManager.enable(InternalInterface.MG_ACT_SELECT, true);
24368
+ this.ActionManager.enable(InternalInterface.MG_ACT_SELECT, true);
24305
24369
  }
24306
24370
  let enablePrintdata = yield this.checkProp(PropInterface.PROP_TYPE_PRINT_DATA, false);
24307
24371
  this.ActionManager.enable(InternalInterface.MG_ACT_PRINT_DATA, enablePrintdata);
@@ -24983,9 +25047,9 @@ class Task extends TaskBase {
24983
25047
  if (this.hasSubTasks()) {
24984
25048
  if (!RemoteCommandsProcessor.GetInstance().DelayCommandExecution) {
24985
25049
  let pendingTransactions = true;
24986
- let clientOperExist = this.CheckIfClientOperationExistsInSubformTasks(this, InternalInterface.MG_ACT_TASK_SUFFIX);
25050
+ let clientOperExist = yield this.CheckIfClientOperationExistsInSubformTasks(this, InternalInterface.MG_ACT_TASK_SUFFIX);
24987
25051
  if (!clientOperExist) {
24988
- clientOperExist = this.CheckIfClientOperationExistsInSubformTasks(this, InternalInterface.MG_ACT_REC_SUFFIX);
25052
+ clientOperExist = yield this.CheckIfClientOperationExistsInSubformTasks(this, InternalInterface.MG_ACT_REC_SUFFIX);
24989
25053
  if (!clientOperExist)
24990
25054
  pendingTransactions = this.CheckIfPendingTransactions(this);
24991
25055
  }
@@ -25004,6 +25068,10 @@ class Task extends TaskBase {
25004
25068
  succeeded = (!AccessHelper.eventsManager.GetStopExecutionFlag() || dueToVerifyError);
25005
25069
  }
25006
25070
  }
25071
+ else {
25072
+ if (RemoteCommandsProcessor.GetInstance().DelayCommandExecution)
25073
+ this.SetServerSideTaskSuffix(this);
25074
+ }
25007
25075
  if (this === mgdTab.StartupMgData.getFirstTask()) {
25008
25076
  for (i = mgdTab.getSize() - 1; i > 0 && succeeded; i--) {
25009
25077
  if (mgdTab.getMGData(i) != null) {
@@ -25062,8 +25130,12 @@ class Task extends TaskBase {
25062
25130
  AccessHelper.eventsManager.setProcessingTopMostEndTask(true);
25063
25131
  yield AccessHelper.eventsManager.handleEvents(baseMgd, 0);
25064
25132
  AccessHelper.eventsManager.setProcessingTopMostEndTask(false);
25065
- if (this.isAborting())
25133
+ if (this.isAborting()) {
25134
+ RemoteCommandsProcessor.GetInstance().DelayCommandExecution = false;
25135
+ this.DelayCommandExecution = false;
25136
+ this.allowRemoteCmdExecution = true;
25066
25137
  return true;
25138
+ }
25067
25139
  }
25068
25140
  yield TaskServiceBase.Exit(this, reversibleExit, subformDestination);
25069
25141
  if (this._parentTask != null && this._parentTask.isMainProg()) {
@@ -25117,36 +25189,43 @@ class Task extends TaskBase {
25117
25189
  }
25118
25190
  }
25119
25191
  CheckIfClientOperationExistsInSubformTasks(task, eventCode) {
25120
- let clientOperationExist = false;
25121
- var rtEvt = new RunTimeEvent(task);
25122
- rtEvt.setInternal(eventCode);
25123
- let handler = null;
25124
- var evtHanPos = new EventHandlerPosition();
25125
- evtHanPos.init(rtEvt);
25126
- handler = evtHanPos.getNext();
25127
- let pendingTransactions = false;
25128
- if (eventCode == InternalInterface.MG_ACT_REC_SUFFIX) {
25129
- let currRecord = task.DataView.getCurrRec();
25130
- if (task.DataView.modifiedRecordsNumber() > 0 || (currRecord != null && currRecord.Modified))
25131
- pendingTransactions = true;
25132
- }
25133
- if (handler != null && pendingTransactions == true) {
25134
- let cnt = handler.getOperationTab().getSize();
25135
- for (let i = 0; i < cnt; i++) {
25136
- let oper = handler.getOperationTab().getOperation(i);
25137
- if (oper.getExecOnClient()) {
25192
+ return __awaiter(this, void 0, void 0, function* () {
25193
+ let clientOperationExist = false;
25194
+ var rtEvt = new RunTimeEvent(task);
25195
+ rtEvt.setInternal(eventCode);
25196
+ let handler = null;
25197
+ var evtHanPos = new EventHandlerPosition();
25198
+ evtHanPos.init(rtEvt);
25199
+ handler = evtHanPos.getNext();
25200
+ if (eventCode == InternalInterface.MG_ACT_REC_SUFFIX) {
25201
+ let currRecord = task.DataView.getCurrRec();
25202
+ if (task.DataView.modifiedRecordsNumber() > 0 || (currRecord != null && currRecord.Modified))
25138
25203
  clientOperationExist = true;
25139
- break;
25204
+ if (!clientOperationExist) {
25205
+ let forceSuffix = yield task.checkProp(PropInterface.PROP_TYPE_FORCE_SUFFIX, false);
25206
+ if (forceSuffix === true)
25207
+ if (task.IsInteractive || task.getMode() !== Constants.TASK_MODE_CREATE)
25208
+ clientOperationExist = true;
25209
+ }
25210
+ }
25211
+ if (handler != null && !clientOperationExist) {
25212
+ let cnt = handler.getOperationTab().getSize();
25213
+ for (let i = 0; i < cnt; i++) {
25214
+ let oper = handler.getOperationTab().getOperation(i);
25215
+ if (oper.getExecOnClient()) {
25216
+ clientOperationExist = true;
25217
+ break;
25218
+ }
25140
25219
  }
25141
25220
  }
25142
- }
25143
- if (!clientOperationExist && task.hasSubTasks()) {
25144
- for (let i = 0; (!clientOperationExist && i < task.getSubTasks().getSize()); i++) {
25145
- let subTask = task.SubTasks.getTask(i);
25146
- clientOperationExist = this.CheckIfClientOperationExistsInSubformTasks(subTask, eventCode);
25221
+ if (!clientOperationExist && task.hasSubTasks()) {
25222
+ for (let i = 0; (!clientOperationExist && i < task.getSubTasks().getSize()); i++) {
25223
+ let subTask = task.SubTasks.getTask(i);
25224
+ clientOperationExist = yield this.CheckIfClientOperationExistsInSubformTasks(subTask, eventCode);
25225
+ }
25147
25226
  }
25148
- }
25149
- return clientOperationExist;
25227
+ return clientOperationExist;
25228
+ });
25150
25229
  }
25151
25230
  CheckIfPendingTransactions(task) {
25152
25231
  let pendingTransactions = false;
@@ -26641,6 +26720,16 @@ class MGData {
26641
26720
  }
26642
26721
  return false;
26643
26722
  }
26723
+ getTaskByTaskDefinitionID(taskDefinitionID) {
26724
+ let task;
26725
+ for (let i = 0; i < this._tasksTab.getSize(); i = i + 1) {
26726
+ task = this._tasksTab.getTask(i);
26727
+ if (task.TaskDefinitionId.Equals(taskDefinitionID)) {
26728
+ return task;
26729
+ }
26730
+ }
26731
+ return null;
26732
+ }
26644
26733
  getTimerHandlers() {
26645
26734
  return this._timerHandlers;
26646
26735
  }
@@ -26862,6 +26951,7 @@ class EventsManager {
26862
26951
  this._isHandlingForceExit = false;
26863
26952
  this._isNonReversibleExit = false;
26864
26953
  this._isInRecordFlushEvent = false;
26954
+ this.lastSavedRouteEvent = null;
26865
26955
  this._stopExecution = false;
26866
26956
  this._processingTopMostEndTask = false;
26867
26957
  this._stopExecutionCtrl = null;
@@ -26892,6 +26982,17 @@ class EventsManager {
26892
26982
  this.guiPendingEvent = guiEvent;
26893
26983
  }
26894
26984
  addToTail(rtEvt) {
26985
+ if (!rtEvt.isIdleTimer()) {
26986
+ if (EventsManager.clientInactivityTimerON) {
26987
+ EventsManager.clientContextInactivityTimerAborted = true;
26988
+ }
26989
+ }
26990
+ else {
26991
+ if (this.getLastSavedRouteEvent() != null) {
26992
+ this.addToTail(this.getLastSavedRouteEvent());
26993
+ this.setLastSavedRouteEvent(null);
26994
+ }
26995
+ }
26895
26996
  this._eventsQueue.put(rtEvt);
26896
26997
  }
26897
26998
  AddKeyboardEvent(mgForm, mgControl, modifier, keyCode, start, end, text, isActChar, suggestedValue, code) {
@@ -27240,6 +27341,17 @@ class EventsManager {
27240
27341
  rtEvt.setArgList(args);
27241
27342
  EventsManager.Instance.addToTail(rtEvt);
27242
27343
  }
27344
+ AddLastSavedRouteEvent(srcTask, args) {
27345
+ let rtEvt = new RunTimeEvent(LastFocusedManager.Instance.getLastFocusedTask(), true);
27346
+ rtEvt.setInternal(InternalInterface.MG_ACT_WEBCLIENT_ROUTE);
27347
+ if (srcTask != null) {
27348
+ rtEvt.setTask(srcTask);
27349
+ if (args != null) {
27350
+ rtEvt.setArgList(args);
27351
+ }
27352
+ this.setLastSavedRouteEvent(rtEvt);
27353
+ }
27354
+ }
27243
27355
  AddExternalValueEvent(ctrl, value, refreshDisplay) {
27244
27356
  let rtEvt = new RunTimeEvent(ctrl, 0, true);
27245
27357
  rtEvt.setInternal(InternalInterface.MG_ACT_SET_EXTERNAL_VALUE);
@@ -27293,6 +27405,21 @@ class EventsManager {
27293
27405
  isForceExitPreRecordUpdate(task) {
27294
27406
  return this._isHandlingForceExit && this.getForceExit() === ForceExit.PreRecordUpdate && task === this.getForceExitTask();
27295
27407
  }
27408
+ ExecuteClientContextInactivityTimer() {
27409
+ return __awaiter(this, void 0, void 0, function* () {
27410
+ let startTime = Misc.getSystemMilliseconds();
27411
+ let currTime;
27412
+ let clientCtxInactivityTimeout = Environment.Instance.getClientContextInactivityTimeout() * 100;
27413
+ EventsManager.clientInactivityTimerON = true;
27414
+ while (EventsManager.clientInactivityTimerON) {
27415
+ yield Thread.Sleep(1000);
27416
+ var timeLapsed = Misc.getSystemMilliseconds() - startTime;
27417
+ if (EventsManager.clientContextInactivityTimerAborted || timeLapsed >= clientCtxInactivityTimeout) {
27418
+ EventsManager.clientInactivityTimerON = false;
27419
+ }
27420
+ }
27421
+ });
27422
+ }
27296
27423
  CheckAndShowSpinner(show) {
27297
27424
  return __awaiter(this, void 0, void 0, function* () {
27298
27425
  let sendCommand = false;
@@ -27672,6 +27799,12 @@ class EventsManager {
27672
27799
  }
27673
27800
  });
27674
27801
  }
27802
+ checkAndSaveRouteEventIfCtxRemovedFromSrvr(aRtEvt) {
27803
+ if (aRtEvt.getType() == ConstInterface.EVENT_TYPE_INTERNAL && aRtEvt.getInternalCode() ==
27804
+ InternalInterface.MG_ACT_WEBCLIENT_ROUTE && RuntimeContextBase.Instance.RemovedContextFromServer) {
27805
+ this.setLastSavedRouteEvent(aRtEvt);
27806
+ }
27807
+ }
27675
27808
  handleFocus(ctrl, line, onClick) {
27676
27809
  return __awaiter(this, void 0, void 0, function* () {
27677
27810
  try {
@@ -27992,7 +28125,6 @@ class EventsManager {
27992
28125
  task.ActionManager.enable(InternalInterface.MG_ACT_ZOOM, true);
27993
28126
  if (ctrl.isTextControl() || ctrl.isChoiceControl())
27994
28127
  ctrl.SetKeyboardLanguage(false);
27995
- yield ctrl.refreshDefaultButton();
27996
28128
  if (ctrl.Type === MgControlType.CTRL_TYPE_BUTTON)
27997
28129
  task.ActionManager.enable(InternalInterface.MG_ACT_BUTTON, true);
27998
28130
  yield task.setCreateDeleteActsEnableState();
@@ -28053,9 +28185,6 @@ class EventsManager {
28053
28185
  case InternalInterface.MG_ACT_CTRL_MOUSEUP:
28054
28186
  yield this.handleMouseUp(ctrl, displayLine, evt.isProduceClick());
28055
28187
  return false;
28056
- case InternalInterface.MG_ACT_DEFAULT_BUTTON:
28057
- yield this.onActDefaultButton(form, evt);
28058
- return false;
28059
28188
  case InternalInterface.MG_ACT_SELECTION:
28060
28189
  yield this.onActSelection(ctrl, form, evt);
28061
28190
  return false;
@@ -28151,9 +28280,9 @@ class EventsManager {
28151
28280
  }
28152
28281
  if (form.HasTable())
28153
28282
  yield form.bringRecordToPage();
28154
- yield form.RefreshDisplay(Constants.TASK_REFRESH_CURR_REC);
28155
28283
  if (task.getLevel() !== Constants.TASK_LEVEL_TASK)
28156
28284
  return false;
28285
+ yield form.RefreshDisplay(Constants.TASK_REFRESH_CURR_REC);
28157
28286
  Logger.Instance.WriteDevToLog("RECORD PREFIX: " + task.queryTaskPath());
28158
28287
  (dv.getCurrRec()).setForceSaveOrg(false);
28159
28288
  (dv.getCurrRec()).Synced = false;
@@ -28249,6 +28378,7 @@ class EventsManager {
28249
28378
  Manager.CleanMessagePane(task);
28250
28379
  ctrl.InControl = false;
28251
28380
  ctrl.ClipBoardDataExists = false;
28381
+ ctrl.ValidateControl = true;
28252
28382
  ctrl.setInControlSuffix(true);
28253
28383
  break;
28254
28384
  }
@@ -28273,7 +28403,7 @@ class EventsManager {
28273
28403
  mgVal = yield ctrl.getMgValue(value);
28274
28404
  var rec = task.DataView.getCurrRec();
28275
28405
  encodedVal = rec.getXMLForValue(ctrl.getField().getId(), mgVal);
28276
- cmd = CommandFactory.CreateExecOperCommand(task.getTaskTag(), null, Int32.MinValue, ctrl.getDitIdx(), encodedVal);
28406
+ cmd = CommandFactory.CreateSelectProgramCommand(task.getTaskTag(), null, Int32.MinValue, ctrl.getDitIdx(), encodedVal);
28277
28407
  task.getMGData().CmdsToServer.Add(cmd);
28278
28408
  let commandsProcessorServer = CommandsProcessorManager.GetCommandsProcessor();
28279
28409
  yield commandsProcessorServer.Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
@@ -28320,14 +28450,6 @@ class EventsManager {
28320
28450
  yield this.handleSelection(ctrl, displayLine, evt.getValue());
28321
28451
  });
28322
28452
  }
28323
- onActDefaultButton(form, evt) {
28324
- return __awaiter(this, void 0, void 0, function* () {
28325
- let ctrl = yield form.getDefaultButton(true);
28326
- if (ctrl === null)
28327
- return;
28328
- yield this.onActSelection(ctrl, form, evt);
28329
- });
28330
- }
28331
28453
  onSubformClose(task, evt) {
28332
28454
  return __awaiter(this, void 0, void 0, function* () {
28333
28455
  if ((evt.getArgList() != null) && (evt.getArgList().getSize() === 1)) {
@@ -28442,9 +28564,6 @@ class EventsManager {
28442
28564
  case InternalInterface.MG_ACT_SUBFORM_CLOSE:
28443
28565
  yield this.onSubformClose(task, evt);
28444
28566
  break;
28445
- case InternalInterface.MG_ACT_DEFAULT_BUTTON:
28446
- yield this.onActDefaultButton(form, evt);
28447
- break;
28448
28567
  case InternalInterface.MG_ACT_BUTTON:
28449
28568
  case InternalInterface.MG_ACT_CTRL_HIT:
28450
28569
  if (ctrl.Type === MgControlType.CTRL_TYPE_BUTTON &&
@@ -28461,6 +28580,7 @@ class EventsManager {
28461
28580
  aRtEvt.setArgList(ctrl.ArgList);
28462
28581
  yield aRtEvt.setPublicName();
28463
28582
  this.addToTail(aRtEvt);
28583
+ this.checkAndSaveRouteEventIfCtxRemovedFromSrvr(aRtEvt);
28464
28584
  }
28465
28585
  }
28466
28586
  else if (ctrl.Type === MgControlType.CTRL_TYPE_TAB) {
@@ -28752,6 +28872,29 @@ class EventsManager {
28752
28872
  cmdsToServer.Add(cmd);
28753
28873
  yield server.Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS);
28754
28874
  break;
28875
+ case InternalInterface.MG_ACT_CONTEXT_REMOVE:
28876
+ let currRecord = LastFocusedManager.Instance.getLastFocusedTask().DataView.getCurrRec();
28877
+ if (ClientManager.TransCacheExists() || (currRecord != null && currRecord.Modified)) {
28878
+ console.log('Pending transaction/record is modified, discarded \'Context Remove\' event.');
28879
+ }
28880
+ else {
28881
+ if (Environment.Instance.getClientContextInactivityTimeout() > 0) {
28882
+ yield this.ExecuteClientContextInactivityTimer();
28883
+ }
28884
+ if (!EventsManager.clientContextInactivityTimerAborted) {
28885
+ let contextTerminationEventCommand = CommandFactory.CreateContextTerminationEventCommand(MGDataCollection.Instance.StartupMgData.getFirstTask().getTaskTag());
28886
+ MGDataCollection.Instance.getCurrMGData().CmdsToServer.Add(contextTerminationEventCommand);
28887
+ RemoteCommandsProcessor.GetInstance().Execute(CommandsProcessorBase_SendingInstruction.ONLY_COMMANDS);
28888
+ console.log('Removed context from server');
28889
+ RuntimeContextBase.Instance.RemovingContextFromServer = true;
28890
+ }
28891
+ else {
28892
+ console.log('Discarded \'Context Remove\' event as user event occurred.');
28893
+ EventsManager.clientContextInactivityTimerAborted = false;
28894
+ break;
28895
+ }
28896
+ }
28897
+ break;
28755
28898
  case InternalInterface.MG_ACT_SERVER_TERMINATION:
28756
28899
  cmd = CommandFactory.CreateEventCommand(task.getTaskTag(), intEvtCode);
28757
28900
  cmdsToServer.Add(cmd);
@@ -29250,6 +29393,10 @@ class EventsManager {
29250
29393
  yield fld.updateDisplay();
29251
29394
  task.setLevel(Constants.TASK_LEVEL_RECORD);
29252
29395
  ctrl.setInControlSuffix(false);
29396
+ ctrl.IsInteractiveUpdate = false;
29397
+ if (ctrl.PropertyExists(PropInterface.PROP_TYPE_CUSTOM_VALIDATORS))
29398
+ yield ctrl.getProp(PropInterface.PROP_TYPE_CUSTOM_VALIDATORS).RefreshDisplay(true);
29399
+ ctrl.ValidateControl = false;
29253
29400
  LastFocusedManager.setLastFocusedControl(task, null);
29254
29401
  if (yield task.evalEndCond(ConstInterface.END_COND_EVAL_IMMIDIATE))
29255
29402
  yield task.endTask(true, false, false);
@@ -29480,6 +29627,45 @@ class EventsManager {
29480
29627
  return null;
29481
29628
  return this._rtEvents.pop();
29482
29629
  }
29630
+ storeLastSavedRouteEventOnLocalStorage() {
29631
+ let dataStorage = window.localStorage;
29632
+ if (this.getLastSavedRouteEvent() != null) {
29633
+ let rtEvt = this.getLastSavedRouteEvent();
29634
+ dataStorage.setItem(ConstInterface.LAST_ROUTE_EVENT, "1");
29635
+ dataStorage.setItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK, JSON.stringify(rtEvt.getTask().TaskDefinitionId));
29636
+ if (rtEvt.getArgList().getSize() > 0) {
29637
+ let str = new StringBuilder();
29638
+ rtEvt.getArgList().buildXML(str);
29639
+ dataStorage.setItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST, str.toString());
29640
+ }
29641
+ }
29642
+ }
29643
+ restoreLastSavedRouteEventFromLocalStorage() {
29644
+ let dataStorage = window.localStorage;
29645
+ let lastRouteEvent = dataStorage.getItem(ConstInterface.LAST_ROUTE_EVENT);
29646
+ if (lastRouteEvent === "1") {
29647
+ let srcTaskDefinitionStr = dataStorage.getItem(ConstInterface.LAST_ROUTE_EVENT_SRC_TSK);
29648
+ let routeArgListStr = dataStorage.getItem(ConstInterface.LAST_ROUTE_EVENT_ARG_LIST);
29649
+ let taskDefinitionId = new TaskDefinitionId();
29650
+ taskDefinitionId.fromJSON(srcTaskDefinitionStr);
29651
+ let srcTask = MGDataCollection.Instance.getCurrMGData().getTaskByTaskDefinitionID(taskDefinitionId);
29652
+ let args = null;
29653
+ if (routeArgListStr != null) {
29654
+ args = new ArgumentsList();
29655
+ args.fillList(routeArgListStr, srcTask);
29656
+ }
29657
+ EventsManager.Instance.AddLastSavedRouteEvent(srcTask, args);
29658
+ }
29659
+ }
29660
+ getLastSavedRouteEvent() {
29661
+ return this.lastSavedRouteEvent;
29662
+ }
29663
+ setLastSavedRouteEvent(rtEvt) {
29664
+ if (rtEvt == null)
29665
+ this.lastSavedRouteEvent = null;
29666
+ else
29667
+ this.lastSavedRouteEvent = rtEvt.replicate();
29668
+ }
29483
29669
  getLastRtEvent() {
29484
29670
  if (this._rtEvents.count() === 0)
29485
29671
  return null;
@@ -29807,6 +29993,8 @@ EventsManager.Timer_Timeout_Infinite = -1;
29807
29993
  EventsManager.REAL_ONLY = true;
29808
29994
  EventsManager.MAX_OPER = 9999;
29809
29995
  EventsManager.userGrantedForContextActivity = true;
29996
+ EventsManager.clientInactivityTimerON = false;
29997
+ EventsManager.clientContextInactivityTimerAborted = false;
29810
29998
  EventsManager.Instance = new EventsManager();
29811
29999
  EventsManager.clientBusyTimeStart = 0;
29812
30000
 
@@ -30346,7 +30534,6 @@ class EnhancedVerifyCommand extends VerifyCommand {
30346
30534
  constructor() {
30347
30535
  super();
30348
30536
  this._buttonsID = '\0';
30349
- this._defaultButton = 0;
30350
30537
  this._image = '\0';
30351
30538
  this._returnValStr = null;
30352
30539
  this._returnVal = null;
@@ -30361,7 +30548,6 @@ class EnhancedVerifyCommand extends VerifyCommand {
30361
30548
  mlsTransTitle.value = LanguageData.Instance.translate(this._title);
30362
30549
  style.value = Operation.getButtons(this._buttonsID);
30363
30550
  style.value |= Operation.getImage(this._image);
30364
- style.value |= Operation.getDefaultButton(this._defaultButton);
30365
30551
  if (task !== null) {
30366
30552
  if (Task.isMainProgramField(this._returnValStr)) {
30367
30553
  this._returnVal = Operation.InitField(this._returnValStr, task);
@@ -30376,9 +30562,6 @@ class EnhancedVerifyCommand extends VerifyCommand {
30376
30562
  case ConstInterface.MG_ATTR_BUTTONS:
30377
30563
  this._buttonsID = value[0];
30378
30564
  break;
30379
- case ConstInterface.MG_ATTR_DEFAULT_BUTTON:
30380
- this._defaultButton = XmlParser.getInt(value);
30381
- break;
30382
30565
  case ConstInterface.MG_ATTR_RETURN_VAL:
30383
30566
  this._returnValStr = value;
30384
30567
  break;
@@ -30895,7 +31078,7 @@ class CommandsTable {
30895
31078
  }
30896
31079
  }
30897
31080
 
30898
- let CurrentClientVersion = '4.800.0-dev480.93';
31081
+ let CurrentClientVersion = '4.800.0';
30899
31082
 
30900
31083
  class ClientManager {
30901
31084
  constructor() {
@@ -31005,7 +31188,7 @@ class ClientManager {
31005
31188
  case "getRows":
31006
31189
  dvRowIdx = lineIdx - task.DataView.RecordsBeforeCurrentView;
31007
31190
  let lastFocusedVal = { guiMgControl: task.getForm().getTableCtrl(), Line: dvRowIdx, Val: "" };
31008
- Events.OnGetRowsData(task.getForm().getTableCtrl(), dvRowIdx, false, lastFocusedVal);
31191
+ Events.OnGetRowsData(task.getForm().getTableCtrl(), dvRowIdx, true, lastFocusedVal);
31009
31192
  break;
31010
31193
  case "RouterNavigate":
31011
31194
  EventsManager.Instance.AddRouteEvent(task, InternalInterface.MG_ACT_WEBCLIENT_ROUTE, guiEvent.RouterPath, guiEvent.RouterOutletName, guiEvent.RouterParams);
@@ -31359,5 +31542,5 @@ class Process {
31359
31542
  }
31360
31543
  }
31361
31544
 
31362
- export { AbortCommand, AccessHelper, ActionManager, AddLocateCommand, AddRangeCommand, AddSortCommand, AddUserLocateDataViewCommand, AddUserLocateRemoteDataViewCommand, AddUserRangeDataviewCommand, AddUserRangeRemoteDataViewCommand, AddUserSortDataViewCommand, AddUserSortRemoteDataViewCommand, Argument, ArgumentsList, Boundary, BrowserEscEventCommand, ClientManager, ClientOriginatedCommand, ClientOriginatedCommandSerializer, ClientOriginatedCommandTaskTag, ClientRefreshCommand, ClientTargetedCommandBase, ClientTargetedCommandType, ColumnSortEventCommand, CommandFactory, CommandSerializationHelper, CommandsProcessorBase, CommandsProcessorBase_SendingInstruction, CommandsProcessorBase_SessionStage, CommandsProcessorManager, CommandsTable, CompMainPrgTable, ComputeEventCommand, ConstInterface, ConstUtils, ContextTerminationEventCommand, ContextTimeoutResetCommand, ControlItemsRefreshCommand, CookieService, CreatedFormVector, CurrentClientVersion, DataSourceIdKey, DataView, DataViewBase, DataViewCommandBase, DataViewCommandType, DataViewOutputCommand, DataviewCommand, DataviewHeaderBase, DataviewHeaderFactory, DataviewHeaders, DataviewHeadersSaxHandler, DataviewManager, DataviewManagerBase, DcValuesReference, DummyDataViewCommand, DvCache, EnhancedVerifyCommand, EnvParamsTable, Environment, EnvironmentDetails, EvaluateCommand, Event, EventCommand, EventHandler, EventHandlerPosition, EventSubType, EventsAllowedType, EventsManager, ExecOperCommand, ExecutionStack, ExecutionStackEntry, ExpDesc, ExpStrTracker, ExpTable, Expression, ExpressionDict, ExpressionEvaluator, ExpressionLocalJpn, Expression_ReturnValue, FetchDataControlValuesEventCommand, Field, FieldBase, FieldsTable as FieldsTableExt, FlowMonitorInterface, FlowMonitorQueue, FormsTable, GUIManager, GlobalCommandsManager, GlobalParams, GlobalParamsQueryCommand, GuiEventsProcessor, HandlersTable, HeapSort, HttpClientAsync, HttpClientBase, HttpClientEvents, HttpClientSync, HttpManager, HttpUtility, IClientTargetedCommand, IndexChangeEventCommand, IniputForceWriteCommand, InteractiveCommunicationsFailureHandler, Key, LanguageData, LastFocusedManager, MGData, MGDataCollection, MagicBridge, MenusDeserializer, MgControl, MgForm, MgPriorityBlockingQueue, MgPriorityQueue, MirrorExpVal, MirrorPrmMap, MirrorString, NonReversibleExitEventCommand, NullValueException, OpenURLCommand, OpeningTaskDetails, Operation, OperationTable, ParamParseResult, PrmMap, Process, QueryCommand, RCTimer, Recompute, RecomputeCommand, RecomputeTable, Recompute_RcmpBy, Record, RecordOutOfDataViewException, RecordOutOfDataViewException_ExceptionType, RecordsTable, RefreshEventCommand, RefreshScreenEventCommand, RemoteCommandsProcessor, RemoteControlItemsRefreshCommand, RemoteDataViewCommandBase, RemoteDataViewCommandFactory, RemoteDataViewCommandUpdateNonModifiable, RemoteDataviewHeader, RemoteDataviewManager, RemoteTaskService, RequestMethod, ResetLocateCommand, ResetRangeCommand, ResetSortCommand, ResetUserLocateRemoteDataviewCommand, ResetUserRangeRemoteDataviewCommand, ResetUserSortRemoteDataviewCommand, ResultCommand, ResultValue, RetVals, ReturnResult, ReturnResultBase, RollbackEventCommand, RollbackEventCommand_RollbackType, RunTimeEvent, RunTimeEventBase, SET_DISPLAYLINE_BY_DV, Scrambler, ServerConfig, ServerError, SetTransactionStateDataviewCommand, SetTransactionStateRemoteDataViewCommand, Sort, SortCollection, SubformOpenEventCommand, SubformRefreshEventCommand, TableCache, TableCacheManager, Task, TaskBase, TaskServiceBase, TaskTransactionManager, Task_Direction, Task_Flow, Task_SubformExecModeEnum, TasksTable, Transaction, TransactionCommand, UniqueIDUtils, UnloadCommand, UserDetails, UserEventsTable, UserRange, VerifyCommand, WriteMessageToServerLogCommand, XMLBasedCommandBuilder, XMLBasedDcValuesBuilder, YesNoExp, getGuiEventObj };
31545
+ export { AbortCommand, AccessHelper, ActionManager, AddLocateCommand, AddRangeCommand, AddSortCommand, AddUserLocateDataViewCommand, AddUserLocateRemoteDataViewCommand, AddUserRangeDataviewCommand, AddUserRangeRemoteDataViewCommand, AddUserSortDataViewCommand, AddUserSortRemoteDataViewCommand, Argument, ArgumentsList, Boundary, BrowserEscEventCommand, ClientManager, ClientOriginatedCommand, ClientOriginatedCommandSerializer, ClientOriginatedCommandTaskTag, ClientRefreshCommand, ClientTargetedCommandBase, ClientTargetedCommandType, ColumnSortEventCommand, CommandFactory, CommandSerializationHelper, CommandsProcessorBase, CommandsProcessorBase_SendingInstruction, CommandsProcessorBase_SessionStage, CommandsProcessorManager, CommandsTable, CompMainPrgTable, ComputeEventCommand, ConstInterface, ConstUtils, ContextTerminationEventCommand, ContextTimeoutResetCommand, ControlItemsRefreshCommand, CookieService, CreatedFormVector, CurrentClientVersion, DataSourceIdKey, DataView, DataViewBase, DataViewCommandBase, DataViewCommandType, DataViewOutputCommand, DataviewCommand, DataviewHeaderBase, DataviewHeaderFactory, DataviewHeaders, DataviewHeadersSaxHandler, DataviewManager, DataviewManagerBase, DcValuesReference, DummyDataViewCommand, DvCache, EnhancedVerifyCommand, EnvParamsTable, Environment, EnvironmentDetails, EvaluateCommand, Event, EventCommand, EventHandler, EventHandlerPosition, EventSubType, EventsAllowedType, EventsManager, ExecOperCommand, ExecutionStack, ExecutionStackEntry, ExpDesc, ExpStrTracker, ExpTable, Expression, ExpressionDict, ExpressionEvaluator, ExpressionLocalJpn, Expression_ReturnValue, FetchDataControlValuesEventCommand, Field, FieldBase, FieldsTable as FieldsTableExt, FlowMonitorInterface, FlowMonitorQueue, FormsTable, GUIManager, GlobalCommandsManager, GlobalParams, GlobalParamsQueryCommand, GuiEventsProcessor, HandlersTable, HeapSort, HttpClientAsync, HttpClientBase, HttpClientEvents, HttpClientSync, HttpManager, HttpUtility, IClientTargetedCommand, IndexChangeEventCommand, IniputForceWriteCommand, InteractiveCommunicationsFailureHandler, Key, LanguageData, LastFocusedManager, MGData, MGDataCollection, MagicBridge, MenusDeserializer, MgControl, MgForm, MgPriorityBlockingQueue, MgPriorityQueue, MirrorExpVal, MirrorPrmMap, MirrorString, NonReversibleExitEventCommand, NullValueException, OpenURLCommand, OpeningTaskDetails, Operation, OperationTable, ParamParseResult, PrmMap, Process, QueryCommand, RCTimer, Recompute, RecomputeCommand, RecomputeTable, Recompute_RcmpBy, Record, RecordOutOfDataViewException, RecordOutOfDataViewException_ExceptionType, RecordsTable, RefreshEventCommand, RefreshScreenEventCommand, RemoteCommandsProcessor, RemoteControlItemsRefreshCommand, RemoteDataViewCommandBase, RemoteDataViewCommandFactory, RemoteDataViewCommandUpdateNonModifiable, RemoteDataviewHeader, RemoteDataviewManager, RemoteTaskService, RequestMethod, ResetLocateCommand, ResetRangeCommand, ResetSortCommand, ResetUserLocateRemoteDataviewCommand, ResetUserRangeRemoteDataviewCommand, ResetUserSortRemoteDataviewCommand, ResultCommand, ResultValue, RetVals, ReturnResult, ReturnResultBase, RollbackEventCommand, RollbackEventCommand_RollbackType, RunTimeEvent, RunTimeEventBase, SET_DISPLAYLINE_BY_DV, Scrambler, SelectProgramCommand, ServerConfig, ServerError, SetTransactionStateDataviewCommand, SetTransactionStateRemoteDataViewCommand, Sort, SortCollection, SubformOpenEventCommand, SubformRefreshEventCommand, TableCache, TableCacheManager, Task, TaskBase, TaskServiceBase, TaskTransactionManager, Task_Direction, Task_Flow, Task_SubformExecModeEnum, TasksTable, Transaction, TransactionCommand, UniqueIDUtils, UnloadCommand, UserDetails, UserEventsTable, UserRange, VerifyCommand, WriteMessageToServerLogCommand, XMLBasedCommandBuilder, XMLBasedDcValuesBuilder, YesNoExp, getGuiEventObj };
31363
31546
  //# sourceMappingURL=magic-xpa-engine.js.map