@solidev/data 0.0.9 → 0.1.1
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 +118 -0
- package/{esm2020 → esm2022}/lib/auth/auth.service.mjs +2 -3
- package/{esm2020 → esm2022}/lib/data/data-backend.mjs +4 -4
- package/esm2022/lib/data/data-model.mjs +291 -0
- package/{esm2020 → esm2022}/lib/dispedit/choice.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/dispedit/dispedit/dispedit.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dispedit/factor.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/dispedit/factorc.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/dispedit/fkselect/fkselect.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dispedit/flags/flags.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dispedit/m2mselect/m2mselect.component.mjs +10 -10
- package/{esm2020 → esm2022}/lib/dispedit/richedit/richedit.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dispedit/sdelete/sdelete.component.mjs +4 -4
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +57 -0
- package/{esm2020 → esm2022}/lib/messages/message.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modellist/model-list.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/routing/breadcrumb/breadcrumb.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/updates/update/update.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/updates/update.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/uploader/ng-file-drop.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/uploader/ng-file-select.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/uploader/ngx-uploader.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/utils/tab-memory.service.mjs +4 -4
- package/{fesm2020 → fesm2022}/solidev-data.mjs +181 -154
- package/fesm2022/solidev-data.mjs.map +1 -0
- package/lib/auth/auth-interceptor.service.d.ts +16 -2
- 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 +3 -3
- 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 +8 -14
- package/esm2020/lib/auth/auth-interceptor.service.mjs +0 -91
- package/esm2020/lib/data/data-model.mjs +0 -291
- package/esm2020/lib/messages/message-zone/message-zone.component.mjs +0 -57
- package/fesm2015/solidev-data.mjs +0 -6228
- 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,57 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { animate, style, transition, trigger } from '@angular/animations';
|
|
3
|
-
import { ReplaySubject, takeUntil } from 'rxjs';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../message.service";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
export class MessageZoneComponent {
|
|
10
|
-
constructor(messages) {
|
|
11
|
-
this.messages = messages;
|
|
12
|
-
this.current = [];
|
|
13
|
-
this._subscriptions$ = new ReplaySubject();
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.messages.current
|
|
17
|
-
.pipe(takeUntil(this._subscriptions$))
|
|
18
|
-
.subscribe((messages) => {
|
|
19
|
-
this.current = messages;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
ngOnDestroy() {
|
|
23
|
-
this._subscriptions$.next();
|
|
24
|
-
this._subscriptions$.complete();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
MessageZoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MessageZoneComponent, deps: [{ token: i1.DataMessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
MessageZoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: MessageZoneComponent, isStandalone: true, selector: "data-message-zone", inputs: { filter: "filter" }, providers: [provideAnimations()], ngImport: i0, template: "\n<div class=\"messagezone\">\n <div class=\"alert\" *ngFor=\"let message of current\" [@dispStatus]=\"message.status\" [class]=\"message.style\" (click)=\"message.showTrace=!message.showTrace\">\n <button class=\"btn-close\" type=\"button\" (click)=\"messages.ack(message)\" aria-label=\"Close\"></button><strong>{{message.title}}</strong> {{message.message}}\n <div class=\"pretrace\" *ngIf=\"message.showTrace\">{{message.trace}}</div>\n </div>\n</div>", styles: [".messagezone{position:fixed;top:30px;right:40px;width:35vw;height:auto;z-index:1050}.messagezone .pretrace{white-space:pre-wrap;font-family:monospace;font-size:.7rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
29
|
-
trigger('dispStatus', [
|
|
30
|
-
transition('void => *', [
|
|
31
|
-
style({ opacity: 0 }),
|
|
32
|
-
animate(550, style({ opacity: 1 })),
|
|
33
|
-
]),
|
|
34
|
-
transition('* => void', [
|
|
35
|
-
style({ opacity: '*' }),
|
|
36
|
-
animate(550, style({ opacity: 0 })),
|
|
37
|
-
]),
|
|
38
|
-
]),
|
|
39
|
-
] });
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MessageZoneComponent, decorators: [{
|
|
41
|
-
type: Component,
|
|
42
|
-
args: [{ selector: 'data-message-zone', standalone: true, imports: [CommonModule], providers: [provideAnimations()], animations: [
|
|
43
|
-
trigger('dispStatus', [
|
|
44
|
-
transition('void => *', [
|
|
45
|
-
style({ opacity: 0 }),
|
|
46
|
-
animate(550, style({ opacity: 1 })),
|
|
47
|
-
]),
|
|
48
|
-
transition('* => void', [
|
|
49
|
-
style({ opacity: '*' }),
|
|
50
|
-
animate(550, style({ opacity: 0 })),
|
|
51
|
-
]),
|
|
52
|
-
]),
|
|
53
|
-
], template: "\n<div class=\"messagezone\">\n <div class=\"alert\" *ngFor=\"let message of current\" [@dispStatus]=\"message.status\" [class]=\"message.style\" (click)=\"message.showTrace=!message.showTrace\">\n <button class=\"btn-close\" type=\"button\" (click)=\"messages.ack(message)\" aria-label=\"Close\"></button><strong>{{message.title}}</strong> {{message.message}}\n <div class=\"pretrace\" *ngIf=\"message.showTrace\">{{message.trace}}</div>\n </div>\n</div>", styles: [".messagezone{position:fixed;top:30px;right:40px;width:35vw;height:auto;z-index:1050}.messagezone .pretrace{white-space:pre-wrap;font-family:monospace;font-size:.7rem}\n"] }]
|
|
54
|
-
}], ctorParameters: function () { return [{ type: i1.DataMessageService }]; }, propDecorators: { filter: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS16b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlLXpvbmUvbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBc0J6RSxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQW1CLFFBQTRCO1FBQTVCLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBSHhDLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxJQUFJLGFBQWEsRUFBUSxDQUFDO0lBRUYsQ0FBQztJQUU1QyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O2lIQWxCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw4RkFkcEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDBCQ2JsQyx1ZEFNTSxpT0RNTSxZQUFZLGtQQUVWO1FBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEMsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwQyxDQUFDO1NBQ0gsQ0FBQztLQUNIOzJGQUVVLG9CQUFvQjtrQkFwQmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxhQUNaLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxjQUNwQjt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3BDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDdEIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dDQUN2QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNwQyxDQUFDO3lCQUNILENBQUM7cUJBQ0g7eUdBR2UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRGF0YU1lc3NhZ2VTZXJ2aWNlLCBNZXNzYWdlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0YS1tZXNzYWdlLXpvbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVzc2FnZS16b25lLmNvbXBvbmVudC5zYXNzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlQW5pbWF0aW9ucygpXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2Rpc3BTdGF0dXMnLCBbXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSg1NTAsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoNTUwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2Vab25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyPzogc3RyaW5nO1xuICBwdWJsaWMgY3VycmVudDogTWVzc2FnZVtdID0gW107XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVzc2FnZXM6IERhdGFNZXNzYWdlU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlcy5jdXJyZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fc3Vic2NyaXB0aW9ucyQpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gbWVzc2FnZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5uZXh0KCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwibWVzc2FnZXpvbmVcIj5cbiAgPGRpdiBjbGFzcz1cImFsZXJ0XCIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY3VycmVudFwiIFtAZGlzcFN0YXR1c109XCJtZXNzYWdlLnN0YXR1c1wiIFtjbGFzc109XCJtZXNzYWdlLnN0eWxlXCIgKGNsaWNrKT1cIm1lc3NhZ2Uuc2hvd1RyYWNlPSFtZXNzYWdlLnNob3dUcmFjZVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm1lc3NhZ2VzLmFjayhtZXNzYWdlKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPjxzdHJvbmc+e3ttZXNzYWdlLnRpdGxlfX08L3N0cm9uZz4mbmJzcDsge3ttZXNzYWdlLm1lc3NhZ2V9fVxuICAgIDxkaXYgY2xhc3M9XCJwcmV0cmFjZVwiICpuZ0lmPVwibWVzc2FnZS5zaG93VHJhY2VcIj57e21lc3NhZ2UudHJhY2V9fTwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|