@sankhyalabs/core 0.0.0-bugfix-dev-KB-6165.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/.nojekyll +1 -0
- package/.docs/README.md +63 -0
- package/.docs/classes/ApplicationContext.md +90 -0
- package/.docs/classes/ArrayUtils.md +99 -0
- package/.docs/classes/AuthorizedServiceCaller.md +76 -0
- package/.docs/classes/Change.md +190 -0
- package/.docs/classes/DataUnit.md +2453 -0
- package/.docs/classes/DataUnitAction.md +96 -0
- package/.docs/classes/DataUnitStorage.md +116 -0
- package/.docs/classes/DateUtils.md +327 -0
- package/.docs/classes/ElementIDUtils.md +308 -0
- package/.docs/classes/ErrorException.md +214 -0
- package/.docs/classes/ErrorTracking.md +62 -0
- package/.docs/classes/FloatingManager.md +530 -0
- package/.docs/classes/HTMLBuilder.md +45 -0
- package/.docs/classes/HttpProvider.md +96 -0
- package/.docs/classes/JSUtils.md +115 -0
- package/.docs/classes/MaskFormatter-1.md +347 -0
- package/.docs/classes/NumberUtils.md +335 -0
- package/.docs/classes/ObjectUtils.md +160 -0
- package/.docs/classes/OnboardingUtils.md +126 -0
- package/.docs/classes/PromiseSync.md +91 -0
- package/.docs/classes/ReadyUtil.md +115 -0
- package/.docs/classes/RequestMetadata.md +84 -0
- package/.docs/classes/SelectionInfo.md +168 -0
- package/.docs/classes/SkwHttpProvider.md +109 -0
- package/.docs/classes/StringUtils.md +562 -0
- package/.docs/classes/TimeFormatter.md +98 -0
- package/.docs/classes/UserAgentUtils.md +58 -0
- package/.docs/classes/VersionUtils.md +42 -0
- package/.docs/classes/WaitingChangeException.md +200 -0
- package/.docs/classes/WarningException.md +214 -0
- package/.docs/enums/Action.md +294 -0
- package/.docs/enums/ChangeOperation.md +52 -0
- package/.docs/enums/DataType.md +63 -0
- package/.docs/enums/DependencyType.md +41 -0
- package/.docs/enums/SelectionMode.md +30 -0
- package/.docs/enums/SortMode.md +30 -0
- package/.docs/enums/UserInterface.md +195 -0
- package/.docs/interfaces/ChildDescriptor.md +41 -0
- package/.docs/interfaces/ChildLink.md +30 -0
- package/.docs/interfaces/DUActionInterceptor.md +29 -0
- package/.docs/interfaces/ExecutionContext.md +58 -0
- package/.docs/interfaces/FieldDescriptor.md +140 -0
- package/.docs/interfaces/Filter.md +41 -0
- package/.docs/interfaces/IElementIDInfo.md +30 -0
- package/.docs/interfaces/LoadDataRequest.md +101 -0
- package/.docs/interfaces/LoadDataResponse.md +36 -0
- package/.docs/interfaces/PageRequest.md +41 -0
- package/.docs/interfaces/PaginationInfo.md +75 -0
- package/.docs/interfaces/PromiseSyncCallback.md +39 -0
- package/.docs/interfaces/QuickFilter.md +41 -0
- package/.docs/interfaces/Record.md +62 -0
- package/.docs/interfaces/SavedRecord.md +85 -0
- package/.docs/interfaces/Sort.md +41 -0
- package/.docs/interfaces/SortingProvider.md +29 -0
- package/.docs/interfaces/UnitMetadata.md +52 -0
- package/.docs/interfaces/WaitingChange.md +41 -0
- package/.docs/modules/MaskFormatter.md +37 -0
- package/.docs/modules.md +74 -0
- package/.docs/package.json +15 -0
- package/.eslintignore +2 -0
- package/.eslintrc.cjs +35 -0
- package/.husky/commit-msg +4 -0
- package/.releaserc +58 -0
- package/README.md +62 -0
- package/commitlint.config.cjs +14 -0
- package/dist/async/PromiseSync.d.ts +29 -0
- package/dist/async/PromiseSync.js +31 -0
- package/dist/async/PromiseSync.js.map +1 -0
- package/dist/dataunit/DataUnit.d.ts +924 -0
- package/dist/dataunit/DataUnit.js +1621 -0
- package/dist/dataunit/DataUnit.js.map +1 -0
- package/dist/dataunit/DataUnitStorage.d.ts +24 -0
- package/dist/dataunit/DataUnitStorage.js +39 -0
- package/dist/dataunit/DataUnitStorage.js.map +1 -0
- package/dist/dataunit/formatting/PrettyFormatter.d.ts +2 -0
- package/dist/dataunit/formatting/PrettyFormatter.js +94 -0
- package/dist/dataunit/formatting/PrettyFormatter.js.map +1 -0
- package/dist/dataunit/loading/LoadDataRequest.d.ts +19 -0
- package/dist/dataunit/loading/LoadDataRequest.js +2 -0
- package/dist/dataunit/loading/LoadDataRequest.js.map +1 -0
- package/dist/dataunit/loading/LoadDataResponse.d.ts +9 -0
- package/dist/dataunit/loading/LoadDataResponse.js +2 -0
- package/dist/dataunit/loading/LoadDataResponse.js.map +1 -0
- package/dist/dataunit/loading/PaginationInfo.d.ts +13 -0
- package/dist/dataunit/loading/PaginationInfo.js +2 -0
- package/dist/dataunit/loading/PaginationInfo.js.map +1 -0
- package/dist/dataunit/metadata/DataType.d.ts +54 -0
- package/dist/dataunit/metadata/DataType.js +124 -0
- package/dist/dataunit/metadata/DataType.js.map +1 -0
- package/dist/dataunit/metadata/UnitMetadata.d.ts +88 -0
- package/dist/dataunit/metadata/UnitMetadata.js +36 -0
- package/dist/dataunit/metadata/UnitMetadata.js.map +1 -0
- package/dist/dataunit/state/HistReducer.d.ts +10 -0
- package/dist/dataunit/state/HistReducer.js +28 -0
- package/dist/dataunit/state/HistReducer.js.map +1 -0
- package/dist/dataunit/state/StateManager.d.ts +57 -0
- package/dist/dataunit/state/StateManager.js +97 -0
- package/dist/dataunit/state/StateManager.js.map +1 -0
- package/dist/dataunit/state/action/DataUnitAction.d.ts +40 -0
- package/dist/dataunit/state/action/DataUnitAction.js +42 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js +30 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +13 -0
- package/dist/dataunit/state/slice/ChangesSlice.js +105 -0
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.d.ts +10 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js +66 -0
- package/dist/dataunit/state/slice/InvalidFieldsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js +45 -0
- package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RecordsSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/RecordsSlice.js +62 -0
- package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js +25 -0
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SelectionSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SelectionSlice.js +155 -0
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -0
- package/dist/dataunit/state/slice/SnapshotSlice.d.ts +19 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js +106 -0
- package/dist/dataunit/state/slice/SnapshotSlice.js.map +1 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js +21 -0
- package/dist/dataunit/state/slice/UnitMetadataSlice.js.map +1 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.d.ts +12 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js +56 -0
- package/dist/dataunit/state/slice/WaitingChangesSlice.js.map +1 -0
- package/dist/exceptions/ErrorException.d.ts +14 -0
- package/dist/exceptions/ErrorException.js +13 -0
- package/dist/exceptions/ErrorException.js.map +1 -0
- package/dist/exceptions/WaitingChangeException.d.ts +12 -0
- package/dist/exceptions/WaitingChangeException.js +12 -0
- package/dist/exceptions/WaitingChangeException.js.map +1 -0
- package/dist/exceptions/WarningException.d.ts +14 -0
- package/dist/exceptions/WarningException.js +13 -0
- package/dist/exceptions/WarningException.js.map +1 -0
- package/dist/html/HTMLBuilder.d.ts +3 -0
- package/dist/html/HTMLBuilder.js +9 -0
- package/dist/html/HTMLBuilder.js.map +1 -0
- package/dist/http/AuthorizedServiceCaller.d.ts +11 -0
- package/dist/http/AuthorizedServiceCaller.js +54 -0
- package/dist/http/AuthorizedServiceCaller.js.map +1 -0
- package/dist/http/HttpProvider.d.ts +25 -0
- package/dist/http/HttpProvider.js +74 -0
- package/dist/http/HttpProvider.js.map +1 -0
- package/dist/http/RequestMetadata.d.ts +30 -0
- package/dist/http/RequestMetadata.js +25 -0
- package/dist/http/RequestMetadata.js.map +1 -0
- package/dist/http/SkwHttpProvider.d.ts +9 -0
- package/dist/http/SkwHttpProvider.js +67 -0
- package/dist/http/SkwHttpProvider.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/traking/ErrorTraking.d.ts +19 -0
- package/dist/traking/ErrorTraking.js +34 -0
- package/dist/traking/ErrorTraking.js.map +1 -0
- package/dist/ui/FloatingManager.d.ts +164 -0
- package/dist/ui/FloatingManager.js +358 -0
- package/dist/ui/FloatingManager.js.map +1 -0
- package/dist/utils/ApplicationContext.d.ts +26 -0
- package/dist/utils/ApplicationContext.js +38 -0
- package/dist/utils/ApplicationContext.js.map +1 -0
- package/dist/utils/ArrayUtils.d.ts +29 -0
- package/dist/utils/ArrayUtils.js +57 -0
- package/dist/utils/ArrayUtils.js.map +1 -0
- package/dist/utils/CriteriaModel.d.ts +107 -0
- package/dist/utils/CriteriaModel.js +172 -0
- package/dist/utils/CriteriaModel.js.map +1 -0
- package/dist/utils/CriteriaParameter.d.ts +69 -0
- package/dist/utils/CriteriaParameter.js +83 -0
- package/dist/utils/CriteriaParameter.js.map +1 -0
- package/dist/utils/DateUtils.d.ts +97 -0
- package/dist/utils/DateUtils.js +171 -0
- package/dist/utils/DateUtils.js.map +1 -0
- package/dist/utils/ElementIDUtils.d.ts +72 -0
- package/dist/utils/ElementIDUtils.js +161 -0
- package/dist/utils/ElementIDUtils.js.map +1 -0
- package/dist/utils/JSUtils.d.ts +36 -0
- package/dist/utils/JSUtils.js +66 -0
- package/dist/utils/JSUtils.js.map +1 -0
- package/dist/utils/MaskFormatter.d.ts +148 -0
- package/dist/utils/MaskFormatter.js +356 -0
- package/dist/utils/MaskFormatter.js.map +1 -0
- package/dist/utils/NumberUtils.d.ts +127 -0
- package/dist/utils/NumberUtils.js +245 -0
- package/dist/utils/NumberUtils.js.map +1 -0
- package/dist/utils/ObjectUtils.d.ts +47 -0
- package/dist/utils/ObjectUtils.js +68 -0
- package/dist/utils/ObjectUtils.js.map +1 -0
- package/dist/utils/OnboardingUtils.d.ts +17 -0
- package/dist/utils/OnboardingUtils.js +41 -0
- package/dist/utils/OnboardingUtils.js.map +1 -0
- package/dist/utils/ReadyUtil.d.ts +24 -0
- package/dist/utils/ReadyUtil.js +41 -0
- package/dist/utils/ReadyUtil.js.map +1 -0
- package/dist/utils/StringUtils.d.ts +167 -0
- package/dist/utils/StringUtils.js +328 -0
- package/dist/utils/StringUtils.js.map +1 -0
- package/dist/utils/TimeFormatter.d.ts +33 -0
- package/dist/utils/TimeFormatter.js +98 -0
- package/dist/utils/TimeFormatter.js.map +1 -0
- package/dist/utils/UserAgentUtils/index.d.ts +15 -0
- package/dist/utils/UserAgentUtils/index.js +48 -0
- package/dist/utils/UserAgentUtils/index.js.map +1 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.d.ts +17 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js +40 -0
- package/dist/utils/UserAgentUtils/navigatorAgentList.js.map +1 -0
- package/dist/utils/VersionUtils.d.ts +7 -0
- package/dist/utils/VersionUtils.js +31 -0
- package/dist/utils/VersionUtils.js.map +1 -0
- package/jest.config.ts +17 -0
- package/mock/http/XMLHttpRequest-mock.js +26 -0
- package/package.json +52 -0
- package/scripts/runlink.bat +1 -0
- package/scripts/runlink.sh +1 -0
- package/src/async/PromiseSync.ts +49 -0
- package/src/dataunit/DataUnit.ts +1835 -0
- package/src/dataunit/DataUnitStorage.ts +43 -0
- package/src/dataunit/formatting/PrettyFormatter.ts +113 -0
- package/src/dataunit/loading/LoadDataRequest.ts +26 -0
- package/src/dataunit/loading/LoadDataResponse.ts +11 -0
- package/src/dataunit/loading/PaginationInfo.ts +18 -0
- package/src/dataunit/metadata/DataType.ts +127 -0
- package/src/dataunit/metadata/UnitMetadata.ts +102 -0
- package/src/dataunit/state/HistReducer.ts +34 -0
- package/src/dataunit/state/StateManager.ts +142 -0
- package/src/dataunit/state/action/DataUnitAction.ts +67 -0
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +48 -0
- package/src/dataunit/state/slice/ChangesSlice.ts +125 -0
- package/src/dataunit/state/slice/InvalidFieldsSlice.ts +85 -0
- package/src/dataunit/state/slice/LoadingControlSlice.ts +60 -0
- package/src/dataunit/state/slice/RecordsSlice.ts +74 -0
- package/src/dataunit/state/slice/RemovedRecordsSlice.ts +30 -0
- package/src/dataunit/state/slice/SelectionSlice.ts +193 -0
- package/src/dataunit/state/slice/SnapshotSlice.ts +139 -0
- package/src/dataunit/state/slice/UnitMetadataSlice.ts +30 -0
- package/src/dataunit/state/slice/WaitingChangesSlice.ts +74 -0
- package/src/exceptions/ErrorException.ts +25 -0
- package/src/exceptions/WaitingChangeException.ts +21 -0
- package/src/exceptions/WarningException.ts +26 -0
- package/src/html/HTMLBuilder.ts +8 -0
- package/src/http/AuthorizedServiceCaller.ts +58 -0
- package/src/http/HttpProvider.ts +94 -0
- package/src/http/RequestMetadata.ts +42 -0
- package/src/http/SkwHttpProvider.ts +78 -0
- package/src/index.ts +93 -0
- package/src/traking/ErrorTraking.ts +37 -0
- package/src/ui/FloatingManager.ts +417 -0
- package/src/utils/ApplicationContext.ts +42 -0
- package/src/utils/ArrayUtils.ts +61 -0
- package/src/utils/CriteriaModel.ts +205 -0
- package/src/utils/CriteriaParameter.ts +108 -0
- package/src/utils/DateUtils.ts +195 -0
- package/src/utils/ElementIDUtils.ts +184 -0
- package/src/utils/JSUtils.ts +69 -0
- package/src/utils/MaskFormatter.ts +407 -0
- package/src/utils/NumberUtils.ts +283 -0
- package/src/utils/ObjectUtils.ts +76 -0
- package/src/utils/OnboardingUtils.ts +46 -0
- package/src/utils/ReadyUtil.ts +45 -0
- package/src/utils/StringUtils.ts +359 -0
- package/src/utils/TimeFormatter.ts +98 -0
- package/src/utils/UserAgentUtils/index.ts +62 -0
- package/src/utils/UserAgentUtils/navigatorAgentList.ts +39 -0
- package/src/utils/VersionUtils.ts +37 -0
- package/test/http/HttpProvider.spec.ts +35 -0
- package/test/http/SkwHttpProvider.ts.spec.ts +34 -0
- package/test/util/CriteriaModel.spec.ts +232 -0
- package/test/util/CriteriaParameter.spec.ts +52 -0
- package/test/util/DataUnitStorage.spec.ts +63 -0
- package/test/util/ElementIDUtils.spec.ts +272 -0
- package/test/util/MaskFormatter.spec.ts +138 -0
- package/test/util/NumberUtils.spec.ts +182 -0
- package/test/util/StringUtils.spec.ts +51 -0
- package/test/util/TimeFormatter.spec.ts +26 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import DataUnit from "./DataUnit.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Classe responsável por armazenar instâncias de DataUnit.
|
|
5
|
+
*/
|
|
6
|
+
export class DataUnitStorage {
|
|
7
|
+
private static dataUnitMap: WeakMap<{ key: string }, DataUnit> = new WeakMap();
|
|
8
|
+
private static keyMap: Map<string, { key: string }> = new Map();
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Retorna uma instância de DataUnit armazenada no DataUnitStorage.
|
|
12
|
+
* @param {string} dataUnitName - O nome do DataUnit.
|
|
13
|
+
* @returns {DataUnit | undefined} - A instância do DataUnit ou undefined caso não seja encontrada.
|
|
14
|
+
*/
|
|
15
|
+
static get(dataUnitName: string): DataUnit | undefined {
|
|
16
|
+
const key = this.keyMap.get(dataUnitName);
|
|
17
|
+
if (key) return this.dataUnitMap.get(key);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Armazena uma instância de DataUnit no DataUnitStorage.
|
|
22
|
+
* @param {DataUnit} dataUnit - A instância de DataUnit a ser armazenada.
|
|
23
|
+
*/
|
|
24
|
+
static put(dataUnit: DataUnit): void {
|
|
25
|
+
const key = { key: dataUnit.name };
|
|
26
|
+
this.dataUnitMap.set(key, dataUnit);
|
|
27
|
+
this.keyMap.set(dataUnit.name, key);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Remove uma instância de DataUnit do DataUnitStorage.
|
|
32
|
+
* @param {DataUnit | string} dataUnit - A instância de DataUnit ou o nome do DataUnit a ser removido.
|
|
33
|
+
*/
|
|
34
|
+
static remove(dataUnit: DataUnit | string): void {
|
|
35
|
+
const key = typeof dataUnit === 'string' ? this.keyMap.get(dataUnit) : this.keyMap.get(dataUnit.name);
|
|
36
|
+
const dataUnitKey = typeof dataUnit === 'string' ? dataUnit : dataUnit.name;
|
|
37
|
+
|
|
38
|
+
if (key) {
|
|
39
|
+
this.dataUnitMap.delete(key);
|
|
40
|
+
this.keyMap.delete(dataUnitKey);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import DateUtils from "../../utils/DateUtils.js";
|
|
2
|
+
import { MaskFormatter } from "../../utils/MaskFormatter.js";
|
|
3
|
+
import { NumberUtils } from "../../utils/NumberUtils.js";
|
|
4
|
+
import { DataType, toString } from "../metadata/DataType.js";
|
|
5
|
+
import { FieldDescriptor, UserInterface } from "../metadata/UnitMetadata.js";
|
|
6
|
+
|
|
7
|
+
export const getFormattedValue = (value: any, descriptor?: FieldDescriptor) => {
|
|
8
|
+
if(descriptor?.dataType === DataType.OBJECT){
|
|
9
|
+
if(Object.hasOwn(value, "value")){
|
|
10
|
+
return getSearchFormat(value, descriptor);
|
|
11
|
+
}
|
|
12
|
+
return value == undefined ? "" : value.toString();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if(descriptor?.userInterface === UserInterface.OPTIONSELECTOR){
|
|
16
|
+
return getOptionFormat(value, descriptor);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if(descriptor?.dataType === DataType.BOOLEAN){
|
|
20
|
+
return value ? "Sim" : "Não";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if(descriptor?.dataType === DataType.NUMBER){
|
|
24
|
+
return getNumberFormat(value, descriptor);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if(descriptor?.userInterface === UserInterface.DATE){
|
|
28
|
+
return DateUtils.formatDate(value);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if(descriptor?.userInterface === UserInterface.TIME){
|
|
32
|
+
return DateUtils.formatTime(value);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if(descriptor?.userInterface === UserInterface.DATETIME){
|
|
36
|
+
return DateUtils.formatDateTime(value);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const mask = getMask(value, descriptor);
|
|
40
|
+
if(mask != undefined){
|
|
41
|
+
try{
|
|
42
|
+
return new MaskFormatter(mask).format(value);
|
|
43
|
+
} catch(error){
|
|
44
|
+
console.warn(`Erro ao formatar valor: ${value}. Mascara: ${mask}. Erro: ${error}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return toString(descriptor?.dataType, value);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const getNumberFormat = (value: any, descriptor: FieldDescriptor) => {
|
|
52
|
+
if(descriptor.userInterface === UserInterface.INTEGERNUMBER){
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
const precision = Number(descriptor.properties?.precision || 2);
|
|
56
|
+
const prettyPrecision = Number(descriptor.properties?.prettyPrecision || precision);
|
|
57
|
+
|
|
58
|
+
return NumberUtils.format(value, precision, prettyPrecision);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const getSearchFormat = (value: any, descriptor: FieldDescriptor) => {
|
|
62
|
+
const {value: codeValue, label} = value;
|
|
63
|
+
if(descriptor.userInterface === UserInterface.SEARCH){
|
|
64
|
+
return label ? `${codeValue} - ${label}` : codeValue;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return label ? label : codeValue;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const getOptionFormat = (value: any, descriptor: FieldDescriptor) => {
|
|
71
|
+
const prop: string | Array<{label: string, value: string}> = descriptor.properties?.options;
|
|
72
|
+
let options: any;
|
|
73
|
+
|
|
74
|
+
if (typeof prop === "string") {
|
|
75
|
+
options = JSON.parse(prop);
|
|
76
|
+
} else {
|
|
77
|
+
options = {};
|
|
78
|
+
prop.forEach(opt => options[opt.label] = opt.value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if(typeof value === "object"){
|
|
82
|
+
value = value.value
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if(options && Object.hasOwn(options, value)){
|
|
86
|
+
return options[value];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
const getMask = (value: string, descriptor: FieldDescriptor | undefined): string | undefined => {
|
|
94
|
+
|
|
95
|
+
if(descriptor == undefined){
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const mask = descriptor.properties?.mask;
|
|
100
|
+
if(mask == undefined){
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if(mask === "cgc_cpf"){
|
|
105
|
+
return value.length === 11 ? MaskFormatter.DEFAULT_MASKS.cpf : MaskFormatter.DEFAULT_MASKS.cnpj;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if(Object.hasOwn(MaskFormatter.DEFAULT_MASKS, mask)){
|
|
109
|
+
return MaskFormatter.DEFAULT_MASKS[mask];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return mask;
|
|
113
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { QuickFilter } from "../DataUnit.js";
|
|
2
|
+
import { Filter, Sort } from "../metadata/UnitMetadata.js";
|
|
3
|
+
|
|
4
|
+
/** Atributos enviados na requisição de carregamento dos registros */
|
|
5
|
+
export interface LoadDataRequest {
|
|
6
|
+
/** Indice inicial dos registros que será retornado */
|
|
7
|
+
offset?: number;
|
|
8
|
+
|
|
9
|
+
/** Quantidade de registros que será retornado */
|
|
10
|
+
limit?: number;
|
|
11
|
+
|
|
12
|
+
/** Filtro rápido */
|
|
13
|
+
quickFilter?: QuickFilter;
|
|
14
|
+
|
|
15
|
+
/** Filtros */
|
|
16
|
+
filters?: Array<Filter>;
|
|
17
|
+
|
|
18
|
+
/** Ordenação dos resultados */
|
|
19
|
+
sort?: Array<Sort>;
|
|
20
|
+
|
|
21
|
+
/** Info parent */
|
|
22
|
+
parentRecordId?: string | undefined;
|
|
23
|
+
|
|
24
|
+
/** Na navegação de páginas devemos manter a seleção */
|
|
25
|
+
keepSelection?: boolean;
|
|
26
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Record } from "../DataUnit.js";
|
|
2
|
+
import { PaginationInfo } from "./PaginationInfo.js";
|
|
3
|
+
|
|
4
|
+
/** Retorno dos registros da requisição de carregamento de dados */
|
|
5
|
+
export interface LoadDataResponse {
|
|
6
|
+
/** Registros retornados na requisição */
|
|
7
|
+
records: Array<Record>;
|
|
8
|
+
|
|
9
|
+
/** Informações da paginação */
|
|
10
|
+
paginationInfo?: PaginationInfo;
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Informações da paginação retornada na requisição de carregamento de registros */
|
|
2
|
+
export interface PaginationInfo {
|
|
3
|
+
|
|
4
|
+
/** Página atual */
|
|
5
|
+
currentPage: number;
|
|
6
|
+
|
|
7
|
+
/** Indice do primeiro registro na página */
|
|
8
|
+
firstRecord: number;
|
|
9
|
+
|
|
10
|
+
/** Indice do último registro na página */
|
|
11
|
+
lastRecord: number;
|
|
12
|
+
|
|
13
|
+
/** Quantidade total de registros */
|
|
14
|
+
total: number;
|
|
15
|
+
|
|
16
|
+
/** Se ainda existem mais registros além dos exibidos na página */
|
|
17
|
+
hasMore: boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import DateUtils from "../../utils/DateUtils.js";
|
|
2
|
+
|
|
3
|
+
/* `DataType` Tipos de dados válidos para os valores dos campos no dataUnit */
|
|
4
|
+
|
|
5
|
+
export enum DataType {
|
|
6
|
+
NUMBER = "NUMBER",
|
|
7
|
+
DATE = "DATE",
|
|
8
|
+
TEXT = "TEXT",
|
|
9
|
+
BOOLEAN = "BOOLEAN",
|
|
10
|
+
OBJECT = "OBJECT"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Converte o valor para outro tipo.
|
|
15
|
+
*
|
|
16
|
+
* Tipos aceitos:
|
|
17
|
+
*
|
|
18
|
+
* NUMBER = "NUMBER",
|
|
19
|
+
* DATE = "DATE",
|
|
20
|
+
* TEXT = "TEXT",
|
|
21
|
+
* BOOLEAN = "BOOLEAN",
|
|
22
|
+
* OBJECT = "OBJECT"
|
|
23
|
+
*
|
|
24
|
+
* @param dataType - Tipo que o valor será convertido.
|
|
25
|
+
* @param value - Valor a ser convertido.
|
|
26
|
+
* @returns - Informação convertida para o tipo informado.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ``` informado: DataType.NUMBER, "10" | Retorno: 10 ```
|
|
30
|
+
*/
|
|
31
|
+
export const convertType = (dataType: DataType, value: any): any => {
|
|
32
|
+
|
|
33
|
+
if (value === undefined || value === null) {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (typeof value === "object" && dataType !== DataType.OBJECT && "value" in value){
|
|
38
|
+
value = value.value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return getConvertedValue(dataType, value);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Efetua a conversão da informação de acordo com o tipo definido pelo dataType.
|
|
46
|
+
*
|
|
47
|
+
* Tipos aceitos:
|
|
48
|
+
*
|
|
49
|
+
* NUMBER = "NUMBER",
|
|
50
|
+
* DATE = "DATE",
|
|
51
|
+
* TEXT = "TEXT",
|
|
52
|
+
* BOOLEAN = "BOOLEAN",
|
|
53
|
+
* OBJECT = "OBJECT"
|
|
54
|
+
*
|
|
55
|
+
* @param dataType - Tipo que o valor será convertido.
|
|
56
|
+
* @param value - Valor a ser convertido.
|
|
57
|
+
* @returns - Informação convertida para o tipo informado.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ``` informado: DataType.NUMBER, "10" | Retorno: 10 ```
|
|
61
|
+
*/
|
|
62
|
+
export const getConvertedValue = (dataType: DataType, value: any): any => {
|
|
63
|
+
switch (dataType) {
|
|
64
|
+
case DataType.NUMBER:
|
|
65
|
+
return value === "" || isNaN(Number(value)) ? null : Number(value);
|
|
66
|
+
case DataType.OBJECT:
|
|
67
|
+
return typeof value === "string" ? JSON.parse(value) : value;
|
|
68
|
+
case DataType.BOOLEAN:
|
|
69
|
+
if (typeof value === "string") {
|
|
70
|
+
return Boolean(value === 'true');
|
|
71
|
+
}
|
|
72
|
+
return Boolean(value);
|
|
73
|
+
case DataType.DATE:
|
|
74
|
+
if (value == undefined || typeof value !== "string") {
|
|
75
|
+
return DateUtils.validateDate(value, true);
|
|
76
|
+
}
|
|
77
|
+
const newDate = DateUtils.validateDate(new Date(value), true);
|
|
78
|
+
if (newDate == undefined) {
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
return newDate;
|
|
82
|
+
default:
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Converte valor para texto
|
|
89
|
+
*
|
|
90
|
+
* @param dataType - Tipo do dado para conversão
|
|
91
|
+
* @param value - Valor a ser convertido.
|
|
92
|
+
* @returns - Valor convertido em forma de texto.
|
|
93
|
+
*
|
|
94
|
+
*/
|
|
95
|
+
export const toString = ( dataType: DataType|undefined, value: any): string => {
|
|
96
|
+
|
|
97
|
+
if (value === undefined || value === null) {
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (dataType) {
|
|
102
|
+
if (dataType === DataType.OBJECT) {
|
|
103
|
+
if (typeof value !== "object") {
|
|
104
|
+
value = {label: "", value }
|
|
105
|
+
}
|
|
106
|
+
return JSON.stringify(value);
|
|
107
|
+
} else if (dataType === DataType.DATE) {
|
|
108
|
+
return DateUtils.formatRfc3339(value as Date);
|
|
109
|
+
} else {
|
|
110
|
+
return value.toString();
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
if (typeof value === "string") {
|
|
114
|
+
return value;
|
|
115
|
+
} else if (value instanceof Date) {
|
|
116
|
+
return DateUtils.formatRfc3339(value);
|
|
117
|
+
} else {
|
|
118
|
+
try {
|
|
119
|
+
return JSON.stringify(value);
|
|
120
|
+
} catch {
|
|
121
|
+
value = value.toString();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { DataType } from "./DataType.js";
|
|
2
|
+
|
|
3
|
+
export interface UnitMetadata{
|
|
4
|
+
name: string;
|
|
5
|
+
label: string;
|
|
6
|
+
fields: Array<FieldDescriptor>;
|
|
7
|
+
children?: Array<ChildDescriptor>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ChildDescriptor{
|
|
11
|
+
label: string;
|
|
12
|
+
name: string;
|
|
13
|
+
links: Array<ChildLink>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface ChildLink{
|
|
17
|
+
source: string;
|
|
18
|
+
target: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface FieldDescriptor {
|
|
22
|
+
name: string;
|
|
23
|
+
label: string;
|
|
24
|
+
dataType: DataType;
|
|
25
|
+
userInterface?: UserInterface;
|
|
26
|
+
defaultValue?: any;
|
|
27
|
+
visible?: boolean;
|
|
28
|
+
readOnly?: boolean;
|
|
29
|
+
required?: boolean;
|
|
30
|
+
properties?: any;
|
|
31
|
+
dependencies?: Array<FieldDependency>;
|
|
32
|
+
group?: string;
|
|
33
|
+
order?: number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface FieldDependency {
|
|
37
|
+
masterFields: Array<string>;
|
|
38
|
+
type: DependencyType;
|
|
39
|
+
expression: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface Filter{
|
|
43
|
+
name: string;
|
|
44
|
+
expression: string;
|
|
45
|
+
params?: Array<FilterParam>
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface FilterParam{
|
|
49
|
+
name: string
|
|
50
|
+
dataType: DataType
|
|
51
|
+
value: any
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface Sort{
|
|
55
|
+
field: string
|
|
56
|
+
mode: SortMode
|
|
57
|
+
dataType: DataType
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface FilterProvider{
|
|
61
|
+
getFilter(dataUnit: string): Array<Filter> | undefined;
|
|
62
|
+
getKey?: () => string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface SortingProvider{
|
|
66
|
+
getSort(dataUnit: string): Array<Sort> | undefined;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export enum SortMode{
|
|
70
|
+
ASC = "ASC",
|
|
71
|
+
DESC = "DESC"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export enum DependencyType {
|
|
75
|
+
SEARCHING = "SEARCHING",
|
|
76
|
+
REQUIREMENT = "REQUIREMENT",
|
|
77
|
+
VISIBILITY = "REQUIREMENT"
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export enum UserInterface {
|
|
81
|
+
FILE = "FILE",
|
|
82
|
+
IMAGE = "IMAGE",
|
|
83
|
+
DATE = "DATE",
|
|
84
|
+
DATETIME = "DATETIME",
|
|
85
|
+
TIME = "TIME",
|
|
86
|
+
ELAPSEDTIME = "ELAPSEDTIME",
|
|
87
|
+
CHECKBOX = "CHECKBOX",
|
|
88
|
+
SWITCH = "SWITCH",
|
|
89
|
+
OPTIONSELECTOR = "OPTIONSELECTOR",
|
|
90
|
+
DECIMALNUMBER = "DECIMALNUMBER",
|
|
91
|
+
INTEGERNUMBER = "INTEGERNUMBER",
|
|
92
|
+
SEARCH = "SEARCH",
|
|
93
|
+
SHORTTEXT = "SHORTTEXT",
|
|
94
|
+
PASSWORD = "PASSWORD",
|
|
95
|
+
MASKEDTEXT = "MASKEDTEXT",
|
|
96
|
+
LONGTEXT = "LONGTEXT",
|
|
97
|
+
HTML = "HTML"
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export enum DataUnitTransient {
|
|
101
|
+
DATA_UNIT_TRANSIENT_PREFIX_NAME = 'transient.'
|
|
102
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ActionReducer } from "./StateManager.js";
|
|
2
|
+
import { Action } from "./action/DataUnitAction.js";
|
|
3
|
+
import StateManager, {StateAction} from "./StateManager.js";
|
|
4
|
+
|
|
5
|
+
class HistReducerImpl implements ActionReducer {
|
|
6
|
+
|
|
7
|
+
public sliceName: string = "";
|
|
8
|
+
|
|
9
|
+
public reduce(stateManager: StateManager, _currentState: void, action: StateAction): void {
|
|
10
|
+
|
|
11
|
+
switch (action.type) {
|
|
12
|
+
case Action.DATA_SAVED:
|
|
13
|
+
case Action.EDITION_CANCELED:
|
|
14
|
+
stateManager.clearUndo();
|
|
15
|
+
break;
|
|
16
|
+
case Action.CHANGE_UNDONE:
|
|
17
|
+
stateManager.undo();
|
|
18
|
+
break;
|
|
19
|
+
case Action.CHANGE_REDONE:
|
|
20
|
+
stateManager.redo();
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const HistReducer = new HistReducerImpl();
|
|
27
|
+
|
|
28
|
+
export const canUndo = (stateManager: StateManager): boolean => {
|
|
29
|
+
return stateManager.canUndo();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const canRedo = (stateManager: StateManager): boolean =>{
|
|
33
|
+
return stateManager.canRedo();
|
|
34
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Essa classe representa uma interpretação do padrão de projetos Flux.
|
|
3
|
+
* No padrão Flux os dados da aplicação são chamados de "estado" e existem
|
|
4
|
+
* algumas regras para gerenciamento/manipulação desse estado:
|
|
5
|
+
*
|
|
6
|
+
* 1 - O estado é imutável.
|
|
7
|
+
* 2 - Toda modificação de estado é representada por uma "ação".
|
|
8
|
+
* 3 - Quando "ações" acontecem a "store" cria um novo estado e notifica a todos interessados.
|
|
9
|
+
*
|
|
10
|
+
* Nessa interpretação desse design pattern, o StateManager faz o papel da store,
|
|
11
|
+
* notificando os manipuladores de estado (handlers), que são responsáveis por pedaços
|
|
12
|
+
* do estado (slices).
|
|
13
|
+
*
|
|
14
|
+
* O StateManager mantém dois tipos de estados: "Histórico" e "Não Histórico". No estado
|
|
15
|
+
* "Histórico", sempre que uma alteração de estado acontece, o estado anterior é guardado em
|
|
16
|
+
* uma pilha, o que permite que possamos voltar no tempo, desfazendo algumas ações
|
|
17
|
+
*/
|
|
18
|
+
export default class StateManager {
|
|
19
|
+
|
|
20
|
+
private _reducers: Array<ActionReducer>;
|
|
21
|
+
|
|
22
|
+
private _past: Array<any> = [];
|
|
23
|
+
private _future: Array<any> = [];
|
|
24
|
+
private _present: any = {};
|
|
25
|
+
|
|
26
|
+
private _nonHist: any = {};
|
|
27
|
+
private _histClean: boolean = false;
|
|
28
|
+
|
|
29
|
+
constructor(reducers: Array<ActionReducer>) {
|
|
30
|
+
this._reducers = reducers;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public process(action: StateAction) {
|
|
34
|
+
|
|
35
|
+
const oldPresent: any = this._present;
|
|
36
|
+
let hasHistChange: boolean = false;
|
|
37
|
+
this._histClean = false;
|
|
38
|
+
|
|
39
|
+
this._reducers.forEach(
|
|
40
|
+
reducer => {
|
|
41
|
+
const sliceName = reducer.sliceName;
|
|
42
|
+
const isHistoric = this.isHistoric(sliceName);
|
|
43
|
+
const oldSlice = this.getSlice(sliceName, isHistoric);
|
|
44
|
+
const newSlice = reducer.reduce(this, oldSlice, action);
|
|
45
|
+
if (newSlice !== oldSlice) {
|
|
46
|
+
this.updateSlice(sliceName, newSlice, isHistoric);
|
|
47
|
+
hasHistChange ||= isHistoric;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
if (hasHistChange && !this._histClean) {
|
|
53
|
+
this._past.push(oldPresent);
|
|
54
|
+
this._future = [];
|
|
55
|
+
document.dispatchEvent(new CustomEvent("undoableAction", { detail: this }))
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public select(sliceName: string, selector: (state: any) => any): any {
|
|
61
|
+
const isHistoric = this.isHistoric(sliceName);
|
|
62
|
+
return selector(this.getSlice(sliceName, isHistoric));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private isHistoric(slice: string) {
|
|
66
|
+
return slice.startsWith("hist::");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private updateSlice(name: string, slice: any, isHistoric: boolean): void {
|
|
70
|
+
if (isHistoric) {
|
|
71
|
+
this._present = { ...this._present, [name]: slice };
|
|
72
|
+
if (slice === undefined) {
|
|
73
|
+
delete this._present[name];
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
this._nonHist = { ...this._nonHist, [name]: slice };
|
|
77
|
+
if (slice === undefined) {
|
|
78
|
+
delete this._nonHist[name];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private getSlice(name: string, isHistoric: boolean): any {
|
|
84
|
+
return isHistoric ? this._present[name] : this._nonHist[name];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public canUndo(): boolean {
|
|
88
|
+
return this._past.length > 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public canRedo(): boolean {
|
|
92
|
+
return this._future.length > 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public undo() {
|
|
96
|
+
if (this.canUndo()) {
|
|
97
|
+
this._future.push(this._present);
|
|
98
|
+
this._present = this._past.pop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public redo() {
|
|
103
|
+
if (this.canRedo()) {
|
|
104
|
+
this._past.push(this._present);
|
|
105
|
+
this._present = this._future.pop();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public clearUndo() {
|
|
110
|
+
this._histClean = true;
|
|
111
|
+
this._past = [];
|
|
112
|
+
this._future = [];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public persist() {
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Baseado no padrão Flux, qualquer alteração de estado parte de uma ação.
|
|
123
|
+
* Essa ação pode conter um payload ou não.
|
|
124
|
+
*/
|
|
125
|
+
export interface StateAction {
|
|
126
|
+
/**
|
|
127
|
+
* O tipo da ação representa o que aconteceu. Com base nesse tipo
|
|
128
|
+
* os manipuladores de estado agem criando um novo estado.
|
|
129
|
+
*/
|
|
130
|
+
type: string,
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Muitas ações contém informações importantes para compor o novo estado.
|
|
134
|
+
* Isso é chamado de payload.
|
|
135
|
+
*/
|
|
136
|
+
payload?: any
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface ActionReducer {
|
|
140
|
+
sliceName: string;
|
|
141
|
+
reduce(stateManager: StateManager, state: any, action: StateAction): any;
|
|
142
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
import { StateAction } from "../StateManager.js";
|
|
3
|
+
|
|
4
|
+
export class DataUnitAction implements StateAction{
|
|
5
|
+
|
|
6
|
+
private _type: Action;
|
|
7
|
+
private _payload: any;
|
|
8
|
+
|
|
9
|
+
constructor(type: Action, payload?:any){
|
|
10
|
+
this._type = type;
|
|
11
|
+
this._payload = payload;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public get type(): Action{
|
|
15
|
+
return this._type;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public get payload(): any{
|
|
19
|
+
return this._payload;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export interface ExecutionContext{
|
|
23
|
+
before?: (action: DataUnitAction) => DataUnitAction;
|
|
24
|
+
after?: (action: DataUnitAction) => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export enum Action{
|
|
28
|
+
|
|
29
|
+
LOADING_METADATA = "loadingMetadata",
|
|
30
|
+
METADATA_LOADED = "metadataLoaded",
|
|
31
|
+
|
|
32
|
+
LOADING_DATA = "loadingData",
|
|
33
|
+
DATA_LOADED = "dataLoaded",
|
|
34
|
+
|
|
35
|
+
SAVING_DATA = "savingData",
|
|
36
|
+
DATA_SAVED = "dataSaved",
|
|
37
|
+
|
|
38
|
+
REMOVING_RECORDS = "removingRecords",
|
|
39
|
+
RECORDS_REMOVED = "recordsRemoved",
|
|
40
|
+
|
|
41
|
+
RECORDS_ADDED = "recordsAdded",
|
|
42
|
+
RECORDS_COPIED = "recordsCopied",
|
|
43
|
+
|
|
44
|
+
CHANGING_DATA = "changingData",
|
|
45
|
+
WAITING_CHANGE_CANCELED = "waitingChangeCanceled",
|
|
46
|
+
DATA_CHANGED = "dataChanged",
|
|
47
|
+
DATA_RESOLVED = "dataResolved",
|
|
48
|
+
|
|
49
|
+
EDITION_CANCELED = "editionCanceled",
|
|
50
|
+
CHANGE_UNDONE = "changeUndone",
|
|
51
|
+
CHANGE_REDONE = "changeRedone",
|
|
52
|
+
|
|
53
|
+
SELECTION_CHANGED = "selectionChanged",
|
|
54
|
+
NEXT_SELECTED = "nextSelected",
|
|
55
|
+
PREVIOUS_SELECTED = "previousSelected",
|
|
56
|
+
|
|
57
|
+
STATE_CHANGED = "stateChanged",
|
|
58
|
+
|
|
59
|
+
LOADING_RECORD = "loadingRecord",
|
|
60
|
+
RECORD_LOADED = "recordLoaded",
|
|
61
|
+
|
|
62
|
+
CHILD_CHANGED = "childChanged",
|
|
63
|
+
|
|
64
|
+
FIELD_INVALIDATED = "fieldInvalidated",
|
|
65
|
+
INVALIDATE_CLEAN = "invalidateClean"
|
|
66
|
+
|
|
67
|
+
}
|