@magic-xpa/gui 4.900.0-dev491.7 → 4.901.0-dev491.1

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.
@@ -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
  }
@@ -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;
@@ -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;
@@ -11576,7 +11574,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11576
11574
  this._firstRefreshProperties = true;
11577
11575
  this._form = null;
11578
11576
  this._hasValidItmAndDispVal = false;
11579
- this._id = -1;
11580
11577
  this._controlIsn = -1;
11581
11578
  this._linkedParentDitIdx = -1;
11582
11579
  this._orgChoiceDisps = null;
@@ -11619,9 +11616,6 @@ class MgControlBase extends GuiControlPropertyAdapter {
11619
11616
  get Form() {
11620
11617
  return this._form;
11621
11618
  }
11622
- get Id() {
11623
- return this._id;
11624
- }
11625
11619
  get ControlIsn() {
11626
11620
  return this._controlIsn;
11627
11621
  }
@@ -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
  }
@@ -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) {
@@ -15601,16 +15597,17 @@ class GuiTaskBase {
15601
15597
  constructor() {
15602
15598
  this._flowMonitor = null;
15603
15599
  this._keyboardMappingState = 0xFFFF0000;
15604
- this._refreshType = 'T';
15600
+ this._refreshType = "T";
15605
15601
  this._lastParkedCtrl = null;
15606
15602
  this._brkLevel = null;
15607
15603
  this._brkLevelIndex = -1;
15608
15604
  this._mainLevel = null;
15609
- this._level = '\0';
15605
+ this._level = "\0";
15610
15606
  this._enteredRecLevel = false;
15611
15607
  this._currParkedFld = null;
15612
15608
  this.isInRecompute = false;
15613
15609
  this.CurrentEditingControl = null;
15610
+ this.shouldResumeSubformLayout = true;
15614
15611
  this.ApplicationGuid = null;
15615
15612
  this.ProgramIsn = 0;
15616
15613
  this.TaskIsn = 0;
@@ -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);