@magic-xpa/engine 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.
- package/esm2020/src/ClientManager.mjs +46 -5
- package/esm2020/src/CurrentClientVersion.mjs +2 -2
- package/esm2020/src/bridge/MagicBridge.mjs +3 -3
- package/esm2020/src/data/Field.mjs +3 -2
- package/esm2020/src/env/LanguageData.mjs +10 -5
- package/esm2020/src/event/EventsManager.mjs +2 -2
- package/esm2020/src/exp/ExpressionEvaluator.mjs +2 -2
- package/esm2020/src/gui/MgControl.mjs +3 -2
- package/esm2020/src/gui/MgForm.mjs +2 -1
- package/esm2020/src/rt/Operation.mjs +3 -3
- package/esm2020/src/rt/RecomputeTable.mjs +12 -4
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +10 -7
- package/esm2020/src/tasks/RemoteTaskService.mjs +3 -3
- package/esm2020/src/tasks/Task.mjs +15 -7
- package/esm2020/src/util/Scrambler.mjs +3 -2
- package/esm2020/src/util/cookie.service.mjs +2 -2
- package/fesm2015/magic-xpa-engine.mjs +109 -36
- package/fesm2015/magic-xpa-engine.mjs.map +1 -1
- package/fesm2020/magic-xpa-engine.mjs +102 -33
- package/fesm2020/magic-xpa-engine.mjs.map +1 -1
- package/package.json +4 -4
- package/src/ClientManager.d.ts +2 -1
- package/src/bridge/MagicBridge.d.ts +1 -1
- package/src/tasks/RemoteTaskService.d.ts +1 -1
- package/src/tasks/Task.d.ts +1 -1
|
@@ -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
|
-
|
|
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
|
|
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.
|
|
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
|
|
6132
|
-
|
|
6133
|
-
|
|
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
|
-
|
|
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);
|
|
@@ -19407,6 +19415,7 @@ class MgForm extends MgFormBase {
|
|
|
19407
19415
|
try {
|
|
19408
19416
|
await this.RefreshDisplay(Constants.TASK_REFRESH_FORM);
|
|
19409
19417
|
await this.setCurrRowByDisplayLine(this.GetDataview().getTopRecIdx() + this.getLastValidRow(), false, true);
|
|
19418
|
+
visibleLine = this.getLastValidRow();
|
|
19410
19419
|
}
|
|
19411
19420
|
catch (Exception) {
|
|
19412
19421
|
}
|
|
@@ -20442,8 +20451,8 @@ class RemoteTaskService extends TaskServiceBase {
|
|
|
20442
20451
|
OwnerTransactionTask = task.DataviewManager.RemoteDataviewManager.Transaction.OwnerTask;
|
|
20443
20452
|
return OwnerTransactionTask;
|
|
20444
20453
|
}
|
|
20445
|
-
static PreparePropMainDisplay(task) {
|
|
20446
|
-
task.ComputeMainDisplay();
|
|
20454
|
+
static async PreparePropMainDisplay(task) {
|
|
20455
|
+
await task.ComputeMainDisplay();
|
|
20447
20456
|
return task.FormIsLegal() ? ReturnResult.SuccessfulResult : new ReturnResult(MsgInterface.BRKTAB_STR_ERR_FORM);
|
|
20448
20457
|
}
|
|
20449
20458
|
}
|
|
@@ -20843,15 +20852,18 @@ class RemoteDataviewHeader extends DataviewHeaderBase {
|
|
|
20843
20852
|
setAttribute(attribute, valueStr) {
|
|
20844
20853
|
switch (attribute) {
|
|
20845
20854
|
case ConstInterface.MG_ATTR_CACHED_TABLE:
|
|
20846
|
-
if (
|
|
20847
|
-
|
|
20848
|
-
|
|
20849
|
-
|
|
20850
|
-
|
|
20855
|
+
if (valueStr != "") {
|
|
20856
|
+
if (TableCacheManager.Instance.TableExists(valueStr))
|
|
20857
|
+
this._table = TableCacheManager.Instance.GetTableById(valueStr);
|
|
20858
|
+
else {
|
|
20859
|
+
this._table = new TableCache(valueStr);
|
|
20860
|
+
TableCacheManager.Instance.InsertTable(this._table);
|
|
20861
|
+
}
|
|
20851
20862
|
}
|
|
20852
20863
|
break;
|
|
20853
20864
|
case ConstInterface.MG_ATTR_IDENT:
|
|
20854
|
-
|
|
20865
|
+
if (valueStr != "")
|
|
20866
|
+
this._table.SetTableIdent(valueStr);
|
|
20855
20867
|
break;
|
|
20856
20868
|
default:
|
|
20857
20869
|
super.setAttribute(attribute, valueStr);
|
|
@@ -21945,9 +21957,17 @@ class RecomputeTable {
|
|
|
21945
21957
|
this.fillData_1(task.DataView, task, parser);
|
|
21946
21958
|
}
|
|
21947
21959
|
else
|
|
21948
|
-
|
|
21960
|
+
parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
|
|
21949
21961
|
}
|
|
21950
21962
|
fillData_1(dataView, task, parser) {
|
|
21963
|
+
if (parser.getNextTag() == XMLConstants.MG_TAG_RECOMPUTE) {
|
|
21964
|
+
let currrentIndex = parser.getCurrIndex();
|
|
21965
|
+
let encoded = parser.ReadContentOfCurrentElement().trim();
|
|
21966
|
+
let decoded = Base64.decode(encoded.substr(0, encoded.length).trim());
|
|
21967
|
+
let newXmlData = parser.getXMLdata().replace(encoded.trim(), decoded);
|
|
21968
|
+
parser.setXMLdata(newXmlData);
|
|
21969
|
+
parser.setCurrIndex(currrentIndex);
|
|
21970
|
+
}
|
|
21951
21971
|
while (this.initInnerObjects(parser, parser.getNextTag(), dataView, task)) {
|
|
21952
21972
|
}
|
|
21953
21973
|
}
|
|
@@ -22693,10 +22713,12 @@ class Task extends TaskBase {
|
|
|
22693
22713
|
this.setDescriptor(valueStr);
|
|
22694
22714
|
break;
|
|
22695
22715
|
case ConstInterface.MG_ATTR_HAS_LOCATE:
|
|
22696
|
-
|
|
22716
|
+
if (+valueStr == 1)
|
|
22717
|
+
this.hasLocate = true;
|
|
22697
22718
|
break;
|
|
22698
22719
|
case ConstInterface.MG_ATTR_AS_PARENT:
|
|
22699
|
-
|
|
22720
|
+
if (+valueStr == 1)
|
|
22721
|
+
this.ModeAsParent = true;
|
|
22700
22722
|
break;
|
|
22701
22723
|
case ConstInterface.MG_ATTR_TASK_UNIQUE_SORT:
|
|
22702
22724
|
this.UniqueSort = valueStr[0];
|
|
@@ -23023,6 +23045,7 @@ class Task extends TaskBase {
|
|
|
23023
23045
|
result = await this.DataviewManager.Execute(dataViewCommand);
|
|
23024
23046
|
if (!result.Success)
|
|
23025
23047
|
return null;
|
|
23048
|
+
this.ResumeSubformLayout();
|
|
23026
23049
|
}
|
|
23027
23050
|
nonInteractiveTask = await this.StartSubTasks(moveToFirstControl, nonInteractiveTask, callByDestSubForm);
|
|
23028
23051
|
this.InStartProcess = false;
|
|
@@ -24646,16 +24669,16 @@ class Task extends TaskBase {
|
|
|
24646
24669
|
}
|
|
24647
24670
|
}
|
|
24648
24671
|
}
|
|
24649
|
-
ComputeMainDisplay() {
|
|
24672
|
+
async ComputeMainDisplay() {
|
|
24650
24673
|
let propMainDisplay = this.getProp(PropInterface.PROP_TYPE_MAIN_DISPLAY);
|
|
24651
|
-
let mainDisplayIndex = propMainDisplay.
|
|
24674
|
+
let mainDisplayIndex = await propMainDisplay.getValueInt();
|
|
24652
24675
|
mainDisplayIndex = this.GetRealMainDisplayIndexOnCurrentTask(mainDisplayIndex);
|
|
24653
24676
|
this._forms.InitFormFromXmlString(mainDisplayIndex);
|
|
24654
24677
|
this.EnsureValidForm();
|
|
24655
24678
|
}
|
|
24656
24679
|
async PrepareTaskForm() {
|
|
24657
24680
|
await TaskServiceBase.PreparePropOpenTaskWindow(this);
|
|
24658
|
-
return RemoteTaskService.PreparePropMainDisplay(this);
|
|
24681
|
+
return await RemoteTaskService.PreparePropMainDisplay(this);
|
|
24659
24682
|
}
|
|
24660
24683
|
FormIsLegal() {
|
|
24661
24684
|
let isFormIsLegal = super.isMainProg();
|
|
@@ -24724,7 +24747,12 @@ class Task extends TaskBase {
|
|
|
24724
24747
|
let tokensVector = XmlParser.getTokens(RuntimeContextBase.Instance.Parser.getXMLsubstring(endTaskUrlIdx), XMLConstants.XML_ATTR_DELIM);
|
|
24725
24748
|
let taskCacheURL = tokensVector.get_Item(1);
|
|
24726
24749
|
let refListStr = tokensVector.get_Item(3);
|
|
24727
|
-
let taskContentOriginal =
|
|
24750
|
+
let taskContentOriginal = "";
|
|
24751
|
+
if (taskCacheURL.trim() != "") {
|
|
24752
|
+
if (taskCacheURL.startsWith("./"))
|
|
24753
|
+
taskCacheURL = NString.Replace(taskCacheURL, './', './assets/cache/');
|
|
24754
|
+
taskContentOriginal = await Task.CommandsProcessor.GetContent(taskCacheURL, true);
|
|
24755
|
+
}
|
|
24728
24756
|
let taskContentFinal = new StringBuilder(xmlData.substr(0, RuntimeContextBase.Instance.Parser.getCurrIndex() - (ConstInterface.MG_TAG_TASKURL.length + 1)), taskContentOriginal.length);
|
|
24729
24757
|
let reflist = this.getReflist(refListStr, ';', true, -1);
|
|
24730
24758
|
let refListIdx = 0;
|
|
@@ -26924,7 +26952,7 @@ class EventsManager {
|
|
|
26924
26952
|
val = Manager.GetCtrlVal(ctrl);
|
|
26925
26953
|
task.CurrentEditingControl = null;
|
|
26926
26954
|
if (!task.cancelWasRaised() &&
|
|
26927
|
-
(ctrl.Type !== MgControlType.CTRL_TYPE_BROWSER && (!isNullOrUndefined(ctrl._field) && ctrl._field.getType() === StorageAttribute.DATE || val !== null) && typeof val != 'undefined' &&
|
|
26955
|
+
(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
26956
|
!await ctrl.validateAndSetValue(val, true))) {
|
|
26929
26957
|
this.setStopExecution(true);
|
|
26930
26958
|
return false;
|
|
@@ -29516,7 +29544,7 @@ class CommandsTable {
|
|
|
29516
29544
|
}
|
|
29517
29545
|
}
|
|
29518
29546
|
|
|
29519
|
-
let CurrentClientVersion = '4.
|
|
29547
|
+
let CurrentClientVersion = '4.901.0-dev491.1';
|
|
29520
29548
|
|
|
29521
29549
|
class ClientManager {
|
|
29522
29550
|
constructor() {
|
|
@@ -29607,6 +29635,10 @@ class ClientManager {
|
|
|
29607
29635
|
EventsManager.Instance.addGuiTriggeredEventWithTaskAndCodeAndLine(task, InternalInterface.MG_ACT_REC_PREFIX, dvRowIdx);
|
|
29608
29636
|
}
|
|
29609
29637
|
break;
|
|
29638
|
+
case "navigateInTable":
|
|
29639
|
+
if (guiEvent.ControlName === "magicRow")
|
|
29640
|
+
this.handleNavigateInRowEvent(task, guiEvent.Value);
|
|
29641
|
+
break;
|
|
29610
29642
|
case "close":
|
|
29611
29643
|
if (task.IsRoute())
|
|
29612
29644
|
EventsManager.Instance.AddRouterClosedEvent(task);
|
|
@@ -29641,6 +29673,38 @@ class ClientManager {
|
|
|
29641
29673
|
break;
|
|
29642
29674
|
}
|
|
29643
29675
|
}
|
|
29676
|
+
handleNavigateInRowEvent(task, evt) {
|
|
29677
|
+
let internalEvt = InternalInterface.MG_ACT_NONE;
|
|
29678
|
+
evt = evt.toLowerCase();
|
|
29679
|
+
switch (evt) {
|
|
29680
|
+
case "begin-page":
|
|
29681
|
+
internalEvt = InternalInterface.MG_ACT_TBL_BEGPAGE;
|
|
29682
|
+
break;
|
|
29683
|
+
case "previous-page":
|
|
29684
|
+
internalEvt = InternalInterface.MG_ACT_TBL_PRVPAGE;
|
|
29685
|
+
break;
|
|
29686
|
+
case "end-page":
|
|
29687
|
+
internalEvt = InternalInterface.MG_ACT_TBL_ENDPAGE;
|
|
29688
|
+
break;
|
|
29689
|
+
case "next-page":
|
|
29690
|
+
internalEvt = InternalInterface.MG_ACT_TBL_NXTPAGE;
|
|
29691
|
+
break;
|
|
29692
|
+
case "previous-line":
|
|
29693
|
+
internalEvt = InternalInterface.MG_ACT_TBL_PRVLINE;
|
|
29694
|
+
break;
|
|
29695
|
+
case "next-line":
|
|
29696
|
+
internalEvt = InternalInterface.MG_ACT_TBL_NXTLINE;
|
|
29697
|
+
break;
|
|
29698
|
+
case "begin-table":
|
|
29699
|
+
internalEvt = InternalInterface.MG_ACT_TBL_BEGTBL;
|
|
29700
|
+
break;
|
|
29701
|
+
case "end-table":
|
|
29702
|
+
internalEvt = InternalInterface.MG_ACT_TBL_ENDTBL;
|
|
29703
|
+
break;
|
|
29704
|
+
}
|
|
29705
|
+
if (internalEvt != InternalInterface.MG_ACT_NONE)
|
|
29706
|
+
EventsManager.Instance.addGuiTriggeredEventWithTaskAndCode(task, internalEvt);
|
|
29707
|
+
}
|
|
29644
29708
|
ConfirmationClosed(res) {
|
|
29645
29709
|
Commands.ResolvePromise(res);
|
|
29646
29710
|
}
|
|
@@ -29777,15 +29841,20 @@ class ClientManager {
|
|
|
29777
29841
|
}
|
|
29778
29842
|
return pic;
|
|
29779
29843
|
}
|
|
29780
|
-
static GetFormattedValue(taskId, controlName, value) {
|
|
29844
|
+
static GetFormattedValue(taskId, controlName, value, rowId) {
|
|
29781
29845
|
let pic = null;
|
|
29782
29846
|
let task = MGDataCollection.Instance.GetTaskByID(taskId);
|
|
29783
29847
|
let control = null;
|
|
29784
29848
|
let newValue = value;
|
|
29785
|
-
if (controlName !== null)
|
|
29849
|
+
if (controlName !== null && task !== null)
|
|
29786
29850
|
control = task.getForm().GetCtrl(controlName);
|
|
29787
29851
|
if (control != null && control.DataType == StorageAttribute.NUMERIC) {
|
|
29788
|
-
|
|
29852
|
+
if (control.isRepeatable() && control.getProp(PropInterface.PROP_TYPE_FORMAT).isExpression()) {
|
|
29853
|
+
let picval = control.getProp(PropInterface.PROP_TYPE_FORMAT).getPrevValue(+rowId);
|
|
29854
|
+
pic = new PIC(picval, StorageAttribute.NUMERIC, control.getForm().getTask().getCompIdx());
|
|
29855
|
+
}
|
|
29856
|
+
else
|
|
29857
|
+
pic = control.getPIC();
|
|
29789
29858
|
let dispValue = String(value);
|
|
29790
29859
|
let newPic = pic.getUnformattedNumericPic();
|
|
29791
29860
|
let num = DisplayConvertor.Instance.toNum(dispValue, newPic, 0);
|
|
@@ -29886,8 +29955,8 @@ class MagicBridge {
|
|
|
29886
29955
|
static GetControlPictureMask(taskId, controlName) {
|
|
29887
29956
|
return ClientManager.GetControlPictureMask(taskId, controlName);
|
|
29888
29957
|
}
|
|
29889
|
-
static GetFormattedValue(taskId, controlName, value) {
|
|
29890
|
-
return ClientManager.GetFormattedValue(taskId, controlName, value);
|
|
29958
|
+
static GetFormattedValue(taskId, controlName, value, rowId) {
|
|
29959
|
+
return ClientManager.GetFormattedValue(taskId, controlName, value, rowId);
|
|
29891
29960
|
}
|
|
29892
29961
|
static GetRangedValue(taskId, controlName, value) {
|
|
29893
29962
|
return ClientManager.GetRangedValue(taskId, controlName, value);
|