@sankhyalabs/core 1.0.23 → 1.0.24

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.
@@ -1,29 +1,38 @@
1
- import { UnitMetadata } from "./metadata/UnitMetadata";
1
+ import { UnitMetadata, FieldDescriptor, SortingProvider, FilterProvider, Sort, Filter } from "./metadata/UnitMetadata";
2
2
  import { DataUnitAction } from "./state/action/DataUnitAction";
3
3
  export default class DataUnit {
4
4
  private _name;
5
5
  private _observers;
6
+ private _sortingProvider?;
7
+ private _filterProviders;
6
8
  private _stateManager;
7
9
  metadataLoader?: (dataUnit: string) => Promise<UnitMetadata>;
8
- dataLoader?: (dataUnit: string) => Promise<Array<Record>>;
10
+ dataLoader?: (dataUnit: string, sort?: Array<Sort>, filters?: Array<Filter>) => Promise<Array<Record>>;
9
11
  saveLoader?: (dataUnit: string, changes: Array<Change>) => Promise<Array<SavedRecord>>;
10
12
  constructor(name: string);
11
13
  get name(): string;
12
14
  private validateAndTypeValue;
15
+ private getFilters;
16
+ private getSort;
13
17
  loadMetadata(): void;
14
- loadData(): void;
18
+ loadData(): Promise<Array<Record>>;
15
19
  saveData(): void;
16
- getMetadata(): UnitMetadata;
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;
17
27
  addRecord(): void;
18
28
  removeSelectedRecords(): void;
19
- getRecords(): Array<Record> | undefined;
20
29
  getFieldValue(fieldName: string): any;
30
+ setFieldValue(fieldName: string, newValue: any, records?: Array<string>): void;
21
31
  getSelection(): Array<string>;
22
32
  setSelection(selection: Array<string>): void;
23
33
  setSelectionByIndex(selection: Array<number>): void;
24
34
  nextRecord(): void;
25
35
  previousRecord(): void;
26
- setFieldValue(fieldName: string, newValue: any): void;
27
36
  cancelEdition(): void;
28
37
  isDirty(): boolean;
29
38
  hasNext(): boolean;
@@ -50,10 +59,11 @@ export declare enum ChangeOperation {
50
59
  DELETE = 2
51
60
  }
52
61
  export declare class Change {
62
+ dataUnit: string;
53
63
  record: Record;
54
64
  updatingFields: any;
55
65
  private _operation;
56
- constructor(record: Record, updates: any, operation: ChangeOperation);
66
+ constructor(dataUnit: string, record: Record, updates: any, operation: ChangeOperation);
57
67
  isInsert(): boolean;
58
68
  isDelete(): boolean;
59
69
  isUpdate(): boolean;
@@ -2,7 +2,7 @@ import { convertType } from "./metadata/DataType";
2
2
  import { DataUnitAction, Action } from "./state/action/DataUnitAction";
3
3
  import StateManager from "./state/StateManager";
4
4
  import { HistReducer, canRedo, canUndo } from "./state/HistReducer";
5
- import { UnitMetadataReducer, getFieldMetadata, getMetadata } from "./state/slice/UnitMetadataSlice";
5
+ import { UnitMetadataReducer, getField, getMetadata } from "./state/slice/UnitMetadataSlice";
6
6
  import { RecordsReducer } from "./state/slice/RecordsSlice";
7
7
  import { SelectionReducer, getSelection, hasNext, hasPrevious } from "./state/slice/SelectionSlice";
8
8
  import { ChangesReducer, isDirty, getChangesToSave } from "./state/slice/ChangesSlice";
@@ -23,33 +23,53 @@ export default class DataUnit {
23
23
  CurrentRecordsReducer
24
24
  ]);
25
25
  this._observers = [];
26
+ this._filterProviders = [];
27
+ this._sortingProvider = undefined;
26
28
  }
27
29
  get name() {
28
30
  return this._name;
29
31
  }
30
32
  // Métodos privados
31
33
  validateAndTypeValue(fieldName, newValue) {
32
- const fmd = getFieldMetadata(this._stateManager, fieldName);
33
- if (!fmd) {
34
- throw new Error(`Campo ${fieldName} não encontrado.`);
35
- }
36
- return convertType(fmd.dataType, 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;
37
50
  }
38
51
  // Loaders
39
52
  loadMetadata() {
40
53
  this.dispatchAction(Action.LOADING_METADATA);
41
54
  if (this.metadataLoader) {
42
- this.metadataLoader(this._name).then(metadata => this.dispatchAction(Action.METADATA_LOADED, metadata));
55
+ this.metadataLoader(this._name).then(metadata => this.metadata = metadata);
43
56
  }
44
57
  }
45
58
  loadData() {
46
59
  this.dispatchAction(Action.LOADING_DATA);
47
- if (this.dataLoader) {
48
- this.dataLoader(this._name).then(records => this.dispatchAction(Action.DATA_LOADED, records));
49
- }
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
+ });
50
70
  }
51
71
  saveData() {
52
- const changes = getChangesToSave(this._stateManager);
72
+ const changes = getChangesToSave(this._name, this._stateManager);
53
73
  if (changes.length > 0) {
54
74
  this.dispatchAction(Action.SAVING_DATA);
55
75
  if (this.saveLoader) {
@@ -58,9 +78,28 @@ export default class DataUnit {
58
78
  }
59
79
  }
60
80
  // API
61
- getMetadata() {
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() {
62
91
  return getMetadata(this._stateManager);
63
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
+ }
64
103
  addRecord() {
65
104
  this.dispatchAction(Action.RECORDS_ADDED, [{}]);
66
105
  }
@@ -70,13 +109,16 @@ export default class DataUnit {
70
109
  this.dispatchAction(Action.RECORDS_REMOVED, selection);
71
110
  }
72
111
  }
73
- getRecords() {
74
- const records = getCurrentRecords(this._stateManager);
75
- return records ? Array.from(records.values()) : undefined;
76
- }
77
112
  getFieldValue(fieldName) {
78
113
  return getFieldValue(this._stateManager, fieldName);
79
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
+ }
80
122
  getSelection() {
81
123
  return getSelection(this._stateManager);
82
124
  }
@@ -92,13 +134,6 @@ export default class DataUnit {
92
134
  previousRecord() {
93
135
  this.dispatchAction(Action.PREVIOUS_SELECTED);
94
136
  }
95
- setFieldValue(fieldName, newValue) {
96
- const typedValue = this.validateAndTypeValue(fieldName, newValue);
97
- const currentValue = this.getFieldValue(fieldName);
98
- if (currentValue !== typedValue) {
99
- this.dispatchAction(Action.DATA_CHANGED, { [fieldName]: typedValue });
100
- }
101
- }
102
137
  cancelEdition() {
103
138
  this.dispatchAction(Action.EDITION_CANCELED);
104
139
  }
@@ -144,7 +179,8 @@ export var ChangeOperation;
144
179
  ChangeOperation[ChangeOperation["DELETE"] = 2] = "DELETE";
145
180
  })(ChangeOperation || (ChangeOperation = {}));
146
181
  export class Change {
147
- constructor(record, updates, operation) {
182
+ constructor(dataUnit, record, updates, operation) {
183
+ this.dataUnit = dataUnit;
148
184
  this.record = record;
149
185
  this.updatingFields = updates;
150
186
  this._operation = operation;
@@ -1 +1 @@
1
- {"version":3,"file":"DataUnit.js","sourceRoot":"","sources":["../../src/dataunit/DataUnit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataUnit.js","sourceRoot":"","sources":["../../src/dataunit/DataUnit.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export declare enum DataType {
3
3
  DATE = "DATE",
4
4
  TEXT = "TEXT",
5
5
  BOOLEAN = "BOOLEAN",
6
- JSON = "JSON"
6
+ OBJECT = "OBJECT"
7
7
  }
8
8
  export declare const convertType: (dataType: DataType, value: any) => any;
9
9
  export declare const toString: (dataType: DataType, value: any) => string;
@@ -4,7 +4,7 @@ export var DataType;
4
4
  DataType["DATE"] = "DATE";
5
5
  DataType["TEXT"] = "TEXT";
6
6
  DataType["BOOLEAN"] = "BOOLEAN";
7
- DataType["JSON"] = "JSON";
7
+ DataType["OBJECT"] = "OBJECT";
8
8
  })(DataType || (DataType = {}));
9
9
  export const convertType = (dataType, value) => {
10
10
  if (value === undefined || value === null) {
@@ -13,8 +13,8 @@ export const convertType = (dataType, value) => {
13
13
  switch (dataType) {
14
14
  case DataType.NUMBER:
15
15
  return value === "" || isNaN(value) ? null : Number(value);
16
- case DataType.JSON:
17
- return JSON.parse(value);
16
+ case DataType.OBJECT:
17
+ return typeof value === "string" ? JSON.parse(value) : value;
18
18
  case DataType.BOOLEAN:
19
19
  return Boolean(value);
20
20
  case DataType.DATE:
@@ -27,7 +27,7 @@ export const toString = (dataType, value) => {
27
27
  if (value === undefined || value === null) {
28
28
  return value;
29
29
  }
30
- if (dataType === DataType.JSON) {
30
+ if (dataType === DataType.OBJECT) {
31
31
  return JSON.stringify(value);
32
32
  }
33
33
  else {
@@ -1 +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,yBAAa,CAAA;AACjB,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,IAAI;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,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,IAAI,EAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAChC;SAAM;QACH,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;AACL,CAAC,CAAA"}
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"}
@@ -2,28 +2,49 @@ import { DataType } from "./DataType";
2
2
  export interface UnitMetadata {
3
3
  name: string;
4
4
  label: string;
5
- fields: Array<FieldMetadata>;
5
+ fields: Array<FieldDescriptor>;
6
6
  }
7
- export interface FieldMetadata {
7
+ export interface FieldDescriptor {
8
8
  name: string;
9
9
  label: string;
10
10
  dataType: DataType;
11
11
  userInterface?: UserInterface;
12
- defaultValue?: string;
12
+ defaultValue?: any;
13
+ visible?: boolean;
13
14
  readOnly?: boolean;
14
15
  required?: boolean;
15
- properties?: Array<UIProperty>;
16
+ properties?: any;
16
17
  dependencies?: Array<FieldDependency>;
17
18
  }
18
- export interface UIProperty {
19
- name: string;
20
- value: string;
21
- }
22
19
  export interface FieldDependency {
23
20
  masterFields: Array<string>;
24
21
  type: DependencyType;
25
22
  expression: string;
26
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
+ }
27
48
  export declare enum DependencyType {
28
49
  SEARCHING = "SEARCHING",
29
50
  REQUIREMENT = "REQUIREMENT",
@@ -1,3 +1,8 @@
1
+ export var SortMode;
2
+ (function (SortMode) {
3
+ SortMode["ASC"] = "ASC";
4
+ SortMode["DESC"] = "DESC";
5
+ })(SortMode || (SortMode = {}));
1
6
  export var DependencyType;
2
7
  (function (DependencyType) {
3
8
  DependencyType["SEARCHING"] = "SEARCHING";
@@ -1 +1 @@
1
- {"version":3,"file":"UnitMetadata.js","sourceRoot":"","sources":["../../../src/dataunit/metadata/UnitMetadata.ts"],"names":[],"mappings":"AA+BA,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"}
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"}
@@ -8,5 +8,5 @@ declare class ChangesReducerImpl implements ActionReducer {
8
8
  export declare const ChangesReducer: ChangesReducerImpl;
9
9
  export declare const getChanges: (stateManager: StateManager) => Map<string, any>;
10
10
  export declare const isDirty: (stateManager: StateManager) => boolean;
11
- export declare const getChangesToSave: (stateManager: StateManager) => Array<Change>;
11
+ export declare const getChangesToSave: (dataUnit: string, stateManager: StateManager) => Array<Change>;
12
12
  export {};
@@ -11,7 +11,7 @@ class ChangesReducerImpl {
11
11
  reduce(stateManager, currentState, action) {
12
12
  switch (action.type) {
13
13
  case Action.DATA_CHANGED:
14
- const selection = getSelection(stateManager);
14
+ const selection = action.payload.records || getSelection(stateManager);
15
15
  if (selection) {
16
16
  const newState = new Map(currentState);
17
17
  selection.forEach(recordId => {
@@ -40,7 +40,7 @@ export const isDirty = (stateManager) => {
40
40
  }
41
41
  return getChanges(stateManager) !== undefined;
42
42
  };
43
- export const getChangesToSave = (stateManager) => {
43
+ export const getChangesToSave = (dataUnit, stateManager) => {
44
44
  const result = [];
45
45
  const changes = getChanges(stateManager);
46
46
  const records = getRecords(stateManager);
@@ -49,7 +49,7 @@ export const getChangesToSave = (stateManager) => {
49
49
  if (changes) {
50
50
  const c = changes.get(r.__record__id__);
51
51
  if (c) {
52
- result.push(new Change(r, c, ChangeOperation.UPDATE));
52
+ result.push(new Change(dataUnit, r, c, ChangeOperation.UPDATE));
53
53
  }
54
54
  }
55
55
  });
@@ -57,7 +57,7 @@ export const getChangesToSave = (stateManager) => {
57
57
  const addedRecords = getAddedRecords(stateManager);
58
58
  if (addedRecords) {
59
59
  addedRecords.forEach(r => {
60
- result.push(new Change(r, changes === null || changes === void 0 ? void 0 : changes.get(r.__record__id__), ChangeOperation.INSERT));
60
+ result.push(new Change(dataUnit, r, changes === null || changes === void 0 ? void 0 : changes.get(r.__record__id__), ChangeOperation.INSERT));
61
61
  });
62
62
  }
63
63
  const removedRecords = getRemovedRecords(stateManager);
@@ -65,7 +65,7 @@ export const getChangesToSave = (stateManager) => {
65
65
  records.forEach(r => recordsById[r.__record__id__] = r);
66
66
  if (removedRecords) {
67
67
  removedRecords.forEach(id => {
68
- result.push(new Change(recordsById[id], undefined, ChangeOperation.DELETE));
68
+ result.push(new Change(dataUnit, recordsById[id], undefined, ChangeOperation.DELETE));
69
69
  });
70
70
  }
71
71
  return result;
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  import { ActionReducer, StateAction } from "../StateManager";
2
- import { UnitMetadata, FieldMetadata } from "../../metadata/UnitMetadata";
2
+ import { UnitMetadata, FieldDescriptor } from "../../metadata/UnitMetadata";
3
3
  import StateManager from "../StateManager";
4
4
  declare class UnitMetadataReducerImpl implements ActionReducer {
5
5
  sliceName: string;
@@ -7,5 +7,5 @@ declare class UnitMetadataReducerImpl implements ActionReducer {
7
7
  }
8
8
  export declare const UnitMetadataReducer: UnitMetadataReducerImpl;
9
9
  export declare const getMetadata: (stateManager: StateManager) => UnitMetadata;
10
- export declare const getFieldMetadata: (stateManager: StateManager, fieldName: string) => FieldMetadata | undefined;
10
+ export declare const getField: (stateManager: StateManager, fieldName: string) => FieldDescriptor | undefined;
11
11
  export {};
@@ -14,7 +14,7 @@ export const UnitMetadataReducer = new UnitMetadataReducerImpl();
14
14
  export const getMetadata = (stateManager) => {
15
15
  return stateManager.select(UnitMetadataReducer.sliceName, (state) => state);
16
16
  };
17
- export const getFieldMetadata = (stateManager, fieldName) => {
17
+ export const getField = (stateManager, fieldName) => {
18
18
  const md = getMetadata(stateManager);
19
19
  return md ? md.fields.find(fmd => fmd.name === fieldName) : undefined;
20
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"UnitMetadataSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/UnitMetadataSlice.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,MAAM,uBAAuB;IAA7B;QAEW,cAAS,GAAW,cAAc,CAAC;IAS9C,CAAC;IAPU,MAAM,CAAC,aAA0B,EAAE,YAA0B,EAAE,MAAmB;QACrF,IAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,eAAe,EAAC;YACtC,OAAO,MAAM,CAAC,OAAO,CAAC;SACzB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CAEJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEjE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAgB,EAAE;IACpE,OAAO,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAA0B,EAAE,SAAiB,EAA2B,EAAE;IACvG,MAAM,EAAE,GAAiB,WAAW,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC,CAAA"}
1
+ {"version":3,"file":"UnitMetadataSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/UnitMetadataSlice.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,MAAM,uBAAuB;IAA7B;QAEW,cAAS,GAAW,cAAc,CAAC;IAS9C,CAAC;IAPU,MAAM,CAAC,aAA0B,EAAE,YAA0B,EAAE,MAAmB;QACrF,IAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,eAAe,EAAC;YACtC,OAAO,MAAM,CAAC,OAAO,CAAC;SACzB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CAEJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEjE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAgB,EAAE;IACpE,OAAO,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,YAA0B,EAAE,SAAiB,EAA6B,EAAE;IACjG,MAAM,EAAE,GAAiB,WAAW,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -8,5 +8,8 @@ import { HttpProvider } from "./http/HttpProvider";
8
8
  import { SkwHttpProvider } from "./http/SkwHttpProvider";
9
9
  import { RequestMetadata } from "./http/RequestMetadata";
10
10
  import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
11
- import DataUnit from "./dataunit/DataUnit";
12
- export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit };
11
+ import DataUnit, { Record } from "./dataunit/DataUnit";
12
+ import { DataType } from "./dataunit/metadata/DataType";
13
+ import { UnitMetadata, FieldDescriptor, UserInterface } from "./dataunit/metadata/UnitMetadata";
14
+ import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
15
+ export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, Record, DataType, UnitMetadata, FieldDescriptor, UserInterface, DataUnitAction, Action };
package/dist/index.js CHANGED
@@ -9,6 +9,9 @@ import { SkwHttpProvider } from "./http/SkwHttpProvider";
9
9
  import { RequestMetadata } from "./http/RequestMetadata";
10
10
  import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
11
11
  import DataUnit from "./dataunit/DataUnit";
12
+ import { DataType } from "./dataunit/metadata/DataType";
13
+ import { UserInterface } from "./dataunit/metadata/UnitMetadata";
14
+ import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
12
15
  /*Classes públicas no pacote*/
13
- export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit };
16
+ export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataType, UserInterface, DataUnitAction, Action };
14
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,8BAA8B;AAC9B,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,QAAQ,EACX,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,QAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAiC,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAEhF,8BAA8B;AAC9B,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,QAAQ,EAER,QAAQ,EAGR,aAAa,EACb,cAAc,EACd,MAAM,EACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sankhyalabs/core",
3
- "version": "1.0.23",
3
+ "version": "1.0.24",
4
4
  "description": "Modulo core JavaScript da Sankhya.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,11 +1,11 @@
1
- import { UnitMetadata, FieldMetadata } from "./metadata/UnitMetadata";
1
+ import { UnitMetadata, FieldDescriptor, SortingProvider, FilterProvider, Sort, Filter } from "./metadata/UnitMetadata";
2
2
  import { convertType } from "./metadata/DataType";
3
3
 
4
4
  import { DataUnitAction, Action } from "./state/action/DataUnitAction";
5
5
  import StateManager from "./state/StateManager";
6
6
 
7
7
  import { HistReducer, canRedo, canUndo } from "./state/HistReducer";
8
- import { UnitMetadataReducer, getFieldMetadata, getMetadata } from "./state/slice/UnitMetadataSlice";
8
+ import { UnitMetadataReducer, getField, getMetadata } from "./state/slice/UnitMetadataSlice";
9
9
  import { RecordsReducer } from "./state/slice/RecordsSlice";
10
10
  import { SelectionReducer, getSelection, hasNext, hasPrevious } from "./state/slice/SelectionSlice";
11
11
  import { ChangesReducer, isDirty, getChangesToSave } from "./state/slice/ChangesSlice";
@@ -13,14 +13,17 @@ import { RemovedRecordsReducer } from "./state/slice/RemovedRecordsSlice";
13
13
  import { AddedRecordsReducer } from "./state/slice/AddedRecordsSlice";
14
14
  import { CurrentRecordsReducer, getCurrentRecords, getFieldValue } from "./state/slice/CurrentRecordsSlice";
15
15
 
16
+
16
17
  export default class DataUnit {
17
18
 
18
19
  private _name: string;
19
20
  private _observers: Array<(action: DataUnitAction) => void>;
21
+ private _sortingProvider?: SortingProvider;
22
+ private _filterProviders: Array<FilterProvider>;
20
23
  private _stateManager: StateManager;
21
24
 
22
25
  public metadataLoader?: (dataUnit: string) => Promise<UnitMetadata>;
23
- public dataLoader?: (dataUnit: string) => Promise<Array<Record>>;
26
+ public dataLoader?: (dataUnit: string, sort?: Array<Sort>, filters?: Array<Filter>) => Promise<Array<Record>>;
24
27
  public saveLoader?: (dataUnit: string, changes: Array<Change>) => Promise<Array<SavedRecord>>;
25
28
 
26
29
  constructor(name: string) {
@@ -38,6 +41,8 @@ export default class DataUnit {
38
41
  ]
39
42
  );
40
43
  this._observers = [];
44
+ this._filterProviders = [];
45
+ this._sortingProvider = undefined;
41
46
  }
42
47
 
43
48
  public get name(): string {
@@ -46,12 +51,24 @@ export default class DataUnit {
46
51
 
47
52
  // Métodos privados
48
53
  private validateAndTypeValue(fieldName: string, newValue: any): any {
49
- const fmd: FieldMetadata|undefined = getFieldMetadata(this._stateManager, fieldName);
50
- if (!fmd) {
51
- throw new Error(`Campo ${fieldName} não encontrado.`);
52
- }
54
+ //FIXME: Validações devem ser feitas aqui
55
+ const descriptor: FieldDescriptor | undefined = this.getField(fieldName);
56
+ return descriptor ? convertType(descriptor.dataType, newValue) : newValue;
57
+ }
58
+
59
+ private getFilters(): Array<Filter> | undefined{
60
+ let filters: Array<Filter> | undefined = undefined;
61
+ this._filterProviders.forEach(p => {
62
+ const f = p.getFilter(this.name);
63
+ if(f){
64
+ filters = (filters||[]).concat(f);
65
+ }
66
+ });
67
+ return filters;
68
+ }
53
69
 
54
- return convertType(fmd.dataType, newValue);
70
+ private getSort(): Array<Sort> | undefined{
71
+ return this._sortingProvider ? this._sortingProvider.getSort(this._name) : undefined;
55
72
  }
56
73
 
57
74
  // Loaders
@@ -59,39 +76,71 @@ export default class DataUnit {
59
76
  this.dispatchAction(Action.LOADING_METADATA);
60
77
  if (this.metadataLoader) {
61
78
  this.metadataLoader(this._name).then(
62
- metadata => this.dispatchAction(Action.METADATA_LOADED, metadata)
79
+ metadata => this.metadata = metadata
63
80
  );
64
81
  }
65
82
  }
66
83
 
67
- public loadData(): void {
84
+ public loadData(): Promise<Array<Record>> {
68
85
  this.dispatchAction(Action.LOADING_DATA);
69
- if (this.dataLoader) {
70
- this.dataLoader(this._name).then(
71
- records => this.dispatchAction(Action.DATA_LOADED, records)
72
- );
73
- }
86
+ return new Promise((resolve, fail)=>{
87
+ if (this.dataLoader) {
88
+ const sort = this.getSort();
89
+ const filters = this.getFilters();
90
+ this.dataLoader(this._name, sort, filters).then(
91
+ records => {
92
+ this.records = records;
93
+ resolve(this.records);
94
+ }
95
+ ).catch(()=>fail());
96
+ }
97
+ });
74
98
  }
75
99
 
76
100
  public saveData(): void {
77
101
 
78
- const changes: Array<Change> = getChangesToSave(this._stateManager);
102
+ const changes: Array<Change> = getChangesToSave(this._name, this._stateManager);
79
103
 
80
- if(changes.length > 0){
104
+ if (changes.length > 0) {
81
105
  this.dispatchAction(Action.SAVING_DATA);
82
- if(this.saveLoader){
106
+ if (this.saveLoader) {
83
107
  this.saveLoader(this._name, changes).then(
84
- records => this.dispatchAction(Action.DATA_SAVED, {changes, records})
108
+ records => this.dispatchAction(Action.DATA_SAVED, { changes, records })
85
109
  );
86
110
  }
87
111
  }
88
112
  }
89
113
 
90
114
  // API
91
- public getMetadata(): UnitMetadata {
115
+ public addFilterProvider(provider: FilterProvider): void{
116
+ this._filterProviders.push(provider);
117
+ }
118
+
119
+ public set sortingProvider(provider: SortingProvider){
120
+ this._sortingProvider = provider;
121
+ }
122
+
123
+ public set metadata(md: UnitMetadata) {
124
+ this.dispatchAction(Action.METADATA_LOADED, md);
125
+ }
126
+
127
+ public get metadata(): UnitMetadata {
92
128
  return getMetadata(this._stateManager);
93
129
  }
94
130
 
131
+ public set records(r: Array<Record>){
132
+ this.dispatchAction(Action.DATA_LOADED, r);
133
+ }
134
+
135
+ public get records(): Array<Record>{
136
+ const records = getCurrentRecords(this._stateManager);
137
+ return records ? Array.from(records.values()) : [];
138
+ }
139
+
140
+ public getField(fieldName: string): FieldDescriptor | undefined{
141
+ return getField(this._stateManager, fieldName);
142
+ }
143
+
95
144
  public addRecord(): void {
96
145
  this.dispatchAction(Action.RECORDS_ADDED, [{}]);
97
146
  }
@@ -103,15 +152,20 @@ export default class DataUnit {
103
152
  }
104
153
  }
105
154
 
106
- public getRecords(): Array<Record>|undefined {
107
- const records = getCurrentRecords(this._stateManager);
108
- return records ? Array.from(records.values()) : undefined;
109
- }
110
-
111
155
  public getFieldValue(fieldName: string): any {
112
156
  return getFieldValue(this._stateManager, fieldName);
113
157
  }
114
158
 
159
+ public setFieldValue(fieldName: string, newValue: any, records?: Array<string>): void {
160
+
161
+ const typedValue = this.validateAndTypeValue(fieldName, newValue);
162
+ const currentValue = this.getFieldValue(fieldName);
163
+
164
+ if (currentValue !== typedValue) {
165
+ this.dispatchAction(Action.DATA_CHANGED, { [fieldName]: typedValue, records });
166
+ }
167
+ }
168
+
115
169
  public getSelection(): Array<string> {
116
170
  return getSelection(this._stateManager);
117
171
  }
@@ -132,16 +186,6 @@ export default class DataUnit {
132
186
  this.dispatchAction(Action.PREVIOUS_SELECTED);
133
187
  }
134
188
 
135
- public setFieldValue(fieldName: string, newValue: any): void {
136
-
137
- const typedValue = this.validateAndTypeValue(fieldName, newValue);
138
- const currentValue = this.getFieldValue(fieldName);
139
-
140
- if (currentValue !== typedValue) {
141
- this.dispatchAction(Action.DATA_CHANGED, { [fieldName]: typedValue });
142
- }
143
- }
144
-
145
189
  public cancelEdition(): void {
146
190
  this.dispatchAction(Action.EDITION_CANCELED);
147
191
  }
@@ -199,7 +243,7 @@ export interface Record {
199
243
  [key: string]: any;
200
244
  }
201
245
 
202
- export interface SavedRecord extends Record{
246
+ export interface SavedRecord extends Record {
203
247
  __old__id__?: string;
204
248
  }
205
249
 
@@ -211,12 +255,14 @@ export enum ChangeOperation {
211
255
 
212
256
  export class Change {
213
257
 
258
+ public dataUnit: string;
214
259
  public record: Record;
215
260
  public updatingFields: any;
216
261
 
217
262
  private _operation: ChangeOperation;
218
263
 
219
- constructor(record: Record, updates: any, operation: ChangeOperation) {
264
+ constructor(dataUnit: string, record: Record, updates: any, operation: ChangeOperation) {
265
+ this.dataUnit = dataUnit;
220
266
  this.record = record;
221
267
  this.updatingFields = updates;
222
268
  this._operation = operation;
@@ -3,7 +3,7 @@ export enum DataType{
3
3
  DATE = "DATE",
4
4
  TEXT = "TEXT",
5
5
  BOOLEAN = "BOOLEAN",
6
- JSON = "JSON"
6
+ OBJECT = "OBJECT"
7
7
  }
8
8
 
9
9
  export const convertType = (dataType:DataType, value: any): any => {
@@ -13,8 +13,8 @@ export const convertType = (dataType:DataType, value: any): any => {
13
13
  switch (dataType){
14
14
  case DataType.NUMBER:
15
15
  return value === "" || isNaN(value) ? null : Number(value);
16
- case DataType.JSON:
17
- return JSON.parse(value);
16
+ case DataType.OBJECT:
17
+ return typeof value === "string" ? JSON.parse(value) : value;
18
18
  case DataType.BOOLEAN:
19
19
  return Boolean(value);
20
20
  case DataType.DATE:
@@ -30,7 +30,7 @@ export const toString = (dataType:DataType, value: any): string => {
30
30
  return value;
31
31
  }
32
32
 
33
- if(dataType === DataType.JSON){
33
+ if(dataType === DataType.OBJECT){
34
34
  return JSON.stringify(value);
35
35
  } else {
36
36
  return value.toString();
@@ -3,32 +3,58 @@ import { DataType } from "./DataType";
3
3
  export interface UnitMetadata{
4
4
  name: string;
5
5
  label: string;
6
- fields: Array<FieldMetadata>;
6
+ fields: Array<FieldDescriptor>;
7
7
  }
8
8
 
9
- export interface FieldMetadata {
9
+ export interface FieldDescriptor {
10
10
  name: string;
11
11
  label: string;
12
12
  dataType: DataType;
13
13
  userInterface?: UserInterface;
14
- defaultValue?: string;
14
+ defaultValue?: any;
15
+ visible?: boolean;
15
16
  readOnly?: boolean;
16
17
  required?: boolean;
17
- properties?: Array<UIProperty>;
18
+ properties?: any;
18
19
  dependencies?: Array<FieldDependency>;
19
20
  }
20
21
 
21
- export interface UIProperty {
22
- name: string;
23
- value: string;
24
- }
25
-
26
22
  export interface FieldDependency {
27
23
  masterFields: Array<string>;
28
24
  type: DependencyType;
29
25
  expression: string;
30
26
  }
31
27
 
28
+ export interface Filter{
29
+ name: string;
30
+ expression: string;
31
+ params?: Array<FilterParam>
32
+ }
33
+
34
+ export interface FilterParam{
35
+ name: string
36
+ value: any
37
+ }
38
+
39
+ export interface Sort{
40
+ field: string
41
+ mode: SortMode
42
+ dataType: DataType
43
+ }
44
+
45
+ export interface FilterProvider{
46
+ getFilter(dataUnit: string): Array<Filter> | undefined;
47
+ }
48
+
49
+ export interface SortingProvider{
50
+ getSort(dataUnit: string): Array<Sort> | undefined;
51
+ }
52
+
53
+ export enum SortMode{
54
+ ASC = "ASC",
55
+ DESC = "DESC"
56
+ }
57
+
32
58
  export enum DependencyType {
33
59
  SEARCHING = "SEARCHING",
34
60
  REQUIREMENT = "REQUIREMENT",
@@ -16,7 +16,7 @@ class ChangesReducerImpl implements ActionReducer{
16
16
  switch(action.type){
17
17
 
18
18
  case Action.DATA_CHANGED:
19
- const selection = getSelection(stateManager);
19
+ const selection: Array<string> = action.payload.records || getSelection(stateManager);
20
20
  if(selection){
21
21
  const newState = new Map(currentState);
22
22
  selection.forEach(recordId => {
@@ -54,7 +54,7 @@ export const isDirty = (stateManager: StateManager): boolean => {
54
54
  return getChanges(stateManager) !== undefined;
55
55
  }
56
56
 
57
- export const getChangesToSave = (stateManager: StateManager): Array<Change> => {
57
+ export const getChangesToSave = (dataUnit: string, stateManager: StateManager): Array<Change> => {
58
58
  const result: Array<Change> = [];
59
59
 
60
60
  const changes = getChanges(stateManager);
@@ -65,7 +65,7 @@ export const getChangesToSave = (stateManager: StateManager): Array<Change> => {
65
65
  if(changes){
66
66
  const c = changes.get(r.__record__id__);
67
67
  if (c) {
68
- result.push(new Change(r, c, ChangeOperation.UPDATE));
68
+ result.push(new Change(dataUnit, r, c, ChangeOperation.UPDATE));
69
69
  }
70
70
  }
71
71
  });
@@ -74,7 +74,7 @@ export const getChangesToSave = (stateManager: StateManager): Array<Change> => {
74
74
  const addedRecords = getAddedRecords(stateManager);
75
75
  if (addedRecords) {
76
76
  addedRecords.forEach(r => {
77
- result.push(new Change(r, changes?.get(r.__record__id__), ChangeOperation.INSERT));
77
+ result.push(new Change(dataUnit, r, changes?.get(r.__record__id__), ChangeOperation.INSERT));
78
78
  });
79
79
  }
80
80
 
@@ -83,7 +83,7 @@ export const getChangesToSave = (stateManager: StateManager): Array<Change> => {
83
83
  records.forEach(r=>recordsById[r.__record__id__] = r);
84
84
  if (removedRecords) {
85
85
  removedRecords.forEach(id => {
86
- result.push(new Change(recordsById[id], undefined, ChangeOperation.DELETE));
86
+ result.push(new Change(dataUnit, recordsById[id], undefined, ChangeOperation.DELETE));
87
87
  });
88
88
  }
89
89
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  import { ActionReducer, StateAction } from "../StateManager";
3
- import { UnitMetadata, FieldMetadata } from "../../metadata/UnitMetadata";
3
+ import { UnitMetadata, FieldDescriptor } from "../../metadata/UnitMetadata";
4
4
  import { Action } from "../action/DataUnitAction";
5
5
  import StateManager from "../StateManager";
6
6
 
@@ -24,7 +24,7 @@ export const getMetadata = (stateManager: StateManager): UnitMetadata => {
24
24
  return stateManager.select(UnitMetadataReducer.sliceName, (state: UnitMetadata) => state);
25
25
  };
26
26
 
27
- export const getFieldMetadata = (stateManager: StateManager, fieldName: string): FieldMetadata|undefined => {
27
+ export const getField = (stateManager: StateManager, fieldName: string): FieldDescriptor|undefined => {
28
28
  const md: UnitMetadata = getMetadata(stateManager);
29
29
  return md ? md.fields.find(fmd => fmd.name === fieldName) : undefined;
30
30
  }
package/src/index.ts CHANGED
@@ -8,7 +8,10 @@ import { HttpProvider } from "./http/HttpProvider";
8
8
  import { SkwHttpProvider } from "./http/SkwHttpProvider";
9
9
  import { RequestMetadata } from "./http/RequestMetadata";
10
10
  import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
11
- import DataUnit from "./dataunit/DataUnit";
11
+ import DataUnit, {Record} from "./dataunit/DataUnit";
12
+ import { DataType } from "./dataunit/metadata/DataType";
13
+ import { UnitMetadata, FieldDescriptor, UserInterface } from "./dataunit/metadata/UnitMetadata";
14
+ import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
12
15
 
13
16
  /*Classes públicas no pacote*/
14
17
  export {
@@ -22,5 +25,12 @@ export {
22
25
  HttpProvider,
23
26
  RequestMetadata,
24
27
  AuthorizedServiceCaller,
25
- DataUnit
28
+ DataUnit,
29
+ Record,
30
+ DataType,
31
+ UnitMetadata,
32
+ FieldDescriptor,
33
+ UserInterface,
34
+ DataUnitAction,
35
+ Action
26
36
  };