@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 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://git.sankhya.com.br/sankhyalabs/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o#testes)
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://git.sankhya.com.br/sankhyalabs/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o)!
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://git.sankhya.com.br/sankhyalabs/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o#testes)
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://git.sankhya.com.br/sankhyalabs/sankhyacore/-/wikis/Diretrizes-de-Codifica%C3%A7%C3%A3o)!
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,3 @@
1
+ import DataUnit, { Record } from './DataUnit.js';
2
+ import { LoadDataRequest, LoadDataResponse } from '../index.js';
3
+ export declare function defaultDataLoader(dataUnit: DataUnit, request: LoadDataRequest, recordsIn: Array<Record>): Promise<LoadDataResponse>;
@@ -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":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAA2D,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7G,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAOrD,SAAS,WAAW,CAAC,IAAiB,EAAE,OAAiB;IACvD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAEtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,OAAwB,EAAE,SAAwB;IACtG,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAmB,EAAE,OAAsB;IACrF,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE;QAC/C,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtC,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,MAAwB,EAAE,QAAkB;;IACjF,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAA,MAAA,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,0CAAE,QAAQ,MAAK,QAAQ,CAAC,MAAM,EAAE;QAClE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;KAC/B;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,OAA2B,EAAE,SAAwB,EAAE,QAAkB;IAC7F,IAAI,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAE7B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;;IAC1C,MAAM,UAAU,GAAG,MAAA,QAAQ,CAAC,UAAU,EAAE,mCAAI,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAA,UAAU,CAAC,MAAM,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC,mCAAI,EAAE,CAAC;IAEvG,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,EAAE,EAAE;;QAC1C,OAAO;YACL,MAAM,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,mCAAI,EAAE;YAC5D,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;SAC1C,CAAC;IACJ,CAAC,CAAuB,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,UAAU,CAAC;QACpB,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,WAAW,CAAC,OAAO,CAAC;KAC9B;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAM,EAAE,CAAM;IAChC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,OAAO,CAAC,EAAE,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAG,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,CAAO,EAAE,CAAO;IAEhC,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,EACrB,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAEtB,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
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
- 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 };
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;AAEpD,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,EACd,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.0",
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://git.sankhya.com.br/sankhyalabs/sankhyacore.git"
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
  };