@sankhyalabs/core 1.0.22 → 1.0.25

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.
Files changed (85) hide show
  1. package/dist/application/Application.d.ts +8 -0
  2. package/dist/application/Application.js +19 -0
  3. package/dist/application/Application.js.map +1 -0
  4. package/dist/dataunit/DataUnit.d.ts +70 -0
  5. package/dist/dataunit/DataUnit.js +198 -0
  6. package/dist/dataunit/DataUnit.js.map +1 -0
  7. package/dist/dataunit/metadata/DataType.d.ts +9 -0
  8. package/dist/dataunit/metadata/DataType.js +37 -0
  9. package/dist/dataunit/metadata/DataType.js.map +1 -0
  10. package/dist/dataunit/metadata/UnitMetadata.d.ts +70 -0
  11. package/dist/dataunit/metadata/UnitMetadata.js +31 -0
  12. package/dist/dataunit/metadata/UnitMetadata.js.map +1 -0
  13. package/dist/dataunit/state/HistReducer.d.ts +10 -0
  14. package/dist/dataunit/state/HistReducer.js +28 -0
  15. package/dist/dataunit/state/HistReducer.js.map +1 -0
  16. package/dist/dataunit/state/StateManager.d.ts +57 -0
  17. package/dist/dataunit/state/StateManager.js +109 -0
  18. package/dist/dataunit/state/StateManager.js.map +1 -0
  19. package/dist/dataunit/state/action/DataUnitAction.d.ts +26 -0
  20. package/dist/dataunit/state/action/DataUnitAction.js +32 -0
  21. package/dist/dataunit/state/action/DataUnitAction.js.map +1 -0
  22. package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +10 -0
  23. package/dist/dataunit/state/slice/AddedRecordsSlice.js +25 -0
  24. package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -0
  25. package/dist/dataunit/state/slice/ChangesSlice.d.ts +12 -0
  26. package/dist/dataunit/state/slice/ChangesSlice.js +73 -0
  27. package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -0
  28. package/dist/dataunit/state/slice/CurrentRecordsSlice.d.ts +11 -0
  29. package/dist/dataunit/state/slice/CurrentRecordsSlice.js +46 -0
  30. package/dist/dataunit/state/slice/CurrentRecordsSlice.js.map +1 -0
  31. package/dist/dataunit/state/slice/RecordsSlice.d.ts +10 -0
  32. package/dist/dataunit/state/slice/RecordsSlice.js +38 -0
  33. package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -0
  34. package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -0
  35. package/dist/dataunit/state/slice/RemovedRecordsSlice.js +21 -0
  36. package/dist/dataunit/state/slice/RemovedRecordsSlice.js.map +1 -0
  37. package/dist/dataunit/state/slice/SelectionSlice.d.ts +11 -0
  38. package/dist/dataunit/state/slice/SelectionSlice.js +109 -0
  39. package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -0
  40. package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -0
  41. package/dist/dataunit/state/slice/UnitMetadataSlice.js +21 -0
  42. package/dist/dataunit/state/slice/UnitMetadataSlice.js.map +1 -0
  43. package/dist/http/data-fetcher/HttpFetcher.d.ts +13 -0
  44. package/dist/http/data-fetcher/HttpFetcher.js +174 -0
  45. package/dist/http/data-fetcher/HttpFetcher.js.map +1 -0
  46. package/dist/http/data-fetcher/default/application-config-fetcher.d.ts +6 -0
  47. package/dist/http/data-fetcher/default/application-config-fetcher.js +21 -0
  48. package/dist/http/data-fetcher/default/application-config-fetcher.js.map +1 -0
  49. package/dist/http/data-fetcher/default/dataunit-fetcher.d.ts +9 -0
  50. package/dist/http/data-fetcher/default/dataunit-fetcher.js +45 -0
  51. package/dist/http/data-fetcher/default/dataunit-fetcher.js.map +1 -0
  52. package/dist/http/data-fetcher/default/form-config-fetcher.d.ts +2 -0
  53. package/dist/http/data-fetcher/default/form-config-fetcher.js +3 -0
  54. package/dist/http/data-fetcher/default/form-config-fetcher.js.map +1 -0
  55. package/dist/http/data-fetcher/default/grid-config-fetcher.d.ts +2 -0
  56. package/dist/http/data-fetcher/default/grid-config-fetcher.js +3 -0
  57. package/dist/http/data-fetcher/default/grid-config-fetcher.js.map +1 -0
  58. package/dist/http/data-fetcher/state/LoadStateManager.d.ts +23 -0
  59. package/dist/http/data-fetcher/state/LoadStateManager.js +74 -0
  60. package/dist/http/data-fetcher/state/LoadStateManager.js.map +1 -0
  61. package/dist/index.d.ts +10 -1
  62. package/dist/index.js +10 -1
  63. package/dist/index.js.map +1 -1
  64. package/package.json +4 -2
  65. package/src/application/Application.ts +22 -0
  66. package/src/dataunit/DataUnit.ts +282 -0
  67. package/src/dataunit/metadata/DataType.ts +38 -0
  68. package/src/dataunit/metadata/UnitMetadata.ts +81 -0
  69. package/src/dataunit/state/HistReducer.ts +34 -0
  70. package/src/dataunit/state/StateManager.ts +153 -0
  71. package/src/dataunit/state/action/DataUnitAction.ts +48 -0
  72. package/src/dataunit/state/slice/AddedRecordsSlice.ts +31 -0
  73. package/src/dataunit/state/slice/ChangesSlice.ts +91 -0
  74. package/src/dataunit/state/slice/CurrentRecordsSlice.ts +54 -0
  75. package/src/dataunit/state/slice/RecordsSlice.ts +50 -0
  76. package/src/dataunit/state/slice/RemovedRecordsSlice.ts +26 -0
  77. package/src/dataunit/state/slice/SelectionSlice.ts +128 -0
  78. package/src/dataunit/state/slice/UnitMetadataSlice.ts +30 -0
  79. package/src/http/data-fetcher/HttpFetcher.ts +174 -0
  80. package/src/http/data-fetcher/default/application-config-fetcher.ts +26 -0
  81. package/src/http/data-fetcher/default/dataunit-fetcher.ts +52 -0
  82. package/src/http/data-fetcher/default/form-config-fetcher.ts +3 -0
  83. package/src/http/data-fetcher/default/grid-config-fetcher.ts +3 -0
  84. package/src/http/data-fetcher/state/LoadStateManager.ts +74 -0
  85. package/src/index.ts +24 -1
@@ -0,0 +1,8 @@
1
+ export declare class Application {
2
+ private static instance;
3
+ private static element;
4
+ private constructor();
5
+ static get(): Application;
6
+ onLoaded(listener: Function): void;
7
+ getResourceID(): string;
8
+ }
@@ -0,0 +1,19 @@
1
+ export class Application {
2
+ constructor() { }
3
+ static get() {
4
+ if (Application.instance === undefined) {
5
+ Application.instance = new Application();
6
+ Application.element = document.querySelector('ez-application');
7
+ }
8
+ return Application.instance;
9
+ }
10
+ onLoaded(listener) {
11
+ var _a;
12
+ (_a = Application.element) === null || _a === void 0 ? void 0 : _a.addEventListener('applicationLoaded', () => listener());
13
+ }
14
+ getResourceID() {
15
+ return "br.com.sankhya.mge.cad.parceiro"; //TODO: Remover mock
16
+ }
17
+ }
18
+ Application.element = null;
19
+ //# sourceMappingURL=Application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/application/Application.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAGpB,gBAAsB,CAAC;IAEhB,MAAM,CAAC,GAAG;QACb,IAAG,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAC;YAClC,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;YACzC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;SAClE;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,QAAQ,CAAC,QAAiB;;QAC7B,MAAA,WAAW,CAAC,OAAO,0CAAE,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjF,CAAC;IAEM,aAAa;QAChB,OAAO,iCAAiC,CAAC,CAAC,oBAAoB;IAClE,CAAC;;AAjBc,mBAAO,GAAkB,IAAI,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { UnitMetadata, FieldDescriptor, SortingProvider, FilterProvider, Sort, Filter } from "./metadata/UnitMetadata";
2
+ import { DataUnitAction } from "./state/action/DataUnitAction";
3
+ export default class DataUnit {
4
+ private _name;
5
+ private _observers;
6
+ private _sortingProvider?;
7
+ private _filterProviders;
8
+ private _stateManager;
9
+ metadataLoader?: (dataUnit: string) => Promise<UnitMetadata>;
10
+ dataLoader?: (dataUnit: string, sort?: Array<Sort>, filters?: Array<Filter>) => Promise<Array<Record>>;
11
+ saveLoader?: (dataUnit: string, changes: Array<Change>) => Promise<Array<SavedRecord>>;
12
+ constructor(name: string);
13
+ get name(): string;
14
+ private validateAndTypeValue;
15
+ private getFilters;
16
+ private getSort;
17
+ loadMetadata(): void;
18
+ loadData(): Promise<Array<Record>>;
19
+ saveData(): void;
20
+ addFilterProvider(provider: FilterProvider): void;
21
+ set sortingProvider(provider: SortingProvider);
22
+ set metadata(md: UnitMetadata);
23
+ get metadata(): UnitMetadata;
24
+ set records(r: Array<Record>);
25
+ get records(): Array<Record>;
26
+ getField(fieldName: string): FieldDescriptor | undefined;
27
+ addRecord(): void;
28
+ removeSelectedRecords(): void;
29
+ getFieldValue(fieldName: string): any;
30
+ setFieldValue(fieldName: string, newValue: any, records?: Array<string>): void;
31
+ getSelection(): Array<string>;
32
+ setSelection(selection: Array<string>): void;
33
+ setSelectionByIndex(selection: Array<number>): void;
34
+ nextRecord(): void;
35
+ previousRecord(): void;
36
+ cancelEdition(): void;
37
+ isDirty(): boolean;
38
+ hasNext(): boolean;
39
+ hasPrevious(): boolean;
40
+ canUndo(): boolean;
41
+ canRedo(): boolean;
42
+ undo(): void;
43
+ redo(): void;
44
+ private dispatchAction;
45
+ subscribe(observer: (action: DataUnitAction) => void): void;
46
+ unsubscribe(observer: Function): void;
47
+ }
48
+ export interface Record {
49
+ __record__id__: string;
50
+ __parent__record__id__?: string;
51
+ [key: string]: any;
52
+ }
53
+ export interface SavedRecord extends Record {
54
+ __old__id__?: string;
55
+ }
56
+ export declare enum ChangeOperation {
57
+ INSERT = 0,
58
+ UPDATE = 1,
59
+ DELETE = 2
60
+ }
61
+ export declare class Change {
62
+ dataUnit: string;
63
+ record: Record;
64
+ updatingFields: any;
65
+ private _operation;
66
+ constructor(dataUnit: string, record: Record, updates: any, operation: ChangeOperation);
67
+ isInsert(): boolean;
68
+ isDelete(): boolean;
69
+ isUpdate(): boolean;
70
+ }
@@ -0,0 +1,198 @@
1
+ import { convertType } from "./metadata/DataType";
2
+ import { DataUnitAction, Action } from "./state/action/DataUnitAction";
3
+ import StateManager from "./state/StateManager";
4
+ import { HistReducer, canRedo, canUndo } from "./state/HistReducer";
5
+ import { UnitMetadataReducer, getField, getMetadata } from "./state/slice/UnitMetadataSlice";
6
+ import { RecordsReducer } from "./state/slice/RecordsSlice";
7
+ import { SelectionReducer, getSelection, hasNext, hasPrevious } from "./state/slice/SelectionSlice";
8
+ import { ChangesReducer, isDirty, getChangesToSave } from "./state/slice/ChangesSlice";
9
+ import { RemovedRecordsReducer } from "./state/slice/RemovedRecordsSlice";
10
+ import { AddedRecordsReducer } from "./state/slice/AddedRecordsSlice";
11
+ import { CurrentRecordsReducer, getCurrentRecords, getFieldValue } from "./state/slice/CurrentRecordsSlice";
12
+ export default class DataUnit {
13
+ constructor(name) {
14
+ this._name = name;
15
+ this._stateManager = new StateManager([
16
+ HistReducer,
17
+ UnitMetadataReducer,
18
+ RecordsReducer,
19
+ RemovedRecordsReducer,
20
+ AddedRecordsReducer,
21
+ SelectionReducer,
22
+ ChangesReducer,
23
+ CurrentRecordsReducer
24
+ ]);
25
+ this._observers = [];
26
+ this._filterProviders = [];
27
+ this._sortingProvider = undefined;
28
+ }
29
+ get name() {
30
+ return this._name;
31
+ }
32
+ // Métodos privados
33
+ validateAndTypeValue(fieldName, newValue) {
34
+ //FIXME: Validações devem ser feitas aqui
35
+ const descriptor = this.getField(fieldName);
36
+ return descriptor ? convertType(descriptor.dataType, newValue) : newValue;
37
+ }
38
+ getFilters() {
39
+ let filters = undefined;
40
+ this._filterProviders.forEach(p => {
41
+ const f = p.getFilter(this.name);
42
+ if (f) {
43
+ filters = (filters || []).concat(f);
44
+ }
45
+ });
46
+ return filters;
47
+ }
48
+ getSort() {
49
+ return this._sortingProvider ? this._sortingProvider.getSort(this._name) : undefined;
50
+ }
51
+ // Loaders
52
+ loadMetadata() {
53
+ this.dispatchAction(Action.LOADING_METADATA);
54
+ if (this.metadataLoader) {
55
+ this.metadataLoader(this._name).then(metadata => this.metadata = metadata);
56
+ }
57
+ }
58
+ loadData() {
59
+ this.dispatchAction(Action.LOADING_DATA);
60
+ return new Promise((resolve, fail) => {
61
+ if (this.dataLoader) {
62
+ const sort = this.getSort();
63
+ const filters = this.getFilters();
64
+ this.dataLoader(this._name, sort, filters).then(records => {
65
+ this.records = records;
66
+ resolve(this.records);
67
+ }).catch(() => fail());
68
+ }
69
+ });
70
+ }
71
+ saveData() {
72
+ const changes = getChangesToSave(this._name, this._stateManager);
73
+ if (changes.length > 0) {
74
+ this.dispatchAction(Action.SAVING_DATA);
75
+ if (this.saveLoader) {
76
+ this.saveLoader(this._name, changes).then(records => this.dispatchAction(Action.DATA_SAVED, { changes, records }));
77
+ }
78
+ }
79
+ }
80
+ // API
81
+ addFilterProvider(provider) {
82
+ this._filterProviders.push(provider);
83
+ }
84
+ set sortingProvider(provider) {
85
+ this._sortingProvider = provider;
86
+ }
87
+ set metadata(md) {
88
+ this.dispatchAction(Action.METADATA_LOADED, md);
89
+ }
90
+ get metadata() {
91
+ return getMetadata(this._stateManager);
92
+ }
93
+ set records(r) {
94
+ this.dispatchAction(Action.DATA_LOADED, r);
95
+ }
96
+ get records() {
97
+ const records = getCurrentRecords(this._stateManager);
98
+ return records ? Array.from(records.values()) : [];
99
+ }
100
+ getField(fieldName) {
101
+ return getField(this._stateManager, fieldName);
102
+ }
103
+ addRecord() {
104
+ this.dispatchAction(Action.RECORDS_ADDED, [{}]);
105
+ }
106
+ removeSelectedRecords() {
107
+ const selection = getSelection(this._stateManager);
108
+ if (selection) {
109
+ this.dispatchAction(Action.RECORDS_REMOVED, selection);
110
+ }
111
+ }
112
+ getFieldValue(fieldName) {
113
+ return getFieldValue(this._stateManager, fieldName);
114
+ }
115
+ setFieldValue(fieldName, newValue, records) {
116
+ const typedValue = this.validateAndTypeValue(fieldName, newValue);
117
+ const currentValue = this.getFieldValue(fieldName);
118
+ if (currentValue !== typedValue) {
119
+ this.dispatchAction(Action.DATA_CHANGED, { [fieldName]: typedValue, records });
120
+ }
121
+ }
122
+ getSelection() {
123
+ return getSelection(this._stateManager);
124
+ }
125
+ setSelection(selection) {
126
+ this.dispatchAction(Action.SELECTION_CHANGED, { type: "id", selection });
127
+ }
128
+ setSelectionByIndex(selection) {
129
+ this.dispatchAction(Action.SELECTION_CHANGED, { type: "index", selection });
130
+ }
131
+ nextRecord() {
132
+ this.dispatchAction(Action.NEXT_SELECTED);
133
+ }
134
+ previousRecord() {
135
+ this.dispatchAction(Action.PREVIOUS_SELECTED);
136
+ }
137
+ cancelEdition() {
138
+ this.dispatchAction(Action.EDITION_CANCELED);
139
+ }
140
+ isDirty() {
141
+ return isDirty(this._stateManager);
142
+ }
143
+ hasNext() {
144
+ return hasNext(this._stateManager);
145
+ }
146
+ hasPrevious() {
147
+ return hasPrevious(this._stateManager);
148
+ }
149
+ canUndo() {
150
+ return canUndo(this._stateManager);
151
+ }
152
+ canRedo() {
153
+ return canRedo(this._stateManager);
154
+ }
155
+ undo() {
156
+ this.dispatchAction(Action.CHANGE_UNDONE);
157
+ }
158
+ redo() {
159
+ this.dispatchAction(Action.CHANGE_REDONE);
160
+ }
161
+ // Actions / State manager
162
+ dispatchAction(actionType, payload) {
163
+ const action = new DataUnitAction(actionType, payload);
164
+ //interceptor
165
+ this._stateManager.process(action);
166
+ this._observers.forEach(f => f(action));
167
+ }
168
+ subscribe(observer) {
169
+ this._observers.push(observer);
170
+ }
171
+ unsubscribe(observer) {
172
+ this._observers = this._observers.filter(f => f !== observer);
173
+ }
174
+ }
175
+ export var ChangeOperation;
176
+ (function (ChangeOperation) {
177
+ ChangeOperation[ChangeOperation["INSERT"] = 0] = "INSERT";
178
+ ChangeOperation[ChangeOperation["UPDATE"] = 1] = "UPDATE";
179
+ ChangeOperation[ChangeOperation["DELETE"] = 2] = "DELETE";
180
+ })(ChangeOperation || (ChangeOperation = {}));
181
+ export class Change {
182
+ constructor(dataUnit, record, updates, operation) {
183
+ this.dataUnit = dataUnit;
184
+ this.record = record;
185
+ this.updatingFields = updates;
186
+ this._operation = operation;
187
+ }
188
+ isInsert() {
189
+ return this._operation === ChangeOperation.INSERT;
190
+ }
191
+ isDelete() {
192
+ return this._operation === ChangeOperation.DELETE;
193
+ }
194
+ isUpdate() {
195
+ return this._operation === ChangeOperation.UPDATE;
196
+ }
197
+ }
198
+ //# sourceMappingURL=DataUnit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataUnit.js","sourceRoot":"","sources":["../../src/dataunit/DataUnit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare enum DataType {
2
+ NUMBER = "NUMBER",
3
+ DATE = "DATE",
4
+ TEXT = "TEXT",
5
+ BOOLEAN = "BOOLEAN",
6
+ OBJECT = "OBJECT"
7
+ }
8
+ export declare const convertType: (dataType: DataType, value: any) => any;
9
+ export declare const toString: (dataType: DataType, value: any) => string;
@@ -0,0 +1,37 @@
1
+ export var DataType;
2
+ (function (DataType) {
3
+ DataType["NUMBER"] = "NUMBER";
4
+ DataType["DATE"] = "DATE";
5
+ DataType["TEXT"] = "TEXT";
6
+ DataType["BOOLEAN"] = "BOOLEAN";
7
+ DataType["OBJECT"] = "OBJECT";
8
+ })(DataType || (DataType = {}));
9
+ export const convertType = (dataType, value) => {
10
+ if (value === undefined || value === null) {
11
+ return value;
12
+ }
13
+ switch (dataType) {
14
+ case DataType.NUMBER:
15
+ return value === "" || isNaN(value) ? null : Number(value);
16
+ case DataType.OBJECT:
17
+ return typeof value === "string" ? JSON.parse(value) : value;
18
+ case DataType.BOOLEAN:
19
+ return Boolean(value);
20
+ case DataType.DATE:
21
+ return new Date(value.toString());
22
+ default:
23
+ return value;
24
+ }
25
+ };
26
+ export const toString = (dataType, value) => {
27
+ if (value === undefined || value === null) {
28
+ return value;
29
+ }
30
+ if (dataType === DataType.OBJECT) {
31
+ return JSON.stringify(value);
32
+ }
33
+ else {
34
+ return value.toString();
35
+ }
36
+ };
37
+ //# sourceMappingURL=DataType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataType.js","sourceRoot":"","sources":["../../../src/dataunit/metadata/DataType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAChB,6BAAiB,CAAA;IACjB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;AACrB,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAiB,EAAE,KAAU,EAAO,EAAE;IAC9D,IAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAC;QACrC,OAAO,KAAK,CAAC;KAChB;IACD,QAAQ,QAAQ,EAAC;QACb,KAAK,QAAQ,CAAC,MAAM;YAChB,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,KAAK,QAAQ,CAAC,MAAM;YAChB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,KAAK,QAAQ,CAAC,OAAO;YACjB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,QAAQ,CAAC,IAAI;YACd,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrC;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,QAAiB,EAAE,KAAU,EAAU,EAAE;IAE9D,IAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAC;QACrC,OAAO,KAAK,CAAC;KAChB;IAED,IAAG,QAAQ,KAAK,QAAQ,CAAC,MAAM,EAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAChC;SAAM;QACH,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;AACL,CAAC,CAAA"}
@@ -0,0 +1,70 @@
1
+ import { DataType } from "./DataType";
2
+ export interface UnitMetadata {
3
+ name: string;
4
+ label: string;
5
+ fields: Array<FieldDescriptor>;
6
+ }
7
+ export interface FieldDescriptor {
8
+ name: string;
9
+ label: string;
10
+ dataType: DataType;
11
+ userInterface?: UserInterface;
12
+ defaultValue?: any;
13
+ visible?: boolean;
14
+ readOnly?: boolean;
15
+ required?: boolean;
16
+ properties?: any;
17
+ dependencies?: Array<FieldDependency>;
18
+ }
19
+ export interface FieldDependency {
20
+ masterFields: Array<string>;
21
+ type: DependencyType;
22
+ expression: string;
23
+ }
24
+ export interface Filter {
25
+ name: string;
26
+ expression: string;
27
+ params?: Array<FilterParam>;
28
+ }
29
+ export interface FilterParam {
30
+ name: string;
31
+ value: any;
32
+ }
33
+ export interface Sort {
34
+ field: string;
35
+ mode: SortMode;
36
+ dataType: DataType;
37
+ }
38
+ export interface FilterProvider {
39
+ getFilter(dataUnit: string): Array<Filter> | undefined;
40
+ }
41
+ export interface SortingProvider {
42
+ getSort(dataUnit: string): Array<Sort> | undefined;
43
+ }
44
+ export declare enum SortMode {
45
+ ASC = "ASC",
46
+ DESC = "DESC"
47
+ }
48
+ export declare enum DependencyType {
49
+ SEARCHING = "SEARCHING",
50
+ REQUIREMENT = "REQUIREMENT",
51
+ VISIBILITY = "REQUIREMENT"
52
+ }
53
+ export declare enum UserInterface {
54
+ FILE = "FILE",
55
+ IMAGE = "IMAGE",
56
+ DATE = "DATE",
57
+ DATETIME = "DATETIME",
58
+ ELAPSEDTIME = "ELAPSEDTIME",
59
+ CHECKBOX = "CHECKBOX",
60
+ SWITCH = "SWITCH",
61
+ OPTIONSELECTOR = "OPTIONSELECTOR",
62
+ DECIMALNUMBER = "DECIMALNUMBER",
63
+ INTEGERNUMBER = "INTEGERNUMBER",
64
+ SEARCH = "SEARCH",
65
+ SHORTTEXT = "SHORTTEXT",
66
+ PASSWORD = "PASSWORD",
67
+ MASKEDTEXT = "MASKEDTEXT",
68
+ LONGTEXT = "LONGTEXT",
69
+ HTML = "HTML"
70
+ }
@@ -0,0 +1,31 @@
1
+ export var SortMode;
2
+ (function (SortMode) {
3
+ SortMode["ASC"] = "ASC";
4
+ SortMode["DESC"] = "DESC";
5
+ })(SortMode || (SortMode = {}));
6
+ export var DependencyType;
7
+ (function (DependencyType) {
8
+ DependencyType["SEARCHING"] = "SEARCHING";
9
+ DependencyType["REQUIREMENT"] = "REQUIREMENT";
10
+ DependencyType["VISIBILITY"] = "REQUIREMENT";
11
+ })(DependencyType || (DependencyType = {}));
12
+ export var UserInterface;
13
+ (function (UserInterface) {
14
+ UserInterface["FILE"] = "FILE";
15
+ UserInterface["IMAGE"] = "IMAGE";
16
+ UserInterface["DATE"] = "DATE";
17
+ UserInterface["DATETIME"] = "DATETIME";
18
+ UserInterface["ELAPSEDTIME"] = "ELAPSEDTIME";
19
+ UserInterface["CHECKBOX"] = "CHECKBOX";
20
+ UserInterface["SWITCH"] = "SWITCH";
21
+ UserInterface["OPTIONSELECTOR"] = "OPTIONSELECTOR";
22
+ UserInterface["DECIMALNUMBER"] = "DECIMALNUMBER";
23
+ UserInterface["INTEGERNUMBER"] = "INTEGERNUMBER";
24
+ UserInterface["SEARCH"] = "SEARCH";
25
+ UserInterface["SHORTTEXT"] = "SHORTTEXT";
26
+ UserInterface["PASSWORD"] = "PASSWORD";
27
+ UserInterface["MASKEDTEXT"] = "MASKEDTEXT";
28
+ UserInterface["LONGTEXT"] = "LONGTEXT";
29
+ UserInterface["HTML"] = "HTML";
30
+ })(UserInterface || (UserInterface = {}));
31
+ //# sourceMappingURL=UnitMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitMetadata.js","sourceRoot":"","sources":["../../../src/dataunit/metadata/UnitMetadata.ts"],"names":[],"mappings":"AAoDA,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,uBAAW,CAAA;IACX,yBAAa,CAAA;AACjB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,4CAA0B,CAAA;AAC9B,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,MAAM,CAAN,IAAY,aAiBX;AAjBD,WAAY,aAAa;IACrB,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,sCAAqB,CAAA;IACrB,4CAA2B,CAAA;IAC3B,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,gDAA+B,CAAA;IAC/B,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;AACjB,CAAC,EAjBW,aAAa,KAAb,aAAa,QAiBxB"}
@@ -0,0 +1,10 @@
1
+ import { ActionReducer } from "./StateManager";
2
+ import StateManager, { StateAction } from "./StateManager";
3
+ declare class HistReducerImpl implements ActionReducer {
4
+ sliceName: string;
5
+ reduce(stateManager: StateManager, _currentState: void, action: StateAction): void;
6
+ }
7
+ export declare const HistReducer: HistReducerImpl;
8
+ export declare const canUndo: (stateManager: StateManager) => boolean;
9
+ export declare const canRedo: (stateManager: StateManager) => boolean;
10
+ export {};
@@ -0,0 +1,28 @@
1
+ import { Action } from "./action/DataUnitAction";
2
+ class HistReducerImpl {
3
+ constructor() {
4
+ this.sliceName = "";
5
+ }
6
+ reduce(stateManager, _currentState, action) {
7
+ switch (action.type) {
8
+ case Action.DATA_SAVED:
9
+ case Action.EDITION_CANCELED:
10
+ stateManager.clearUndo();
11
+ break;
12
+ case Action.CHANGE_UNDONE:
13
+ stateManager.undo();
14
+ break;
15
+ case Action.CHANGE_REDONE:
16
+ stateManager.redo();
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ export const HistReducer = new HistReducerImpl();
22
+ export const canUndo = (stateManager) => {
23
+ return stateManager.canUndo();
24
+ };
25
+ export const canRedo = (stateManager) => {
26
+ return stateManager.canRedo();
27
+ };
28
+ //# sourceMappingURL=HistReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HistReducer.js","sourceRoot":"","sources":["../../../src/dataunit/state/HistReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,MAAM,eAAe;IAArB;QAEW,cAAS,GAAW,EAAE,CAAC;IAiBlC,CAAC;IAfU,MAAM,CAAC,YAA0B,EAAE,aAAmB,EAAE,MAAmB;QAE9E,QAAQ,MAAM,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,CAAC,UAAU,CAAC;YACvB,KAAK,MAAM,CAAC,gBAAgB;gBACxB,YAAY,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM;YACV,KAAK,MAAM,CAAC,aAAa;gBACrB,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;YACV,KAAK,MAAM,CAAC,aAAa;gBACrB,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;SACb;IACL,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAA0B,EAAW,EAAE;IAC3D,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,YAA0B,EAAW,EAAE;IAC3D,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAA"}
@@ -0,0 +1,57 @@
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
+ private _reducers;
20
+ private _past;
21
+ private _future;
22
+ private _present;
23
+ private _nonHist;
24
+ private _histClean;
25
+ constructor(reducers: Array<ActionReducer>);
26
+ process(action: StateAction): void;
27
+ select(sliceName: string, selector: (state: any) => any): any;
28
+ private isHistoric;
29
+ private updateSlice;
30
+ private getSlice;
31
+ canUndo(): boolean;
32
+ canRedo(): boolean;
33
+ undo(): void;
34
+ redo(): void;
35
+ clearUndo(): void;
36
+ persist(): void;
37
+ }
38
+ /**
39
+ * Baseado no padrão Flux, qualquer alteração de estado parte de uma ação.
40
+ * Essa ação pode conter um payload ou não.
41
+ */
42
+ export interface StateAction {
43
+ /**
44
+ * O tipo da ação representa o que aconteceu. Com base nesse tipo
45
+ * os manipuladores de estado agem criando um novo estado.
46
+ */
47
+ type: string;
48
+ /**
49
+ * Muitas ações contém informações importantes para compor o novo estado.
50
+ * Isso é chamado de payload.
51
+ */
52
+ payload?: any;
53
+ }
54
+ export interface ActionReducer {
55
+ sliceName: string;
56
+ reduce(stateManager: StateManager, state: any, action: StateAction): any;
57
+ }