@magic-xpa/gui 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.
@@ -25,8 +25,6 @@ class GuiMgForm extends ControlBase {
25
25
  }
26
26
 
27
27
  class Events {
28
- constructor() {
29
- }
30
28
  static OnFocus(ctrl, line, isProduceClick, onMultiMark) {
31
29
  Debug.Assert(Events.FocusEvent !== null);
32
30
  Events.FocusEvent(ctrl, line, isProduceClick, onMultiMark);
@@ -375,6 +373,8 @@ class Events {
375
373
  Events.CopyDataEvent(guiMgForm, copyData);
376
374
  }
377
375
  }
376
+ constructor() {
377
+ }
378
378
  }
379
379
  Events.NonParkableLastParkedCtrlEvent = null;
380
380
  Events.IsBatchRunningInMainContextEvent = null;
@@ -1153,8 +1153,6 @@ class GuiCommand {
1153
1153
  }
1154
1154
 
1155
1155
  class Commands {
1156
- constructor() {
1157
- }
1158
1156
  static SetResolveCallback(resolveCallback) {
1159
1157
  this.resolveCallback = resolveCallback;
1160
1158
  }
@@ -1317,6 +1315,8 @@ class Commands {
1317
1315
  static invoke() {
1318
1316
  GuiCommandQueue.getInstance().invoke();
1319
1317
  }
1318
+ constructor() {
1319
+ }
1320
1320
  }
1321
1321
  Commands.resolveCallback = null;
1322
1322
 
@@ -1595,7 +1595,7 @@ class Manager {
1595
1595
  return Commands.getValue(ctrl, ctrl.getDisplayLine(true));
1596
1596
  }
1597
1597
  static async SetReadOnlyControl(ctrl, isReadOnly) {
1598
- if (ctrl.isTextControl() || ctrl.IsRepeatable) {
1598
+ if (ctrl.isTextControl() || ctrl.IsRepeatable || ctrl.isComboBox() || ctrl.isListBox() || ctrl.isCheckBox() || ctrl.isRadio()) {
1599
1599
  if (UtilStrByteMode.isLocaleDefLangDBCS()) {
1600
1600
  if (await ctrl.getForm().getTask().checkProp(PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY, false))
1601
1601
  return;
@@ -2023,6 +2023,7 @@ class PIC {
2023
2023
  this._maskChars = 0;
2024
2024
  this._maskSize = 0;
2025
2025
  this._mixed = false;
2026
+ this._formatExp = false;
2026
2027
  this._msk = null;
2027
2028
  this._needLength = false;
2028
2029
  this._negative = false;
@@ -2110,6 +2111,12 @@ class PIC {
2110
2111
  decInFirstPos() {
2111
2112
  return this._decPointIsFirst;
2112
2113
  }
2114
+ setFormatExp(val) {
2115
+ this._formatExp = val;
2116
+ }
2117
+ isFormatExp() {
2118
+ return this._formatExp;
2119
+ }
2113
2120
  getPosPref_() {
2114
2121
  return this._posPref.ToString();
2115
2122
  }
@@ -3263,6 +3270,12 @@ class ValidationDetailsBase {
3263
3270
  }
3264
3271
 
3265
3272
  class NUM_TYPE {
3273
+ set Data(value) {
3274
+ this._data = value;
3275
+ }
3276
+ get Data() {
3277
+ return this._data;
3278
+ }
3266
3279
  constructor(recordHexStrOrByteValOrDecStrOrNumFrom, offsetOrPic, lengthOrCompIdx) {
3267
3280
  this.COMMACHAR = ',';
3268
3281
  this.DECIMALCHAR = '.';
@@ -3290,12 +3303,6 @@ class NUM_TYPE {
3290
3303
  }
3291
3304
  this.constructor_5(recordHexStrOrByteValOrDecStrOrNumFrom);
3292
3305
  }
3293
- set Data(value) {
3294
- this._data = value;
3295
- }
3296
- get Data() {
3297
- return this._data;
3298
- }
3299
3306
  constructor_0() {
3300
3307
  this.initConst();
3301
3308
  this.NUM_ZERO();
@@ -5309,17 +5316,17 @@ HebrewDate.DOW_LEN = 5;
5309
5316
  HebrewDate._localDows = new Array(8);
5310
5317
 
5311
5318
  class DisplayConvertor {
5312
- constructor() {
5313
- this._environment = null;
5314
- this.DATECHAR = 0;
5315
- this._environment = GuiEnvironment.Environment;
5316
- }
5317
5319
  static get Instance() {
5318
5320
  if (DisplayConvertor._instance === null) {
5319
5321
  DisplayConvertor._instance = new DisplayConvertor();
5320
5322
  }
5321
5323
  return DisplayConvertor._instance;
5322
5324
  }
5325
+ constructor() {
5326
+ this._environment = null;
5327
+ this.DATECHAR = 0;
5328
+ this._environment = GuiEnvironment.Environment;
5329
+ }
5323
5330
  getNewDateBreakParams() {
5324
5331
  return new DateBreakParams();
5325
5332
  }
@@ -5638,25 +5645,16 @@ class DisplayConvertor {
5638
5645
  case PICInterface.PIC_YY:
5639
5646
  {
5640
5647
  this.int_2_a(outVal, outIdx, 2, breakParams.year, '0');
5641
- let yearStr = NString.FromChars(outVal);
5642
- year = +yearStr.substr(outIdx);
5643
- outIdx += 2;
5644
- len -= 2;
5645
- }
5646
- break;
5647
- case PICInterface.PIC_YY:
5648
- {
5649
- this.int_2_a(outVal, outIdx, 2, breakParams.year, '0');
5650
- let yearStr = NString.FromChars(outVal);
5651
- year = +yearStr.substr(outIdx);
5648
+ let yearStr = NString.FromChars(outVal, outIdx, 2);
5649
+ year = +yearStr;
5652
5650
  outIdx += 2;
5653
5651
  len -= 2;
5654
5652
  }
5655
5653
  break;
5656
5654
  case PICInterface.PIC_YYYY:
5657
- this.int_2_a(outVal, outIdx, 4, year, '0');
5658
- let yearStr = NString.FromChars(outVal);
5659
- year = +yearStr.substr(outIdx);
5655
+ this.int_2_a(outVal, outIdx, 4, breakParams.year, '0');
5656
+ let yearStr = NString.FromChars(outVal, outIdx, 4);
5657
+ year = +yearStr;
5660
5658
  outIdx += 4;
5661
5659
  len -= 4;
5662
5660
  break;
@@ -8010,6 +8008,12 @@ class CellElement {
8010
8008
  }
8011
8009
 
8012
8010
  class FieldDef {
8011
+ set DbModifiable(value) {
8012
+ this._dbModifiable = value;
8013
+ }
8014
+ get DbModifiable() {
8015
+ return this._dbModifiable;
8016
+ }
8013
8017
  constructor(id) {
8014
8018
  this.DefaultValue = null;
8015
8019
  this.NullAllowed = false;
@@ -8033,12 +8037,6 @@ class FieldDef {
8033
8037
  this._id = id;
8034
8038
  this.VarDisplayName = NString.Empty;
8035
8039
  }
8036
- set DbModifiable(value) {
8037
- this._dbModifiable = value;
8038
- }
8039
- get DbModifiable() {
8040
- return this._dbModifiable;
8041
- }
8042
8040
  get PartOfDataview() {
8043
8041
  return this._partOfDataview;
8044
8042
  }
@@ -8758,6 +8756,9 @@ class CustomValidator {
8758
8756
  getErrMessage() { return this._errorMessage; }
8759
8757
  }
8760
8758
  class Property {
8759
+ get TaskDefinitionId() {
8760
+ return this._taskDefinitionId;
8761
+ }
8761
8762
  constructor(cId, cParentObj, parType, val) {
8762
8763
  this._id = Int32.MinValue;
8763
8764
  this._dataType = StorageAttribute.NONE;
@@ -8782,9 +8783,6 @@ class Property {
8782
8783
  else
8783
8784
  this.constructor_2(cId, cParentObj, parType, val);
8784
8785
  }
8785
- get TaskDefinitionId() {
8786
- return this._taskDefinitionId;
8787
- }
8788
8786
  constructor_0() {
8789
8787
  this._prevValues = new List();
8790
8788
  }
@@ -9810,7 +9808,7 @@ class Property {
9810
9808
  async onModifiable() {
9811
9809
  if (this._parentType === GuiConstants.PARENT_TYPE_CONTROL) {
9812
9810
  let ctrl = this._parentObj;
9813
- if (ctrl.isTextControl()) {
9811
+ if (ctrl.isTextControl() || ctrl.isChoiceControl() || ctrl.isCheckBox()) {
9814
9812
  let task = this.GetTaskByParentObject();
9815
9813
  let readOnlyValue = !this.GetComputedValueBoolean();
9816
9814
  if ((readOnlyValue || task.getMode() !== Constants.TASK_MODE_QUERY) && ctrl.GetCurrReadOnly() !== readOnlyValue) {
@@ -10386,7 +10384,7 @@ class FieldValidator {
10386
10384
  return valDet;
10387
10385
  }
10388
10386
  if (ctrl.DataType !== StorageAttribute.ALPHA && ctrl.DataType !== StorageAttribute.UNICODE && ctrl.DataType !== StorageAttribute.BLOB) {
10389
- if ((typeof this._newvalue === 'string' && this._newvalue.trim().length === 0) || (ctrl.DataType === StorageAttribute.DATE && (ctrl.isDateZero(this._newvalue) || this.isNullDisplayVal()))) {
10387
+ if ((typeof this._newvalue === 'string' && this._newvalue.trim().length === 0) || (ctrl.DataType == StorageAttribute.NUMERIC && this._newvalue == null) || (ctrl.DataType === StorageAttribute.DATE && (ctrl.isDateZero(this._newvalue) || this.isNullDisplayVal()))) {
10390
10388
  let field = ctrl.getField();
10391
10389
  let defaultValue = field.getDefaultValue();
10392
10390
  let text = null;
@@ -11043,6 +11041,15 @@ class FieldValidator {
11043
11041
  }
11044
11042
 
11045
11043
  class ValidationDetails extends ValidationDetailsBase {
11044
+ get ErrorMessage() {
11045
+ return this.errMessage;
11046
+ }
11047
+ set ErrorMessage(msg) {
11048
+ this.errMessage = msg;
11049
+ }
11050
+ get ValidationFailed() {
11051
+ return this._validationFailed;
11052
+ }
11046
11053
  constructor(oldvalueOrRangeStrOrVd, val, range, pic, control) {
11047
11054
  super();
11048
11055
  this._control = null;
@@ -11063,15 +11070,6 @@ class ValidationDetails extends ValidationDetailsBase {
11063
11070
  else if (arguments.length === 1 && (oldvalueOrRangeStrOrVd === null || oldvalueOrRangeStrOrVd instanceof ValidationDetails))
11064
11071
  this.constructor_2(oldvalueOrRangeStrOrVd);
11065
11072
  }
11066
- get ErrorMessage() {
11067
- return this.errMessage;
11068
- }
11069
- set ErrorMessage(msg) {
11070
- this.errMessage = msg;
11071
- }
11072
- get ValidationFailed() {
11073
- return this._validationFailed;
11074
- }
11075
11073
  constructor_0(oldvalue, val, range, pic, control) {
11076
11074
  this._picData = pic;
11077
11075
  this._oldvalue = oldvalue;
@@ -11288,6 +11286,9 @@ class ValidationDetails extends ValidationDetailsBase {
11288
11286
  const EMPTY_DCREF = -2;
11289
11287
  const NOT_FOUND = GuiConstants.DEFAULT_VALUE_INT;
11290
11288
  class DcValues {
11289
+ get HasReferences() {
11290
+ return this._refCount > 0;
11291
+ }
11291
11292
  constructor(empty) {
11292
11293
  this._id = 0;
11293
11294
  this._type = StorageAttribute.NONE;
@@ -11302,9 +11303,6 @@ class DcValues {
11302
11303
  }
11303
11304
  this._isNumericType = false;
11304
11305
  }
11305
- get HasReferences() {
11306
- return this._refCount > 0;
11307
- }
11308
11306
  GetAttr() {
11309
11307
  return this._type;
11310
11308
  }
@@ -11559,6 +11557,16 @@ class FocusManager {
11559
11557
  }
11560
11558
 
11561
11559
  class MgControlBase extends GuiControlPropertyAdapter {
11560
+ set Form(value) {
11561
+ this._form = value;
11562
+ this.GuiMgForm = value;
11563
+ }
11564
+ get Form() {
11565
+ return this._form;
11566
+ }
11567
+ get ControlIsn() {
11568
+ return this._controlIsn;
11569
+ }
11562
11570
  constructor(type, parentMgForm, parentControl) {
11563
11571
  super();
11564
11572
  this._ditIdx = 0;
@@ -11576,7 +11584,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11576
11584
  this._firstRefreshProperties = true;
11577
11585
  this._form = null;
11578
11586
  this._hasValidItmAndDispVal = false;
11579
- this._id = -1;
11580
11587
  this._controlIsn = -1;
11581
11588
  this._linkedParentDitIdx = -1;
11582
11589
  this._orgChoiceDisps = null;
@@ -11612,19 +11619,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11612
11619
  }
11613
11620
  this.constructor_1(type, parentMgForm, parentControl);
11614
11621
  }
11615
- set Form(value) {
11616
- this._form = value;
11617
- this.GuiMgForm = value;
11618
- }
11619
- get Form() {
11620
- return this._form;
11621
- }
11622
- get Id() {
11623
- return this._id;
11624
- }
11625
- get ControlIsn() {
11626
- return this._controlIsn;
11627
- }
11628
11622
  constructor_0() {
11629
11623
  this._linkedControls = new List();
11630
11624
  this.DataType = StorageAttribute.NONE;
@@ -11843,9 +11837,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11843
11837
  case XMLConstants.MG_ATTR_CONTAINER:
11844
11838
  this.setContainer(XmlParser.getInt(valueStr));
11845
11839
  break;
11846
- case XMLConstants.MG_ATTR_ID:
11847
- this._id = XmlParser.getInt(valueStr);
11848
- break;
11849
11840
  case XMLConstants.MG_ATTR_CONTROL_ISN:
11850
11841
  this._controlIsn = XmlParser.getInt(valueStr);
11851
11842
  break;
@@ -11980,6 +11971,8 @@ class MgControlBase extends GuiControlPropertyAdapter {
11980
11971
  }
11981
11972
  }
11982
11973
  getPIC() {
11974
+ if (this._picExpExists)
11975
+ this._pic.setFormatExp(this._picExpExists);
11983
11976
  return this._pic;
11984
11977
  }
11985
11978
  getParent() {
@@ -12058,7 +12051,7 @@ class MgControlBase extends GuiControlPropertyAdapter {
12058
12051
  }
12059
12052
  getRangedValue(newVal) {
12060
12053
  let vd;
12061
- vd = this.buildCopyPicture(this.Value, newVal);
12054
+ vd = this.buildPicture(this.Value, newVal);
12062
12055
  vd.evaluate();
12063
12056
  this.ModifiedByUser = true;
12064
12057
  let val = vd.getDispValue();
@@ -12068,7 +12061,7 @@ class MgControlBase extends GuiControlPropertyAdapter {
12068
12061
  let vd;
12069
12062
  let modified = this.ModifiedByUser;
12070
12063
  this.ModifiedByUser = true;
12071
- vd = this.buildCopyPicture(this.Value, newVal);
12064
+ vd = this.buildPicture(this.Value, newVal);
12072
12065
  vd.evaluate();
12073
12066
  this.ModifiedByUser = modified;
12074
12067
  if (vd.ValidationFailed)
@@ -13076,6 +13069,11 @@ class MgControlBase extends GuiControlPropertyAdapter {
13076
13069
  if (prevMustInput !== await this.checkProp(PropInterface.PROP_TYPE_MUST_INPUT, false))
13077
13070
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, this.getDisplayLine(false), HtmlProperties.MustInput, !prevMustInput);
13078
13071
  }
13072
+ else if (mustInputProperty != null) {
13073
+ let mustInputVal = this.GetComputedBooleanProperty(PropInterface.PROP_TYPE_MUST_INPUT, false);
13074
+ if (mustInputVal)
13075
+ Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, this.getDisplayLine(false), HtmlProperties.MustInput, mustInputVal);
13076
+ }
13079
13077
  if (!this.GetComputedBooleanProperty(PropInterface.PROP_TYPE_TAB_IN, true))
13080
13078
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, this.getDisplayLine(false), HtmlProperties.TabIndex, -1);
13081
13079
  }
@@ -13392,15 +13390,17 @@ class MgControlBase extends GuiControlPropertyAdapter {
13392
13390
  async ZoomButtonInitialization() {
13393
13391
  if (this.isTextControl() && this.checkIfExistProp(PropInterface.PROP_TYPE_CONNECTED_ZOOM_CONTROL)) {
13394
13392
  let connectedButton = this.Form.CtrlTab.GetControlByIsn((await (await this.getProp(PropInterface.PROP_TYPE_CONNECTED_ZOOM_CONTROL)).getValueInt()));
13395
- let imageFileName = null;
13396
- if (connectedButton.IsImageButton() && connectedButton.PropertyExists(PropInterface.PROP_TYPE_IMAGE_FILENAME)) {
13397
- imageFileName = await (await connectedButton.getProp(PropInterface.PROP_TYPE_IMAGE_FILENAME)).getValue();
13398
- if (!Misc.IsWebUrl(imageFileName))
13399
- imageFileName = "./assets/images/" + imageFileName;
13400
- Commands.addOperationWithLine(CommandType.SET_STYLE, this, 0, MagicProperties.ImageFile, imageFileName);
13393
+ if (connectedButton) {
13394
+ let imageFileName = null;
13395
+ if (connectedButton.IsImageButton() && connectedButton.PropertyExists(PropInterface.PROP_TYPE_IMAGE_FILENAME)) {
13396
+ imageFileName = await (await connectedButton.getProp(PropInterface.PROP_TYPE_IMAGE_FILENAME)).getValue();
13397
+ if (!Misc.IsWebUrl(imageFileName))
13398
+ imageFileName = "./assets/images/" + imageFileName;
13399
+ Commands.addOperationWithLine(CommandType.SET_STYLE, this, 0, MagicProperties.ImageFile, imageFileName);
13400
+ }
13401
+ this.ConnectedControl = connectedButton;
13402
+ connectedButton.ConnectedControl = this;
13401
13403
  }
13402
- this.ConnectedControl = connectedButton;
13403
- connectedButton.ConnectedControl = this;
13404
13404
  }
13405
13405
  }
13406
13406
  }
@@ -13949,13 +13949,8 @@ class MgFormBase extends GuiFormPropertyAdapter {
13949
13949
  if (idx >= 0 && idx < this.Rows.length)
13950
13950
  this.Rows.set_Item(idx, new Row(false, false));
13951
13951
  }
13952
- SelectRow(sendAlwaysOrRowIdx, sendAlways) {
13953
- if (arguments.length === 0)
13954
- this.SelectRow_0();
13955
- else if (arguments.length === 1)
13956
- this.SelectRow_1(sendAlwaysOrRowIdx);
13957
- else
13958
- this.SelectRow_2(sendAlwaysOrRowIdx, sendAlways);
13952
+ SelectRow() {
13953
+ this.SelectRowByIdx(this.DisplayLine);
13959
13954
  }
13960
13955
  getRowsInPage() {
13961
13956
  return this._rowsInPage;
@@ -14193,19 +14188,13 @@ class MgFormBase extends GuiFormPropertyAdapter {
14193
14188
  this.Rows.SetSize(idx + 1);
14194
14189
  this.Rows.set_Item(idx, new Row(true, true));
14195
14190
  }
14196
- SelectRow_0() {
14197
- this.SelectRow(false);
14198
- }
14199
- SelectRow_1(sendAlways) {
14200
- this.SelectRow(this.DisplayLine, sendAlways);
14201
- }
14202
- SelectRow_2(rowIdx, sendAlways) {
14191
+ SelectRowByIdx(rowIdx) {
14203
14192
  let mainControl = this.getMainControl();
14204
14193
  if (mainControl !== null && this.RefreshRepeatableAllowed) {
14205
14194
  let index = rowIdx;
14206
14195
  if (this._task.DataView.isEmptyDataview())
14207
14196
  index = GuiConstants.NO_ROW_SELECTED;
14208
- if (sendAlways || index !== this._prevSelIndex) {
14197
+ if (index !== this._prevSelIndex) {
14209
14198
  this._prevSelIndex = index;
14210
14199
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, mainControl, 0, HtmlProperties.SelectedRow, index);
14211
14200
  }
@@ -15369,6 +15358,9 @@ class ExpVal {
15369
15358
  class MagicHelp {
15370
15359
  }
15371
15360
  class InternalHelp extends MagicHelp {
15361
+ GetHelpType() {
15362
+ return HelpType.Internal;
15363
+ }
15372
15364
  constructor() {
15373
15365
  super();
15374
15366
  this.val = null;
@@ -15385,47 +15377,44 @@ class InternalHelp extends MagicHelp {
15385
15377
  this.TitleBar = 0;
15386
15378
  this.FontTableIndex = 0;
15387
15379
  }
15388
- GetHelpType() {
15389
- return HelpType.Internal;
15390
- }
15391
15380
  }
15392
15381
  class PromptpHelp extends MagicHelp {
15382
+ GetHelpType() {
15383
+ return HelpType.Prompt;
15384
+ }
15393
15385
  constructor() {
15394
15386
  super();
15395
15387
  this.PromptHelpText = null;
15396
15388
  }
15397
- GetHelpType() {
15398
- return HelpType.Prompt;
15399
- }
15400
15389
  }
15401
15390
  class ToolTipHelp extends MagicHelp {
15391
+ GetHelpType() {
15392
+ return HelpType.Tooltip;
15393
+ }
15402
15394
  constructor() {
15403
15395
  super();
15404
15396
  this.tooltipHelpText = null;
15405
15397
  }
15406
- GetHelpType() {
15407
- return HelpType.Tooltip;
15408
- }
15409
15398
  }
15410
15399
  class URLHelp extends MagicHelp {
15400
+ GetHelpType() {
15401
+ return HelpType.URL;
15402
+ }
15411
15403
  constructor() {
15412
15404
  super();
15413
15405
  this.urlHelpText = null;
15414
15406
  }
15415
- GetHelpType() {
15416
- return HelpType.URL;
15417
- }
15418
15407
  }
15419
15408
  class WindowsHelp extends MagicHelp {
15409
+ GetHelpType() {
15410
+ return HelpType.Windows;
15411
+ }
15420
15412
  constructor() {
15421
15413
  super();
15422
15414
  this.FilePath = null;
15423
15415
  this.HelpCommand = 0;
15424
15416
  this.HelpKey = null;
15425
15417
  }
15426
- GetHelpType() {
15427
- return HelpType.Windows;
15428
- }
15429
15418
  }
15430
15419
  class Helps {
15431
15420
  constructor() {
@@ -15439,9 +15428,16 @@ class Helps {
15439
15428
  initInnerObjects(foundTagName, parser) {
15440
15429
  if (foundTagName === null)
15441
15430
  return false;
15442
- if (foundTagName === XMLConstants.MG_TAG_HELPTABLE)
15431
+ if (foundTagName === XMLConstants.MG_TAG_HELPTABLE) {
15432
+ let currrentIndex = parser.getCurrIndex();
15433
+ let encoded = parser.ReadContentOfCurrentElement().trim();
15434
+ let decoded = Base64.decode(encoded.substr(0, encoded.length).trim());
15435
+ let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
15436
+ parser.setXMLdata(newXmlData);
15437
+ parser.setCurrIndex(currrentIndex);
15443
15438
  parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) +
15444
15439
  1);
15440
+ }
15445
15441
  else if (foundTagName === XMLConstants.MG_TAG_HELPITEM) {
15446
15442
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
15447
15443
  if (endContext !== -1 && endContext < parser.getXMLdata().length) {
@@ -15598,19 +15594,35 @@ class GuiDataCollection {
15598
15594
  GuiDataCollection.MGDataTable = null;
15599
15595
 
15600
15596
  class GuiTaskBase {
15597
+ Init() {
15598
+ this.DataView.Init();
15599
+ }
15600
+ get RouterPath() {
15601
+ return this.routerPath;
15602
+ }
15603
+ get RouterParams() {
15604
+ return this.routeParams;
15605
+ }
15606
+ get InDefaultRouterOutlet() {
15607
+ return this.inDefaultRouterOutlet;
15608
+ }
15609
+ get IsBlockingBatch() {
15610
+ return !this._isMainPrg && this.isOpenWin() && !this._allowEvents && !this.IsInteractive;
15611
+ }
15601
15612
  constructor() {
15602
15613
  this._flowMonitor = null;
15603
15614
  this._keyboardMappingState = 0xFFFF0000;
15604
- this._refreshType = 'T';
15615
+ this._refreshType = "T";
15605
15616
  this._lastParkedCtrl = null;
15606
15617
  this._brkLevel = null;
15607
15618
  this._brkLevelIndex = -1;
15608
15619
  this._mainLevel = null;
15609
- this._level = '\0';
15620
+ this._level = "\0";
15610
15621
  this._enteredRecLevel = false;
15611
15622
  this._currParkedFld = null;
15612
15623
  this.isInRecompute = false;
15613
15624
  this.CurrentEditingControl = null;
15625
+ this.shouldResumeSubformLayout = true;
15614
15626
  this.ApplicationGuid = null;
15615
15627
  this.ProgramIsn = 0;
15616
15628
  this.TaskIsn = 0;
@@ -15641,21 +15653,6 @@ class GuiTaskBase {
15641
15653
  this._nullArithmetic = Constants.NULL_ARITH_USE_DEF;
15642
15654
  this._propTab = new PropTable(this);
15643
15655
  }
15644
- Init() {
15645
- this.DataView.Init();
15646
- }
15647
- get RouterPath() {
15648
- return this.routerPath;
15649
- }
15650
- get RouterParams() {
15651
- return this.routeParams;
15652
- }
15653
- get InDefaultRouterOutlet() {
15654
- return this.inDefaultRouterOutlet;
15655
- }
15656
- get IsBlockingBatch() {
15657
- return !this._isMainPrg && this.isOpenWin() && !this._allowEvents && !this.IsInteractive;
15658
- }
15659
15656
  getTaskTag() {
15660
15657
  return this._taskTag;
15661
15658
  }
@@ -15758,7 +15755,7 @@ class GuiTaskBase {
15758
15755
  return this._helpTab.getHelp(idx);
15759
15756
  }
15760
15757
  setProp(propId, val) {
15761
- this._propTab.setProp(propId, val, this, 'T');
15758
+ this._propTab.setProp(propId, val, this, "T");
15762
15759
  }
15763
15760
  setBrkLevel(cBrkLevel, NewBrkLevelIndex) {
15764
15761
  this._brkLevel = cBrkLevel;
@@ -15864,6 +15861,15 @@ class GuiTaskBase {
15864
15861
  this.Form.InInitForm = false;
15865
15862
  }
15866
15863
  }
15864
+ ResumeSubformLayout() {
15865
+ if (this.Form !== null) {
15866
+ let subFormCtrl = this.Form.getSubFormCtrl();
15867
+ if (subFormCtrl !== null && this.shouldResumeSubformLayout) {
15868
+ Commands.addOperationWithLine(CommandType.SET_PROPERTY, subFormCtrl, 0, HtmlProperties.Visible, subFormCtrl.isVisible());
15869
+ this.shouldResumeSubformLayout = false;
15870
+ }
15871
+ }
15872
+ }
15867
15873
  GetLastParkedCtrlName(depth) {
15868
15874
  let ancestor = this.GetTaskAncestor(depth);
15869
15875
  if (ancestor === null || ancestor._lastParkedCtrl === null)
@@ -15924,7 +15930,7 @@ class GuiTaskBase {
15924
15930
  return this.GetExpressionStorage(expId);
15925
15931
  }
15926
15932
  async CalculateExpression(expId, resType, length) {
15927
- return Promise.resolve('');
15933
+ return Promise.resolve("");
15928
15934
  }
15929
15935
  isStarted() {
15930
15936
  return true;
@@ -16011,7 +16017,8 @@ class GuiTaskBase {
16011
16017
  this.IsParallel = XmlParser.getBoolean(valueStr);
16012
16018
  break;
16013
16019
  case XMLConstants.MG_ATTR_ROUTER_PATH:
16014
- this.routerPath = valueStr;
16020
+ if (valueStr.trim() != "")
16021
+ this.routerPath = valueStr;
16015
16022
  break;
16016
16023
  case XMLConstants.MG_ATTR_IN_DEFAULT_ROUTER_OUTLET:
16017
16024
  this.inDefaultRouterOutlet = XmlParser.getBoolean(valueStr);