@solidev/data 0.0.8 → 0.1.0
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/esm2022/lib/auth/auth-interceptor.service.mjs +92 -0
- package/{esm2020 → esm2022}/lib/auth/auth.service.mjs +1 -1
- package/esm2022/lib/data/data-backend.mjs +135 -0
- package/esm2022/lib/data/data-model.mjs +292 -0
- package/esm2022/lib/dispedit/choice.pipe.mjs +81 -0
- package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.component.mjs +10 -5
- package/esm2022/lib/dispedit/factor.pipe.mjs +83 -0
- package/esm2022/lib/dispedit/factorc.pipe.mjs +101 -0
- package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +143 -0
- package/esm2022/lib/dispedit/flags/flags.component.mjs +141 -0
- package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +319 -0
- package/esm2022/lib/dispedit/richedit/richedit.component.mjs +127 -0
- package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +94 -0
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +58 -0
- package/esm2022/lib/messages/message.service.mjs +152 -0
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +66 -0
- package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +65 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +113 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +30 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +41 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +41 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +22 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +50 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +64 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +47 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +57 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +52 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +41 -0
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +175 -0
- package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +51 -0
- package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +31 -0
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +71 -0
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +50 -0
- package/esm2022/lib/modellist/model-list.service.mjs +158 -0
- package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +143 -0
- package/esm2022/lib/updates/update/update.component.mjs +18 -0
- package/esm2022/lib/updates/update.service.mjs +59 -0
- package/esm2022/lib/uploader/ng-file-drop.directive.mjs +82 -0
- package/esm2022/lib/uploader/ng-file-select.directive.mjs +52 -0
- package/esm2022/lib/uploader/ngx-uploader.module.mjs +18 -0
- package/esm2022/lib/utils/tab-memory.service.mjs +81 -0
- package/{fesm2020 → fesm2022}/solidev-data.mjs +153 -149
- package/fesm2022/solidev-data.mjs.map +1 -0
- package/lib/dispedit/dispedit/dispedit.component.d.ts +1 -1
- package/lib/dispedit/fkselect/fkselect.component.d.ts +1 -1
- package/lib/dispedit/flags/flags.component.d.ts +1 -1
- package/lib/dispedit/m2mselect/m2mselect.component.d.ts +1 -1
- package/lib/dispedit/richedit/richedit.component.d.ts +1 -1
- package/lib/dispedit/sdelete/sdelete.component.d.ts +1 -1
- package/lib/messages/message-zone/message-zone.component.d.ts +1 -1
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +1 -1
- package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +1 -1
- package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +1 -1
- package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +1 -1
- package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +1 -1
- package/lib/routing/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/uploader/ng-file-drop.directive.d.ts +1 -1
- package/lib/uploader/ng-file-select.directive.d.ts +1 -1
- package/package.json +7 -13
- package/esm2020/lib/auth/auth-interceptor.service.mjs +0 -91
- package/esm2020/lib/data/data-backend.mjs +0 -134
- package/esm2020/lib/data/data-model.mjs +0 -291
- package/esm2020/lib/dispedit/choice.pipe.mjs +0 -79
- package/esm2020/lib/dispedit/factor.pipe.mjs +0 -81
- package/esm2020/lib/dispedit/factorc.pipe.mjs +0 -99
- package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +0 -142
- package/esm2020/lib/dispedit/flags/flags.component.mjs +0 -140
- package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -318
- package/esm2020/lib/dispedit/richedit/richedit.component.mjs +0 -126
- package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +0 -93
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +0 -57
- package/esm2020/lib/messages/message.service.mjs +0 -151
- package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -65
- package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -112
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
- package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
- package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
- package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -30
- package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -70
- package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
- package/esm2020/lib/modellist/model-list.service.mjs +0 -157
- package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -142
- package/esm2020/lib/updates/update/update.component.mjs +0 -17
- package/esm2020/lib/updates/update.service.mjs +0 -58
- package/esm2020/lib/uploader/ng-file-drop.directive.mjs +0 -81
- package/esm2020/lib/uploader/ng-file-select.directive.mjs +0 -51
- package/esm2020/lib/uploader/ngx-uploader.module.mjs +0 -17
- package/esm2020/lib/utils/tab-memory.service.mjs +0 -80
- package/fesm2015/solidev-data.mjs +0 -6224
- package/fesm2015/solidev-data.mjs.map +0 -1
- package/fesm2020/solidev-data.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/auth/jwt.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/data-collection.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/data-collection.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/data-parameters.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/data-query.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/data-query.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/boolean.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/computed.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/datetime.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/numbers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/primaryfield.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/relations.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data/fields/stringfields.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-fields.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/routing/routing.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/uploader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/uploader/interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/uploader/ngx-uploader.class.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/slugify.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/template.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/solidev-data.mjs +0 -0
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { PROPERTY_METADATA_KEY, } from './fields/base';
|
|
2
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
-
import { throwError } from 'rxjs';
|
|
4
|
-
import { tap } from 'rxjs/operators';
|
|
5
|
-
/**
|
|
6
|
-
* Base class for data model.
|
|
7
|
-
*
|
|
8
|
-
* Each class must have a static __name
|
|
9
|
-
* primary field is given with id field.
|
|
10
|
-
*
|
|
11
|
-
* Some methods are provided to be used with a collection, mostly for CRUD operations.
|
|
12
|
-
*
|
|
13
|
-
*/
|
|
14
|
-
export class DataModel {
|
|
15
|
-
/**
|
|
16
|
-
* Constructor for data model instance.
|
|
17
|
-
* A matching collection can be provided.
|
|
18
|
-
* ___fields readonly property is also populated from Reflected metadata
|
|
19
|
-
*
|
|
20
|
-
* @param _coll collection used for CRUD, etc..
|
|
21
|
-
*/
|
|
22
|
-
constructor(_coll) {
|
|
23
|
-
this._coll = _coll;
|
|
24
|
-
const md = Reflect.getMetadata(PROPERTY_METADATA_KEY, this);
|
|
25
|
-
// istanbul ignore if
|
|
26
|
-
if (!md) {
|
|
27
|
-
// This should never occur as all datamodel have at least id field
|
|
28
|
-
throw new Error('No property metadata found for this object; is there a property in current collection ?');
|
|
29
|
-
}
|
|
30
|
-
// Get all fields from current class and its parents
|
|
31
|
-
const fields = new Map();
|
|
32
|
-
let parent = Object.getPrototypeOf(this);
|
|
33
|
-
while (parent.constructor.name !== 'Object') {
|
|
34
|
-
for (const f of md.keys()) {
|
|
35
|
-
const fieldName = f.split('__')[1];
|
|
36
|
-
if (fields.has(fieldName)) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
if (f.indexOf(parent.constructor.__name + '__') === 0) {
|
|
40
|
-
fields.set(fieldName, md.get(f));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
parent = Object.getPrototypeOf(parent);
|
|
44
|
-
}
|
|
45
|
-
this._F = Object.freeze(fields);
|
|
46
|
-
}
|
|
47
|
-
get _collection() {
|
|
48
|
-
return this._coll;
|
|
49
|
-
}
|
|
50
|
-
set _collection(coll) {
|
|
51
|
-
this._coll = coll;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* HashMap of fields metadata (type, name, manager, etc...)
|
|
55
|
-
*/
|
|
56
|
-
get F() {
|
|
57
|
-
// istanbul ignore if
|
|
58
|
-
if (!this._F) {
|
|
59
|
-
throw new Error('Invalid data model, fields metadata is missing');
|
|
60
|
-
}
|
|
61
|
-
return this._F;
|
|
62
|
-
}
|
|
63
|
-
// Return field names iterator
|
|
64
|
-
get FN() {
|
|
65
|
-
return this.F.keys();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Loads model data from json.
|
|
69
|
-
* If partial is true, only fields with matching data keys will be loaded
|
|
70
|
-
* @param data
|
|
71
|
-
* @param options
|
|
72
|
-
*/
|
|
73
|
-
fromJson(data, { partial, check } = {
|
|
74
|
-
partial: false,
|
|
75
|
-
check: false,
|
|
76
|
-
}) {
|
|
77
|
-
const errors = {};
|
|
78
|
-
let haveError = false;
|
|
79
|
-
for (const f of this.FN) {
|
|
80
|
-
if (!partial || (partial && Object.keys(data).indexOf(f) !== -1)) {
|
|
81
|
-
const ferr = this.setFV(f, this.FM(f).fromJson(data[f]), check);
|
|
82
|
-
if (ferr !== null) {
|
|
83
|
-
errors[f] = ferr;
|
|
84
|
-
haveError = true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return haveError ? errors : null;
|
|
89
|
-
}
|
|
90
|
-
toJson(fields) {
|
|
91
|
-
if (fields && !Array.isArray(fields)) {
|
|
92
|
-
fields = [fields];
|
|
93
|
-
}
|
|
94
|
-
const out = {};
|
|
95
|
-
const fl = this.F;
|
|
96
|
-
for (const f of this.FN) {
|
|
97
|
-
const mgr = this.FM(f);
|
|
98
|
-
if (!fields || fields.length === 0) {
|
|
99
|
-
if (mgr.readonly) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
out[f] = fl.get(f).manager.toJson(this.FV(f));
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
if (fields.indexOf(f) !== -1) {
|
|
106
|
-
out[f] = fl.get(f).manager.toJson(this.FV(f));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return out;
|
|
111
|
-
}
|
|
112
|
-
action(method, name, { body = undefined, update = false, updatePartial = true, updateCheck = false,
|
|
113
|
-
// updateRaise = false,
|
|
114
|
-
params = {}, headers = {}, } = {}) {
|
|
115
|
-
if (this._coll === undefined) {
|
|
116
|
-
return throwError(() => new Error('Missing collection'));
|
|
117
|
-
}
|
|
118
|
-
return this._coll
|
|
119
|
-
.action(this, method, name, {
|
|
120
|
-
body,
|
|
121
|
-
params,
|
|
122
|
-
headers,
|
|
123
|
-
})
|
|
124
|
-
.pipe(tap((result) => {
|
|
125
|
-
if (update) {
|
|
126
|
-
this.fromJson(result, {
|
|
127
|
-
partial: updatePartial,
|
|
128
|
-
check: updateCheck,
|
|
129
|
-
});
|
|
130
|
-
return this;
|
|
131
|
-
}
|
|
132
|
-
return result;
|
|
133
|
-
}));
|
|
134
|
-
}
|
|
135
|
-
// Called on model, returns the manager for a field.
|
|
136
|
-
FM(field) {
|
|
137
|
-
if (this.F.has(field)) {
|
|
138
|
-
return this.F.get(field).manager;
|
|
139
|
-
}
|
|
140
|
-
throw new Error(`${field} not found in ${Object.keys(this.F).join(',')} model ${this}`);
|
|
141
|
-
}
|
|
142
|
-
// Return field value, without typing
|
|
143
|
-
FV(field) {
|
|
144
|
-
return this[field];
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Set field value. If check is true, only set value if all validators pass.
|
|
148
|
-
* Skip setting field value if manager computed flag is true.
|
|
149
|
-
*
|
|
150
|
-
* The validation result is returned.
|
|
151
|
-
*
|
|
152
|
-
* @param field field name
|
|
153
|
-
* @param value field valued
|
|
154
|
-
* @param check default false
|
|
155
|
-
* @return null or ValidationError
|
|
156
|
-
*/
|
|
157
|
-
setFV(field, value, check = false) {
|
|
158
|
-
if (this.FM(field).computed) {
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
if (check) {
|
|
162
|
-
const fc = new FormControl(value);
|
|
163
|
-
for (const v of this.FM(field).validators) {
|
|
164
|
-
const val = v(fc);
|
|
165
|
-
if (val !== null) {
|
|
166
|
-
console.error(val);
|
|
167
|
-
return val;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
this[field] = value;
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
FC(field) {
|
|
175
|
-
if (field === undefined) {
|
|
176
|
-
field = Array.from(this.FN).filter((n) => !this.FM(n).readonly);
|
|
177
|
-
}
|
|
178
|
-
if (Array.isArray(field)) {
|
|
179
|
-
const fg = {};
|
|
180
|
-
for (const f of field) {
|
|
181
|
-
fg[f] = this.FC(f);
|
|
182
|
-
}
|
|
183
|
-
return new FormGroup(fg);
|
|
184
|
-
}
|
|
185
|
-
return this.FM(field).formControl(this);
|
|
186
|
-
}
|
|
187
|
-
save({ updateModel = true } = {
|
|
188
|
-
updateModel: true,
|
|
189
|
-
}) {
|
|
190
|
-
if (this._coll) {
|
|
191
|
-
return this._coll.save(this, { updateModel });
|
|
192
|
-
}
|
|
193
|
-
return throwError(() => new Error('Missing collection'));
|
|
194
|
-
}
|
|
195
|
-
update(fields = [], { updateModel = true } = {
|
|
196
|
-
updateModel: true,
|
|
197
|
-
}) {
|
|
198
|
-
if (this._coll) {
|
|
199
|
-
return this._coll.update(this, fields, { updateModel });
|
|
200
|
-
}
|
|
201
|
-
return throwError(() => new Error('Missing collection'));
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* data model name
|
|
206
|
-
* this need to be given because class name is not fully available because of minification.
|
|
207
|
-
*/
|
|
208
|
-
DataModel.__name = '';
|
|
209
|
-
//
|
|
210
|
-
// export class TreeDataModel extends DataModel {
|
|
211
|
-
// static override __name = 'TreeDataModel';
|
|
212
|
-
// @detailsField({
|
|
213
|
-
// model: this,
|
|
214
|
-
// many: true,
|
|
215
|
-
// description: 'Parents',
|
|
216
|
-
// })
|
|
217
|
-
// public parents_details?: this[];
|
|
218
|
-
//
|
|
219
|
-
// @foreignKeyField({
|
|
220
|
-
// required: false,
|
|
221
|
-
// description: 'Structure parente',
|
|
222
|
-
// related: 'Structure',
|
|
223
|
-
// })
|
|
224
|
-
// public parent?: number;
|
|
225
|
-
//
|
|
226
|
-
// @integerField({
|
|
227
|
-
// required: false,
|
|
228
|
-
// readonly: true,
|
|
229
|
-
// description: 'ID Tree',
|
|
230
|
-
// })
|
|
231
|
-
// public tree_id!: number;
|
|
232
|
-
//
|
|
233
|
-
// @integerField({
|
|
234
|
-
// required: false,
|
|
235
|
-
// readonly: true,
|
|
236
|
-
// description: 'MPTT left',
|
|
237
|
-
// })
|
|
238
|
-
// public lft!: number;
|
|
239
|
-
//
|
|
240
|
-
// @integerField({
|
|
241
|
-
// required: false,
|
|
242
|
-
// readonly: true,
|
|
243
|
-
// description: 'MPTT right',
|
|
244
|
-
// })
|
|
245
|
-
// public rght!: number;
|
|
246
|
-
//
|
|
247
|
-
// @integerField({
|
|
248
|
-
// required: false,
|
|
249
|
-
// readonly: true,
|
|
250
|
-
// description: 'Niveau hiérarchique',
|
|
251
|
-
// })
|
|
252
|
-
// public level!: number;
|
|
253
|
-
//
|
|
254
|
-
// public get parent_details(): this | null {
|
|
255
|
-
// if (this.parents_details) {
|
|
256
|
-
// const out = this.parents_details[this.parents_details.length - 1];
|
|
257
|
-
// out.parents_details = this.parents_details.slice(
|
|
258
|
-
// 0,
|
|
259
|
-
// this.parents_details.length - 1
|
|
260
|
-
// );
|
|
261
|
-
// return out;
|
|
262
|
-
// }
|
|
263
|
-
// return null;
|
|
264
|
-
// }
|
|
265
|
-
//
|
|
266
|
-
// public set parent_details(d: this | null) {
|
|
267
|
-
// console.log(d);
|
|
268
|
-
// this.parents_details = d?.parents_details;
|
|
269
|
-
// }
|
|
270
|
-
//
|
|
271
|
-
// public _display(): string {
|
|
272
|
-
// const out: string[] = [];
|
|
273
|
-
// if (this.parents_details) {
|
|
274
|
-
// for (const p of this.parents_details) {
|
|
275
|
-
// if ((p as any).code) {
|
|
276
|
-
// out.push(`[${(p as any).code}] ${(p as any).name}`);
|
|
277
|
-
// } else {
|
|
278
|
-
// out.push((p as any).name);
|
|
279
|
-
// }
|
|
280
|
-
// }
|
|
281
|
-
// }
|
|
282
|
-
// if ((this as any).code) {
|
|
283
|
-
// out.push(`[${(this as any).code}] ${(this as any).name}`);
|
|
284
|
-
// } else {
|
|
285
|
-
// out.push((this as any).name);
|
|
286
|
-
// }
|
|
287
|
-
//
|
|
288
|
-
// return out.join(' : ');
|
|
289
|
-
// }
|
|
290
|
-
// }
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBaUJwQjs7Ozs7O09BTUc7SUFDSCxZQUFzQixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUMzQyxNQUFNLEVBQUUsR0FDTixPQUFPLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1Asa0VBQWtFO1lBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7U0FDSDtRQUNELG9EQUFvRDtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUM1RCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLE1BQU0sQ0FBQyxH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Q0FBK0M7QUFDL0Msa0NBQWtDO0FBQ2xDLDJFQUEyRTtBQUMzRSwwREFBMEQ7QUFDMUQsYUFBYTtBQUNiLDBDQUEwQztBQUMxQyxXQUFXO0FBQ1gsb0JBQW9CO0FBQ3BCLFFBQVE7QUFDUixtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLEVBQUU7QUFDRixnREFBZ0Q7QUFDaEQsc0JBQXNCO0FBQ3RCLGlEQUFpRDtBQUNqRCxNQUFNO0FBQ04sRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxnQ0FBZ0M7QUFDaEMsa0NBQWtDO0FBQ2xDLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFDakMsaUVBQWlFO0FBQ2pFLG1CQUFtQjtBQUNuQix1Q0FBdUM7QUFDdkMsWUFBWTtBQUNaLFVBQVU7QUFDVixRQUFRO0FBQ1IsZ0NBQWdDO0FBQ2hDLG1FQUFtRTtBQUNuRSxlQUFlO0FBQ2Ysc0NBQXNDO0FBQ3RDLFFBQVE7QUFDUixFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLE1BQU07QUFDTixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUZpZWxkTWFuYWdlcixcbiAgSUZpZWxkU3RvcmVkTWV0YWRhdGEsXG4gIFBST1BFUlRZX01FVEFEQVRBX0tFWSxcbn0gZnJvbSAnLi9maWVsZHMvYmFzZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsRmllbGRzID0gUmVhZG9ubHk8TWFwPHN0cmluZywgSUZpZWxkU3RvcmVkTWV0YWRhdGE8YW55Pj4+O1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGRhdGEgbW9kZWwuXG4gKlxuICogRWFjaCBjbGFzcyBtdXN0IGhhdmUgYSBzdGF0aWMgX19uYW1lXG4gKiBwcmltYXJ5IGZpZWxkIGlzIGdpdmVuIHdpdGggaWQgZmllbGQuXG4gKlxuICogU29tZSBtZXRob2RzIGFyZSBwcm92aWRlZCB0byBiZSB1c2VkIHdpdGggYSBjb2xsZWN0aW9uLCBtb3N0bHkgZm9yIENSVUQgb3BlcmF0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhTW9kZWwge1xuICAvKipcbiAgICogZGF0YSBtb2RlbCBuYW1lXG4gICAqIHRoaXMgbmVlZCB0byBiZSBnaXZlbiBiZWNhdXNlIGNsYXNzIG5hbWUgaXMgbm90IGZ1bGx5IGF2YWlsYWJsZSBiZWNhdXNlIG9mIG1pbmlmaWNhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgX19uYW1lOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogUHJpbWFyeSBmaWVsZDsgcmVhZG9ubHk7IG11c3QgYmUgY3JlYXRlZCBhbmQgYXV0byBpbmNyZW1lbnRlZCBvbiBkYiBzaWRlLlxuICAgKi9cbiAgLy8gQHByaW1hcnlGaWVsZCh7XG4gIC8vICAgZGVzY3JpcHRpb246ICdJRCcsXG4gIC8vICAgaGVscDogJ0lkZW50aWZpYW50IHByaW1haXJlJyxcbiAgLy8gfSlcbiAgcHVibGljIGlkITogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9GOiBEYXRhTW9kZWxGaWVsZHM7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIGZvciBkYXRhIG1vZGVsIGluc3RhbmNlLlxuICAgKiBBIG1hdGNoaW5nIGNvbGxlY3Rpb24gY2FuIGJlIHByb3ZpZGVkLlxuICAgKiBfX19maWVsZHMgcmVhZG9ubHkgcHJvcGVydHkgaXMgYWxzbyBwb3B1bGF0ZWQgZnJvbSBSZWZsZWN0ZWQgbWV0YWRhdGFcbiAgICpcbiAgICogQHBhcmFtIF9jb2xsIGNvbGxlY3Rpb24gdXNlZCBmb3IgQ1JVRCwgZXRjLi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY29sbD86IENvbGxlY3Rpb248YW55Pikge1xuICAgIGNvbnN0IG1kOiBNYXA8c3RyaW5nLCBJRmllbGRTdG9yZWRNZXRhZGF0YTxhbnk+PiB8IHVuZGVmaW5lZCA9XG4gICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKFBST1BFUlRZX01FVEFEQVRBX0tFWSwgdGhpcyk7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gICAgaWYgKCFtZCkge1xuICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgb2NjdXIgYXMgYWxsIGRhdGFtb2RlbCBoYXZlIGF0IGxlYXN0IGlkIGZpZWxkXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyBwcm9wZXJ0eSBtZXRhZGF0YSBmb3VuZCBmb3IgdGhpcyBvYmplY3Q7IGlzIHRoZXJlIGEgcHJvcGVydHkgaW4gY3VycmVudCBjb2xsZWN0aW9uID8nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBHZXQgYWxsIGZpZWxkcyBmcm9tIGN1cnJlbnQgY2xhc3MgYW5kIGl0cyBwYXJlbnRzXG4gICAgY29uc3QgZmllbGRzID0gbmV3IE1hcDxzdHJpbmcsIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT4+KCk7XG4gICAgbGV0IHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcbiAgICB3aGlsZSAocGFyZW50LmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgbWQua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGYuc3BsaXQoJ19fJylbMV07XG4gICAgICAgIGlmIChmaWVsZHMuaGFzKGZpZWxkTmFtZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZi5pbmRleE9mKHBhcmVudC5jb25zdHJ1Y3Rvci5fX25hbWUgKyAnX18nKSA9PT0gMCkge1xuICAgICAgICAgIGZpZWxkcy5zZXQoZmllbGROYW1lLCBtZC5nZXQoZikhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudCk7XG4gICAgfVxuICAgIHRoaXMuX0YgPSBPYmplY3QuZnJlZXplKGZpZWxkcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IF9jb2xsZWN0aW9uKCk6IENvbGxlY3Rpb248YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGwgYXMgQ29sbGVjdGlvbjxhbnk+O1xuICB9XG5cbiAgcHVibGljIHNldCBfY29sbGVjdGlvbihjb2xsOiBDb2xsZWN0aW9uPGFueT4pIHtcbiAgICB0aGlzLl9jb2xsID0gY29sbDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgSGFzaE1hcCBvZiBmaWVsZHMgbWV0YWRhdGEgKHR5cGUsIG5hbWUsIG1hbmFnZXIsIGV0Yy4uLilcbiAgICovXG4gIHB1YmxpYyBnZXQgRigpOiBEYXRhTW9kZWxGaWVsZHMge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICAgIGlmICghdGhpcy5fRikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEgbW9kZWwsIGZpZWxkcyBtZXRhZGF0YSBpcyBtaXNzaW5nJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9GO1xuICB9XG5cbiAgLy8gUmV0dXJuIGZpZWxkIG5hbWVzIGl0ZXJhdG9yXG4gIHB1YmxpYyBnZXQgRk4oKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5GLmtleXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBtb2RlbCBkYXRhIGZyb20ganNvbi5cbiAgICogSWYgcGFydGlhbCBpcyB0cnVlLCBvbmx5IGZpZWxkcyB3aXRoIG1hdGNoaW5nIGRhdGEga2V5cyB3aWxsIGJlIGxvYWRlZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGZyb21Kc29uKFxuICAgIGRhdGE6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IHBhcnRpYWwsIGNoZWNrIH06IHsgcGFydGlhbD86IGJvb2xlYW47IGNoZWNrPzogYm9vbGVhbiB9ID0ge1xuICAgICAgcGFydGlhbDogZmFsc2UsXG4gICAgICBjaGVjazogZmFsc2UsXG4gICAgfVxuICApOiBudWxsIHwgVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgZXJyb3JzOiB7IFtpbmRleDogc3RyaW5nXTogbnVsbCB8IFZhbGlkYXRpb25FcnJvcnMgfSA9IHt9O1xuICAgIGxldCBoYXZlRXJyb3IgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy5GTikge1xuICAgICAgaWYgKCFwYXJ0aWFsIHx8IChwYXJ0aWFsICYmIE9iamVjdC5rZXlzKGRhdGEpLmluZGV4T2YoZikgIT09IC0xKSkge1xuICAgICAgICBjb25zdCBmZXJyID0gdGhpcy5zZXRGVihmLCB0aGlzLkZNKGYpLmZyb21Kc29uKGRhdGFbZl0pLCBjaGVjayk7XG4gICAgICAgIGlmIChmZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3JzW2ZdID0gZmVycjtcbiAgICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXZlRXJyb3IgPyBlcnJvcnMgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIHRvSnNvbihmaWVsZHM/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IGFueSB7XG4gICAgaWYgKGZpZWxkcyAmJiAhQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XG4gICAgICBmaWVsZHMgPSBbZmllbGRzXTtcbiAgICB9XG4gICAgY29uc3Qgb3V0OiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjb25zdCBmbCA9IHRoaXMuRjtcbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy5GTikge1xuICAgICAgY29uc3QgbWdyID0gdGhpcy5GTShmKTtcbiAgICAgIGlmICghZmllbGRzIHx8IGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKG1nci5yZWFkb25seSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG91dFtmXSA9IGZsLmdldChmKSEubWFuYWdlci50b0pzb24odGhpcy5GVihmKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmllbGRzLmluZGV4T2YoZikgIT09IC0xKSB7XG4gICAgICAgICAgb3V0W2ZdID0gZmwuZ2V0KGYpIS5tYW5hZ2VyLnRvSnNvbih0aGlzLkZWKGYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHVibGljIGFjdGlvbjxULCBSVCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgbWV0aG9kOiAnUE9TVCcgfCAnUEFUQ0gnIHwgJ0dFVCcgfCAnREVMRVRFJyB8ICdQVVQnLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB7XG4gICAgICBib2R5ID0gdW5kZWZpbmVkLFxuICAgICAgdXBkYXRlID0gZmFsc2UsXG4gICAgICB1cGRhdGVQYXJ0aWFsID0gdHJ1ZSxcbiAgICAgIHVwZGF0ZUNoZWNrID0gZmFsc2UsXG4gICAgICAvLyB1cGRhdGVSYWlzZSA9IGZhbHNlLFxuICAgICAgcGFyYW1zID0ge30sXG4gICAgICBoZWFkZXJzID0ge30sXG4gICAgfToge1xuICAgICAgYm9keT86IHsgW19pbmRleDogc3RyaW5nXTogYW55IH07XG4gICAgICB1cGRhdGU/OiBib29sZWFuO1xuICAgICAgdXBkYXRlUGFydGlhbD86IGJvb2xlYW47XG4gICAgICB1cGRhdGVDaGVjaz86IGJvb2xlYW47XG4gICAgICAvLyB1cGRhdGVSYWlzZT86IGJvb2xlYW47XG4gICAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBpZiAodGhpcy5fY29sbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ01pc3NpbmcgY29sbGVjdGlvbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxcbiAgICAgIC5hY3Rpb248UlQ+KHRoaXMsIG1ldGhvZCwgbmFtZSwge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5mcm9tSnNvbihyZXN1bHQsIHtcbiAgICAgICAgICAgICAgcGFydGlhbDogdXBkYXRlUGFydGlhbCxcbiAgICAgICAgICAgICAgY2hlY2s6IHVwZGF0ZUNoZWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gbW9kZWwsIHJldHVybnMgdGhlIG1hbmFnZXIgZm9yIGEgZmllbGQuXG4gIHB1YmxpYyBGTTxGVD4oZmllbGQ6IHN0cmluZyk6IEJhc2VGaWVsZE1hbmFnZXI8RlQ+IHtcbiAgICBpZiAodGhpcy5GLmhhcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLkYuZ2V0KGZpZWxkKSEubWFuYWdlcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7ZmllbGR9IG5vdCBmb3VuZCBpbiAke09iamVjdC5rZXlzKHRoaXMuRikuam9pbignLCcpfSBtb2RlbCAke3RoaXN9YFxuICAgICk7XG4gIH1cblxuICAvLyBSZXR1cm4gZmllbGQgdmFsdWUsIHdpdGhvdXQgdHlwaW5nXG4gIHB1YmxpYyBGVjxGVD4oZmllbGQ6IHN0cmluZyk6IEZUIHtcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KVtmaWVsZF0gYXMgRlQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZpZWxkIHZhbHVlLiBJZiBjaGVjayBpcyB0cnVlLCBvbmx5IHNldCB2YWx1ZSBpZiBhbGwgdmFsaWRhdG9ycyBwYXNzLlxuICAgKiBTa2lwIHNldHRpbmcgZmllbGQgdmFsdWUgaWYgbWFuYWdlciBjb21wdXRlZCBmbGFnIGlzIHRydWUuXG4gICAqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlIGZpZWxkIHZhbHVlZFxuICAgKiBAcGFyYW0gY2hlY2sgZGVmYXVsdCBmYWxzZVxuICAgKiBAcmV0dXJuIG51bGwgb3IgVmFsaWRhdGlvbkVycm9yXG4gICAqL1xuICBwdWJsaWMgc2V0RlY8RlQ+KFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IEZULFxuICAgIGNoZWNrOiBib29sZWFuID0gZmFsc2VcbiAgKTogbnVsbCB8IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLkZNKGZpZWxkKS5jb21wdXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChjaGVjaykge1xuICAgICAgY29uc3QgZmMgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuXG4gICAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5GTShmaWVsZCkudmFsaWRhdG9ycykge1xuICAgICAgICBjb25zdCB2YWwgPSB2KGZjKTtcbiAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IodmFsKTtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICh0aGlzIGFzIGFueSlbZmllbGRdID0gdmFsdWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gbW9kZWwgd2l0aCBhIGxpc3Qgb2YgZmllbGRzLCByZXR1cm5zIGEgRm9ybUdyb3VwIHdpdGhcbiAgLy8gdGhlc2UgZmllbGRzLCBvciBvbmx5IHRoZSBmb3JtIGNvbnRyb2wgZm9yIG9uZSBmaWVsZC5cbiAgcHVibGljIEZDKCk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmcpOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmdbXSk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkPzogc3RyaW5nIHwgc3RyaW5nW10pOiBGb3JtQ29udHJvbCB8IEZvcm1Hcm91cCB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpZWxkID0gQXJyYXkuZnJvbSh0aGlzLkZOKS5maWx0ZXIoKG4pID0+ICF0aGlzLkZNKG4pLnJlYWRvbmx5KTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQpKSB7XG4gICAgICBjb25zdCBmZzogeyBbaW5kZXg6IHN0cmluZ106IEZvcm1Db250cm9sIH0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZCkge1xuICAgICAgICBmZ1tmXSA9IHRoaXMuRkMoZikgYXMgRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChmZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLkZNKGZpZWxkKS5mb3JtQ29udHJvbCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKFxuICAgIHsgdXBkYXRlTW9kZWwgPSB0cnVlIH06IHsgdXBkYXRlTW9kZWw/OiBib29sZWFuIH0gPSB7XG4gICAgICB1cGRhdGVNb2RlbDogdHJ1ZSxcbiAgICB9XG4gICk6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgIGlmICh0aGlzLl9jb2xsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29sbC5zYXZlKHRoaXMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShcbiAgICBmaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHtcbiAgICAgIHVwZGF0ZU1vZGVsOiB0cnVlLFxuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTx0aGlzPiB7XG4gICAgaWYgKHRoaXMuX2NvbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb2xsLnVwZGF0ZSh0aGlzLCBmaWVsZHMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG59XG5cbi8vXG4vLyBleHBvcnQgY2xhc3MgVHJlZURhdGFNb2RlbCBleHRlbmRzIERhdGFNb2RlbCB7XG4vLyAgIHN0YXRpYyBvdmVycmlkZSBfX25hbWUgPSAnVHJlZURhdGFNb2RlbCc7XG4vLyAgIEBkZXRhaWxzRmllbGQoe1xuLy8gICAgIG1vZGVsOiB0aGlzLFxuLy8gICAgIG1hbnk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdQYXJlbnRzJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudHNfZGV0YWlscz86IHRoaXNbXTtcbi8vXG4vLyAgIEBmb3JlaWduS2V5RmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZSBwYXJlbnRlJyxcbi8vICAgICByZWxhdGVkOiAnU3RydWN0dXJlJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudD86IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ0lEIFRyZWUnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgdHJlZV9pZCE6IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ01QVFQgbGVmdCcsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZnQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdNUFRUIHJpZ2h0Jyxcbi8vICAgfSlcbi8vICAgcHVibGljIHJnaHQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdOaXZlYXUgaGnDqXJhcmNoaXF1ZScsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZXZlbCE6IG51bWJlcjtcbi8vXG4vLyAgIHB1YmxpYyBnZXQgcGFyZW50X2RldGFpbHMoKTogdGhpcyB8IG51bGwge1xuLy8gICAgIGlmICh0aGlzLnBhcmVudHNfZGV0YWlscykge1xuLy8gICAgICAgY29uc3Qgb3V0ID0gdGhpcy5wYXJlbnRzX2RldGFpbHNbdGhpcy5wYXJlbnRzX2RldGFpbHMubGVuZ3RoIC0gMV07XG4vLyAgICAgICBvdXQucGFyZW50c19kZXRhaWxzID0gdGhpcy5wYXJlbnRzX2RldGFpbHMuc2xpY2UoXG4vLyAgICAgICAgIDAsXG4vLyAgICAgICAgIHRoaXMucGFyZW50c19kZXRhaWxzLmxlbmd0aCAtIDFcbi8vICAgICAgICk7XG4vLyAgICAgICByZXR1cm4gb3V0O1xuLy8gICAgIH1cbi8vICAgICByZXR1cm4gbnVsbDtcbi8vICAgfVxuLy9cbi8vICAgcHVibGljIHNldCBwYXJlbnRfZGV0YWlscyhkOiB0aGlzIHwgbnVsbCkge1xuLy8gICAgIGNvbnNvbGUubG9nKGQpO1xuLy8gICAgIHRoaXMucGFyZW50c19kZXRhaWxzID0gZD8ucGFyZW50c19kZXRhaWxzO1xuLy8gICB9XG4vL1xuLy8gICBwdWJsaWMgX2Rpc3BsYXkoKTogc3RyaW5nIHtcbi8vICAgICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4vLyAgICAgaWYgKHRoaXMucGFyZW50c19kZXRhaWxzKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5wYXJlbnRzX2RldGFpbHMpIHtcbi8vICAgICAgICAgaWYgKChwIGFzIGFueSkuY29kZSkge1xuLy8gICAgICAgICAgIG91dC5wdXNoKGBbJHsocCBhcyBhbnkpLmNvZGV9XSAkeyhwIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBvdXQucHVzaCgocCBhcyBhbnkpLm5hbWUpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIGlmICgodGhpcyBhcyBhbnkpLmNvZGUpIHtcbi8vICAgICAgIG91dC5wdXNoKGBbJHsodGhpcyBhcyBhbnkpLmNvZGV9XSAkeyh0aGlzIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgb3V0LnB1c2goKHRoaXMgYXMgYW55KS5uYW1lKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiBvdXQuam9pbignIDogJyk7XG4vLyAgIH1cbi8vIH1cbiJdfQ==
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ChoicePipe {
|
|
4
|
-
transform(value, field, mode = 'desc') {
|
|
5
|
-
if (!value) {
|
|
6
|
-
return '-';
|
|
7
|
-
}
|
|
8
|
-
const fvalue = value[field];
|
|
9
|
-
if (mode === 'code') {
|
|
10
|
-
return `${fvalue}`;
|
|
11
|
-
}
|
|
12
|
-
const manager = value.FM(field);
|
|
13
|
-
const choices = manager.choices;
|
|
14
|
-
if (!choices) {
|
|
15
|
-
return `${fvalue}`;
|
|
16
|
-
}
|
|
17
|
-
for (const ch of choices) {
|
|
18
|
-
if (ch.value === fvalue) {
|
|
19
|
-
if (mode === 'desc') {
|
|
20
|
-
return ch.desc;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
return `[${fvalue}] ${ch.desc}`;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return `[${fvalue}] ??`;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
ChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
31
|
-
ChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: ChoicePipe, isStandalone: true, name: "choice" });
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ChoicePipe, decorators: [{
|
|
33
|
-
type: Pipe,
|
|
34
|
-
args: [{
|
|
35
|
-
name: 'choice',
|
|
36
|
-
standalone: true,
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
export class PChoicePipe {
|
|
40
|
-
transform(value, model, field, mode = 'desc') {
|
|
41
|
-
if (!model) {
|
|
42
|
-
return '-';
|
|
43
|
-
}
|
|
44
|
-
if (!value) {
|
|
45
|
-
return '-';
|
|
46
|
-
}
|
|
47
|
-
// Use value from input, not from field
|
|
48
|
-
const fvalue = value; //- (model as any)[field];
|
|
49
|
-
if (mode === 'code') {
|
|
50
|
-
return `${fvalue}`;
|
|
51
|
-
}
|
|
52
|
-
const manager = model.FM(field);
|
|
53
|
-
const choices = manager.choices;
|
|
54
|
-
if (!choices) {
|
|
55
|
-
return `${fvalue}`;
|
|
56
|
-
}
|
|
57
|
-
for (const ch of choices) {
|
|
58
|
-
if (ch.value === fvalue) {
|
|
59
|
-
if (mode === 'desc') {
|
|
60
|
-
return ch.desc;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
return `[${fvalue}] ${ch.desc}`;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return `[${fvalue}] ??`;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
PChoicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PChoicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
71
|
-
PChoicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: PChoicePipe, isStandalone: true, name: "pchoice" });
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PChoicePipe, decorators: [{
|
|
73
|
-
type: Pipe,
|
|
74
|
-
args: [{
|
|
75
|
-
name: 'pchoice',
|
|
76
|
-
standalone: true,
|
|
77
|
-
}]
|
|
78
|
-
}] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvY2hvaWNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFNBQVMsQ0FDUCxLQUFRLEVBQ1IsS0FBYSxFQUNiLE9BQWlDLE1BQU07UUFFdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ25CLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUNwQjtRQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUksT0FBZSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7WUFDeEIsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFDdkIsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7SUFDMUIsQ0FBQzs7dUdBNUJVLFVBQVU7cUdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFvQ0QsTUFBTSxPQUFPLFdBQVc7SUFDdEIsU0FBUyxDQUNQLEtBQVUsRUFDVixLQUFRLEVBQ1IsS0FBYSxFQUNiLE9BQWlDLE1BQU07UUFFdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELHVDQUF1QztRQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQywwQkFBMEI7UUFDaEQsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ25CLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUNwQjtRQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUksT0FBZSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7WUFDeEIsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFDdkIsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7SUFDMUIsQ0FBQzs7d0dBakNVLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUp2QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uL2RhdGEvZGF0YS1tb2RlbCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Nob2ljZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENob2ljZVBpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBULFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgbW9kZTogJ2NvZGUnIHwgJ2Rlc2MnIHwgJ2JvdGgnID0gJ2Rlc2MnXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgY29uc3QgZnZhbHVlID0gKHZhbHVlIGFzIGFueSlbZmllbGRdO1xuICAgIGlmIChtb2RlID09PSAnY29kZScpIHtcbiAgICAgIHJldHVybiBgJHtmdmFsdWV9YDtcbiAgICB9XG4gICAgY29uc3QgbWFuYWdlciA9IHZhbHVlLkZNKGZpZWxkKTtcbiAgICBjb25zdCBjaG9pY2VzID0gKG1hbmFnZXIgYXMgYW55KS5jaG9pY2VzO1xuICAgIGlmICghY2hvaWNlcykge1xuICAgICAgcmV0dXJuIGAke2Z2YWx1ZX1gO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNoIG9mIGNob2ljZXMpIHtcbiAgICAgIGlmIChjaC52YWx1ZSA9PT0gZnZhbHVlKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZGVzYycpIHtcbiAgICAgICAgICByZXR1cm4gY2guZGVzYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYFske2Z2YWx1ZX1dICR7Y2guZGVzY31gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgWyR7ZnZhbHVlfV0gPz9gO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3BjaG9pY2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQQ2hvaWNlUGlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IGFueSxcbiAgICBtb2RlbDogVCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIG1vZGU6ICdjb2RlJyB8ICdkZXNjJyB8ICdib3RoJyA9ICdkZXNjJ1xuICApOiBzdHJpbmcge1xuICAgIGlmICghbW9kZWwpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIC8vIFVzZSB2YWx1ZSBmcm9tIGlucHV0LCBub3QgZnJvbSBmaWVsZFxuICAgIGNvbnN0IGZ2YWx1ZSA9IHZhbHVlOyAvLy0gKG1vZGVsIGFzIGFueSlbZmllbGRdO1xuICAgIGlmIChtb2RlID09PSAnY29kZScpIHtcbiAgICAgIHJldHVybiBgJHtmdmFsdWV9YDtcbiAgICB9XG4gICAgY29uc3QgbWFuYWdlciA9IG1vZGVsLkZNKGZpZWxkKTtcbiAgICBjb25zdCBjaG9pY2VzID0gKG1hbmFnZXIgYXMgYW55KS5jaG9pY2VzO1xuICAgIGlmICghY2hvaWNlcykge1xuICAgICAgcmV0dXJuIGAke2Z2YWx1ZX1gO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGNoIG9mIGNob2ljZXMpIHtcbiAgICAgIGlmIChjaC52YWx1ZSA9PT0gZnZhbHVlKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZGVzYycpIHtcbiAgICAgICAgICByZXR1cm4gY2guZGVzYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYFske2Z2YWx1ZX1dICR7Y2guZGVzY31gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgWyR7ZnZhbHVlfV0gPz9gO1xuICB9XG59XG4iXX0=
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Inject, LOCALE_ID, Pipe } from '@angular/core';
|
|
2
|
-
import { formatNumber } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export function isValue(value) {
|
|
5
|
-
return !(value == null || value === '' || value !== value);
|
|
6
|
-
}
|
|
7
|
-
export function strToNumber(value) {
|
|
8
|
-
// Convert strings to numbers
|
|
9
|
-
if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
|
|
10
|
-
return Number(value);
|
|
11
|
-
}
|
|
12
|
-
if (typeof value !== 'number') {
|
|
13
|
-
throw new Error(`${value} is not a number`);
|
|
14
|
-
}
|
|
15
|
-
return value;
|
|
16
|
-
}
|
|
17
|
-
export class FactorPipe {
|
|
18
|
-
constructor(_locale) {
|
|
19
|
-
this._locale = _locale;
|
|
20
|
-
}
|
|
21
|
-
transform(value, field, digitsInfo, locale) {
|
|
22
|
-
if (!value) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
locale = locale || this._locale;
|
|
26
|
-
const fvalue = value[field];
|
|
27
|
-
if (!isValue(fvalue))
|
|
28
|
-
return null;
|
|
29
|
-
const manager = value.FM(field);
|
|
30
|
-
let factor = manager.factor;
|
|
31
|
-
factor = factor || 1;
|
|
32
|
-
const num = strToNumber(fvalue);
|
|
33
|
-
return formatNumber(num / factor, locale, digitsInfo);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
FactorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
37
|
-
FactorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FactorPipe, isStandalone: true, name: "factor" });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FactorPipe, decorators: [{
|
|
39
|
-
type: Pipe,
|
|
40
|
-
args: [{
|
|
41
|
-
name: 'factor',
|
|
42
|
-
standalone: true,
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
45
|
-
type: Inject,
|
|
46
|
-
args: [LOCALE_ID]
|
|
47
|
-
}] }]; } });
|
|
48
|
-
export class PFactorPipe {
|
|
49
|
-
constructor(_locale) {
|
|
50
|
-
this._locale = _locale;
|
|
51
|
-
}
|
|
52
|
-
transform(value, model, field, digitsInfo, locale) {
|
|
53
|
-
if (!model)
|
|
54
|
-
return null;
|
|
55
|
-
if (!value)
|
|
56
|
-
return null;
|
|
57
|
-
locale = locale || this._locale;
|
|
58
|
-
// Use value from input, not from model
|
|
59
|
-
const fvalue = value; // (model as any)[field];
|
|
60
|
-
if (!isValue(fvalue))
|
|
61
|
-
return null;
|
|
62
|
-
const manager = model.FM(field);
|
|
63
|
-
let factor = manager.factor;
|
|
64
|
-
factor = factor || 1;
|
|
65
|
-
const num = strToNumber(fvalue);
|
|
66
|
-
return formatNumber(num / factor, locale, digitsInfo);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
PFactorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PFactorPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
70
|
-
PFactorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: PFactorPipe, isStandalone: true, name: "pfactor" });
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PFactorPipe, decorators: [{
|
|
72
|
-
type: Pipe,
|
|
73
|
-
args: [{
|
|
74
|
-
name: 'pfactor',
|
|
75
|
-
standalone: true,
|
|
76
|
-
}]
|
|
77
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
78
|
-
type: Inject,
|
|
79
|
-
args: [LOCALE_ID]
|
|
80
|
-
}] }]; } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvZGlzcGVkaXQvZmFjdG9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRS9DLE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQXlDO0lBRXpDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBc0I7SUFDaEQsNkJBQTZCO0lBQzdCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUMxRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN0QjtJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGtCQUFrQixDQUFDLENBQUM7S0FDN0M7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFNRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUF1QyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFFMUQsU0FBUyxDQUNQLEtBQWUsRUFDZixLQUFhLEVBQ2IsVUFBbUIsRUFDbkIsTUFBZTtRQUVmLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFJLEtBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUksT0FBZSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxZQUFZLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7dUdBcEJVLFVBQVUsa0JBQ0QsU0FBUztxR0FEbEIsVUFBVTsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsTUFBTTsyQkFBQyxTQUFTOztBQTBCL0IsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBdUMsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBRTFELFNBQVMsQ0FDUCxLQUF5QyxFQUN6QyxLQUFlLEVBQ2YsS0FBYSxFQUNiLFVBQW1CLEVBQ25CLE1BQWU7UUFFZixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEIsTUFBTSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLHVDQUF1QztRQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFJLE9BQWUsQ0FBQyxNQUFNLENBQUM7UUFDckMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sWUFBWSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7O3dHQXRCVSxXQUFXLGtCQUNGLFNBQVM7c0dBRGxCLFdBQVc7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTE9DQUxFX0lELCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsdWUoXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2YWx1ZSBpcyBudW1iZXIgfCBzdHJpbmcge1xuICByZXR1cm4gISh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIENvbnZlcnQgc3RyaW5ncyB0byBudW1iZXJzXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yUGlwZTxUIGV4dGVuZHMgRGF0YU1vZGVsPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcpIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGNvbnN0IGZ2YWx1ZSA9ICh2YWx1ZSBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IHZhbHVlLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdwZmFjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvclBpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBkaWdpdHNJbmZvPzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZ1xuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLl9sb2NhbGU7XG4gICAgLy8gVXNlIHZhbHVlIGZyb20gaW5wdXQsIG5vdCBmcm9tIG1vZGVsXG4gICAgY29uc3QgZnZhbHVlID0gdmFsdWU7IC8vIChtb2RlbCBhcyBhbnkpW2ZpZWxkXTtcbiAgICBpZiAoIWlzVmFsdWUoZnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgbWFuYWdlciA9IG1vZGVsLkZNKGZpZWxkKTtcbiAgICBsZXQgZmFjdG9yID0gKG1hbmFnZXIgYXMgYW55KS5mYWN0b3I7XG4gICAgZmFjdG9yID0gZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG51bSAvIGZhY3RvciwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgfVxufVxuIl19
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_CURRENCY_CODE, Inject, LOCALE_ID, Pipe, } from '@angular/core';
|
|
2
|
-
import { isValue, strToNumber } from './factor.pipe';
|
|
3
|
-
import { formatCurrency, getCurrencySymbol } from '@angular/common';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class FactorcPipe {
|
|
6
|
-
constructor(_locale, _defaultCurrencyCode = 'EUR') {
|
|
7
|
-
this._locale = _locale;
|
|
8
|
-
this._defaultCurrencyCode = _defaultCurrencyCode;
|
|
9
|
-
}
|
|
10
|
-
transform(value, field, currencyCode, display, digitsInfo, locale) {
|
|
11
|
-
if (!value)
|
|
12
|
-
return null;
|
|
13
|
-
const fvalue = value[field];
|
|
14
|
-
if (!isValue(fvalue))
|
|
15
|
-
return null;
|
|
16
|
-
locale = locale || this._locale;
|
|
17
|
-
let currency = currencyCode || this._defaultCurrencyCode;
|
|
18
|
-
if (!display) {
|
|
19
|
-
display = 'symbol';
|
|
20
|
-
}
|
|
21
|
-
if (display !== 'code') {
|
|
22
|
-
if (display === 'symbol' || display === 'symbol-narrow') {
|
|
23
|
-
currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
currency = display;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
const manager = value.FM(field);
|
|
30
|
-
const factor = manager.factor || 1;
|
|
31
|
-
const num = strToNumber(fvalue);
|
|
32
|
-
return formatCurrency(num / factor, locale, currency, currencyCode, digitsInfo);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
FactorcPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
36
|
-
FactorcPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: FactorcPipe, isStandalone: true, name: "factorc" });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FactorcPipe, decorators: [{
|
|
38
|
-
type: Pipe,
|
|
39
|
-
args: [{
|
|
40
|
-
name: 'factorc',
|
|
41
|
-
standalone: true,
|
|
42
|
-
}]
|
|
43
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
44
|
-
type: Inject,
|
|
45
|
-
args: [LOCALE_ID]
|
|
46
|
-
}] }, { type: undefined, decorators: [{
|
|
47
|
-
type: Inject,
|
|
48
|
-
args: [DEFAULT_CURRENCY_CODE]
|
|
49
|
-
}] }]; } });
|
|
50
|
-
export class PFactorcPipe {
|
|
51
|
-
constructor(_locale, _defaultCurrencyCode = 'EUR') {
|
|
52
|
-
this._locale = _locale;
|
|
53
|
-
this._defaultCurrencyCode = _defaultCurrencyCode;
|
|
54
|
-
}
|
|
55
|
-
transform(value, model, field, currencyCode, display, digitsInfo, locale) {
|
|
56
|
-
if (!model)
|
|
57
|
-
return null;
|
|
58
|
-
if (!value)
|
|
59
|
-
return null;
|
|
60
|
-
// Use value from input, not from model
|
|
61
|
-
const fvalue = value; // (model as any)[field];
|
|
62
|
-
if (!isValue(fvalue)) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
locale = locale || this._locale;
|
|
66
|
-
let currency = currencyCode || this._defaultCurrencyCode;
|
|
67
|
-
if (!display) {
|
|
68
|
-
display = 'symbol';
|
|
69
|
-
}
|
|
70
|
-
if (display !== 'code') {
|
|
71
|
-
if (display === 'symbol' || display === 'symbol-narrow') {
|
|
72
|
-
currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
currency = display;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const manager = model.FM(field);
|
|
79
|
-
const factor = manager.factor || 1;
|
|
80
|
-
const num = strToNumber(fvalue);
|
|
81
|
-
return formatCurrency(num / factor, locale, currency, currencyCode, digitsInfo);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
PFactorcPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PFactorcPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
85
|
-
PFactorcPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: PFactorcPipe, isStandalone: true, name: "pfactorc" });
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PFactorcPipe, decorators: [{
|
|
87
|
-
type: Pipe,
|
|
88
|
-
args: [{
|
|
89
|
-
name: 'pfactorc',
|
|
90
|
-
standalone: true,
|
|
91
|
-
}]
|
|
92
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
93
|
-
type: Inject,
|
|
94
|
-
args: [LOCALE_ID]
|
|
95
|
-
}] }, { type: undefined, decorators: [{
|
|
96
|
-
type: Inject,
|
|
97
|
-
args: [DEFAULT_CURRENCY_CODE]
|
|
98
|
-
}] }]; } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2Rpc3BlZGl0L2ZhY3RvcmMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDNkIsT0FBZSxFQUNILHVCQUErQixLQUFLO1FBRGhELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDSCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWdCO0lBQzFFLENBQUM7SUFFSixTQUFTLENBQ1AsS0FBZSxFQUNmLEtBQWEsRUFDYixZQUFxQixFQUNyQixPQUFzRCxFQUN0RCxVQUFtQixFQUNuQixNQUFlO1FBRWYsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQVcsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxHQUFHLFFBQVEsQ0FBQztTQUNwQjtRQUNELElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUN0QixJQUFJLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxLQUFL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QUFNOzJCQUFDLFNBQVM7OzBCQUNoQixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSxcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi4vZGF0YS9kYXRhLW1vZGVsJztcbmltcG9ydCB7IGlzVmFsdWUsIHN0clRvTnVtYmVyIH0gZnJvbSAnLi9mYWN0b3IucGlwZSc7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZ2V0Q3VycmVuY3lTeW1ib2wgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmFjdG9yY1BpcGU8VCBleHRlbmRzIERhdGFNb2RlbD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nLFxuICAgIEBJbmplY3QoREVGQVVMVF9DVVJSRU5DWV9DT0RFKSBwcml2YXRlIF9kZWZhdWx0Q3VycmVuY3lDb2RlOiBzdHJpbmcgPSAnRVVSJ1xuICApIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBUIHwgbnVsbCxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIGN1cnJlbmN5Q29kZT86IHN0cmluZyxcbiAgICBkaXNwbGF5PzogJ2NvZGUnIHwgJ3N5bWJvbCcgfCAnc3ltYm9sLW5hcnJvdycgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbz86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZnZhbHVlID0gKHZhbHVlIGFzIGFueSlbZmllbGRdO1xuICAgIGlmICghaXNWYWx1ZShmdmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gdmFsdWUuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3BmYWN0b3JjJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUEZhY3RvcmNQaXBlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIF9sb2NhbGU6IHN0cmluZyxcbiAgICBASW5qZWN0KERFRkFVTFRfQ1VSUkVOQ1lfQ09ERSkgcHJpdmF0ZSBfZGVmYXVsdEN1cnJlbmN5Q29kZTogc3RyaW5nID0gJ0VVUidcbiAgKSB7fVxuXG4gIHRyYW5zZm9ybShcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgICBtb2RlbDogVCB8IG51bGwsXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBjdXJyZW5jeUNvZGU/OiBzdHJpbmcsXG4gICAgZGlzcGxheT86ICdjb2RlJyB8ICdzeW1ib2wnIHwgJ3N5bWJvbC1uYXJyb3cnIHwgc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmcsXG4gICAgbG9jYWxlPzogc3RyaW5nXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghbW9kZWwpIHJldHVybiBudWxsO1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgIC8vIFVzZSB2YWx1ZSBmcm9tIGlucHV0LCBub3QgZnJvbSBtb2RlbFxuICAgIGNvbnN0IGZ2YWx1ZSA9IHZhbHVlOyAvLyAobW9kZWwgYXMgYW55KVtmaWVsZF07XG4gICAgaWYgKCFpc1ZhbHVlKGZ2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICAgIGxldCBjdXJyZW5jeTogc3RyaW5nID0gY3VycmVuY3lDb2RlIHx8IHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU7XG4gICAgaWYgKCFkaXNwbGF5KSB7XG4gICAgICBkaXNwbGF5ID0gJ3N5bWJvbCc7XG4gICAgfVxuICAgIGlmIChkaXNwbGF5ICE9PSAnY29kZScpIHtcbiAgICAgIGlmIChkaXNwbGF5ID09PSAnc3ltYm9sJyB8fCBkaXNwbGF5ID09PSAnc3ltYm9sLW5hcnJvdycpIHtcbiAgICAgICAgY3VycmVuY3kgPSBnZXRDdXJyZW5jeVN5bWJvbChcbiAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICBkaXNwbGF5ID09PSAnc3ltYm9sJyA/ICd3aWRlJyA6ICduYXJyb3cnLFxuICAgICAgICAgIGxvY2FsZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVuY3kgPSBkaXNwbGF5ITtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYW5hZ2VyID0gbW9kZWwuRk0oZmllbGQpO1xuICAgIGNvbnN0IGZhY3RvciA9IChtYW5hZ2VyIGFzIGFueSkuZmFjdG9yIHx8IDE7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIoZnZhbHVlKTtcbiAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3koXG4gICAgICBudW0gLyBmYWN0b3IsXG4gICAgICBsb2NhbGUsXG4gICAgICBjdXJyZW5jeSxcbiAgICAgIGN1cnJlbmN5Q29kZSxcbiAgICAgIGRpZ2l0c0luZm9cbiAgICApO1xuICB9XG59XG4iXX0=
|