@sankhyalabs/core 5.20.0-dev.69 → 5.20.0-dev.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/classes/ColumnFilterManager.md +145 -0
- package/.docs/classes/DataUnitInMemoryLoader.md +303 -0
- package/.docs/classes/DataUnitLoaderUtils.md +151 -0
- package/.docs/classes/FieldComparator.md +2 -2
- package/.docs/enumerations/RECORD_DATE_FORMAT.md +27 -0
- package/.docs/globals.md +6 -0
- package/.docs/interfaces/DataUnitInMemoryLoaderConfig.md +37 -0
- package/.docs/interfaces/PaginationInfoBuilderParams.md +37 -0
- package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.d.ts +9 -0
- package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.js +6 -0
- package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.js.map +1 -0
- package/dist/dataunit/loader/dataUnitInMemoryLoader.d.ts +25 -0
- package/dist/dataunit/loader/dataUnitInMemoryLoader.js +131 -0
- package/dist/dataunit/loader/dataUnitInMemoryLoader.js.map +1 -0
- package/dist/dataunit/loader/utils/dataUnitLoaderUtils.d.ts +20 -0
- package/dist/dataunit/loader/utils/dataUnitLoaderUtils.js +62 -0
- package/dist/dataunit/loader/utils/dataUnitLoaderUtils.js.map +1 -0
- package/dist/dataunit/sorting/FieldComparator.d.ts +2 -2
- package/dist/dataunit/sorting/FieldComparator.js +4 -9
- package/dist/dataunit/sorting/FieldComparator.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/ColumnFilterManager.d.ts +19 -0
- package/dist/utils/ColumnFilterManager.js +73 -0
- package/dist/utils/ColumnFilterManager.js.map +1 -0
- package/package.json +1 -1
- package/reports/test-report.xml +136 -96
- package/src/dataunit/loader/DataUnitInMemoryLoaderConfig.ts +10 -0
- package/src/dataunit/loader/dataUnitInMemoryLoader.ts +176 -0
- package/src/dataunit/loader/utils/dataUnitLoaderUtils.ts +86 -0
- package/src/dataunit/sorting/FieldComparator.ts +18 -32
- package/src/index.ts +11 -1
- package/src/utils/ColumnFilterManager.ts +104 -0
- package/test/dataunit/loader/dataUnitInMemoryLoader.spec.ts +221 -0
- package/test/dataunit/loader/utils/dataUnitLoaderUtils.spec.ts +158 -0
- package/test/util/ColumnFilterManager.spec.ts +133 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[**@sankhyalabs/core**](../README.md) • **Docs**
|
|
2
|
+
|
|
3
|
+
***
|
|
4
|
+
|
|
5
|
+
[@sankhyalabs/core](../globals.md) / PaginationInfoBuilderParams
|
|
6
|
+
|
|
7
|
+
# Interface: PaginationInfoBuilderParams
|
|
8
|
+
|
|
9
|
+
## Properties
|
|
10
|
+
|
|
11
|
+
### offset
|
|
12
|
+
|
|
13
|
+
> **offset**: `number`
|
|
14
|
+
|
|
15
|
+
#### Source
|
|
16
|
+
|
|
17
|
+
src/dataunit/loader/utils/dataUnitLoaderUtils.ts:84
|
|
18
|
+
|
|
19
|
+
***
|
|
20
|
+
|
|
21
|
+
### recordsLength
|
|
22
|
+
|
|
23
|
+
> **recordsLength**: `number`
|
|
24
|
+
|
|
25
|
+
#### Source
|
|
26
|
+
|
|
27
|
+
src/dataunit/loader/utils/dataUnitLoaderUtils.ts:83
|
|
28
|
+
|
|
29
|
+
***
|
|
30
|
+
|
|
31
|
+
### recordsPerPage
|
|
32
|
+
|
|
33
|
+
> **recordsPerPage**: `number`
|
|
34
|
+
|
|
35
|
+
#### Source
|
|
36
|
+
|
|
37
|
+
src/dataunit/loader/utils/dataUnitLoaderUtils.ts:85
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataUnitInMemoryLoaderConfig.js","sourceRoot":"","sources":["../../../src/dataunit/loader/DataUnitInMemoryLoaderConfig.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,iCAAW,CAAA;AACb,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataUnit, FieldDescriptor, Record, UnitMetadata } from '../../index.js';
|
|
2
|
+
import { DataUnitInMemoryLoaderConfig, RECORD_DATE_FORMAT } from './DataUnitInMemoryLoaderConfig.js';
|
|
3
|
+
export declare class DataUnitInMemoryLoader {
|
|
4
|
+
private _dataUnit;
|
|
5
|
+
private _metadata;
|
|
6
|
+
private _initialRecords;
|
|
7
|
+
private recordDateFormat;
|
|
8
|
+
static readonly IN_MEMORY_DATA_UNIT_NAME = "InMemoryDataUnit";
|
|
9
|
+
static readonly DEFAULT_PAGE_SIZE = 150;
|
|
10
|
+
constructor(metadata?: UnitMetadata, records?: Array<Record>, config?: DataUnitInMemoryLoaderConfig);
|
|
11
|
+
private getRecordsToLoad;
|
|
12
|
+
get dataUnit(): DataUnit;
|
|
13
|
+
get records(): Array<Record>;
|
|
14
|
+
set records(records: Array<Record>);
|
|
15
|
+
static getConvertedValue(descriptor: FieldDescriptor, strValue: string, dateFormat?: RECORD_DATE_FORMAT): any;
|
|
16
|
+
private buildColumns;
|
|
17
|
+
private buildInitialRecords;
|
|
18
|
+
get metadata(): UnitMetadata;
|
|
19
|
+
set metadata(metadata: UnitMetadata);
|
|
20
|
+
private generateUniqueId;
|
|
21
|
+
private inMemoryLoader;
|
|
22
|
+
private metadaLoader;
|
|
23
|
+
private saveLoader;
|
|
24
|
+
removeLoader(_dataUnit: DataUnit, recordIds: Array<string>): Promise<Array<string>>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ChangeOperation, DataType, DataUnit, DateUtils, StringUtils, } from '../../index.js';
|
|
2
|
+
import { RECORD_DATE_FORMAT } from './DataUnitInMemoryLoaderConfig.js';
|
|
3
|
+
import { DataUnitLoaderUtils } from './utils/dataUnitLoaderUtils.js';
|
|
4
|
+
export class DataUnitInMemoryLoader {
|
|
5
|
+
constructor(metadata, records, config) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
this._initialRecords = [];
|
|
8
|
+
this.metadata = metadata;
|
|
9
|
+
this.recordDateFormat = (_a = config === null || config === void 0 ? void 0 : config.recordDateFormat) !== null && _a !== void 0 ? _a : RECORD_DATE_FORMAT.DD_MM_YYYY;
|
|
10
|
+
this.records = records !== null && records !== void 0 ? records : [];
|
|
11
|
+
this._dataUnit = new DataUnit(DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
|
|
12
|
+
this._dataUnit.pageSize = (_b = config === null || config === void 0 ? void 0 : config.pageSize) !== null && _b !== void 0 ? _b : DataUnitInMemoryLoader.DEFAULT_PAGE_SIZE;
|
|
13
|
+
this._dataUnit.metadataLoader = () => this.metadaLoader();
|
|
14
|
+
this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
|
|
15
|
+
this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
|
|
16
|
+
this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
|
|
17
|
+
this.dataUnit.loadMetadata().then(() => {
|
|
18
|
+
if ((config === null || config === void 0 ? void 0 : config.autoLoad) !== false) {
|
|
19
|
+
this.dataUnit.loadData();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
getRecordsToLoad() {
|
|
24
|
+
if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
|
|
25
|
+
this._initialRecords = this.dataUnit.records;
|
|
26
|
+
}
|
|
27
|
+
const addedRecords = this.dataUnit.getAddedRecords();
|
|
28
|
+
if (addedRecords) {
|
|
29
|
+
return [...this._initialRecords, ...addedRecords];
|
|
30
|
+
}
|
|
31
|
+
return this._initialRecords;
|
|
32
|
+
}
|
|
33
|
+
get dataUnit() {
|
|
34
|
+
return this._dataUnit;
|
|
35
|
+
}
|
|
36
|
+
get records() {
|
|
37
|
+
return this.dataUnit.records;
|
|
38
|
+
}
|
|
39
|
+
set records(records) {
|
|
40
|
+
const columns = this.buildColumns();
|
|
41
|
+
this._initialRecords = this.buildInitialRecords(records, columns);
|
|
42
|
+
if (!this._dataUnit)
|
|
43
|
+
return;
|
|
44
|
+
//Isso força o refresh internamente no datunit
|
|
45
|
+
this._dataUnit.loadData();
|
|
46
|
+
}
|
|
47
|
+
static getConvertedValue(descriptor, strValue, dateFormat) {
|
|
48
|
+
if (!descriptor)
|
|
49
|
+
return strValue;
|
|
50
|
+
if (descriptor.dataType === DataType.BOOLEAN)
|
|
51
|
+
return strValue === 'S';
|
|
52
|
+
if (descriptor.dataType === DataType.NUMBER)
|
|
53
|
+
return Number(strValue);
|
|
54
|
+
if (descriptor.dataType === DataType.OBJECT)
|
|
55
|
+
return JSON.parse(strValue);
|
|
56
|
+
if (descriptor.dataType === DataType.DATE) {
|
|
57
|
+
return dateFormat === RECORD_DATE_FORMAT.ISO
|
|
58
|
+
? DateUtils.validateDate(new Date(strValue), true)
|
|
59
|
+
: DateUtils.strToDate(strValue, true);
|
|
60
|
+
}
|
|
61
|
+
return strValue;
|
|
62
|
+
}
|
|
63
|
+
buildColumns() {
|
|
64
|
+
return this._metadata
|
|
65
|
+
? new Map(this._metadata.fields.map(descriptor => [descriptor.name, descriptor]))
|
|
66
|
+
: undefined;
|
|
67
|
+
}
|
|
68
|
+
buildInitialRecords(records, columns) {
|
|
69
|
+
const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
|
|
70
|
+
if (!record['__record__id__']) {
|
|
71
|
+
record['__record__id__'] = this.generateUniqueId();
|
|
72
|
+
}
|
|
73
|
+
if (!columns)
|
|
74
|
+
return record;
|
|
75
|
+
for (const fieldName in record) {
|
|
76
|
+
const value = record[fieldName];
|
|
77
|
+
const fieldDescriptor = columns.get(fieldName);
|
|
78
|
+
if (typeof value === 'string' && fieldDescriptor) {
|
|
79
|
+
record[fieldName] = DataUnitInMemoryLoader.getConvertedValue(fieldDescriptor, value, this.recordDateFormat);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return record;
|
|
83
|
+
});
|
|
84
|
+
return newRecords;
|
|
85
|
+
}
|
|
86
|
+
get metadata() {
|
|
87
|
+
return this._metadata;
|
|
88
|
+
}
|
|
89
|
+
set metadata(metadata) {
|
|
90
|
+
this._metadata = metadata;
|
|
91
|
+
if (this._dataUnit) {
|
|
92
|
+
this._dataUnit.metadata = metadata;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
generateUniqueId() {
|
|
96
|
+
return StringUtils.generateUUID();
|
|
97
|
+
}
|
|
98
|
+
inMemoryLoader(dataUnit, request, recordsIn) {
|
|
99
|
+
return DataUnitLoaderUtils.buildLoadDataResponse(recordsIn, dataUnit, request);
|
|
100
|
+
}
|
|
101
|
+
metadaLoader() {
|
|
102
|
+
return Promise.resolve(this._metadata);
|
|
103
|
+
}
|
|
104
|
+
saveLoader(_dataUnit, changes) {
|
|
105
|
+
return new Promise((resolve) => {
|
|
106
|
+
let dataUnitRecords = [];
|
|
107
|
+
changes.forEach(change => {
|
|
108
|
+
let { record, updatingFields, operation } = change;
|
|
109
|
+
const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
|
|
110
|
+
if (operation === ChangeOperation.INSERT ||
|
|
111
|
+
operation === ChangeOperation.COPY) {
|
|
112
|
+
changedRecord['__old__id__'] = record['__record__id__'];
|
|
113
|
+
changedRecord['__record__id__'] = this.generateUniqueId();
|
|
114
|
+
this.records.push(changedRecord);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const recordIndex = this.records.findIndex(r => r['__record__id__'] == changedRecord['__record__id__']);
|
|
118
|
+
this.records[recordIndex] = changedRecord;
|
|
119
|
+
}
|
|
120
|
+
dataUnitRecords.push(changedRecord);
|
|
121
|
+
});
|
|
122
|
+
resolve(dataUnitRecords);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
removeLoader(_dataUnit, recordIds) {
|
|
126
|
+
return new Promise((resolve) => resolve(recordIds));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = 'InMemoryDataUnit';
|
|
130
|
+
DataUnitInMemoryLoader.DEFAULT_PAGE_SIZE = 150;
|
|
131
|
+
//# sourceMappingURL=dataUnitInMemoryLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataUnitInMemoryLoader.js","sourceRoot":"","sources":["../../../src/dataunit/loader/dataUnitInMemoryLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import DataUnit, { Record } from '../../DataUnit.js';
|
|
2
|
+
import { Filter, Sort } from '../../metadata/UnitMetadata.js';
|
|
3
|
+
import { LoadDataRequest } from '../../loading/LoadDataRequest.js';
|
|
4
|
+
import { PaginationInfo } from '../../loading/PaginationInfo.js';
|
|
5
|
+
export declare class DataUnitLoaderUtils {
|
|
6
|
+
static applyFilter(records: Array<Record>, dataUnit: DataUnit, filters: Array<Filter>): Array<Record>;
|
|
7
|
+
static buildLoadDataResponse(recordsIn: Array<Record>, dataUnit: DataUnit, request: LoadDataRequest): Promise<{
|
|
8
|
+
records: Record[];
|
|
9
|
+
paginationInfo: PaginationInfo | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
static applySorting(records: Array<Record>, dataUnit: DataUnit, sorting: Array<Sort>): Array<Record>;
|
|
12
|
+
static getPagesByRecords(records: Record[], offset?: number, limit?: number): Record[];
|
|
13
|
+
private static hasValidLimitAndOffset;
|
|
14
|
+
static buildPaginationInfo({ recordsLength, offset, recordsPerPage }: PaginationInfoBuilderParams): PaginationInfo | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface PaginationInfoBuilderParams {
|
|
17
|
+
recordsLength: number;
|
|
18
|
+
offset: number;
|
|
19
|
+
recordsPerPage: number;
|
|
20
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ColumnFilterManager } from '../../../utils/ColumnFilterManager.js';
|
|
2
|
+
import SortingUtils from '../../../utils/SortingUtils.js';
|
|
3
|
+
export class DataUnitLoaderUtils {
|
|
4
|
+
static applyFilter(records, dataUnit, filters) {
|
|
5
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
|
|
6
|
+
if (!(columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.size))
|
|
7
|
+
return records;
|
|
8
|
+
const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
|
9
|
+
return (filterFunction) ? records.filter(filterFunction) : records;
|
|
10
|
+
}
|
|
11
|
+
static buildLoadDataResponse(recordsIn, dataUnit, request) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
let records = recordsIn ? [...recordsIn] : [];
|
|
14
|
+
records = DataUnitLoaderUtils.applyFilter(records, dataUnit, (_a = request === null || request === void 0 ? void 0 : request.filters) !== null && _a !== void 0 ? _a : []);
|
|
15
|
+
records = DataUnitLoaderUtils.applySorting(records, dataUnit, (_b = request === null || request === void 0 ? void 0 : request.sort) !== null && _b !== void 0 ? _b : []);
|
|
16
|
+
const { offset, limit } = request;
|
|
17
|
+
const paginationInfoBuilderParams = {
|
|
18
|
+
recordsLength: records.length,
|
|
19
|
+
offset,
|
|
20
|
+
recordsPerPage: limit,
|
|
21
|
+
};
|
|
22
|
+
return Promise.resolve({
|
|
23
|
+
records: DataUnitLoaderUtils.getPagesByRecords(records, offset, limit),
|
|
24
|
+
paginationInfo: dataUnit.pageSize ? DataUnitLoaderUtils.buildPaginationInfo(paginationInfoBuilderParams) : undefined,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
static applySorting(records, dataUnit, sorting) {
|
|
28
|
+
if (sorting == undefined || sorting.length == 0) {
|
|
29
|
+
return records;
|
|
30
|
+
}
|
|
31
|
+
const sortingFunction = SortingUtils.getSortingFunction(dataUnit, sorting);
|
|
32
|
+
if (sortingFunction == undefined) {
|
|
33
|
+
return records;
|
|
34
|
+
}
|
|
35
|
+
return records.sort(sortingFunction);
|
|
36
|
+
}
|
|
37
|
+
static getPagesByRecords(records, offset = 0, limit = 0) {
|
|
38
|
+
if (!records || !records.length || !this.hasValidLimitAndOffset(offset, limit))
|
|
39
|
+
return [];
|
|
40
|
+
if (limit === 0 && offset === 0)
|
|
41
|
+
return records;
|
|
42
|
+
return records.slice(offset, offset + limit);
|
|
43
|
+
}
|
|
44
|
+
static hasValidLimitAndOffset(offset, limit) {
|
|
45
|
+
return offset >= 0 && limit >= 0;
|
|
46
|
+
}
|
|
47
|
+
static buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
|
|
48
|
+
if (!recordsLength) {
|
|
49
|
+
return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
|
|
50
|
+
}
|
|
51
|
+
const lastRecordIndex = offset + recordsPerPage;
|
|
52
|
+
const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
|
|
53
|
+
return {
|
|
54
|
+
currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
|
|
55
|
+
firstRecord: offset + 1,
|
|
56
|
+
lastRecord: lastRecord,
|
|
57
|
+
total: recordsLength,
|
|
58
|
+
hasMore: lastRecord < recordsLength,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=dataUnitLoaderUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataUnitLoaderUtils.js","sourceRoot":"","sources":["../../../../src/dataunit/loader/utils/dataUnitLoaderUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Record } from
|
|
2
|
-
import { FieldDescriptor } from
|
|
1
|
+
import { Record } from '../DataUnit.js';
|
|
2
|
+
import { FieldDescriptor } from '../metadata/UnitMetadata.js';
|
|
3
3
|
export declare class FieldComparator {
|
|
4
4
|
static compare(field: FieldDescriptor, recordA: Record, recordB: Record, asc?: boolean): number;
|
|
5
5
|
static compareValues(descriptor: FieldDescriptor, valueA: any, valueB: any): number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { compareValues } from
|
|
1
|
+
import { compareValues } from '../metadata/DataType.js';
|
|
2
2
|
export class FieldComparator {
|
|
3
3
|
static compare(field, recordA, recordB, asc = true) {
|
|
4
4
|
const valueA = (asc ? recordA : recordB)[field.name];
|
|
@@ -7,18 +7,13 @@ export class FieldComparator {
|
|
|
7
7
|
}
|
|
8
8
|
static compareValues(descriptor, valueA, valueB) {
|
|
9
9
|
const undefinedComparison = this.compareUndefined(valueA == undefined, valueB == undefined);
|
|
10
|
-
|
|
11
|
-
return undefinedComparison;
|
|
12
|
-
}
|
|
13
|
-
return compareValues(valueA, valueB, descriptor);
|
|
10
|
+
return (undefinedComparison != undefined) ? undefinedComparison : compareValues(valueA, valueB, descriptor);
|
|
14
11
|
}
|
|
15
12
|
static compareUndefined(isUndefinedA, isUndefinedB) {
|
|
16
|
-
if (!isUndefinedA && !isUndefinedB)
|
|
13
|
+
if (!isUndefinedA && !isUndefinedB)
|
|
17
14
|
return;
|
|
18
|
-
|
|
19
|
-
if (isUndefinedA && isUndefinedB) {
|
|
15
|
+
if (isUndefinedA && isUndefinedB)
|
|
20
16
|
return 0;
|
|
21
|
-
}
|
|
22
17
|
return isUndefinedA ? -1 : 1;
|
|
23
18
|
}
|
|
24
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldComparator.js","sourceRoot":"","sources":["../../../src/dataunit/sorting/FieldComparator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"FieldComparator.js","sourceRoot":"","sources":["../../../src/dataunit/sorting/FieldComparator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,MAAM,OAAO,eAAe;IAEnB,MAAM,CAAC,OAAO,CAAC,KAAsB,EAAE,OAAe,EAAE,OAAe,EAAE,MAAe,IAAI;QACjG,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,UAA2B,EAAE,MAAW,EAAE,MAAW;QAC/E,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,SAAS,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;QAC5F,OAAO,CAAC,mBAAmB,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9G,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,YAAqB,EAAE,YAAqB;QACzE,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO;QAC3C,IAAI,YAAY,IAAI,YAAY;YAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -45,4 +45,8 @@ import { ServiceUtils } from "./utils/ServiceUtils.js";
|
|
|
45
45
|
import { StorageType } from "./utils/CacheManager/index.js";
|
|
46
46
|
import OverflowWatcher, { OnOverflowCallBack, OverflowDirection, OverFlowWatcherParams, OVERFLOWED_CLASS_NAME } from "./utils/OverflowWatcher/index.js";
|
|
47
47
|
import { LockManager, LockManagerOperation } from "./utils/LockManager.js";
|
|
48
|
-
|
|
48
|
+
import { DataUnitInMemoryLoader } from "./dataunit/loader/dataUnitInMemoryLoader.js";
|
|
49
|
+
import { DataUnitLoaderUtils, PaginationInfoBuilderParams } from "./dataunit/loader/utils/dataUnitLoaderUtils.js";
|
|
50
|
+
import { ColumnFilterManager } from "./utils/ColumnFilterManager.js";
|
|
51
|
+
import { DataUnitInMemoryLoaderConfig, RECORD_DATE_FORMAT } from "./dataunit/loader/DataUnitInMemoryLoaderConfig.js";
|
|
52
|
+
export { LockManager, LockManagerOperation, StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, ArrayUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataUnitStorage, Record, SavedRecord, DataType, UnitMetadata, FieldDescriptor, UserInterface, DependencyType, ChildDescriptor, ChildLink, DataUnitAction, Action, Change, Sort, Filter, ChangeOperation, DUActionInterceptor, ApplicationContext, WaitingChange, PageRequest, QuickFilter, ReadyUtil, ObjectUtils, WarningException, WaitingChangeException, ErrorException, ErrorTracking, ExecutionContext, PaginationInfo, SortingProvider, SortMode, LoadDataRequest, LoadDataResponse, SelectionInfo, SelectionMode, ElementIDUtils, IElementIDInfo, UserAgentUtils, JSUtils, VersionUtils, OnboardingUtils, PromiseSync, PromiseSyncCallback, HTMLBuilder, IRepository, IDBRepository, ILoadResult, IRepositoryIndex, FieldComparator, defaultDataLoader, KeyboardManager, SearchUtils, ServiceUtils, StorageType, OverflowWatcher, OnOverflowCallBack, OverflowDirection, OverFlowWatcherParams, OVERFLOWED_CLASS_NAME, DataUnitEventOptions, ServiceCanceledException, SilentException, DataUnitInMemoryLoader, DataUnitLoaderUtils, PaginationInfoBuilderParams, ColumnFilterManager, DataUnitInMemoryLoaderConfig, RECORD_DATE_FORMAT };
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,10 @@ import { ServiceUtils } from "./utils/ServiceUtils.js";
|
|
|
39
39
|
import { StorageType } from "./utils/CacheManager/index.js";
|
|
40
40
|
import OverflowWatcher, { OverflowDirection, OVERFLOWED_CLASS_NAME } from "./utils/OverflowWatcher/index.js";
|
|
41
41
|
import { LockManager, LockManagerOperation } from "./utils/LockManager.js";
|
|
42
|
+
import { DataUnitInMemoryLoader } from "./dataunit/loader/dataUnitInMemoryLoader.js";
|
|
43
|
+
import { DataUnitLoaderUtils } from "./dataunit/loader/utils/dataUnitLoaderUtils.js";
|
|
44
|
+
import { ColumnFilterManager } from "./utils/ColumnFilterManager.js";
|
|
45
|
+
import { RECORD_DATE_FORMAT } from "./dataunit/loader/DataUnitInMemoryLoaderConfig.js";
|
|
42
46
|
/*Classes públicas no pacote*/
|
|
43
|
-
export { LockManager, LockManagerOperation, StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, ArrayUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataUnitStorage, DataType, UserInterface, DependencyType, DataUnitAction, Action, Change, ChangeOperation, ApplicationContext, ReadyUtil, ObjectUtils, WarningException, WaitingChangeException, ErrorException, ErrorTracking, SortMode, SelectionInfo, SelectionMode, ElementIDUtils, UserAgentUtils, JSUtils, VersionUtils, OnboardingUtils, PromiseSync, HTMLBuilder, IDBRepository, FieldComparator, defaultDataLoader, KeyboardManager, SearchUtils, ServiceUtils, StorageType, OverflowWatcher, OverflowDirection, OVERFLOWED_CLASS_NAME, ServiceCanceledException, SilentException };
|
|
47
|
+
export { LockManager, LockManagerOperation, StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, ArrayUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataUnitStorage, DataType, UserInterface, DependencyType, DataUnitAction, Action, Change, ChangeOperation, ApplicationContext, ReadyUtil, ObjectUtils, WarningException, WaitingChangeException, ErrorException, ErrorTracking, SortMode, SelectionInfo, SelectionMode, ElementIDUtils, UserAgentUtils, JSUtils, VersionUtils, OnboardingUtils, PromiseSync, HTMLBuilder, IDBRepository, FieldComparator, defaultDataLoader, KeyboardManager, SearchUtils, ServiceUtils, StorageType, OverflowWatcher, OverflowDirection, OVERFLOWED_CLASS_NAME, ServiceCanceledException, SilentException, DataUnitInMemoryLoader, DataUnitLoaderUtils, ColumnFilterManager, RECORD_DATE_FORMAT };
|
|
44
48
|
//# 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,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,QAAQ,EAAE,EAAsB,MAAM,EAAE,eAAe,EAAgE,aAAa,EAAE,aAAa,EAAuB,MAAM,wBAAwB,CAAC;AAChN,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAiC,aAAa,EAAQ,QAAQ,EAA2B,cAAc,EAA8B,MAAM,qCAAqC,CAAC;AACxL,OAAO,EAAE,cAAc,EAAE,MAAM,EAAoB,MAAM,2CAA2C,CAAC;AACrG,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAC5D,OAAO,wBAAwB,MAAM,0CAA0C,CAAC;AAChF,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAkB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAGxE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAO,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,eAAe,EAAE,EAAsB,iBAAiB,EAAyB,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACxJ,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Filter } from '../dataunit/metadata/UnitMetadata.js';
|
|
2
|
+
import DataUnit, { Record } from '../dataunit/DataUnit.js';
|
|
3
|
+
export declare class ColumnFilterManager {
|
|
4
|
+
static getColumnFilters(filters: Array<Filter>, fieldName: string): Map<string, IColumnFilter>;
|
|
5
|
+
static getFilterFunction(dataUnit: DataUnit, filters?: Array<IColumnFilter>): ((record: Record) => boolean) | undefined;
|
|
6
|
+
private static recordMatchesFilter;
|
|
7
|
+
static compileDistinct(fieldName: string, dataUnit: DataUnit): Array<IMultiSelectionOption>;
|
|
8
|
+
static compileDistinctFromArray(fieldName: string, dataUnit: DataUnit, records: Array<Record>): Array<IMultiSelectionOption>;
|
|
9
|
+
private static doCompileDistinct;
|
|
10
|
+
}
|
|
11
|
+
interface IMultiSelectionOption {
|
|
12
|
+
value: string;
|
|
13
|
+
label: string;
|
|
14
|
+
check: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface IColumnFilter extends Filter {
|
|
17
|
+
columnName: string;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { FieldComparator } from '../dataunit/sorting/FieldComparator.js';
|
|
2
|
+
const COLUMN_FILTER_PATTERN = /FILTRO_COLUNA_(.+)/;
|
|
3
|
+
export class ColumnFilterManager {
|
|
4
|
+
static getColumnFilters(filters, fieldName) {
|
|
5
|
+
const columnFilters = new Map();
|
|
6
|
+
if (!(filters === null || filters === void 0 ? void 0 : filters.length)) {
|
|
7
|
+
return columnFilters;
|
|
8
|
+
}
|
|
9
|
+
filters.forEach(filter => {
|
|
10
|
+
const result = COLUMN_FILTER_PATTERN.exec(filter.name);
|
|
11
|
+
if (result) {
|
|
12
|
+
if (fieldName !== result[1]) {
|
|
13
|
+
columnFilters.set(filter.name, Object.assign({ columnName: result[1] }, filter));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return columnFilters;
|
|
18
|
+
}
|
|
19
|
+
static getFilterFunction(dataUnit, filters) {
|
|
20
|
+
if (!(filters === null || filters === void 0 ? void 0 : filters.length))
|
|
21
|
+
return undefined;
|
|
22
|
+
return record => {
|
|
23
|
+
for (const filter of filters) {
|
|
24
|
+
if (!ColumnFilterManager.recordMatchesFilter(dataUnit, record, filter)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
|
32
|
+
const fieldDescriptor = dataUnit.getField(columnFilter.columnName);
|
|
33
|
+
if (!columnFilter.params || !fieldDescriptor)
|
|
34
|
+
return false;
|
|
35
|
+
const fieldValue = record[columnFilter.columnName];
|
|
36
|
+
for (let param of columnFilter.params) {
|
|
37
|
+
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
|
38
|
+
if (FieldComparator.compareValues(fieldDescriptor, fieldValue, paramValue) === 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
static compileDistinct(fieldName, dataUnit) {
|
|
45
|
+
const request = dataUnit.getLastLoadRequest();
|
|
46
|
+
let list = dataUnit.records;
|
|
47
|
+
return this.doCompileDistinct(request, fieldName, dataUnit, list);
|
|
48
|
+
}
|
|
49
|
+
static compileDistinctFromArray(fieldName, dataUnit, records) {
|
|
50
|
+
const request = dataUnit.getLastLoadRequest();
|
|
51
|
+
return this.doCompileDistinct(request, fieldName, dataUnit, records);
|
|
52
|
+
}
|
|
53
|
+
static doCompileDistinct(request, fieldName, dataUnit, list) {
|
|
54
|
+
var _a;
|
|
55
|
+
if (request != undefined) {
|
|
56
|
+
const columnFilters = Array.from(ColumnFilterManager.getColumnFilters((_a = request === null || request === void 0 ? void 0 : request.filters) !== null && _a !== void 0 ? _a : [], fieldName).values());
|
|
57
|
+
const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, columnFilters);
|
|
58
|
+
if (filterFunction != undefined) {
|
|
59
|
+
list = list.filter(filterFunction);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const distinct = new Map(list.map(record => {
|
|
63
|
+
const fieldValue = record[fieldName];
|
|
64
|
+
if (fieldValue == undefined) {
|
|
65
|
+
return [null, { label: null, value: null, check: true }];
|
|
66
|
+
}
|
|
67
|
+
const item = { label: dataUnit.getFormattedValue(fieldName, fieldValue), value: fieldValue, check: true };
|
|
68
|
+
return [item.label, item];
|
|
69
|
+
}));
|
|
70
|
+
return Array.from(distinct.values());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ColumnFilterManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnFilterManager.js","sourceRoot":"","sources":["../../src/utils/ColumnFilterManager.ts"],"names":[],"mappings":"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"}
|