@sankhyalabs/core 5.9.1-dev.1 → 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/modules.md +26 -0
- 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 +1 -1
- package/src/dataunit/DataUnitHelper.ts +107 -0
- package/src/index.ts +3 -1
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
|
|
@@ -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
|
@@ -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
|
};
|