@verisoft/core 18.7.0 → 19.0.0-rc001
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/README.md +7 -56
- package/fesm2022/verisoft-core.mjs +465 -0
- package/fesm2022/verisoft-core.mjs.map +1 -0
- package/{src/index.ts → index.d.ts} +3 -3
- package/{src/lib/models/all-item.datasource.ts → lib/models/all-item.datasource.d.ts} +4 -5
- package/lib/models/base-http.models.d.ts +41 -0
- package/lib/models/constants.d.ts +3 -0
- package/lib/models/datasource.model.d.ts +8 -0
- package/{src/lib/models/environment.model.ts → lib/models/environment.model.d.ts} +5 -5
- package/lib/models/error-provider.model.d.ts +11 -0
- package/{src/lib/models/event.models.ts → lib/models/event.models.d.ts} +5 -7
- package/{src/lib/models/index.ts → lib/models/index.d.ts} +7 -7
- package/lib/services/base-http.service.d.ts +21 -0
- package/lib/services/error-provider.service.d.ts +12 -0
- package/{src/lib/services/index.ts → lib/services/index.d.ts} +3 -3
- package/lib/services/local-storage.service.d.ts +5 -0
- package/lib/utils/array.utils.d.ts +5 -0
- package/lib/utils/clear.utils.d.ts +7 -0
- package/lib/utils/data.utils.d.ts +3 -0
- package/lib/utils/date.utils.d.ts +1 -0
- package/{src/lib/utils/index.ts → lib/utils/index.d.ts} +6 -6
- package/lib/utils/keyOrFn.utils.d.ts +1 -0
- package/lib/utils/object.utils.d.ts +2 -0
- package/package.json +30 -14
- package/.eslintrc.json +0 -43
- package/jest.config.ts +0 -22
- package/ng-package.json +0 -7
- package/project.json +0 -36
- package/src/lib/index.ts +0 -1
- package/src/lib/models/base-http.models.ts +0 -144
- package/src/lib/models/constants.ts +0 -8
- package/src/lib/models/datasource.model.ts +0 -77
- package/src/lib/models/error-provider.model.ts +0 -20
- package/src/lib/services/base-http.service.ts +0 -114
- package/src/lib/services/error-provider.service.ts +0 -29
- package/src/lib/services/local-storage.service.ts +0 -13
- package/src/lib/services/storage.service.ts +0 -13
- package/src/lib/utils/array.utils.spec.ts +0 -49
- package/src/lib/utils/array.utils.ts +0 -54
- package/src/lib/utils/clear.utils.ts +0 -53
- package/src/lib/utils/data.utils.ts +0 -34
- package/src/lib/utils/date.utils.ts +0 -30
- package/src/lib/utils/keyOrFn.utils.ts +0 -15
- package/src/lib/utils/object.utils.spec.ts +0 -69
- package/src/lib/utils/object.utils.ts +0 -47
- package/src/test-setup.ts +0 -8
- package/tsconfig.json +0 -29
- package/tsconfig.lib.json +0 -20
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -16
package/README.md
CHANGED
|
@@ -1,56 +1,7 @@
|
|
|
1
|
-
# core
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- Shared interfaces and types
|
|
9
|
-
- Reusable logic for other libraries
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
This package is intended for internal use within the monorepo. To use it in another library or app, add it as a dependency in your `project.json`:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"core": "*"
|
|
18
|
-
}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
Import the required modules, services, or utilities from `core`:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { SomeService } from '@verisoft/core';
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Development
|
|
30
|
-
|
|
31
|
-
### Building
|
|
32
|
-
|
|
33
|
-
Run the following command to build the library:
|
|
34
|
-
|
|
35
|
-
```sh
|
|
36
|
-
nx build core
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Running Unit Tests
|
|
40
|
-
|
|
41
|
-
To execute the unit tests for this library:
|
|
42
|
-
|
|
43
|
-
```sh
|
|
44
|
-
nx test core
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Contributing
|
|
48
|
-
|
|
49
|
-
1. Fork the repository and create your branch from `master`.
|
|
50
|
-
2. Make your changes and add tests if needed.
|
|
51
|
-
3. Run `nx test core` to ensure all tests pass.
|
|
52
|
-
4. Submit a pull request.
|
|
53
|
-
|
|
54
|
-
## License
|
|
55
|
-
|
|
56
|
-
This project is licensed under the MIT License.
|
|
1
|
+
# core
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Running unit tests
|
|
6
|
+
|
|
7
|
+
Run `nx test core` to execute the unit tests.
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken, inject, Injectable } from '@angular/core';
|
|
4
|
+
import { map, isObservable, of } from 'rxjs';
|
|
5
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
+
import moment from 'moment';
|
|
7
|
+
|
|
8
|
+
const DEFAULT_PAGE_SIZE = 50;
|
|
9
|
+
const DEFAULT_LAZYLOAD_OPTIONS = {
|
|
10
|
+
offset: 0,
|
|
11
|
+
limit: DEFAULT_PAGE_SIZE,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
15
|
+
const BASE_URL_PATH = new InjectionToken('BASE_URL_PATH');
|
|
16
|
+
function requestParamsToHttpParams(requestParams, httpParams = new HttpParams()) {
|
|
17
|
+
if (requestParams.limit != undefined) {
|
|
18
|
+
httpParams = httpParams.append('limit', requestParams.limit.toString());
|
|
19
|
+
}
|
|
20
|
+
if (requestParams.offset != undefined) {
|
|
21
|
+
httpParams = httpParams.append('offset', requestParams.offset.toString());
|
|
22
|
+
}
|
|
23
|
+
if (requestParams.id != '' && requestParams.id != undefined) {
|
|
24
|
+
httpParams = httpParams.append('id', requestParams.id);
|
|
25
|
+
}
|
|
26
|
+
httpParams = getFilter(requestParams, httpParams);
|
|
27
|
+
httpParams = getSort(requestParams, httpParams);
|
|
28
|
+
return httpParams;
|
|
29
|
+
}
|
|
30
|
+
function getFilter(requestParams, httpParams) {
|
|
31
|
+
if (!requestParams.filter) {
|
|
32
|
+
return httpParams;
|
|
33
|
+
}
|
|
34
|
+
Object.keys(requestParams?.filter).forEach((key) => {
|
|
35
|
+
const value = requestParams.filter?.[key];
|
|
36
|
+
if (value != undefined && !(typeof value === 'string' && value.trim() === "")) {
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
value.forEach((valueItem) => {
|
|
39
|
+
httpParams = httpParams.append('Filter.' + key, valueItem);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
httpParams = httpParams.append('Filter.' + key, value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return httpParams;
|
|
48
|
+
}
|
|
49
|
+
function getSort(requestParams, httpParams) {
|
|
50
|
+
if (!requestParams.sort) {
|
|
51
|
+
return httpParams;
|
|
52
|
+
}
|
|
53
|
+
requestParams.sort?.forEach((sort) => {
|
|
54
|
+
httpParams = httpParams
|
|
55
|
+
.append('Sort.Field', sort.field)
|
|
56
|
+
.append('Sort.Direction', sort.direction);
|
|
57
|
+
});
|
|
58
|
+
return httpParams;
|
|
59
|
+
}
|
|
60
|
+
function saveFile(response) {
|
|
61
|
+
const fileName = response.headers
|
|
62
|
+
.get('Content-Disposition')
|
|
63
|
+
?.split(';')[1]
|
|
64
|
+
.split('=')[1];
|
|
65
|
+
const blob = response.body;
|
|
66
|
+
const a = document.createElement('a');
|
|
67
|
+
a.download = fileName ?? 'undefined';
|
|
68
|
+
a.href = window.URL.createObjectURL(blob);
|
|
69
|
+
a.click();
|
|
70
|
+
}
|
|
71
|
+
var SortDirection;
|
|
72
|
+
(function (SortDirection) {
|
|
73
|
+
SortDirection["asc"] = "asc";
|
|
74
|
+
SortDirection["desc"] = "desc";
|
|
75
|
+
})(SortDirection || (SortDirection = {}));
|
|
76
|
+
const DEFAULT_SEARCH_LIMIT = 50;
|
|
77
|
+
const DEFAULT_SEARCH_PARAMS = {
|
|
78
|
+
offset: 0,
|
|
79
|
+
limit: DEFAULT_SEARCH_LIMIT,
|
|
80
|
+
id: '',
|
|
81
|
+
};
|
|
82
|
+
function normalizeRequest(request, minLimit = undefined) {
|
|
83
|
+
return {
|
|
84
|
+
offset: request?.offset ?? 0,
|
|
85
|
+
limit: !request?.limit
|
|
86
|
+
? DEFAULT_SEARCH_LIMIT
|
|
87
|
+
: minLimit && request.limit < minLimit
|
|
88
|
+
? minLimit
|
|
89
|
+
: request.limit,
|
|
90
|
+
filter: request?.filter,
|
|
91
|
+
sort: request?.sort,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
class ClearUtils {
|
|
96
|
+
static recursiveObjectAttributesTransformation(obj) {
|
|
97
|
+
ClearUtils.recursiveObjectAttributesTraversal(obj, ClearUtils.transformEmptyStringToNullStringFn);
|
|
98
|
+
}
|
|
99
|
+
static recursiveObjectAttributesDeletation(obj) {
|
|
100
|
+
ClearUtils.recursiveObjectAttributesTraversal(obj, ClearUtils.deleteEmptyStringToNullStringFn);
|
|
101
|
+
}
|
|
102
|
+
static transformEmptyStringToNullStringFn(obj, key) {
|
|
103
|
+
if (typeof obj[key] === 'string' && obj[key] === '') {
|
|
104
|
+
obj[key] = null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
static deleteEmptyStringToNullStringFn(obj, key) {
|
|
108
|
+
if (obj[key] === '' || obj[key] === null || obj[key] === undefined) {
|
|
109
|
+
delete obj[key];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
static recursiveObjectAttributesTraversal(obj, transformationFn) {
|
|
113
|
+
if (obj === null ||
|
|
114
|
+
transformationFn === null ||
|
|
115
|
+
typeof transformationFn !== 'function') {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
Object.keys(obj).forEach((key) => {
|
|
119
|
+
transformationFn(obj, key);
|
|
120
|
+
if (typeof obj[key] === 'object') {
|
|
121
|
+
this.recursiveObjectAttributesTraversal(obj[key], transformationFn);
|
|
122
|
+
if (!Object.keys(obj[key]).length) {
|
|
123
|
+
delete obj[key];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
class BaseHttpService {
|
|
131
|
+
constructor(http, basePath, entityName) {
|
|
132
|
+
this.http = http;
|
|
133
|
+
this.basePath = basePath;
|
|
134
|
+
this.entityName = entityName;
|
|
135
|
+
this.basePath = basePath;
|
|
136
|
+
}
|
|
137
|
+
get apiPath() {
|
|
138
|
+
return this.basePath ? this.basePath + this.entityName : this.entityName;
|
|
139
|
+
}
|
|
140
|
+
fetchList(requestParams) {
|
|
141
|
+
const params = requestParamsToHttpParams(requestParams);
|
|
142
|
+
return this.http.get(this.apiPath, { params }).pipe(map((response) => {
|
|
143
|
+
response.limit = requestParams.limit;
|
|
144
|
+
return response;
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
getData$(entityName, searchTerm, lazyLoad) {
|
|
148
|
+
const filter = { [entityName]: searchTerm };
|
|
149
|
+
const params = lazyLoad
|
|
150
|
+
? requestParamsToHttpParams({
|
|
151
|
+
...DEFAULT_SEARCH_PARAMS,
|
|
152
|
+
offset: lazyLoad.offset,
|
|
153
|
+
limit: lazyLoad.limit,
|
|
154
|
+
filter,
|
|
155
|
+
})
|
|
156
|
+
: requestParamsToHttpParams({
|
|
157
|
+
...DEFAULT_SEARCH_PARAMS,
|
|
158
|
+
filter,
|
|
159
|
+
});
|
|
160
|
+
return this.http.get(this.apiPath, { params });
|
|
161
|
+
}
|
|
162
|
+
get(id) {
|
|
163
|
+
const url = `${this.apiPath}/${id}`;
|
|
164
|
+
return this.http.get(url);
|
|
165
|
+
}
|
|
166
|
+
post(entity) {
|
|
167
|
+
return this.http.post(this.apiPath, entity);
|
|
168
|
+
}
|
|
169
|
+
put(id, entity) {
|
|
170
|
+
const url = `${this.apiPath}/${id}`;
|
|
171
|
+
return this.http.put(url, entity);
|
|
172
|
+
}
|
|
173
|
+
delete(id) {
|
|
174
|
+
const url = `${this.apiPath}/${id}`;
|
|
175
|
+
return this.http.delete(url);
|
|
176
|
+
}
|
|
177
|
+
export(requestParams) {
|
|
178
|
+
const httpParams = requestParamsToHttpParams(requestParams);
|
|
179
|
+
const url = `${this.apiPath}/export`;
|
|
180
|
+
return this.http.get(url, { responseType: 'blob', params: httpParams });
|
|
181
|
+
}
|
|
182
|
+
removeRange(entity) {
|
|
183
|
+
return this.http.delete(this.apiPath, {
|
|
184
|
+
body: entity,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
createParams(requestParams) {
|
|
188
|
+
const sorter = this.createSorter(requestParams);
|
|
189
|
+
const filter = JSON.parse(JSON.stringify(requestParams.filter));
|
|
190
|
+
const transformedFilter = filter;
|
|
191
|
+
ClearUtils.recursiveObjectAttributesDeletation(transformedFilter);
|
|
192
|
+
return {
|
|
193
|
+
paging: {
|
|
194
|
+
offset: requestParams.offset,
|
|
195
|
+
limit: requestParams.limit,
|
|
196
|
+
},
|
|
197
|
+
...(sorter && { sorting: sorter }),
|
|
198
|
+
...(transformedFilter && { filter: transformedFilter }),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
createSorter(requestParams) {
|
|
202
|
+
if (requestParams?.sort?.length === 1) {
|
|
203
|
+
const sorter = requestParams.sort[0];
|
|
204
|
+
return {
|
|
205
|
+
sortField: sorter.field,
|
|
206
|
+
sortOrder: sorter.direction,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function convertDatasource(datasource, basePath, httpClient) {
|
|
214
|
+
if (!datasource) {
|
|
215
|
+
throw new Error('Datasource is not defined');
|
|
216
|
+
}
|
|
217
|
+
if (typeof datasource === 'string') {
|
|
218
|
+
const service = new BaseHttpService(httpClient, basePath, datasource);
|
|
219
|
+
return (requestParams) => service.fetchList(requestParams);
|
|
220
|
+
}
|
|
221
|
+
if (datasource instanceof BaseHttpService) {
|
|
222
|
+
return (requestParams) => datasource.fetchList(requestParams);
|
|
223
|
+
}
|
|
224
|
+
if (isObservable(datasource)) {
|
|
225
|
+
return () => datasource.pipe(map(convertArrayToPage));
|
|
226
|
+
}
|
|
227
|
+
const allItemDatasource = datasource;
|
|
228
|
+
if (allItemDatasource.getData$) {
|
|
229
|
+
return () => allItemDatasource
|
|
230
|
+
.getData$()
|
|
231
|
+
.pipe(map((data) => convertArrayToPage(data)));
|
|
232
|
+
}
|
|
233
|
+
const page = datasource;
|
|
234
|
+
if (page.data) {
|
|
235
|
+
return () => of(page);
|
|
236
|
+
}
|
|
237
|
+
if (Array.isArray(datasource)) {
|
|
238
|
+
return () => of(convertArrayToPage(datasource));
|
|
239
|
+
}
|
|
240
|
+
throw new Error('Datasource is not supported');
|
|
241
|
+
}
|
|
242
|
+
function convertArrayToPage(data) {
|
|
243
|
+
if (Array.isArray(data)) {
|
|
244
|
+
return {
|
|
245
|
+
data: data ?? [],
|
|
246
|
+
total: data?.length ?? 0,
|
|
247
|
+
limit: data?.length ?? DEFAULT_PAGE_SIZE,
|
|
248
|
+
offset: 0,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
return data;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
const ERROR_PROVIDER_TOKEN = new InjectionToken('ERROR_PROVIDER_TOKEN');
|
|
255
|
+
var CustomValidationCodes;
|
|
256
|
+
(function (CustomValidationCodes) {
|
|
257
|
+
})(CustomValidationCodes || (CustomValidationCodes = {}));
|
|
258
|
+
const ErrorMap = {
|
|
259
|
+
required: () => `VALIDATIONS.REQUIRED`,
|
|
260
|
+
email: () => `VALIDATIONS.EMAIL`,
|
|
261
|
+
minLength: () => 'VALIDATIONS.MIN_LENGTH',
|
|
262
|
+
maxLength: () => 'VALIDATIONS.MAX_LENGTH',
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
class LocalStorageService {
|
|
266
|
+
setItem(key, value) {
|
|
267
|
+
localStorage.setItem(key, value);
|
|
268
|
+
}
|
|
269
|
+
getItem(key) {
|
|
270
|
+
return localStorage.getItem(key);
|
|
271
|
+
}
|
|
272
|
+
removeItem(key) {
|
|
273
|
+
localStorage.removeItem(key);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
class LocalizableErrorProviderService {
|
|
278
|
+
constructor() {
|
|
279
|
+
this.translateService = inject(TranslateService);
|
|
280
|
+
this.errors = ErrorMap;
|
|
281
|
+
}
|
|
282
|
+
mapError(errors) {
|
|
283
|
+
const error = this.getFirstValue(errors);
|
|
284
|
+
if (!error || !error.key) {
|
|
285
|
+
return of(undefined);
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const value = this.errors[error.key](error.value);
|
|
289
|
+
return this.translateService.get(value);
|
|
290
|
+
}
|
|
291
|
+
catch (_) {
|
|
292
|
+
throw new Error(`Key "${error.key}" is not specified in the current error map!`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
getFirstValue(errors) {
|
|
296
|
+
const key = Object.keys(errors)[0];
|
|
297
|
+
const value = errors[key];
|
|
298
|
+
return { key, value };
|
|
299
|
+
}
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: LocalizableErrorProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
301
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: LocalizableErrorProviderService, providedIn: 'root' }); }
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: LocalizableErrorProviderService, decorators: [{
|
|
304
|
+
type: Injectable,
|
|
305
|
+
args: [{
|
|
306
|
+
providedIn: 'root'
|
|
307
|
+
}]
|
|
308
|
+
}] });
|
|
309
|
+
|
|
310
|
+
function keyOrFn(keyOrFn, row) {
|
|
311
|
+
if (keyOrFn instanceof Function) {
|
|
312
|
+
return keyOrFn(row);
|
|
313
|
+
}
|
|
314
|
+
else if (typeof keyOrFn === 'string') {
|
|
315
|
+
const value = row[keyOrFn];
|
|
316
|
+
if (value) {
|
|
317
|
+
return value;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
else if (typeof keyOrFn === 'boolean') {
|
|
321
|
+
return keyOrFn;
|
|
322
|
+
}
|
|
323
|
+
return '';
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
function sortBy(items, selector, ascending = true) {
|
|
327
|
+
return [...items].sort((item, other) => {
|
|
328
|
+
const value = selector(item);
|
|
329
|
+
const otherValue = selector(other);
|
|
330
|
+
const direction = ascending ? 1 : -1;
|
|
331
|
+
if (value == undefined && other == undefined) {
|
|
332
|
+
return 0;
|
|
333
|
+
}
|
|
334
|
+
if (value == undefined) {
|
|
335
|
+
return -1 * direction;
|
|
336
|
+
}
|
|
337
|
+
if (otherValue == undefined) {
|
|
338
|
+
return 1 * direction;
|
|
339
|
+
}
|
|
340
|
+
if (value < otherValue) {
|
|
341
|
+
return -1 * direction;
|
|
342
|
+
}
|
|
343
|
+
if (value > otherValue) {
|
|
344
|
+
return 1 * direction;
|
|
345
|
+
}
|
|
346
|
+
return 0;
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
function getValueByPath(obj, path) {
|
|
350
|
+
if (path == undefined || path == '') {
|
|
351
|
+
return obj;
|
|
352
|
+
}
|
|
353
|
+
return path.split('.').reduce((acc, key) => {
|
|
354
|
+
if (acc && typeof acc === 'object' && key in acc) {
|
|
355
|
+
return acc[key];
|
|
356
|
+
}
|
|
357
|
+
return undefined;
|
|
358
|
+
}, obj);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function isArrayIntersected(array1, array2) {
|
|
362
|
+
const filteredArray = array1.filter(value => array2.includes(value));
|
|
363
|
+
return filteredArray.length > 0;
|
|
364
|
+
}
|
|
365
|
+
function multiSort(values, sorts) {
|
|
366
|
+
return [...values].sort((a, b) => {
|
|
367
|
+
for (const sort of sorts) {
|
|
368
|
+
const { field, direction } = sort;
|
|
369
|
+
const valueA = getValueByPath(a, field);
|
|
370
|
+
const valueB = getValueByPath(b, field);
|
|
371
|
+
if (valueA !== valueB) {
|
|
372
|
+
if (isComparable(valueA) && isComparable(valueB)) {
|
|
373
|
+
if (typeof valueA === 'string' && typeof valueB === 'string') {
|
|
374
|
+
const baseCompare = valueA.localeCompare(valueB, undefined, {
|
|
375
|
+
sensitivity: 'base',
|
|
376
|
+
});
|
|
377
|
+
if (baseCompare === 0) {
|
|
378
|
+
return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;
|
|
379
|
+
}
|
|
380
|
+
return direction === 'asc' ? baseCompare : -baseCompare;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
if (valueA < valueB) {
|
|
384
|
+
return direction === 'asc' ? -1 : 1;
|
|
385
|
+
}
|
|
386
|
+
if (valueA > valueB) {
|
|
387
|
+
return direction === 'asc' ? 1 : -1;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return 0;
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
function isComparable(value) {
|
|
397
|
+
return typeof value === 'string'
|
|
398
|
+
|| typeof value === 'number'
|
|
399
|
+
|| typeof value === 'boolean'
|
|
400
|
+
|| value instanceof Date;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function transformData(data) {
|
|
404
|
+
if (data) {
|
|
405
|
+
if (moment.isMoment(data)) {
|
|
406
|
+
return moment(data)
|
|
407
|
+
.toDate()
|
|
408
|
+
.toISOString();
|
|
409
|
+
}
|
|
410
|
+
else if (data instanceof Date) {
|
|
411
|
+
return data.toISOString();
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return data;
|
|
415
|
+
}
|
|
416
|
+
function convertToDate(data) {
|
|
417
|
+
if (data) {
|
|
418
|
+
if (!isNaN(Date.parse(data))) {
|
|
419
|
+
return new Date(data);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return data;
|
|
423
|
+
}
|
|
424
|
+
function convertToDateTime(data) {
|
|
425
|
+
if (data) {
|
|
426
|
+
if (!isNaN(Date.parse(data))) {
|
|
427
|
+
const date = new Date(data);
|
|
428
|
+
return moment(date).format('DD.MM.yyyy HH:mm');
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return data;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
const czechDateFormat = new Intl.DateTimeFormat("cs-CZ", {
|
|
435
|
+
day: "numeric",
|
|
436
|
+
month: "numeric",
|
|
437
|
+
year: "numeric"
|
|
438
|
+
});
|
|
439
|
+
const czechDateTimeFormat = new Intl.DateTimeFormat("cs-CZ", {
|
|
440
|
+
second: "numeric",
|
|
441
|
+
minute: "numeric",
|
|
442
|
+
hour: "numeric",
|
|
443
|
+
day: "numeric",
|
|
444
|
+
month: "numeric",
|
|
445
|
+
year: "numeric"
|
|
446
|
+
});
|
|
447
|
+
function toCzechDateTimeString(value, time = false) {
|
|
448
|
+
if (!value) {
|
|
449
|
+
return "";
|
|
450
|
+
}
|
|
451
|
+
if (typeof value === "string") {
|
|
452
|
+
value = new Date(value);
|
|
453
|
+
}
|
|
454
|
+
if (time) {
|
|
455
|
+
return czechDateTimeFormat.format(value);
|
|
456
|
+
}
|
|
457
|
+
return czechDateFormat.format(value);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Generated bundle index. Do not edit.
|
|
462
|
+
*/
|
|
463
|
+
|
|
464
|
+
export { BASE_URL_PATH, BaseHttpService, ClearUtils, CustomValidationCodes, DEFAULT_LAZYLOAD_OPTIONS, DEFAULT_PAGE_SIZE, DEFAULT_SEARCH_LIMIT, DEFAULT_SEARCH_PARAMS, ERROR_PROVIDER_TOKEN, ErrorMap, LocalStorageService, LocalizableErrorProviderService, SortDirection, convertDatasource, convertToDate, convertToDateTime, getValueByPath, isArrayIntersected, keyOrFn, multiSort, normalizeRequest, requestParamsToHttpParams, saveFile, sortBy, toCzechDateTimeString, transformData };
|
|
465
|
+
//# sourceMappingURL=verisoft-core.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verisoft-core.mjs","sources":["../../../../../src/libs/core/src/lib/models/constants.ts","../../../../../src/libs/core/src/lib/models/base-http.models.ts","../../../../../src/libs/core/src/lib/utils/clear.utils.ts","../../../../../src/libs/core/src/lib/services/base-http.service.ts","../../../../../src/libs/core/src/lib/models/datasource.model.ts","../../../../../src/libs/core/src/lib/models/error-provider.model.ts","../../../../../src/libs/core/src/lib/services/local-storage.service.ts","../../../../../src/libs/core/src/lib/services/error-provider.service.ts","../../../../../src/libs/core/src/lib/utils/keyOrFn.utils.ts","../../../../../src/libs/core/src/lib/utils/object.utils.ts","../../../../../src/libs/core/src/lib/utils/array.utils.ts","../../../../../src/libs/core/src/lib/utils/data.utils.ts","../../../../../src/libs/core/src/lib/utils/date.utils.ts","../../../../../src/libs/core/src/verisoft-core.ts"],"sourcesContent":["import { LazyLoadEvent } from './event.models';\r\n\r\nexport const DEFAULT_PAGE_SIZE = 50;\r\n\r\nexport const DEFAULT_LAZYLOAD_OPTIONS: LazyLoadEvent = {\r\n offset: 0,\r\n limit: DEFAULT_PAGE_SIZE,\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams, HttpResponse } from '@angular/common/http';\nimport { InjectionToken } from '@angular/core';\n\nexport const BASE_URL_PATH = new InjectionToken<string>('BASE_URL_PATH');\n\nexport function requestParamsToHttpParams<T>(\n requestParams: Partial<RequestParams<T>>,\n httpParams: HttpParams = new HttpParams()\n): HttpParams {\n if (requestParams.limit != undefined) {\n httpParams = httpParams.append('limit', requestParams.limit.toString());\n }\n\n if (requestParams.offset != undefined) {\n httpParams = httpParams.append('offset', requestParams.offset.toString());\n }\n\n if (requestParams.id != '' && requestParams.id != undefined) {\n httpParams = httpParams.append('id', requestParams.id as any);\n }\n\n httpParams = getFilter(requestParams, httpParams);\n httpParams = getSort(requestParams, httpParams);\n\n return httpParams;\n}\n\nfunction getFilter<T>(\n requestParams: Partial<RequestParams<any>>,\n httpParams: HttpParams\n): HttpParams {\n if (!requestParams.filter) {\n return httpParams;\n }\n Object.keys(requestParams?.filter).forEach((key) => {\n const value = requestParams.filter?.[key as keyof Partial<T>];\n if (value != undefined && !(typeof value === 'string' && value.trim() === \"\")) {\n if (Array.isArray(value)) {\n value.forEach((valueItem: any) => {\n httpParams = httpParams.append(\n 'Filter.' + key, valueItem\n );\n });\n } else {\n httpParams = httpParams.append('Filter.' + key, value);\n }\n }\n });\n return httpParams;\n}\n\nfunction getSort(\n requestParams: Partial<RequestParams<any>>,\n httpParams: HttpParams\n): HttpParams {\n if (!requestParams.sort) {\n return httpParams;\n }\n\n requestParams.sort?.forEach((sort) => {\n httpParams = httpParams\n .append('Sort.Field', sort.field)\n .append('Sort.Direction', sort.direction);\n });\n return httpParams;\n}\n\nexport function saveFile(response: HttpResponse<Blob>) {\n const fileName = response.headers\n .get('Content-Disposition')\n ?.split(';')[1]\n .split('=')[1];\n const blob: Blob = response.body as Blob;\n const a = document.createElement('a');\n a.download = fileName ?? 'undefined';\n a.href = window.URL.createObjectURL(blob);\n a.click();\n}\n\nexport enum SortDirection {\n asc = 'asc',\n desc = 'desc',\n}\n\nexport declare type SortDirectionType = keyof typeof SortDirection;\n\nexport declare interface Sort {\n field: string;\n direction: SortDirectionType;\n}\n\nexport interface RequestParams<T> extends AllDataRequestParams<T> {\n offset: number;\n limit: number;\n id?: string;\n}\n\nexport interface AllDataRequestParams<T> {\n filter?: Partial<T>;\n sort?: Sort[];\n}\n\nexport interface Page<T> {\n data: T[];\n total: number;\n limit: number;\n offset: number;\n}\n\nexport interface CustomExport<T> {\n sortDefinition?: Sort;\n filter?: Partial<T>;\n columnsToExport: ColumnExportSpecification[];\n}\n\nexport interface ColumnExportSpecification {\n name: string;\n header: string;\n}\n\nexport const DEFAULT_SEARCH_LIMIT = 50;\n\nexport const DEFAULT_SEARCH_PARAMS: RequestParams<any> = {\n offset: 0,\n limit: DEFAULT_SEARCH_LIMIT,\n id: '',\n};\n\nexport function normalizeRequest<T>(\n request: Partial<RequestParams<T>>,\n minLimit: number | undefined = undefined\n): RequestParams<T> {\n return {\n offset: request?.offset ?? 0,\n limit: !request?.limit\n ? DEFAULT_SEARCH_LIMIT\n : minLimit && request.limit < minLimit\n ? minLimit\n : request.limit,\n filter: request?.filter,\n sort: request?.sort,\n };\n}\n","export class ClearUtils {\n\n static recursiveObjectAttributesTransformation(obj: any): void {\n ClearUtils.recursiveObjectAttributesTraversal(\n obj,\n ClearUtils.transformEmptyStringToNullStringFn\n );\n }\n static recursiveObjectAttributesDeletation(obj: any): void {\n ClearUtils.recursiveObjectAttributesTraversal(\n obj,\n ClearUtils.deleteEmptyStringToNullStringFn\n );\n }\n\n static transformEmptyStringToNullStringFn(obj: any, key: string) {\n if (typeof obj[key] === 'string' && obj[key] === '') {\n obj[key] = null;\n }\n }\n static deleteEmptyStringToNullStringFn(obj: any, key: string) {\n if (obj[key] === '' || obj[key] === null || obj[key] === undefined) {\n delete obj[key]\n }\n }\n\n\n static recursiveObjectAttributesTraversal(\n obj: any,\n transformationFn: (obj: any, key: string) => void\n ) {\n if (\n obj === null ||\n transformationFn === null ||\n typeof transformationFn !== 'function'\n ) {\n return;\n }\n\n Object.keys(obj).forEach((key) => {\n transformationFn(obj, key);\n\n if (typeof obj[key] === 'object') {\n this.recursiveObjectAttributesTraversal(obj[key], transformationFn);\n\n if (!Object.keys(obj[key]).length) {\n delete obj[key];\n }\n }\n });\n }\n\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport {\n AllDataRequestParams,\n DEFAULT_SEARCH_PARAMS,\n Page,\n RequestParams,\n requestParamsToHttpParams,\n} from '../models/base-http.models';\nimport { LazyLoadEvent } from '../models/event.models';\nimport { ClearUtils } from '../utils/clear.utils';\n\nexport class BaseHttpService<T, TKey = number | string> {\n constructor(\n readonly http: HttpClient,\n readonly basePath: string,\n readonly entityName: string\n ) {\n this.basePath = basePath;\n }\n\n protected get apiPath() {\n return this.basePath ? this.basePath + this.entityName : this.entityName;\n }\n\n fetchList(requestParams: RequestParams<T>): Observable<Page<T>> {\n const params = requestParamsToHttpParams<T>(requestParams);\n return this.http.get<Page<T>>(this.apiPath, { params }).pipe(\n map((response: Page<T>) => {\n response.limit = requestParams.limit;\n return response;\n })\n );\n }\n\n getData$(\n entityName: keyof T,\n searchTerm?: string | undefined,\n lazyLoad?: LazyLoadEvent\n ): Observable<T[]> {\n const filter: Partial<T> = { [entityName]: searchTerm } as Partial<T>;\n const params = lazyLoad\n ? requestParamsToHttpParams<T>({\n ...DEFAULT_SEARCH_PARAMS,\n offset: lazyLoad.offset,\n limit: lazyLoad.limit,\n filter,\n })\n : requestParamsToHttpParams<T>({\n ...DEFAULT_SEARCH_PARAMS,\n filter,\n });\n\n return this.http.get<T[]>(this.apiPath, { params });\n }\n\n get(id: TKey): Observable<T> {\n const url = `${this.apiPath}/${id}`;\n return this.http.get<T>(url);\n }\n\n post(entity: Partial<T>): Observable<T> {\n return this.http.post<T>(this.apiPath, entity);\n }\n\n put(id: TKey, entity: Partial<T>): Observable<T> {\n const url = `${this.apiPath}/${id}`;\n return this.http.put<T>(url, entity);\n }\n\n delete(id: TKey): Observable<T> {\n const url = `${this.apiPath}/${id}`;\n return this.http.delete<T>(url);\n }\n\n export(requestParams: AllDataRequestParams<T>): Observable<Blob> {\n const httpParams = requestParamsToHttpParams<T>(requestParams);\n const url = `${this.apiPath}/export`;\n return this.http.get(url, { responseType: 'blob', params: httpParams });\n }\n\n removeRange(entity: string[]) {\n return this.http.delete(this.apiPath, {\n body: entity,\n });\n }\n\n createParams<T>(requestParams: RequestParams<T>): any {\n const sorter = this.createSorter(requestParams);\n const filter = JSON.parse(JSON.stringify(requestParams.filter));\n const transformedFilter = filter;\n ClearUtils.recursiveObjectAttributesDeletation(transformedFilter);\n return {\n paging: {\n offset: requestParams.offset,\n limit: requestParams.limit,\n },\n ...(sorter && { sorting: sorter }),\n ...(transformedFilter && { filter: transformedFilter }),\n };\n }\n\n private createSorter<T>(requestParams: RequestParams<T>) {\n if (requestParams?.sort?.length === 1) {\n const sorter = requestParams.sort[0];\n return {\n sortField: sorter.field,\n sortOrder: sorter.direction,\n };\n }\n return null;\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { isObservable, map, Observable, of } from 'rxjs';\r\nimport { BaseHttpService } from '../services/base-http.service';\r\nimport { AllItemDatasource } from './all-item.datasource';\r\nimport { Page, RequestParams } from './base-http.models';\r\nimport { DEFAULT_PAGE_SIZE } from './constants';\r\n\r\nexport type DatasourceType<T> =\r\n | string\r\n | Observable<T[]>\r\n | Observable<Page<T>>\r\n | BaseHttpService<T>\r\n | T[]\r\n | Page<T>\r\n | AllItemDatasource<T>;\r\n\r\nexport type DataSourceFunctionType<T> = (\r\n requestParams: RequestParams<T>\r\n) => Observable<Page<T>>;\r\n\r\nexport function convertDatasource<T>(\r\n datasource: DatasourceType<T>,\r\n basePath: string,\r\n httpClient: HttpClient\r\n): DataSourceFunctionType<T> {\r\n if (!datasource) {\r\n throw new Error('Datasource is not defined');\r\n }\r\n\r\n if (typeof datasource === 'string') {\r\n const service = new BaseHttpService<T>(httpClient, basePath, datasource);\r\n return (requestParams: RequestParams<T>) =>\r\n service.fetchList(requestParams);\r\n }\r\n\r\n if (datasource instanceof BaseHttpService) {\r\n return (requestParams: RequestParams<T>) =>\r\n datasource.fetchList(requestParams);\r\n }\r\n\r\n if (isObservable(datasource)) {\r\n return () =>\r\n (datasource as Observable<Page<T> | T[]>).pipe(map(convertArrayToPage));\r\n }\r\n\r\n const allItemDatasource = <AllItemDatasource<T>>datasource;\r\n if (allItemDatasource.getData$) {\r\n return () =>\r\n allItemDatasource\r\n .getData$()\r\n .pipe(map((data) => convertArrayToPage(data)));\r\n }\r\n\r\n const page = <Page<T>>datasource;\r\n if (page.data) {\r\n return () => of(page);\r\n }\r\n\r\n if (Array.isArray(datasource)) {\r\n return () => of(convertArrayToPage(datasource));\r\n }\r\n\r\n throw new Error('Datasource is not supported');\r\n}\r\n\r\nfunction convertArrayToPage<T>(data: Page<T> | T[]): Page<T> {\r\n if (Array.isArray(data)) {\r\n return {\r\n data: data ?? [],\r\n total: data?.length ?? 0,\r\n limit: data?.length ?? DEFAULT_PAGE_SIZE,\r\n offset: 0,\r\n };\r\n }\r\n\r\n return data as Page<T>;\r\n}\r\n","import { InjectionToken } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport interface ErrorProvider {\n mapError(errors: ValidationErrors): Observable<string | undefined>;\n errors: Record<string, (value?: any) => string>;\n}\n\nexport const ERROR_PROVIDER_TOKEN\n = new InjectionToken<ErrorProvider>('ERROR_PROVIDER_TOKEN');\n\nexport enum CustomValidationCodes {}\n\nexport const ErrorMap: Record<string, (value?: any) => string> = {\n required: () => `VALIDATIONS.REQUIRED`,\n email: () => `VALIDATIONS.EMAIL`,\n minLength: () => 'VALIDATIONS.MIN_LENGTH',\n maxLength: () => 'VALIDATIONS.MAX_LENGTH',\n};\n","export class LocalStorageService {\n setItem(key: string, value: string) {\n localStorage.setItem(key, value);\n }\n\n getItem(key: string): string | null {\n return localStorage.getItem(key);\n }\n\n removeItem(key: string) {\n localStorage.removeItem(key);\n }\n}","import { inject, Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, of } from 'rxjs';\nimport { ErrorProvider, ErrorMap } from '../models/error-provider.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizableErrorProviderService implements ErrorProvider {\n private readonly translateService = inject(TranslateService);\n readonly errors: Record<string, (value?: any) => string> = ErrorMap;\n\n mapError(errors: ValidationErrors): Observable<string | undefined> {\n const error = this.getFirstValue(errors);\n if (!error || !error.key) {\n return of(undefined);\n }\n\n try {\n const value = this.errors[error.key](error.value);\n return this.translateService.get(value);\n } catch (_) {\n throw new Error(`Key \"${error.key}\" is not specified in the current error map!`);\n }\n }\n\n private getFirstValue(errors: ValidationErrors): { key: string; value: string } {\n const key = Object.keys(errors)[0];\n const value = errors[key];\n return { key, value };\n }\n}\n","export function keyOrFn(keyOrFn: ((row: any) => string | undefined) | string, row: any) {\n if (keyOrFn instanceof Function) {\n return keyOrFn(row);\n }\n else if (typeof keyOrFn === 'string') {\n const value = row[keyOrFn];\n if (value) {\n return value;\n }\n }\n else if (typeof keyOrFn === 'boolean') {\n return keyOrFn;\n }\n return '';\n}\n","export function sortBy<TEntity, TProperty>(\r\n items: TEntity[],\r\n selector: (item: TEntity) => TProperty,\r\n ascending = true\r\n): TEntity[] {\r\n return [...items].sort((item, other) => {\r\n const value = selector(item);\r\n const otherValue = selector(other);\r\n const direction = ascending ? 1 : -1;\r\n if (value == undefined && other == undefined) {\r\n return 0;\r\n }\r\n\r\n if (value == undefined) {\r\n return -1 * direction;\r\n }\r\n if (otherValue == undefined) {\r\n return 1 * direction;\r\n }\r\n\r\n if (value < otherValue) {\r\n return -1 * direction;\r\n }\r\n\r\n if (value > otherValue) {\r\n return 1 * direction;\r\n }\r\n\r\n return 0;\r\n });\r\n}\r\n\r\nexport function getValueByPath<T, TValue>(\r\n obj: T,\r\n path: string | undefined,\r\n): TValue | undefined {\r\n if (path == undefined || path == ''){\r\n return obj as unknown as TValue;\r\n }\r\n\r\n return path.split('.').reduce((acc, key) => {\r\n if (acc && typeof acc === 'object' && key in acc) {\r\n return (acc as Record<string, TValue>)[key];\r\n }\r\n return undefined;\r\n }, obj as unknown) as TValue;\r\n}\r\n","import { Sort } from \"../models\";\nimport { getValueByPath } from \"./object.utils\";\n\ntype ArrayIntersectionType = (string | number)[]\n\nexport function isArrayIntersected(\n array1: ArrayIntersectionType,\n array2: ArrayIntersectionType,\n) {\n const filteredArray = array1.filter(value => array2.includes(value));\n return filteredArray.length > 0;\n}\n\nexport function multiSort<T>(values: T[], sorts: Sort[]): T[] {\n return [...values].sort((a, b) => {\n for (const sort of sorts) {\n const { field, direction } = sort;\n const valueA = getValueByPath(a, field);\n const valueB = getValueByPath(b, field);\n\n if (valueA !== valueB) {\n if (isComparable(valueA) && isComparable(valueB)) {\n if (typeof valueA === 'string' && typeof valueB === 'string') {\n const baseCompare = valueA.localeCompare(valueB, undefined, {\n sensitivity: 'base',\n });\n\n if (baseCompare === 0) {\n return valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n }\n\n return direction === 'asc' ? baseCompare : -baseCompare;\n } else {\n if (valueA < valueB) {\n return direction === 'asc' ? -1 : 1;\n }\n if (valueA > valueB) {\n return direction === 'asc' ? 1 : -1;\n }\n }\n }\n }\n }\n\n return 0;\n });\n}\n\nfunction isComparable(value: unknown): value is string | number | Date {\n return typeof value === 'string'\n || typeof value === 'number'\n || typeof value === 'boolean'\n || value instanceof Date;\n}\n","import moment from 'moment';\n\nexport function transformData(data: any) {\n if (data) {\n if (moment.isMoment(data)) {\n return moment(data)\n .toDate()\n .toISOString();\n }\n else if (data instanceof Date) {\n return data.toISOString();\n }\n }\n return data;\n}\n\nexport function convertToDate(data: any) {\n if (data) {\n if (!isNaN(Date.parse(data))) {\n return new Date(data);\n }\n }\n return data;\n}\n\nexport function convertToDateTime(data: any) {\n if (data) {\n if (!isNaN(Date.parse(data))) {\n const date = new Date(data);\n return moment(date).format('DD.MM.yyyy HH:mm');\n }\n }\n return data;\n}\n","const czechDateFormat = new Intl.DateTimeFormat(\"cs-CZ\", {\n day: \"numeric\",\n month: \"numeric\",\n year: \"numeric\"\n});\n\nconst czechDateTimeFormat = new Intl.DateTimeFormat(\"cs-CZ\", {\n second: \"numeric\",\n minute: \"numeric\",\n hour: \"numeric\",\n day: \"numeric\",\n month: \"numeric\",\n year: \"numeric\"\n});\n\nexport function toCzechDateTimeString(value?: Date | string, time = false): string {\n if (!value) {\n return \"\";\n }\n\n if (typeof value === \"string\") {\n value = new Date(value);\n }\n\n if (time) {\n return czechDateTimeFormat.format(value);\n }\n\n return czechDateFormat.format(value);\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './lib/models';
|
|
2
|
-
export * from './lib/services';
|
|
3
|
-
export * from './lib/utils';
|
|
1
|
+
export * from './lib/models';
|
|
2
|
+
export * from './lib/services';
|
|
3
|
+
export * from './lib/utils';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
export interface AllItemDatasource<T> {
|
|
3
|
+
getData$: () => Observable<T[]>;
|
|
4
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { HttpParams, HttpResponse } from '@angular/common/http';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
export declare const BASE_URL_PATH: InjectionToken<string>;
|
|
4
|
+
export declare function requestParamsToHttpParams<T>(requestParams: Partial<RequestParams<T>>, httpParams?: HttpParams): HttpParams;
|
|
5
|
+
export declare function saveFile(response: HttpResponse<Blob>): void;
|
|
6
|
+
export declare enum SortDirection {
|
|
7
|
+
asc = "asc",
|
|
8
|
+
desc = "desc"
|
|
9
|
+
}
|
|
10
|
+
export declare type SortDirectionType = keyof typeof SortDirection;
|
|
11
|
+
export declare interface Sort {
|
|
12
|
+
field: string;
|
|
13
|
+
direction: SortDirectionType;
|
|
14
|
+
}
|
|
15
|
+
export interface RequestParams<T> extends AllDataRequestParams<T> {
|
|
16
|
+
offset: number;
|
|
17
|
+
limit: number;
|
|
18
|
+
id?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AllDataRequestParams<T> {
|
|
21
|
+
filter?: Partial<T>;
|
|
22
|
+
sort?: Sort[];
|
|
23
|
+
}
|
|
24
|
+
export interface Page<T> {
|
|
25
|
+
data: T[];
|
|
26
|
+
total: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
offset: number;
|
|
29
|
+
}
|
|
30
|
+
export interface CustomExport<T> {
|
|
31
|
+
sortDefinition?: Sort;
|
|
32
|
+
filter?: Partial<T>;
|
|
33
|
+
columnsToExport: ColumnExportSpecification[];
|
|
34
|
+
}
|
|
35
|
+
export interface ColumnExportSpecification {
|
|
36
|
+
name: string;
|
|
37
|
+
header: string;
|
|
38
|
+
}
|
|
39
|
+
export declare const DEFAULT_SEARCH_LIMIT = 50;
|
|
40
|
+
export declare const DEFAULT_SEARCH_PARAMS: RequestParams<any>;
|
|
41
|
+
export declare function normalizeRequest<T>(request: Partial<RequestParams<T>>, minLimit?: number | undefined): RequestParams<T>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { BaseHttpService } from '../services/base-http.service';
|
|
4
|
+
import { AllItemDatasource } from './all-item.datasource';
|
|
5
|
+
import { Page, RequestParams } from './base-http.models';
|
|
6
|
+
export type DatasourceType<T> = string | Observable<T[]> | Observable<Page<T>> | BaseHttpService<T> | T[] | Page<T> | AllItemDatasource<T>;
|
|
7
|
+
export type DataSourceFunctionType<T> = (requestParams: RequestParams<T>) => Observable<Page<T>>;
|
|
8
|
+
export declare function convertDatasource<T>(datasource: DatasourceType<T>, basePath: string, httpClient: HttpClient): DataSourceFunctionType<T>;
|