@magic-xpa/engine 4.900.0-dev491.6 → 4.900.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.
@@ -1205,7 +1205,8 @@ class MgControl extends MgControlBase {
1205
1205
  if (!isTagProcessed) {
1206
1206
  switch (attribute) {
1207
1207
  case ConstInterface.MG_ATTR_SUBFORM_TASK:
1208
- this._subformTaskId = valueStr;
1208
+ if (valueStr.trim() != "")
1209
+ this._subformTaskId = valueStr;
1209
1210
  break;
1210
1211
  case ConstInterface.MG_ATTR_REFRESHON:
1211
1212
  this.refreshOnString = valueStr.trim();
@@ -4132,9 +4133,10 @@ class Scrambler {
4132
4133
  if (high > (sqrt / 2))
4133
4134
  high = Math.floor(sqrt / 2);
4134
4135
  delta = (Math.random() * (high - low)) + low;
4136
+ delta = Math.floor(delta);
4135
4137
  if (delta === Scrambler.XML_ILLEGAL_RANDOM)
4136
4138
  delta++;
4137
- return Math.floor(delta);
4139
+ return delta;
4138
4140
  }
4139
4141
  static UnScramble(inVal, beginOffSet, endOffSet) {
4140
4142
  if (!Scrambler.ScramblingEnabled) {
@@ -6124,17 +6126,22 @@ class LanguageData {
6124
6126
  if (this._mlsContent.length > 0) {
6125
6127
  let linePairs = 0;
6126
6128
  let srcLine = this._mlsContent + 3;
6129
+ let transLine;
6127
6130
  this._mlsStrings = new Hashtable();
6128
- let linesStr = this._mlsContent.substring(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6131
+ let linesStr = this._mlsContent.substr(this._mlsContent.length - MLS_EOF_CHARS_TO_READ, 8);
6129
6132
  linePairs = parseInt(linesStr.toString(), 16);
6130
6133
  let tokens = StrUtil.tokenize(srcLine.toString(), "\n");
6131
- for (let line = 0; line < linePairs * 2; line += 2) {
6132
- if (this._mlsStrings.get_Item(tokens[line].toString()) == null)
6133
- this._mlsStrings.set_Item(tokens[line].toString(), tokens[line + 1].toString());
6134
+ for (let pairNum = 0; pairNum < linePairs * 2; pairNum += 2) {
6135
+ srcLine = tokens[pairNum].substr(0, tokens[pairNum].length - 1);
6136
+ transLine = tokens[pairNum + 1].substr(0, tokens[pairNum + 1].length - 1);
6137
+ if (this._mlsStrings.get_Item(srcLine.toString()) == null)
6138
+ this._mlsStrings.set_Item(srcLine.toString(), transLine);
6134
6139
  }
6135
6140
  }
6136
6141
  }
6137
6142
  else if (this._mlsFileUrl != null) {
6143
+ if (this._mlsFileUrl.startsWith("./"))
6144
+ this._mlsFileUrl = NString.Replace(this._mlsFileUrl, './', './assets/cache/');
6138
6145
  let contentStr = await CommandsProcessorManager.GetContent(this._mlsFileUrl, true);
6139
6146
  let buffer = contentStr;
6140
6147
  if (buffer != null && buffer.length > 0) {
@@ -9261,8 +9268,8 @@ class Operation {
9261
9268
  if (rtEvnt !== null) {
9262
9269
  this._routeParams = rtEvnt.getRouteParamList();
9263
9270
  if ((await rtEvnt.getArgList().getArg(0).getValue(StorageAttribute.ALPHA, 0)).trim() === this._routerPath &&
9264
- ((rtEvnt.getArgList().getArg(1).skipArg()) ||
9265
- (await rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName))
9271
+ ((rtEvnt.getArgList().getArg(1).skipArg() && destSubForm === this._task.getForm().DefaultRouterOutlet) ||
9272
+ (!rtEvnt.getArgList().getArg(1).skipArg() && (await rtEvnt.getArgList().getArg(1).getValue(StorageAttribute.ALPHA, 0)).trim() === this._originalRouterOutletName)))
9266
9273
  canRoute = true;
9267
9274
  if (!canRoute)
9268
9275
  return false;
@@ -10125,7 +10132,7 @@ class CookieService {
10125
10132
  var cookie = cookies[i];
10126
10133
  var eqPos = cookie.indexOf('=');
10127
10134
  var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
10128
- if (cookieName === decodeURI(name)) {
10135
+ if (cookieName === NString.TrimStart(decodeURI(name))) {
10129
10136
  document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';
10130
10137
  return true;
10131
10138
  }
@@ -14195,7 +14202,7 @@ class ExpressionEvaluator extends GuiExpressionEvaluator {
14195
14202
  }
14196
14203
  path = args[3];
14197
14204
  domain = args[4];
14198
- resVal.BoolVal = CookieService.setCookie(cookieName, args[0], nativeDt, path, domain, secure, sameSite);
14205
+ resVal.BoolVal = CookieService.setCookie(cookieName, (args[0] != null ? args[0].toString() : ""), nativeDt, path, domain, secure, sameSite);
14199
14206
  }
14200
14207
  eval_op_get_cookie(cookieName, resVal) {
14201
14208
  resVal.StrVal = CookieService.getCookie(cookieName);
@@ -16261,7 +16268,8 @@ class Field extends FieldBase {
16261
16268
  }
16262
16269
  break;
16263
16270
  case ConstInterface.MG_ATTR_CHACHED_FLD_ID:
16264
- this.CacheTableFldIdx = NNumber.Parse(data[1]);
16271
+ if (data[0] != "")
16272
+ this.CacheTableFldIdx = NNumber.Parse(data[1]);
16265
16273
  break;
16266
16274
  case ConstInterface.MG_ATTR_LOCATE:
16267
16275
  this.Locate = new Boundary(this.getTask(), NNumber.Parse(data[1]), NNumber.Parse(data[0]), this.getType(), this.getSize(), this.CacheTableFldIdx);
@@ -20442,8 +20450,8 @@ class RemoteTaskService extends TaskServiceBase {
20442
20450
  OwnerTransactionTask = task.DataviewManager.RemoteDataviewManager.Transaction.OwnerTask;
20443
20451
  return OwnerTransactionTask;
20444
20452
  }
20445
- static PreparePropMainDisplay(task) {
20446
- task.ComputeMainDisplay();
20453
+ static async PreparePropMainDisplay(task) {
20454
+ await task.ComputeMainDisplay();
20447
20455
  return task.FormIsLegal() ? ReturnResult.SuccessfulResult : new ReturnResult(MsgInterface.BRKTAB_STR_ERR_FORM);
20448
20456
  }
20449
20457
  }
@@ -20843,15 +20851,18 @@ class RemoteDataviewHeader extends DataviewHeaderBase {
20843
20851
  setAttribute(attribute, valueStr) {
20844
20852
  switch (attribute) {
20845
20853
  case ConstInterface.MG_ATTR_CACHED_TABLE:
20846
- if (TableCacheManager.Instance.TableExists(valueStr))
20847
- this._table = TableCacheManager.Instance.GetTableById(valueStr);
20848
- else {
20849
- this._table = new TableCache(valueStr);
20850
- TableCacheManager.Instance.InsertTable(this._table);
20854
+ if (valueStr != "") {
20855
+ if (TableCacheManager.Instance.TableExists(valueStr))
20856
+ this._table = TableCacheManager.Instance.GetTableById(valueStr);
20857
+ else {
20858
+ this._table = new TableCache(valueStr);
20859
+ TableCacheManager.Instance.InsertTable(this._table);
20860
+ }
20851
20861
  }
20852
20862
  break;
20853
20863
  case ConstInterface.MG_ATTR_IDENT:
20854
- this._table.SetTableIdent(valueStr);
20864
+ if (valueStr != "")
20865
+ this._table.SetTableIdent(valueStr);
20855
20866
  break;
20856
20867
  default:
20857
20868
  super.setAttribute(attribute, valueStr);
@@ -21945,9 +21956,17 @@ class RecomputeTable {
21945
21956
  this.fillData_1(task.DataView, task, parser);
21946
21957
  }
21947
21958
  else
21948
- throw new ApplicationException("in RecomputeTable.fillData() invalid task id: ");
21959
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
21949
21960
  }
21950
21961
  fillData_1(dataView, task, parser) {
21962
+ if (parser.getNextTag() == XMLConstants.MG_TAG_RECOMPUTE) {
21963
+ let currrentIndex = parser.getCurrIndex();
21964
+ let encoded = parser.ReadContentOfCurrentElement().trim();
21965
+ let decoded = Base64.decode(encoded.substr(0, encoded.length).trim());
21966
+ let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
21967
+ parser.setXMLdata(newXmlData);
21968
+ parser.setCurrIndex(currrentIndex);
21969
+ }
21951
21970
  while (this.initInnerObjects(parser, parser.getNextTag(), dataView, task)) {
21952
21971
  }
21953
21972
  }
@@ -22693,10 +22712,12 @@ class Task extends TaskBase {
22693
22712
  this.setDescriptor(valueStr);
22694
22713
  break;
22695
22714
  case ConstInterface.MG_ATTR_HAS_LOCATE:
22696
- this.hasLocate = true;
22715
+ if (+valueStr == 1)
22716
+ this.hasLocate = true;
22697
22717
  break;
22698
22718
  case ConstInterface.MG_ATTR_AS_PARENT:
22699
- this.ModeAsParent = true;
22719
+ if (+valueStr == 1)
22720
+ this.ModeAsParent = true;
22700
22721
  break;
22701
22722
  case ConstInterface.MG_ATTR_TASK_UNIQUE_SORT:
22702
22723
  this.UniqueSort = valueStr[0];
@@ -23023,6 +23044,7 @@ class Task extends TaskBase {
23023
23044
  result = await this.DataviewManager.Execute(dataViewCommand);
23024
23045
  if (!result.Success)
23025
23046
  return null;
23047
+ this.ResumeSubformLayout();
23026
23048
  }
23027
23049
  nonInteractiveTask = await this.StartSubTasks(moveToFirstControl, nonInteractiveTask, callByDestSubForm);
23028
23050
  this.InStartProcess = false;
@@ -24646,16 +24668,16 @@ class Task extends TaskBase {
24646
24668
  }
24647
24669
  }
24648
24670
  }
24649
- ComputeMainDisplay() {
24671
+ async ComputeMainDisplay() {
24650
24672
  let propMainDisplay = this.getProp(PropInterface.PROP_TYPE_MAIN_DISPLAY);
24651
- let mainDisplayIndex = propMainDisplay.GetComputedValueInteger();
24673
+ let mainDisplayIndex = await propMainDisplay.getValueInt();
24652
24674
  mainDisplayIndex = this.GetRealMainDisplayIndexOnCurrentTask(mainDisplayIndex);
24653
24675
  this._forms.InitFormFromXmlString(mainDisplayIndex);
24654
24676
  this.EnsureValidForm();
24655
24677
  }
24656
24678
  async PrepareTaskForm() {
24657
24679
  await TaskServiceBase.PreparePropOpenTaskWindow(this);
24658
- return RemoteTaskService.PreparePropMainDisplay(this);
24680
+ return await RemoteTaskService.PreparePropMainDisplay(this);
24659
24681
  }
24660
24682
  FormIsLegal() {
24661
24683
  let isFormIsLegal = super.isMainProg();
@@ -24724,7 +24746,12 @@ class Task extends TaskBase {
24724
24746
  let tokensVector = XmlParser.getTokens(RuntimeContextBase.Instance.Parser.getXMLsubstring(endTaskUrlIdx), XMLConstants.XML_ATTR_DELIM);
24725
24747
  let taskCacheURL = tokensVector.get_Item(1);
24726
24748
  let refListStr = tokensVector.get_Item(3);
24727
- let taskContentOriginal = await Task.CommandsProcessor.GetContent(taskCacheURL, true);
24749
+ let taskContentOriginal = "";
24750
+ if (taskCacheURL.trim() != "") {
24751
+ if (taskCacheURL.startsWith("./"))
24752
+ taskCacheURL = NString.Replace(taskCacheURL, './', './assets/cache/');
24753
+ taskContentOriginal = await Task.CommandsProcessor.GetContent(taskCacheURL, true);
24754
+ }
24728
24755
  let taskContentFinal = new StringBuilder(xmlData.substr(0, RuntimeContextBase.Instance.Parser.getCurrIndex() - (ConstInterface.MG_TAG_TASKURL.length + 1)), taskContentOriginal.length);
24729
24756
  let reflist = this.getReflist(refListStr, ';', true, -1);
24730
24757
  let refListIdx = 0;
@@ -26924,7 +26951,7 @@ class EventsManager {
26924
26951
  val = Manager.GetCtrlVal(ctrl);
26925
26952
  task.CurrentEditingControl = null;
26926
26953
  if (!task.cancelWasRaised() &&
26927
- (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && ctrl._field.getType() === StorageAttribute.DATE || val !== null) && typeof val != 'undefined' &&
26954
+ (ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && (ctrl._field.getType() === StorageAttribute.DATE || ctrl._field.getType() == StorageAttribute.NUMERIC) || val !== null) && typeof val != 'undefined' &&
26928
26955
  !await ctrl.validateAndSetValue(val, true))) {
26929
26956
  this.setStopExecution(true);
26930
26957
  return false;
@@ -29516,7 +29543,7 @@ class CommandsTable {
29516
29543
  }
29517
29544
  }
29518
29545
 
29519
- let CurrentClientVersion = '4.900.0-dev491.6';
29546
+ let CurrentClientVersion = '4.900.0';
29520
29547
 
29521
29548
  class ClientManager {
29522
29549
  constructor() {
@@ -29777,15 +29804,20 @@ class ClientManager {
29777
29804
  }
29778
29805
  return pic;
29779
29806
  }
29780
- static GetFormattedValue(taskId, controlName, value) {
29807
+ static GetFormattedValue(taskId, controlName, value, rowId) {
29781
29808
  let pic = null;
29782
29809
  let task = MGDataCollection.Instance.GetTaskByID(taskId);
29783
29810
  let control = null;
29784
29811
  let newValue = value;
29785
- if (controlName !== null)
29812
+ if (controlName !== null && task !== null)
29786
29813
  control = task.getForm().GetCtrl(controlName);
29787
29814
  if (control != null && control.DataType == StorageAttribute.NUMERIC) {
29788
- pic = control.getPIC();
29815
+ if (control.isRepeatable() && control.getProp(PropInterface.PROP_TYPE_FORMAT).isExpression()) {
29816
+ let picval = control.getProp(PropInterface.PROP_TYPE_FORMAT).getPrevValue(+rowId);
29817
+ pic = new PIC(picval, StorageAttribute.NUMERIC, control.getForm().getTask().getCompIdx());
29818
+ }
29819
+ else
29820
+ pic = control.getPIC();
29789
29821
  let dispValue = String(value);
29790
29822
  let newPic = pic.getUnformattedNumericPic();
29791
29823
  let num = DisplayConvertor.Instance.toNum(dispValue, newPic, 0);
@@ -29886,8 +29918,8 @@ class MagicBridge {
29886
29918
  static GetControlPictureMask(taskId, controlName) {
29887
29919
  return ClientManager.GetControlPictureMask(taskId, controlName);
29888
29920
  }
29889
- static GetFormattedValue(taskId, controlName, value) {
29890
- return ClientManager.GetFormattedValue(taskId, controlName, value);
29921
+ static GetFormattedValue(taskId, controlName, value, rowId) {
29922
+ return ClientManager.GetFormattedValue(taskId, controlName, value, rowId);
29891
29923
  }
29892
29924
  static GetRangedValue(taskId, controlName, value) {
29893
29925
  return ClientManager.GetRangedValue(taskId, controlName, value);