@magic-xpa/gui 4.900.0-dev490.28 → 4.900.0-dev490.281

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.
@@ -1235,13 +1235,11 @@ class Commands {
1235
1235
  guiCommand.number = num;
1236
1236
  GuiCommandQueue.getInstance().addCommand(guiCommand);
1237
1237
  }
1238
- static addValueWithLine(commandType, obj, line, value, reset = false) {
1238
+ static addValueWithLine(commandType, obj, line, value) {
1239
1239
  let guiCommand = new GuiCommand(obj, commandType);
1240
1240
  guiCommand.value = value;
1241
1241
  guiCommand.line = line;
1242
1242
  if (commandType === CommandType.SET_VALUE) {
1243
- if (reset)
1244
- guiCommand.Bool1 = reset;
1245
1243
  if (obj instanceof GuiMgControl && obj.isChoiceControl()) {
1246
1244
  if (value < 0)
1247
1245
  guiCommand.value = '';
@@ -1597,7 +1595,7 @@ class Manager {
1597
1595
  return Commands.getValue(ctrl, ctrl.getDisplayLine(true));
1598
1596
  }
1599
1597
  static async SetReadOnlyControl(ctrl, isReadOnly) {
1600
- if (ctrl.isTextControl() || ctrl.IsRepeatable) {
1598
+ if (ctrl.isTextControl() || ctrl.IsRepeatable || ctrl.isComboBox() || ctrl.isListBox() || ctrl.isCheckBox() || ctrl.isRadio()) {
1601
1599
  if (UtilStrByteMode.isLocaleDefLangDBCS()) {
1602
1600
  if (await ctrl.getForm().getTask().checkProp(PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY, false))
1603
1601
  return;
@@ -2025,6 +2023,7 @@ class PIC {
2025
2023
  this._maskChars = 0;
2026
2024
  this._maskSize = 0;
2027
2025
  this._mixed = false;
2026
+ this._formatExp = false;
2028
2027
  this._msk = null;
2029
2028
  this._needLength = false;
2030
2029
  this._negative = false;
@@ -2112,6 +2111,12 @@ class PIC {
2112
2111
  decInFirstPos() {
2113
2112
  return this._decPointIsFirst;
2114
2113
  }
2114
+ setFormatExp(val) {
2115
+ this._formatExp = val;
2116
+ }
2117
+ isFormatExp() {
2118
+ return this._formatExp;
2119
+ }
2115
2120
  getPosPref_() {
2116
2121
  return this._posPref.ToString();
2117
2122
  }
@@ -5640,25 +5645,16 @@ class DisplayConvertor {
5640
5645
  case PICInterface.PIC_YY:
5641
5646
  {
5642
5647
  this.int_2_a(outVal, outIdx, 2, breakParams.year, '0');
5643
- let yearStr = NString.FromChars(outVal);
5644
- year = +yearStr.substr(outIdx);
5645
- outIdx += 2;
5646
- len -= 2;
5647
- }
5648
- break;
5649
- case PICInterface.PIC_YY:
5650
- {
5651
- this.int_2_a(outVal, outIdx, 2, breakParams.year, '0');
5652
- let yearStr = NString.FromChars(outVal);
5653
- year = +yearStr.substr(outIdx);
5648
+ let yearStr = NString.FromChars(outVal, outIdx, 2);
5649
+ year = +yearStr;
5654
5650
  outIdx += 2;
5655
5651
  len -= 2;
5656
5652
  }
5657
5653
  break;
5658
5654
  case PICInterface.PIC_YYYY:
5659
- this.int_2_a(outVal, outIdx, 4, year, '0');
5660
- let yearStr = NString.FromChars(outVal);
5661
- 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;
5662
5658
  outIdx += 4;
5663
5659
  len -= 4;
5664
5660
  break;
@@ -9812,7 +9808,7 @@ class Property {
9812
9808
  async onModifiable() {
9813
9809
  if (this._parentType === GuiConstants.PARENT_TYPE_CONTROL) {
9814
9810
  let ctrl = this._parentObj;
9815
- if (ctrl.isTextControl()) {
9811
+ if (ctrl.isTextControl() || ctrl.isChoiceControl() || ctrl.isCheckBox()) {
9816
9812
  let task = this.GetTaskByParentObject();
9817
9813
  let readOnlyValue = !this.GetComputedValueBoolean();
9818
9814
  if ((readOnlyValue || task.getMode() !== Constants.TASK_MODE_QUERY) && ctrl.GetCurrReadOnly() !== readOnlyValue) {
@@ -10388,7 +10384,7 @@ class FieldValidator {
10388
10384
  return valDet;
10389
10385
  }
10390
10386
  if (ctrl.DataType !== StorageAttribute.ALPHA && ctrl.DataType !== StorageAttribute.UNICODE && ctrl.DataType !== StorageAttribute.BLOB) {
10391
- 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()))) {
10392
10388
  let field = ctrl.getField();
10393
10389
  let defaultValue = field.getDefaultValue();
10394
10390
  let text = null;
@@ -11578,7 +11574,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11578
11574
  this._firstRefreshProperties = true;
11579
11575
  this._form = null;
11580
11576
  this._hasValidItmAndDispVal = false;
11581
- this._id = -1;
11582
11577
  this._controlIsn = -1;
11583
11578
  this._linkedParentDitIdx = -1;
11584
11579
  this._orgChoiceDisps = null;
@@ -11621,9 +11616,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11621
11616
  get Form() {
11622
11617
  return this._form;
11623
11618
  }
11624
- get Id() {
11625
- return this._id;
11626
- }
11627
11619
  get ControlIsn() {
11628
11620
  return this._controlIsn;
11629
11621
  }
@@ -11845,9 +11837,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11845
11837
  case XMLConstants.MG_ATTR_CONTAINER:
11846
11838
  this.setContainer(XmlParser.getInt(valueStr));
11847
11839
  break;
11848
- case XMLConstants.MG_ATTR_ID:
11849
- this._id = XmlParser.getInt(valueStr);
11850
- break;
11851
11840
  case XMLConstants.MG_ATTR_CONTROL_ISN:
11852
11841
  this._controlIsn = XmlParser.getInt(valueStr);
11853
11842
  break;
@@ -11982,6 +11971,8 @@ class MgControlBase extends GuiControlPropertyAdapter {
11982
11971
  }
11983
11972
  }
11984
11973
  getPIC() {
11974
+ if (this._picExpExists)
11975
+ this._pic.setFormatExp(this._picExpExists);
11985
11976
  return this._pic;
11986
11977
  }
11987
11978
  getParent() {
@@ -12060,7 +12051,7 @@ class MgControlBase extends GuiControlPropertyAdapter {
12060
12051
  }
12061
12052
  getRangedValue(newVal) {
12062
12053
  let vd;
12063
- vd = this.buildCopyPicture(this.Value, newVal);
12054
+ vd = this.buildPicture(this.Value, newVal);
12064
12055
  vd.evaluate();
12065
12056
  this.ModifiedByUser = true;
12066
12057
  let val = vd.getDispValue();
@@ -12070,7 +12061,7 @@ class MgControlBase extends GuiControlPropertyAdapter {
12070
12061
  let vd;
12071
12062
  let modified = this.ModifiedByUser;
12072
12063
  this.ModifiedByUser = true;
12073
- vd = this.buildCopyPicture(this.Value, newVal);
12064
+ vd = this.buildPicture(this.Value, newVal);
12074
12065
  vd.evaluate();
12075
12066
  this.ModifiedByUser = modified;
12076
12067
  if (vd.ValidationFailed)
@@ -12386,12 +12377,8 @@ class MgControlBase extends GuiControlPropertyAdapter {
12386
12377
  if (super.isButton()) {
12387
12378
  mlsTranslatedValue = Events.Translate(this.Value);
12388
12379
  }
12389
- if (this.isTextControl() || this.isButton()) {
12390
- if (this.isTextControl() && this.getForm().inRefreshDisplay() && this.DataType == StorageAttribute.NUMERIC)
12391
- Commands.addValueWithLine(CommandType.SET_VALUE, this, displayLine, mlsTranslatedValue, true);
12392
- else
12393
- Commands.addValueWithLine(CommandType.SET_VALUE, this, displayLine, mlsTranslatedValue);
12394
- }
12380
+ if (this.isTextControl() || this.isButton())
12381
+ Commands.addValueWithLine(CommandType.SET_VALUE, this, displayLine, mlsTranslatedValue);
12395
12382
  else
12396
12383
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, displayLine, HtmlProperties.Text, mlsTranslatedValue);
12397
12384
  }
@@ -13082,6 +13069,11 @@ class MgControlBase extends GuiControlPropertyAdapter {
13082
13069
  if (prevMustInput !== await this.checkProp(PropInterface.PROP_TYPE_MUST_INPUT, false))
13083
13070
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, this.getDisplayLine(false), HtmlProperties.MustInput, !prevMustInput);
13084
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
+ }
13085
13077
  if (!this.GetComputedBooleanProperty(PropInterface.PROP_TYPE_TAB_IN, true))
13086
13078
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, this, this.getDisplayLine(false), HtmlProperties.TabIndex, -1);
13087
13079
  }
@@ -13398,15 +13390,17 @@ class MgControlBase extends GuiControlPropertyAdapter {
13398
13390
  async ZoomButtonInitialization() {
13399
13391
  if (this.isTextControl() && this.checkIfExistProp(PropInterface.PROP_TYPE_CONNECTED_ZOOM_CONTROL)) {
13400
13392
  let connectedButton = this.Form.CtrlTab.GetControlByIsn((await (await this.getProp(PropInterface.PROP_TYPE_CONNECTED_ZOOM_CONTROL)).getValueInt()));
13401
- let imageFileName = null;
13402
- if (connectedButton.IsImageButton() && connectedButton.PropertyExists(PropInterface.PROP_TYPE_IMAGE_FILENAME)) {
13403
- imageFileName = await (await connectedButton.getProp(PropInterface.PROP_TYPE_IMAGE_FILENAME)).getValue();
13404
- if (!Misc.IsWebUrl(imageFileName))
13405
- imageFileName = "./assets/images/" + imageFileName;
13406
- 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;
13407
13403
  }
13408
- this.ConnectedControl = connectedButton;
13409
- connectedButton.ConnectedControl = this;
13410
13404
  }
13411
13405
  }
13412
13406
  }
@@ -13955,13 +13949,8 @@ class MgFormBase extends GuiFormPropertyAdapter {
13955
13949
  if (idx >= 0 && idx < this.Rows.length)
13956
13950
  this.Rows.set_Item(idx, new Row(false, false));
13957
13951
  }
13958
- SelectRow(sendAlwaysOrRowIdx, sendAlways) {
13959
- if (arguments.length === 0)
13960
- this.SelectRow_0();
13961
- else if (arguments.length === 1)
13962
- this.SelectRow_1(sendAlwaysOrRowIdx);
13963
- else
13964
- this.SelectRow_2(sendAlwaysOrRowIdx, sendAlways);
13952
+ SelectRow() {
13953
+ this.SelectRowByIdx(this.DisplayLine);
13965
13954
  }
13966
13955
  getRowsInPage() {
13967
13956
  return this._rowsInPage;
@@ -14199,19 +14188,13 @@ class MgFormBase extends GuiFormPropertyAdapter {
14199
14188
  this.Rows.SetSize(idx + 1);
14200
14189
  this.Rows.set_Item(idx, new Row(true, true));
14201
14190
  }
14202
- SelectRow_0() {
14203
- this.SelectRow(false);
14204
- }
14205
- SelectRow_1(sendAlways) {
14206
- this.SelectRow(this.DisplayLine, sendAlways);
14207
- }
14208
- SelectRow_2(rowIdx, sendAlways) {
14191
+ SelectRowByIdx(rowIdx) {
14209
14192
  let mainControl = this.getMainControl();
14210
14193
  if (mainControl !== null && this.RefreshRepeatableAllowed) {
14211
14194
  let index = rowIdx;
14212
14195
  if (this._task.DataView.isEmptyDataview())
14213
14196
  index = GuiConstants.NO_ROW_SELECTED;
14214
- if (sendAlways || index !== this._prevSelIndex) {
14197
+ if (index !== this._prevSelIndex) {
14215
14198
  this._prevSelIndex = index;
14216
14199
  Commands.addOperationWithLine(CommandType.SET_PROPERTY, mainControl, 0, HtmlProperties.SelectedRow, index);
14217
14200
  }
@@ -15445,9 +15428,16 @@ class Helps {
15445
15428
  initInnerObjects(foundTagName, parser) {
15446
15429
  if (foundTagName === null)
15447
15430
  return false;
15448
- 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);
15449
15438
  parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) +
15450
15439
  1);
15440
+ }
15451
15441
  else if (foundTagName === XMLConstants.MG_TAG_HELPITEM) {
15452
15442
  let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
15453
15443
  if (endContext !== -1 && endContext < parser.getXMLdata().length) {
@@ -15607,16 +15597,17 @@ class GuiTaskBase {
15607
15597
  constructor() {
15608
15598
  this._flowMonitor = null;
15609
15599
  this._keyboardMappingState = 0xFFFF0000;
15610
- this._refreshType = 'T';
15600
+ this._refreshType = "T";
15611
15601
  this._lastParkedCtrl = null;
15612
15602
  this._brkLevel = null;
15613
15603
  this._brkLevelIndex = -1;
15614
15604
  this._mainLevel = null;
15615
- this._level = '\0';
15605
+ this._level = "\0";
15616
15606
  this._enteredRecLevel = false;
15617
15607
  this._currParkedFld = null;
15618
15608
  this.isInRecompute = false;
15619
15609
  this.CurrentEditingControl = null;
15610
+ this.shouldResumeSubformLayout = true;
15620
15611
  this.ApplicationGuid = null;
15621
15612
  this.ProgramIsn = 0;
15622
15613
  this.TaskIsn = 0;
@@ -15764,7 +15755,7 @@ class GuiTaskBase {
15764
15755
  return this._helpTab.getHelp(idx);
15765
15756
  }
15766
15757
  setProp(propId, val) {
15767
- this._propTab.setProp(propId, val, this, 'T');
15758
+ this._propTab.setProp(propId, val, this, "T");
15768
15759
  }
15769
15760
  setBrkLevel(cBrkLevel, NewBrkLevelIndex) {
15770
15761
  this._brkLevel = cBrkLevel;
@@ -15870,6 +15861,15 @@ class GuiTaskBase {
15870
15861
  this.Form.InInitForm = false;
15871
15862
  }
15872
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
+ }
15873
15873
  GetLastParkedCtrlName(depth) {
15874
15874
  let ancestor = this.GetTaskAncestor(depth);
15875
15875
  if (ancestor === null || ancestor._lastParkedCtrl === null)
@@ -15930,7 +15930,7 @@ class GuiTaskBase {
15930
15930
  return this.GetExpressionStorage(expId);
15931
15931
  }
15932
15932
  async CalculateExpression(expId, resType, length) {
15933
- return Promise.resolve('');
15933
+ return Promise.resolve("");
15934
15934
  }
15935
15935
  isStarted() {
15936
15936
  return true;
@@ -16017,7 +16017,8 @@ class GuiTaskBase {
16017
16017
  this.IsParallel = XmlParser.getBoolean(valueStr);
16018
16018
  break;
16019
16019
  case XMLConstants.MG_ATTR_ROUTER_PATH:
16020
- this.routerPath = valueStr;
16020
+ if (valueStr.trim() != "")
16021
+ this.routerPath = valueStr;
16021
16022
  break;
16022
16023
  case XMLConstants.MG_ATTR_IN_DEFAULT_ROUTER_OUTLET:
16023
16024
  this.inDefaultRouterOutlet = XmlParser.getBoolean(valueStr);