@sankhyalabs/core 5.15.3 → 5.15.4
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/Change.md +11 -11
- package/.docs/classes/DataUnit.md +170 -125
- package/.docs/classes/SelectionInfo.md +11 -11
- package/.docs/enums/Action.md +22 -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/dist/dataunit/DataUnit.d.ts +16 -0
- package/dist/dataunit/DataUnit.js +35 -3
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/dataunit/state/action/DataUnitAction.d.ts +3 -1
- package/dist/dataunit/state/action/DataUnitAction.js +2 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -1
- package/dist/dataunit/state/slice/ChangesSlice.js +12 -11
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -1
- package/dist/dataunit/state/slice/LoadingProperties.d.ts +9 -0
- package/dist/dataunit/state/slice/LoadingProperties.js +31 -0
- package/dist/dataunit/state/slice/LoadingProperties.js.map +1 -0
- package/package.json +1 -1
- package/src/dataunit/DataUnit.ts +37 -3
- package/src/dataunit/state/action/DataUnitAction.ts +3 -1
- package/src/dataunit/state/slice/ChangesSlice.ts +15 -14
- package/src/dataunit/state/slice/LoadingProperties.ts +37 -0
|
@@ -76,20 +76,21 @@ export const getChangedFieldValue = (fieldName, record, stateManager) => {
|
|
|
76
76
|
return record[fieldName];
|
|
77
77
|
};
|
|
78
78
|
export const getChangesToSave = (dataUnit, stateManager) => {
|
|
79
|
-
const result = [];
|
|
80
79
|
const changes = getChanges(stateManager);
|
|
81
80
|
const selectedRecords = getSelectionRecords(stateManager) || [];
|
|
82
|
-
const records = new
|
|
83
|
-
.concat(selectedRecords
|
|
84
|
-
.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
const records = new Map(getRecords(stateManager)
|
|
82
|
+
.concat(selectedRecords.filter(record => !isAddedRecord(record.__record__id__, stateManager)))
|
|
83
|
+
.map(r => [r.__record__id__, r]));
|
|
84
|
+
const result = [];
|
|
85
|
+
if (changes != undefined) {
|
|
86
|
+
Array.from(changes.entries())
|
|
87
|
+
.forEach(([recordId, change]) => {
|
|
88
|
+
const record = records.get(recordId);
|
|
89
|
+
if (record != undefined) {
|
|
90
|
+
result.push(new Change(dataUnit, record, change, ChangeOperation.UPDATE, record.__record__source__id__));
|
|
90
91
|
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
93
94
|
const addedRecords = getAddedRecords(stateManager);
|
|
94
95
|
if (addedRecords) {
|
|
95
96
|
addedRecords.forEach(r => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangesSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/ChangesSlice.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ChangesSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/ChangesSlice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionReducer, StateAction } from "../StateManager.js";
|
|
2
|
+
import StateManager from "../StateManager.js";
|
|
3
|
+
declare class LoadingPropertiesImpl implements ActionReducer {
|
|
4
|
+
sliceName: string;
|
|
5
|
+
reduce(_stateManager: StateManager, currentState: Map<string, string>, action: StateAction): Map<string, string> | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare const LoadingPropertiesReducer: LoadingPropertiesImpl;
|
|
8
|
+
export declare const getLoadingProperties: (stateManager: StateManager) => Map<string, string> | undefined;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Action } from "../action/DataUnitAction.js";
|
|
2
|
+
class LoadingPropertiesImpl {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.sliceName = "loadingProperties";
|
|
5
|
+
}
|
|
6
|
+
reduce(_stateManager, currentState, action) {
|
|
7
|
+
switch (action.type) {
|
|
8
|
+
case Action.LOADING_PROPERTY_ADDED:
|
|
9
|
+
return buildNewState(currentState, action.payload);
|
|
10
|
+
case Action.LOADING_PROPERTIES_CLEANED:
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return currentState;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export const LoadingPropertiesReducer = new LoadingPropertiesImpl();
|
|
17
|
+
export const getLoadingProperties = (stateManager) => {
|
|
18
|
+
return stateManager.select(LoadingPropertiesReducer.sliceName, (state) => state);
|
|
19
|
+
};
|
|
20
|
+
function buildNewState(currentState, payload) {
|
|
21
|
+
const newState = new Map(currentState);
|
|
22
|
+
if (payload != undefined) {
|
|
23
|
+
for (const [key, value] of Object.entries(payload)) {
|
|
24
|
+
if (typeof key === "string" && typeof value === "string") {
|
|
25
|
+
newState.set(key, value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return newState;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=LoadingProperties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingProperties.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/LoadingProperties.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,MAAM,qBAAqB;IAA3B;QAEW,cAAS,GAAW,mBAAmB,CAAC;IAWnD,CAAC;IATU,MAAM,CAAC,aAA0B,EAAE,YAAiC,EAAE,MAAmB;QAC5F,QAAO,MAAM,CAAC,IAAI,EAAC;YACf,KAAK,MAAM,CAAC,sBAAsB;gBAC9B,OAAO,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,0BAA0B;gBAClC,OAAO,SAAS,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAEpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAA0B,EAAiC,EAAE;IAC9F,OAAO,YAAY,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1G,CAAC,CAAC;AAEF,SAAS,aAAa,CAAC,YAAiC,EAAE,OAAY;IAClE,MAAM,QAAQ,GAAI,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,IAAG,OAAO,IAAI,SAAS,EAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChD,IAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAC;gBACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC5B;SACJ;KACJ;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
package/src/dataunit/DataUnit.ts
CHANGED
|
@@ -25,6 +25,7 @@ import { getFormattedValue } from "./formatting/PrettyFormatter.js";
|
|
|
25
25
|
import { v4 as uuid } from "uuid";
|
|
26
26
|
import { DataUnitStorage } from "./DataUnitStorage.js";
|
|
27
27
|
import { getInvalidFieldMessage, InvalidFieldsReducer } from "./state/slice/InvalidFieldsSlice.js";
|
|
28
|
+
import { getLoadingProperties, LoadingPropertiesReducer } from "./state/slice/LoadingProperties.js";
|
|
28
29
|
|
|
29
30
|
/***
|
|
30
31
|
* `DataUnit`: Atua como uma camada de abstração entre o back-end e a interface do usuário.
|
|
@@ -61,6 +62,7 @@ export default class DataUnit {
|
|
|
61
62
|
this._stateManager = new StateManager(
|
|
62
63
|
[
|
|
63
64
|
HistReducer,
|
|
65
|
+
LoadingPropertiesReducer,
|
|
64
66
|
UnitMetadataReducer,
|
|
65
67
|
LoadingControlReducer,
|
|
66
68
|
RecordsReducer,
|
|
@@ -114,6 +116,27 @@ export default class DataUnit {
|
|
|
114
116
|
this._interceptors = [];
|
|
115
117
|
}
|
|
116
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Adiciona uma propriedade transacional que será envida aos
|
|
121
|
+
* loaders (dataLoader, saveLoader, removeLoader e recordLoader) na chamada.
|
|
122
|
+
* Essas propriedades serão limpas ao final da execução de cada método.
|
|
123
|
+
*
|
|
124
|
+
* @param name - Nome da propriedade
|
|
125
|
+
* @param value - Valor da propriedade
|
|
126
|
+
*
|
|
127
|
+
*/
|
|
128
|
+
public addGlobalLoaderProp(name: string, value: string):void{
|
|
129
|
+
this.dispatchAction(Action.LOADING_PROPERTY_ADDED, {[name]: value});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Retorna as propriedades transacionais adicionados anteriores à chamada.
|
|
134
|
+
*
|
|
135
|
+
* @returns - Todas as propriedades desde o final do último loader.
|
|
136
|
+
*/
|
|
137
|
+
public getGlobalLoaderProps(): Map<string, string>{
|
|
138
|
+
return getLoadingProperties(this._stateManager) || new Map();
|
|
139
|
+
}
|
|
117
140
|
|
|
118
141
|
public get dataUnitId(): string{
|
|
119
142
|
return this._uuid;
|
|
@@ -217,16 +240,17 @@ export default class DataUnit {
|
|
|
217
240
|
this.dataLoader(this, request).then(
|
|
218
241
|
response => {
|
|
219
242
|
this.dispatchAction(Action.DATA_LOADED, {...response, keepSelection: request.keepSelection}, executionCtx);
|
|
243
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
220
244
|
|
|
221
245
|
if(selectFirstRecord){
|
|
222
246
|
this.requestSelectFirst(executionCtx);
|
|
223
247
|
}
|
|
224
|
-
|
|
225
248
|
resolve(response);
|
|
226
249
|
}
|
|
227
250
|
).catch(error => {
|
|
228
251
|
console.error(error);
|
|
229
252
|
const {errorCode} = error;
|
|
253
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
230
254
|
fail(new ErrorException("Erro ao carregar registros", error, errorCode))
|
|
231
255
|
});
|
|
232
256
|
}
|
|
@@ -427,6 +451,7 @@ export default class DataUnit {
|
|
|
427
451
|
const changes: Array<Change> = this.getAllChangesToSave();
|
|
428
452
|
|
|
429
453
|
this.saveLoader(this, changes).then((records) => {
|
|
454
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
430
455
|
const recordsByDataUnit = this.getRecordsByDataUnit(records);
|
|
431
456
|
|
|
432
457
|
const dispatchPromisses = [];
|
|
@@ -441,9 +466,11 @@ export default class DataUnit {
|
|
|
441
466
|
Promise.all(dispatchPromisses).then(() => resolve());
|
|
442
467
|
}).catch(cause => {
|
|
443
468
|
const {errorCode} = cause;
|
|
469
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
444
470
|
fail(new ErrorException("Erro ao salvar alterações", cause, errorCode));
|
|
445
471
|
});
|
|
446
472
|
} else {
|
|
473
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
447
474
|
resolve();
|
|
448
475
|
}
|
|
449
476
|
});
|
|
@@ -532,6 +559,7 @@ export default class DataUnit {
|
|
|
532
559
|
public async removeRecords(recordIds: Array<string>, cachedRecords: Array<Record>, buffered: boolean = false, executionCtx?: ExecutionContext, silent: boolean = false): Promise<Array<string>> {
|
|
533
560
|
if (recordIds) {
|
|
534
561
|
if (buffered || !this.removeLoader) {
|
|
562
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
535
563
|
this.dispatchAction(Action.RECORDS_REMOVED, { records: recordIds, cachedRecords, buffered: true }, executionCtx);
|
|
536
564
|
} else {
|
|
537
565
|
if (await this.dispatchAction(Action.REMOVING_RECORDS, {silent}, executionCtx)) {
|
|
@@ -549,9 +577,11 @@ export default class DataUnit {
|
|
|
549
577
|
const selectionAfterRemove = [currentRecordsKeys[nextIndex]];
|
|
550
578
|
|
|
551
579
|
this.dispatchAction(Action.RECORDS_REMOVED, { records: removedIds, cachedRecords, removedIndex, buffered: false, selectionAfterRemove }, executionCtx);
|
|
580
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
552
581
|
resolve(removedIds);
|
|
553
582
|
}
|
|
554
583
|
).catch(error => {
|
|
584
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
555
585
|
const {errorCode} = error;
|
|
556
586
|
fail(new ErrorException("Erro ao remover registros", error, errorCode))
|
|
557
587
|
});
|
|
@@ -1523,12 +1553,16 @@ export default class DataUnit {
|
|
|
1523
1553
|
const selection = getSelection(this._stateManager);
|
|
1524
1554
|
this.dispatchAction(Action.LOADING_RECORD, selection);
|
|
1525
1555
|
|
|
1526
|
-
if(!this.dataLoader)
|
|
1527
|
-
|
|
1556
|
+
if(!this.recordLoader || !this.dataLoader) {
|
|
1557
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
1558
|
+
return;
|
|
1559
|
+
}
|
|
1528
1560
|
|
|
1529
1561
|
this.recordLoader(this, selection).then(response => {
|
|
1530
1562
|
this.dispatchAction(Action.RECORD_LOADED, response)
|
|
1563
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
1531
1564
|
}).catch(cause => {
|
|
1565
|
+
this.dispatchAction(Action.LOADING_PROPERTIES_CLEANED);
|
|
1532
1566
|
const {errorCode} = cause;
|
|
1533
1567
|
fail(new ErrorException("Erro ao recarregar registro", cause, errorCode));
|
|
1534
1568
|
});
|
|
@@ -63,6 +63,8 @@ export enum Action{
|
|
|
63
63
|
CHILD_CHANGED = "childChanged",
|
|
64
64
|
|
|
65
65
|
FIELD_INVALIDATED = "fieldInvalidated",
|
|
66
|
-
INVALIDATE_CLEAN = "invalidateClean"
|
|
66
|
+
INVALIDATE_CLEAN = "invalidateClean",
|
|
67
67
|
|
|
68
|
+
LOADING_PROPERTY_ADDED = "loadingPropertyAdded",
|
|
69
|
+
LOADING_PROPERTIES_CLEANED = "loadingPropertiesCleaned"
|
|
68
70
|
}
|
|
@@ -94,27 +94,28 @@ export const getChangedFieldValue = (fieldName: string, record: Record, stateMan
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export const getChangesToSave = (dataUnit: string, stateManager: StateManager): Array<Change> => {
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
|
|
99
98
|
const changes = getChanges(stateManager);
|
|
100
99
|
const selectedRecords = getSelectionRecords(stateManager) || [];
|
|
101
|
-
const records:
|
|
100
|
+
const records: Map<string, Record> = new Map(
|
|
102
101
|
getRecords(stateManager)
|
|
103
102
|
.concat(
|
|
104
|
-
selectedRecords
|
|
105
|
-
.filter(record => !isAddedRecord(record.__record__id__, stateManager)
|
|
106
|
-
)
|
|
103
|
+
selectedRecords.filter(record => !isAddedRecord(record.__record__id__, stateManager))
|
|
107
104
|
)
|
|
105
|
+
.map(r => [r.__record__id__, r])
|
|
108
106
|
);
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
107
|
+
|
|
108
|
+
const result: Array<Change> = [];
|
|
109
|
+
|
|
110
|
+
if(changes != undefined){
|
|
111
|
+
Array.from(changes.entries())
|
|
112
|
+
.forEach(([recordId, change]) =>{
|
|
113
|
+
const record = records.get(recordId);
|
|
114
|
+
if(record != undefined){
|
|
115
|
+
result.push(new Change(dataUnit, record, change, ChangeOperation.UPDATE, record.__record__source__id__));
|
|
115
116
|
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
118
119
|
|
|
119
120
|
const addedRecords = getAddedRecords(stateManager);
|
|
120
121
|
if (addedRecords) {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
import { ActionReducer, StateAction } from "../StateManager.js";
|
|
3
|
+
import { Action } from "../action/DataUnitAction.js";
|
|
4
|
+
import StateManager from "../StateManager.js";
|
|
5
|
+
|
|
6
|
+
class LoadingPropertiesImpl implements ActionReducer{
|
|
7
|
+
|
|
8
|
+
public sliceName: string = "loadingProperties";
|
|
9
|
+
|
|
10
|
+
public reduce(_stateManager:StateManager, currentState: Map<string, string>, action: StateAction): Map<string, string>|undefined {
|
|
11
|
+
switch(action.type){
|
|
12
|
+
case Action.LOADING_PROPERTY_ADDED:
|
|
13
|
+
return buildNewState(currentState, action.payload);
|
|
14
|
+
case Action.LOADING_PROPERTIES_CLEANED:
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return currentState;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const LoadingPropertiesReducer = new LoadingPropertiesImpl();
|
|
22
|
+
|
|
23
|
+
export const getLoadingProperties = (stateManager: StateManager): Map<string, string>|undefined => {
|
|
24
|
+
return stateManager.select(LoadingPropertiesReducer.sliceName, (state: Map<string, string>) => state);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
function buildNewState(currentState: Map<string, string>, payload: any): Map<string, string>{
|
|
28
|
+
const newState = new Map(currentState);
|
|
29
|
+
if(payload != undefined){
|
|
30
|
+
for (const [key, value] of Object.entries(payload)) {
|
|
31
|
+
if(typeof key === "string" && typeof value === "string"){
|
|
32
|
+
newState.set(key, value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return newState;
|
|
37
|
+
}
|