@sankhyalabs/core 4.6.2 → 4.8.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.
- package/.docs/classes/ApplicationContext.md +3 -3
- package/.docs/classes/Change.md +11 -11
- package/.docs/classes/DataUnit.md +147 -102
- package/.docs/classes/ObjectUtils.md +25 -0
- package/.docs/classes/SelectionInfo.md +11 -11
- package/.docs/classes/VersionUtils.md +42 -0
- package/.docs/enums/ChangeOperation.md +4 -4
- package/.docs/enums/SelectionMode.md +2 -2
- package/.docs/interfaces/DUActionInterceptor.md +1 -1
- package/.docs/interfaces/PageRequest.md +3 -3
- package/.docs/interfaces/QuickFilter.md +3 -3
- package/.docs/interfaces/Record.md +4 -4
- package/.docs/interfaces/SavedRecord.md +5 -5
- package/.docs/interfaces/WaitingChange.md +3 -3
- package/.docs/modules.md +1 -0
- package/dist/dataunit/DataUnit.d.ts +8 -1
- package/dist/dataunit/DataUnit.js +24 -2
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/ApplicationContext.js.map +1 -1
- package/dist/utils/ObjectUtils.d.ts +7 -0
- package/dist/utils/ObjectUtils.js +11 -0
- package/dist/utils/ObjectUtils.js.map +1 -1
- package/dist/utils/VersionUtils.d.ts +7 -0
- package/dist/utils/VersionUtils.js +31 -0
- package/dist/utils/VersionUtils.js.map +1 -0
- package/package.json +1 -1
- package/src/dataunit/DataUnit.ts +42 -12
- package/src/index.ts +3 -1
- package/src/utils/ApplicationContext.ts +3 -1
- package/src/utils/ObjectUtils.ts +15 -0
- package/src/utils/VersionUtils.ts +37 -0
|
@@ -53,5 +53,16 @@ export default class ObjectUtils {
|
|
|
53
53
|
return obj;
|
|
54
54
|
}, {});
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Remove atributos nulos e indefinidos de um objeto.
|
|
58
|
+
*
|
|
59
|
+
* @param data - Objeto a ser filtrado.
|
|
60
|
+
* @returns - O objeto com as propriedades válidas.
|
|
61
|
+
*/
|
|
62
|
+
static removeEmptyValues(obj) {
|
|
63
|
+
return Object.fromEntries(Object.entries(obj)
|
|
64
|
+
.filter(([, v]) => v != null)
|
|
65
|
+
.map(([k, v]) => [k, v === Object(v) ? ObjectUtils.removeEmptyValues(v) : v]));
|
|
66
|
+
}
|
|
56
67
|
}
|
|
57
68
|
//# sourceMappingURL=ObjectUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAG5B;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAAC,IAA2B;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,cAAc,CAAC,IAA2B;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,cAAc,CAAC,IAAW;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAAC,IAAS,EAAE,QAAgB;QACpD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACrB,IAAI,CAAC,UAAS,IAAY,EAAE,IAAY;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE;YAClC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACb,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"ObjectUtils.js","sourceRoot":"","sources":["../../src/utils/ObjectUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAG5B;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAAC,IAA2B;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,cAAc,CAAC,IAA2B;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,cAAc,CAAC,IAAW;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAAC,IAAS,EAAE,QAAgB;QACpD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACrB,IAAI,CAAC,UAAS,IAAY,EAAE,IAAY;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE;YAClC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,iBAAiB,CAAC,GAAW;QACzC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChF,CAAC;IAEJ,CAAC;CACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export default class VersionUtils {
|
|
2
|
+
/**
|
|
3
|
+
* Verifica se a versão do backend (SankhyaOM) é maior ou igual a uma determinada versão.
|
|
4
|
+
* @param executionCtx - Contexto de execução da inserção do dado no DataUnit.
|
|
5
|
+
*/
|
|
6
|
+
static isRequiredVersion(currentVersion: string, requiredVersion: string): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
export default class VersionUtils {
|
|
3
|
+
/**
|
|
4
|
+
* Verifica se a versão do backend (SankhyaOM) é maior ou igual a uma determinada versão.
|
|
5
|
+
* @param executionCtx - Contexto de execução da inserção do dado no DataUnit.
|
|
6
|
+
*/
|
|
7
|
+
static isRequiredVersion(currentVersion, requiredVersion) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
if (StringUtils.isEmpty(requiredVersion) || StringUtils.isEmpty(currentVersion)) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
const regexNumericPart = /\d+/g;
|
|
13
|
+
const currentVersionParts = ((_a = currentVersion.match(regexNumericPart)) === null || _a === void 0 ? void 0 : _a.map(Number)) || [];
|
|
14
|
+
const requiredVersionParts = ((_b = requiredVersion.match(regexNumericPart)) === null || _b === void 0 ? void 0 : _b.map(Number)) || [];
|
|
15
|
+
const maxParts = Math.max(currentVersionParts.length, requiredVersionParts.length);
|
|
16
|
+
for (let i = 0; i < maxParts; i++) {
|
|
17
|
+
const currentPart = currentVersionParts[i] || 0;
|
|
18
|
+
const requiredPart = requiredVersionParts[i] || 0;
|
|
19
|
+
if (currentPart < requiredPart)
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (requiredVersion.includes('b')) {
|
|
23
|
+
const alphaPartCurrent = currentVersion.replace(regexNumericPart, '');
|
|
24
|
+
const alphaPartRequired = requiredVersion.replace(regexNumericPart, '');
|
|
25
|
+
if (alphaPartCurrent < alphaPartRequired)
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=VersionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersionUtils.js","sourceRoot":"","sources":["../../src/utils/VersionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B;;;MAGE;IACK,MAAM,CAAC,iBAAiB,CAAC,cAAsB,EAAE,eAAsB;;QAE1E,IAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EAAC;YAC7E,OAAO,IAAI,CAAA;SACZ;QAEC,MAAM,gBAAgB,GAAG,MAAM,CAAC;QAEhC,MAAM,mBAAmB,GAAG,CAAA,MAAA,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,0CAAE,GAAG,CAAC,MAAM,CAAC,KAAI,EAAE,CAAC;QACtF,MAAM,oBAAoB,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,0CAAE,GAAG,CAAC,MAAM,CAAC,KAAI,EAAE,CAAC;QAExF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,WAAW,GAAG,YAAY;gBAAE,OAAO,KAAK,CAAC;SAC9C;QAED,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAExE,IAAI,gBAAgB,GAAG,iBAAiB;gBAAE,OAAO,KAAK,CAAC;SACxD;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACN"}
|
package/package.json
CHANGED
package/src/dataunit/DataUnit.ts
CHANGED
|
@@ -42,6 +42,7 @@ export default class DataUnit {
|
|
|
42
42
|
private _pageSize: number;
|
|
43
43
|
private _childByName = new Map<string, DataUnit>();
|
|
44
44
|
private _parentDataUnit: DataUnit | undefined;
|
|
45
|
+
private _loadingLockers: Promise<void>[];
|
|
45
46
|
|
|
46
47
|
public metadataLoader?: (dataUnit: DataUnit) => Promise<UnitMetadata>;
|
|
47
48
|
public dataLoader?: (dataUnit: DataUnit, request: LoadDataRequest) => Promise<LoadDataResponse>;
|
|
@@ -74,6 +75,7 @@ export default class DataUnit {
|
|
|
74
75
|
this._interceptors = [];
|
|
75
76
|
this._parentDataUnit = parentDataUnit;
|
|
76
77
|
this._parentDataUnit?.subscribe(this.onDataUnitParentEvent);
|
|
78
|
+
this._loadingLockers = [];
|
|
77
79
|
DataUnitStorage.put(this);
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -241,13 +243,16 @@ export default class DataUnit {
|
|
|
241
243
|
*
|
|
242
244
|
*/
|
|
243
245
|
public async loadData(quickFilter?: QuickFilter, executionCtx?: ExecutionContext, checkLastFilter?: boolean): Promise<LoadDataResponse> {
|
|
246
|
+
|
|
247
|
+
await this.processLoadingLockers();
|
|
248
|
+
|
|
244
249
|
if (this._parentDataUnit && !this._parentDataUnit.getSelectedRecord()) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
if(this.records){
|
|
251
|
+
this.clearDataUnit();
|
|
252
|
+
}
|
|
253
|
+
return Promise.resolve({
|
|
254
|
+
records: []
|
|
255
|
+
});
|
|
251
256
|
}
|
|
252
257
|
|
|
253
258
|
const loadDataRequest = this.getLoadDataRequest(quickFilter);
|
|
@@ -1102,13 +1107,15 @@ export default class DataUnit {
|
|
|
1102
1107
|
* @param executionCtx - Contexto de execução do cancelamento da seleção dos registros.
|
|
1103
1108
|
*
|
|
1104
1109
|
*/
|
|
1105
|
-
public async cancelEdition(executionCtx?: ExecutionContext, fromParent?: boolean): Promise<
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
+
public async cancelEdition(executionCtx?: ExecutionContext, fromParent?: boolean): Promise<boolean> {
|
|
1111
|
+
const cancelledAction = await this.dispatchAction(Action.EDITION_CANCELED, {fromParent}, executionCtx);
|
|
1112
|
+
for (const [, dataUnit] of this._childByName) {
|
|
1113
|
+
if(dataUnit.isDirty()){
|
|
1114
|
+
dataUnit.cancelEdition(undefined, true);
|
|
1115
|
+
}
|
|
1110
1116
|
}
|
|
1111
|
-
|
|
1117
|
+
return Promise.resolve(cancelledAction);
|
|
1118
|
+
|
|
1112
1119
|
}
|
|
1113
1120
|
|
|
1114
1121
|
/**
|
|
@@ -1575,6 +1582,28 @@ export default class DataUnit {
|
|
|
1575
1582
|
|
|
1576
1583
|
return selection?.recordIds || [];
|
|
1577
1584
|
}
|
|
1585
|
+
|
|
1586
|
+
/**
|
|
1587
|
+
* Adiciona um locker para impedir o carregamento dos registros do dataUnit.
|
|
1588
|
+
* @returns Retorna uma função responsável por liberar o lock adicionado.
|
|
1589
|
+
*/
|
|
1590
|
+
public addLoadingLocker(): Function {
|
|
1591
|
+
let loadingLockerResolver;
|
|
1592
|
+
|
|
1593
|
+
this._loadingLockers.push(new Promise((resolve) => {
|
|
1594
|
+
loadingLockerResolver = resolve;
|
|
1595
|
+
}));
|
|
1596
|
+
|
|
1597
|
+
return loadingLockerResolver || Promise.resolve;
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
private async processLoadingLockers(){
|
|
1601
|
+
if(this._loadingLockers.length) {
|
|
1602
|
+
await Promise.all(this._loadingLockers);
|
|
1603
|
+
this._loadingLockers = [];
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1578
1607
|
}
|
|
1579
1608
|
|
|
1580
1609
|
export interface DUActionInterceptor {
|
|
@@ -1674,6 +1703,7 @@ export class Change {
|
|
|
1674
1703
|
public isUpdate(): boolean {
|
|
1675
1704
|
return this._operation === ChangeOperation.UPDATE;
|
|
1676
1705
|
}
|
|
1706
|
+
|
|
1677
1707
|
|
|
1678
1708
|
}
|
|
1679
1709
|
|
package/src/index.ts
CHANGED
|
@@ -27,6 +27,7 @@ import { ElementIDUtils, IElementIDInfo } from "./utils/ElementIDUtils.js";
|
|
|
27
27
|
import { UserAgentUtils } from "./utils/UserAgentUtils/index.js";
|
|
28
28
|
import { JSUtils } from "./utils/JSUtils.js";
|
|
29
29
|
import { DataUnitStorage } from "./dataunit/DataUnitStorage.js";
|
|
30
|
+
import VersionUtils from './utils/VersionUtils.js'
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
/*Classes públicas no pacote*/
|
|
@@ -81,5 +82,6 @@ export {
|
|
|
81
82
|
ElementIDUtils,
|
|
82
83
|
IElementIDInfo,
|
|
83
84
|
UserAgentUtils,
|
|
84
|
-
JSUtils
|
|
85
|
+
JSUtils,
|
|
86
|
+
VersionUtils
|
|
85
87
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
|
|
1
3
|
/***
|
|
2
4
|
* `ApplicationContext`: Utilizado para manipulação do contexto.
|
|
3
5
|
* - Evitar uso da classe sem alinhamento com a arquitetura devido ao uso de variáveis globais.
|
|
@@ -36,5 +38,5 @@ export default class ApplicationContext{
|
|
|
36
38
|
(window as any).___snkcore___ctx___ = ctx;
|
|
37
39
|
}
|
|
38
40
|
return ctx;
|
|
39
|
-
}
|
|
41
|
+
}
|
|
40
42
|
}
|
package/src/utils/ObjectUtils.ts
CHANGED
|
@@ -58,4 +58,19 @@ export default class ObjectUtils{
|
|
|
58
58
|
return obj;
|
|
59
59
|
}, {});
|
|
60
60
|
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Remove atributos nulos e indefinidos de um objeto.
|
|
64
|
+
*
|
|
65
|
+
* @param data - Objeto a ser filtrado.
|
|
66
|
+
* @returns - O objeto com as propriedades válidas.
|
|
67
|
+
*/
|
|
68
|
+
public static removeEmptyValues(obj: object): object {
|
|
69
|
+
return Object.fromEntries(
|
|
70
|
+
Object.entries(obj)
|
|
71
|
+
.filter(([, v]) => v != null)
|
|
72
|
+
.map(([k, v]) => [k, v === Object(v) ? ObjectUtils.removeEmptyValues(v) : v])
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
}
|
|
61
76
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { StringUtils } from "./StringUtils.js";
|
|
2
|
+
|
|
3
|
+
export default class VersionUtils {
|
|
4
|
+
/**
|
|
5
|
+
* Verifica se a versão do backend (SankhyaOM) é maior ou igual a uma determinada versão.
|
|
6
|
+
* @param executionCtx - Contexto de execução da inserção do dado no DataUnit.
|
|
7
|
+
*/
|
|
8
|
+
public static isRequiredVersion(currentVersion: string, requiredVersion:string): boolean {
|
|
9
|
+
|
|
10
|
+
if(StringUtils.isEmpty(requiredVersion) || StringUtils.isEmpty(currentVersion)){
|
|
11
|
+
return true
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const regexNumericPart = /\d+/g;
|
|
15
|
+
|
|
16
|
+
const currentVersionParts = currentVersion.match(regexNumericPart)?.map(Number) || [];
|
|
17
|
+
const requiredVersionParts = requiredVersion.match(regexNumericPart)?.map(Number) || [];
|
|
18
|
+
|
|
19
|
+
const maxParts = Math.max(currentVersionParts.length, requiredVersionParts.length);
|
|
20
|
+
|
|
21
|
+
for (let i = 0; i < maxParts; i++) {
|
|
22
|
+
const currentPart = currentVersionParts[i] || 0;
|
|
23
|
+
const requiredPart = requiredVersionParts[i] || 0;
|
|
24
|
+
|
|
25
|
+
if (currentPart < requiredPart) return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (requiredVersion.includes('b')) {
|
|
29
|
+
const alphaPartCurrent = currentVersion.replace(regexNumericPart, '');
|
|
30
|
+
const alphaPartRequired = requiredVersion.replace(regexNumericPart, '');
|
|
31
|
+
|
|
32
|
+
if (alphaPartCurrent < alphaPartRequired) return false;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|