@sankhyalabs/core 5.9.0 → 5.9.1-dev.2
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/README.md +2 -2
- package/.docs/modules.md +26 -0
- package/README.md +2 -2
- package/dist/dataunit/DataUnitHelper.d.ts +3 -0
- package/dist/dataunit/DataUnitHelper.js +83 -0
- package/dist/dataunit/DataUnitHelper.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/dataunit/DataUnitHelper.ts +107 -0
- package/src/index.ts +3 -1
package/.docs/README.md
CHANGED
|
@@ -32,7 +32,7 @@ function test() {
|
|
|
32
32
|
dos [padrões semânticos](https://comunidade.sankhya.com.br/t/sankhya-gitflow-padroes-de-nomenclatura-de-branch-para-um-fluxo-de-desenvolvimento-eficiente/7189)
|
|
33
33
|
2. Realize as alterações para resolução das suas tarefas
|
|
34
34
|
3. Se possível,
|
|
35
|
-
crie [casos de teste](https://
|
|
35
|
+
crie [casos de teste](https://gitlab.sankhya.com.br/dti/design-system/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o#testes)
|
|
36
36
|
para a tarefa que você está executando
|
|
37
37
|
4. Faça os commits dentro
|
|
38
38
|
dos [padrões semânticos](https://comunidade.sankhya.com.br/t/formatando-mensagens-de-commit-com-cz-sankhya/7191) para
|
|
@@ -40,7 +40,7 @@ function test() {
|
|
|
40
40
|
5. Abra um merge request para a branch alvo com as informações de acordo
|
|
41
41
|
|
|
42
42
|
> Por favor, siga os padrões de código descritos
|
|
43
|
-
> em [nossa Wiki](https://
|
|
43
|
+
> em [nossa Wiki](https://gitlab.sankhya.com.br/dti/design-system/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o)!
|
|
44
44
|
|
|
45
45
|
## ⚡ Utilitários
|
|
46
46
|
|
package/.docs/modules.md
CHANGED
|
@@ -72,3 +72,29 @@
|
|
|
72
72
|
- [SortingProvider](interfaces/SortingProvider.md)
|
|
73
73
|
- [UnitMetadata](interfaces/UnitMetadata.md)
|
|
74
74
|
- [WaitingChange](interfaces/WaitingChange.md)
|
|
75
|
+
|
|
76
|
+
### Functions
|
|
77
|
+
|
|
78
|
+
- [defaultDataLoader](modules.md#defaultdataloader)
|
|
79
|
+
|
|
80
|
+
## Functions
|
|
81
|
+
|
|
82
|
+
### defaultDataLoader
|
|
83
|
+
|
|
84
|
+
▸ **defaultDataLoader**(`dataUnit`, `request`, `recordsIn`): `Promise`<[`LoadDataResponse`](interfaces/LoadDataResponse.md)\>
|
|
85
|
+
|
|
86
|
+
#### Parameters
|
|
87
|
+
|
|
88
|
+
| Name | Type |
|
|
89
|
+
| :------ | :------ |
|
|
90
|
+
| `dataUnit` | [`DataUnit`](classes/DataUnit.md) |
|
|
91
|
+
| `request` | [`LoadDataRequest`](interfaces/LoadDataRequest.md) |
|
|
92
|
+
| `recordsIn` | [`Record`](interfaces/Record.md)[] |
|
|
93
|
+
|
|
94
|
+
#### Returns
|
|
95
|
+
|
|
96
|
+
`Promise`<[`LoadDataResponse`](interfaces/LoadDataResponse.md)\>
|
|
97
|
+
|
|
98
|
+
#### Defined in
|
|
99
|
+
|
|
100
|
+
src/dataunit/DataUnitHelper.ts:26
|
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ function test() {
|
|
|
30
30
|
dos [padrões semânticos](https://comunidade.sankhya.com.br/t/sankhya-gitflow-padroes-de-nomenclatura-de-branch-para-um-fluxo-de-desenvolvimento-eficiente/7189)
|
|
31
31
|
2. Realize as alterações para resolução das suas tarefas
|
|
32
32
|
3. Se possível,
|
|
33
|
-
crie [casos de teste](https://
|
|
33
|
+
crie [casos de teste](https://gitlab.sankhya.com.br/dti/design-system/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o#testes)
|
|
34
34
|
para a tarefa que você está executando
|
|
35
35
|
4. Faça os commits dentro
|
|
36
36
|
dos [padrões semânticos](https://comunidade.sankhya.com.br/t/formatando-mensagens-de-commit-com-cz-sankhya/7191) para
|
|
@@ -38,7 +38,7 @@ function test() {
|
|
|
38
38
|
5. Abra um merge request para a branch alvo com as informações de acordo
|
|
39
39
|
|
|
40
40
|
> Por favor, siga os padrões de código descritos
|
|
41
|
-
> em [nossa Wiki](https://
|
|
41
|
+
> em [nossa Wiki](https://gitlab.sankhya.com.br/dti/design-system/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o)!
|
|
42
42
|
|
|
43
43
|
## ⚡ Utilitários
|
|
44
44
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { DataType } from './metadata/DataType.js';
|
|
2
|
+
import { SortMode, StringUtils } from '../index.js';
|
|
3
|
+
const DISTINCT_FILTER_NAME_PREFIX = 'FILTRO_COLUNA_';
|
|
4
|
+
function sortRecords(sort, records) {
|
|
5
|
+
sort.forEach(sortItem => {
|
|
6
|
+
records = records.sort((recordA, recordB) => {
|
|
7
|
+
const fieldA = recordA[sortItem.field];
|
|
8
|
+
const fieldB = recordB[sortItem.field];
|
|
9
|
+
const sortFn = getSortFn(sortItem.dataType);
|
|
10
|
+
return sortFn(fieldA, fieldB) * (sortItem.mode == SortMode.ASC ? 1 : -1);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
return records;
|
|
14
|
+
}
|
|
15
|
+
export function defaultDataLoader(dataUnit, request, recordsIn) {
|
|
16
|
+
const filters = getColumnFilters(dataUnit);
|
|
17
|
+
let records = applyFilters(filters, recordsIn, dataUnit);
|
|
18
|
+
records = request.sort ? sortRecords(request.sort, records) : records;
|
|
19
|
+
return Promise.resolve({ records: records, paginationInfo: buildPaginationInfo(request, records) });
|
|
20
|
+
}
|
|
21
|
+
function buildPaginationInfo({ offset, limit }, records) {
|
|
22
|
+
if (offset === undefined || limit === undefined) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const lastRecord = Math.min(offset + limit, records.length);
|
|
26
|
+
return {
|
|
27
|
+
currentPage: Math.ceil(offset / limit),
|
|
28
|
+
firstRecord: offset,
|
|
29
|
+
lastRecord: lastRecord,
|
|
30
|
+
total: records.length,
|
|
31
|
+
hasMore: !!(records.length - lastRecord),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function filterRecords(record, filter, dataUnit) {
|
|
35
|
+
var _a;
|
|
36
|
+
let fieldValue = record[filter.column];
|
|
37
|
+
if (((_a = dataUnit.getField(filter.column)) === null || _a === void 0 ? void 0 : _a.dataType) === DataType.OBJECT) {
|
|
38
|
+
fieldValue = fieldValue.value;
|
|
39
|
+
}
|
|
40
|
+
return filter.values.includes(fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.toString());
|
|
41
|
+
}
|
|
42
|
+
function applyFilters(filters, recordsIn, dataUnit) {
|
|
43
|
+
let records = [...recordsIn];
|
|
44
|
+
filters.forEach(filter => {
|
|
45
|
+
records = records.filter(record => filterRecords(record, filter, dataUnit));
|
|
46
|
+
});
|
|
47
|
+
return records;
|
|
48
|
+
}
|
|
49
|
+
function getColumnFilters(dataUnit) {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
const allFilters = (_a = dataUnit.getFilters()) !== null && _a !== void 0 ? _a : [];
|
|
52
|
+
const columnFilters = (_b = allFilters.filter(({ name }) => name === null || name === void 0 ? void 0 : name.includes(DISTINCT_FILTER_NAME_PREFIX))) !== null && _b !== void 0 ? _b : [];
|
|
53
|
+
return columnFilters.map(({ name, params }) => {
|
|
54
|
+
var _a;
|
|
55
|
+
return {
|
|
56
|
+
column: (_a = name === null || name === void 0 ? void 0 : name.replace(DISTINCT_FILTER_NAME_PREFIX, '')) !== null && _a !== void 0 ? _a : '',
|
|
57
|
+
values: params === null || params === void 0 ? void 0 : params.map(param => param.value),
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function getSortFn(type) {
|
|
62
|
+
switch (type) {
|
|
63
|
+
case DataType.NUMBER:
|
|
64
|
+
return sortNumber;
|
|
65
|
+
case DataType.DATE:
|
|
66
|
+
return sortDate;
|
|
67
|
+
case DataType.OBJECT:
|
|
68
|
+
return sortObject;
|
|
69
|
+
default:
|
|
70
|
+
return StringUtils.compare;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function sortObject(a, b) {
|
|
74
|
+
return StringUtils.compare(a === null || a === void 0 ? void 0 : a['label'], b === null || b === void 0 ? void 0 : b['label']);
|
|
75
|
+
}
|
|
76
|
+
function sortNumber(a, b) {
|
|
77
|
+
return a - b;
|
|
78
|
+
}
|
|
79
|
+
function sortDate(a, b) {
|
|
80
|
+
let timeA = a.getTime(), timeB = b.getTime();
|
|
81
|
+
return timeA === timeB ? 0 : (timeA < timeB ? -1 : 1);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=DataUnitHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataUnitHelper.js","sourceRoot":"","sources":["../../src/dataunit/DataUnitHelper.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,4 +31,5 @@ import VersionUtils from './utils/VersionUtils.js';
|
|
|
31
31
|
import { OnboardingUtils } from "./utils/OnboardingUtils.js";
|
|
32
32
|
import { default as PromiseSync, PromiseSyncCallback } from "./async/PromiseSync.js";
|
|
33
33
|
import { HTMLBuilder } from "./html/HTMLBuilder.js";
|
|
34
|
-
|
|
34
|
+
import { defaultDataLoader } from "./dataunit/DataUnitHelper.js";
|
|
35
|
+
export { 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, defaultDataLoader };
|
package/dist/index.js
CHANGED
|
@@ -28,6 +28,7 @@ import VersionUtils from './utils/VersionUtils.js';
|
|
|
28
28
|
import { OnboardingUtils } from "./utils/OnboardingUtils.js";
|
|
29
29
|
import { default as PromiseSync } from "./async/PromiseSync.js";
|
|
30
30
|
import { HTMLBuilder } from "./html/HTMLBuilder.js";
|
|
31
|
+
import { defaultDataLoader } from "./dataunit/DataUnitHelper.js";
|
|
31
32
|
/*Classes públicas no pacote*/
|
|
32
|
-
export { 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 };
|
|
33
|
+
export { 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, defaultDataLoader };
|
|
33
34
|
//# 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,EAAC,MAAM,wBAAwB,CAAC;AAC1L,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,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;
|
|
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,EAAC,MAAM,wBAAwB,CAAC;AAC1L,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,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,8BAA8B;AAC9B,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,QAAQ,EACR,eAAe,EAGf,QAAQ,EAGR,aAAa,EACb,cAAc,EAGd,cAAc,EACd,MAAM,EACN,MAAM,EAGN,eAAe,EAEf,kBAAkB,EAIlB,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,aAAa,EAIb,QAAQ,EAGR,aAAa,EACb,aAAa,EACb,cAAc,EAEd,cAAc,EACd,OAAO,EACP,YAAY,EACZ,eAAe,EACf,WAAW,EAEX,WAAW,EACX,iBAAiB,EACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sankhyalabs/core",
|
|
3
|
-
"version": "5.9.
|
|
3
|
+
"version": "5.9.1-dev.2",
|
|
4
4
|
"description": "Modulo core JavaScript da Sankhya.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"license": "ISC",
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://
|
|
25
|
+
"url": "https://gitlab.sankhya.com.br/dti/design-system/sankhyacore.git"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@types/uuid": "^9.0.1",
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import DataUnit, { Record } from './DataUnit.js';
|
|
2
|
+
import { DataType } from './metadata/DataType.js';
|
|
3
|
+
import { LoadDataRequest, LoadDataResponse, PaginationInfo, Sort, SortMode, StringUtils } from '../index.js';
|
|
4
|
+
|
|
5
|
+
const DISTINCT_FILTER_NAME_PREFIX = 'FILTRO_COLUNA_';
|
|
6
|
+
|
|
7
|
+
interface FilterSimplified {
|
|
8
|
+
column: string;
|
|
9
|
+
values: string[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function sortRecords(sort: Array<Sort>, records: Record[]) {
|
|
13
|
+
sort.forEach(sortItem => {
|
|
14
|
+
|
|
15
|
+
records = records.sort((recordA, recordB) => {
|
|
16
|
+
const fieldA = recordA[sortItem.field];
|
|
17
|
+
const fieldB = recordB[sortItem.field];
|
|
18
|
+
const sortFn = getSortFn(sortItem.dataType);
|
|
19
|
+
return sortFn(fieldA, fieldB) * (sortItem.mode == SortMode.ASC ? 1 : -1);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
});
|
|
23
|
+
return records;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function defaultDataLoader(dataUnit: DataUnit, request: LoadDataRequest, recordsIn: Array<Record>): Promise<LoadDataResponse> {
|
|
27
|
+
const filters = getColumnFilters(dataUnit);
|
|
28
|
+
let records = applyFilters(filters, recordsIn, dataUnit);
|
|
29
|
+
records = request.sort ? sortRecords(request.sort, records) : records;
|
|
30
|
+
return Promise.resolve({ records: records, paginationInfo: buildPaginationInfo(request, records) });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function buildPaginationInfo({ offset, limit }: LoadDataRequest, records: Array<Record>): PaginationInfo | undefined {
|
|
34
|
+
if (offset === undefined || limit === undefined) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const lastRecord = Math.min(offset + limit, records.length);
|
|
39
|
+
return {
|
|
40
|
+
currentPage: Math.ceil(offset / limit),
|
|
41
|
+
firstRecord: offset,
|
|
42
|
+
lastRecord: lastRecord,
|
|
43
|
+
total: records.length,
|
|
44
|
+
hasMore: !!(records.length - lastRecord),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function filterRecords(record: Record, filter: FilterSimplified, dataUnit: DataUnit) {
|
|
49
|
+
let fieldValue = record[filter.column];
|
|
50
|
+
|
|
51
|
+
if (dataUnit.getField(filter.column)?.dataType === DataType.OBJECT) {
|
|
52
|
+
fieldValue = fieldValue.value;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return filter.values.includes(fieldValue?.toString());
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function applyFilters(filters: FilterSimplified[], recordsIn: Array<Record>, dataUnit: DataUnit) {
|
|
59
|
+
let records = [...recordsIn];
|
|
60
|
+
|
|
61
|
+
filters.forEach(filter => {
|
|
62
|
+
records = records.filter(record => filterRecords(record, filter, dataUnit));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return records;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function getColumnFilters(dataUnit: DataUnit): FilterSimplified[] {
|
|
69
|
+
const allFilters = dataUnit.getFilters() ?? [];
|
|
70
|
+
const columnFilters = allFilters.filter(({name}) => name?.includes(DISTINCT_FILTER_NAME_PREFIX)) ?? [];
|
|
71
|
+
|
|
72
|
+
return columnFilters.map(({name, params}) => {
|
|
73
|
+
return {
|
|
74
|
+
column: name?.replace(DISTINCT_FILTER_NAME_PREFIX, '') ?? '',
|
|
75
|
+
values: params?.map(param => param.value),
|
|
76
|
+
};
|
|
77
|
+
}) as FilterSimplified[];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function getSortFn(type: DataType): any {
|
|
81
|
+
switch (type) {
|
|
82
|
+
case DataType.NUMBER:
|
|
83
|
+
return sortNumber;
|
|
84
|
+
case DataType.DATE:
|
|
85
|
+
return sortDate;
|
|
86
|
+
case DataType.OBJECT:
|
|
87
|
+
return sortObject;
|
|
88
|
+
default:
|
|
89
|
+
return StringUtils.compare;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function sortObject(a: any, b: any): number {
|
|
94
|
+
return StringUtils.compare(a?.['label'], b?.['label']);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function sortNumber(a: number, b: number): number {
|
|
98
|
+
return a - b;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function sortDate(a: Date, b: Date): number {
|
|
102
|
+
|
|
103
|
+
let timeA = a.getTime(),
|
|
104
|
+
timeB = b.getTime();
|
|
105
|
+
|
|
106
|
+
return timeA === timeB ? 0 : (timeA < timeB ? -1 : 1);
|
|
107
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ import VersionUtils from './utils/VersionUtils.js'
|
|
|
31
31
|
import { OnboardingUtils} from "./utils/OnboardingUtils.js";
|
|
32
32
|
import {default as PromiseSync, PromiseSyncCallback} from "./async/PromiseSync.js";
|
|
33
33
|
import { HTMLBuilder } from "./html/HTMLBuilder.js";
|
|
34
|
+
import { defaultDataLoader } from "./dataunit/DataUnitHelper.js";
|
|
34
35
|
|
|
35
36
|
/*Classes públicas no pacote*/
|
|
36
37
|
export {
|
|
@@ -89,5 +90,6 @@ export {
|
|
|
89
90
|
OnboardingUtils,
|
|
90
91
|
PromiseSync,
|
|
91
92
|
PromiseSyncCallback,
|
|
92
|
-
HTMLBuilder
|
|
93
|
+
HTMLBuilder,
|
|
94
|
+
defaultDataLoader
|
|
93
95
|
};
|